
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * make_variable_value(SHELL_VAR *var,char *value,int flags)

{
  char *pcVar1;
  int flags_00;
  char *pcVar2;
  size_t sVar3;
  size_t sVar4;
  size_t sVar5;
  int in_GS_OFFSET;
  intmax_t iVar6;
  intmax_t iVar7;
  size_t local_38;
  int expok;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x52f49;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if ((flags & 0x100U) == 0) {
    if ((var->attributes & 0x10U) == 0) {
      if ((var->attributes & 0x700U) != 0) {
        if ((flags & 1U) == 0) {
          if (*value == '\0') {
            pcVar2 = (char *)xmalloc(1);
            *pcVar2 = '\0';
          }
          else {
            sVar4 = strlen(value);
            pcVar1 = (char *)xmalloc(sVar4 + 1);
            pcVar2 = strcpy(pcVar1,value);
          }
        }
        else {
          pcVar1 = get_variable_value(var);
          if (pcVar1 == (char *)0x0) {
            sVar5 = 1;
            local_38 = 0;
            pcVar1 = "";
          }
          else if (*pcVar1 == '\0') {
            sVar5 = 1;
            local_38 = 0;
          }
          else if (pcVar1[1] == '\0') {
            sVar5 = 2;
            local_38 = 1;
          }
          else if (pcVar1[2] == '\0') {
            sVar5 = 3;
            local_38 = 2;
          }
          else {
            local_38 = strlen(pcVar1);
            sVar5 = local_38 + 1;
          }
          if (value == (char *)0x0) {
            pcVar2 = (char *)xmalloc(sVar5);
            strcpy(pcVar2,pcVar1);
          }
          else {
            sVar4 = 0;
            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')
               ) {
              sVar4 = strlen(value);
            }
            pcVar2 = (char *)xmalloc(sVar4 + sVar5);
            strcpy(pcVar2,pcVar1);
            strcpy(pcVar2 + local_38,value);
          }
        }
        flags_00 = 4;
        if ((var->attributes & 0x400U) == 0) {
          flags_00 = ((var->attributes & 0x100U) != 0) + 1;
        }
        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);
        free(pcVar2);
        goto LAB_0005302d;
      }
      goto LAB_00052ff5;
    }
    if ((flags & 1U) == 0) {
      iVar7 = evalexp(value,0,&expok);
      if (expok != 0) {
LAB_00052fdd:
        pcVar1 = itos(iVar7);
        goto LAB_0005302d;
      }
      if ((flags & 0x200U) == 0) goto LAB_00053103;
LAB_00053006:
      if (*value == '\0') {
        pcVar1 = (char *)xmalloc(1);
        *pcVar1 = '\0';
      }
      else {
        sVar4 = strlen(value);
        pcVar1 = (char *)xmalloc(sVar4 + 1);
        pcVar1 = strcpy(pcVar1,value);
      }
      goto LAB_0005302d;
    }
    iVar6 = evalexp(var->value,0,&expok);
    if (expok != 0) {
      iVar7 = evalexp(value,0,&expok);
      if (expok != 0) {
        iVar7 = iVar7 + iVar6;
        goto LAB_00052fdd;
      }
    }
    if ((flags & 0x200U) == 0) {
LAB_00053103:
      top_level_cleanup();
                    /* WARNING: Subroutine does not return */
      jump_to_top_level(2);
    }
    pcVar2 = get_variable_value(var);
    if (pcVar2 != (char *)0x0) goto LAB_0005313e;
    sVar5 = 1;
    sVar4 = 0;
    pcVar2 = "";
LAB_00053170:
    if (value == (char *)0x0) {
      pcVar1 = (char *)xmalloc(sVar5);
      strcpy(pcVar1,pcVar2);
      goto LAB_0005302d;
    }
  }
  else {
LAB_00052ff5:
    if (value == (char *)0x0) {
      pcVar1 = (char *)0x0;
      goto LAB_0005302d;
    }
    if ((flags & 1U) == 0) goto LAB_00053006;
    pcVar2 = get_variable_value(var);
    if (pcVar2 != (char *)0x0) {
LAB_0005313e:
      sVar4 = 0;
      sVar5 = 1;
      if (*pcVar2 != '\0') {
        if (pcVar2[1] == '\0') {
          sVar5 = 2;
          sVar4 = 1;
        }
        else if (pcVar2[2] == '\0') {
          sVar5 = 3;
          sVar4 = 2;
        }
        else {
          sVar4 = strlen(pcVar2);
          sVar5 = sVar4 + 1;
        }
      }
      goto LAB_00053170;
    }
    sVar4 = 0;
    sVar5 = 1;
    pcVar2 = "";
  }
  if (*value != '\0') {
    if (value[1] == '\0') {
      sVar5 = sVar4 + 2;
    }
    else if (value[2] == '\0') {
      sVar5 = sVar4 + 3;
    }
    else {
      sVar3 = strlen(value);
      sVar5 = sVar5 + sVar3;
    }
  }
  pcVar1 = (char *)xmalloc(sVar5);
  strcpy(pcVar1,pcVar2);
  strcpy(pcVar1 + sVar4,value);
LAB_0005302d:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return pcVar1;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * make_variable_value(int param_1,char *param_2,uint param_3)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  size_t sVar4;
  size_t sVar5;
  int iVar6;
  int in_GS_OFFSET;
  longlong lVar7;
  longlong lVar8;
  size_t local_38;
  int local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x52f49;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if ((param_3 & 0x100) == 0) {
    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {
      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {
        if ((param_3 & 1) == 0) {
          if (*param_2 == '\0') {
            pcVar3 = (char *)xmalloc(1);
            *pcVar3 = '\0';
          }
          else {
            sVar5 = strlen(param_2);
            pcVar2 = (char *)xmalloc(sVar5 + 1);
            pcVar3 = strcpy(pcVar2,param_2);
          }
        }
        else {
          pcVar2 = (char *)get_variable_value(param_1);
          if (pcVar2 == (char *)0x0) {
            iVar6 = 1;
            local_38 = 0;
            pcVar2 = "";
          }
          else if (*pcVar2 == '\0') {
            iVar6 = 1;
            local_38 = 0;
          }
          else if (pcVar2[1] == '\0') {
            iVar6 = 2;
            local_38 = 1;
          }
          else if (pcVar2[2] == '\0') {
            iVar6 = 3;
            local_38 = 2;
          }
          else {
            local_38 = strlen(pcVar2);
            iVar6 = local_38 + 1;
          }
          if (param_2 == (char *)0x0) {
            pcVar3 = (char *)xmalloc(iVar6);
            strcpy(pcVar3,pcVar2);
          }
          else {
            sVar5 = 0;
            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&
               (sVar5 = 2, param_2[2] != '\0')) {
              sVar5 = strlen(param_2);
            }
            pcVar3 = (char *)xmalloc(sVar5 + iVar6);
            strcpy(pcVar3,pcVar2);
            strcpy(pcVar3 + local_38,param_2);
          }
        }
        cVar1 = '\x04';
        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {
          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';
        }
        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);
        free(pcVar3);
        goto LAB_0005302d;
      }
      goto LAB_00052ff5;
    }
    if ((param_3 & 1) == 0) {
      lVar7 = evalexp(param_2,0,&local_24);
      if (local_24 != 0) {
LAB_00052fdd:
        pcVar2 = (char *)itos(lVar7);
        goto LAB_0005302d;
      }
      if ((param_3 & 0x200) == 0) goto LAB_00053103;
LAB_00053006:
      if (*param_2 == '\0') {
        pcVar2 = (char *)xmalloc(1);
        *pcVar2 = '\0';
      }
      else {
        sVar5 = strlen(param_2);
        pcVar2 = (char *)xmalloc(sVar5 + 1);
        pcVar2 = strcpy(pcVar2,param_2);
      }
      goto LAB_0005302d;
    }
    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);
    if (local_24 != 0) {
      lVar8 = evalexp(param_2,0,&local_24);
      if (local_24 != 0) {
        lVar7 = lVar7 + lVar8;
        goto LAB_00052fdd;
      }
    }
    if ((param_3 & 0x200) == 0) {
LAB_00053103:
      top_level_cleanup();
                    /* WARNING: Subroutine does not return */
      jump_to_top_level(2);
    }
    pcVar3 = (char *)get_variable_value(param_1);
    if (pcVar3 != (char *)0x0) goto LAB_0005313e;
    iVar6 = 1;
    sVar5 = 0;
    pcVar3 = "";
LAB_00053170:
    if (param_2 == (char *)0x0) {
      pcVar2 = (char *)xmalloc(iVar6);
      strcpy(pcVar2,pcVar3);
      goto LAB_0005302d;
    }
  }
  else {
LAB_00052ff5:
    if (param_2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
      goto LAB_0005302d;
    }
    if ((param_3 & 1) == 0) goto LAB_00053006;
    pcVar3 = (char *)get_variable_value(param_1);
    if (pcVar3 != (char *)0x0) {
LAB_0005313e:
      sVar5 = 0;
      iVar6 = 1;
      if (*pcVar3 != '\0') {
        if (pcVar3[1] == '\0') {
          iVar6 = 2;
          sVar5 = 1;
        }
        else if (pcVar3[2] == '\0') {
          iVar6 = 3;
          sVar5 = 2;
        }
        else {
          sVar5 = strlen(pcVar3);
          iVar6 = sVar5 + 1;
        }
      }
      goto LAB_00053170;
    }
    sVar5 = 0;
    iVar6 = 1;
    pcVar3 = "";
  }
  if (*param_2 != '\0') {
    if (param_2[1] == '\0') {
      iVar6 = sVar5 + 2;
    }
    else if (param_2[2] == '\0') {
      iVar6 = sVar5 + 3;
    }
    else {
      sVar4 = strlen(param_2);
      iVar6 = iVar6 + sVar4;
    }
  }
  pcVar2 = (char *)xmalloc(iVar6);
  strcpy(pcVar2,pcVar3);
  strcpy(pcVar2 + sVar5,param_2);
LAB_0005302d:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return pcVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000ecc40();
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00031ed0
ADD EBX,0xf70b7
SUB ESP,0x2c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1c],EAX
XOR EAX,EAX
MOV EBP,dword ptr [ESP + 0x48]
MOV EDI,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x44]
TEST EBP,0x100
JNZ 0x00052ff5
MOV EAX,dword ptr [EDI + 0x14]
TEST AL,0x10
JZ 0x00052ff0
TEST EBP,0x1
JZ 0x000530d8
SUB ESP,0x4
LEA ECX,[ESP + 0x1c]
PUSH ECX
MOV dword ptr [ESP + 0xc],ECX
PUSH 0x0
PUSH dword ptr [EDI + 0x4]
CALL 0x0005c270
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EDX
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x18]
TEST ECX,ECX
MOV ECX,dword ptr [ESP + 0x4]
JZ 0x00053120
SUB ESP,0x4
PUSH ECX
PUSH 0x0
PUSH ESI
CALL 0x0005c270
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x18]
TEST ECX,ECX
JZ 0x00053120
ADD EAX,dword ptr [ESP + 0x8]
ADC EDX,dword ptr [ESP + 0xc]
SUB ESP,0x8
PUSH EDX
PUSH EAX
CALL 0x000bbf60
ADD ESP,0x10
MOV EDI,EAX
JMP 0x0005302d
TEST AH,0x7
JNZ 0x00053068
TEST ESI,ESI
JZ 0x00053118
AND EBP,0x1
JNZ 0x000531c0
CMP byte ptr [ESI],0x0
JZ 0x00053050
SUB ESP,0xc
PUSH ESI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP ECX
POP EDI
PUSH ESI
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EDI,EAX
MOV ECX,dword ptr [ESP + 0x1c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,EDI
JNZ 0x000533c6
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH 0x1
CALL 0x00099200
ADD ESP,0x10
MOV EDI,EAX
MOV byte ptr [EAX],0x0
JMP 0x0005302d
AND EBP,0x1
JNZ 0x00053220
CMP byte ptr [ESI],0x0
JZ 0x00053208
SUB ESP,0xc
PUSH ESI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EBP
POP EDX
PUSH ESI
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
MOV EDX,dword ptr [EDI + 0x14]
MOV EAX,0x4
TEST DH,0x4
JNZ 0x000530b4
XOR EAX,EAX
AND DH,0x1
SETNZ AL
ADD EAX,0x1
SUB ESP,0x4
PUSH EAX
PUSH 0x0
PUSH EBP
CALL 0x000c2190
MOV dword ptr [ESP],EBP
MOV EDI,EAX
CALL 0x0002f200
ADD ESP,0x10
JMP 0x0005302d
SUB ESP,0x4
LEA EAX,[ESP + 0x1c]
PUSH EAX
PUSH 0x0
PUSH ESI
CALL 0x0005c270
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x18]
TEST ECX,ECX
JNZ 0x00052fdd
AND EBP,0x200
JNZ 0x00053006
CALL 0x0007eef0
SUB ESP,0xc
PUSH 0x2
CALL 0x0007efa0
XOR EDI,EDI
JMP 0x0005302d
AND EBP,0x200
JZ 0x00053103
SUB ESP,0xc
PUSH EDI
CALL 0x00052980
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00053320
XOR EDX,EDX
CMP byte ptr [EBP],0x0
MOV EDI,0x1
JZ 0x00053170
CMP byte ptr [EBP + 0x1],0x0
JZ 0x000532f0
CMP byte ptr [EBP + 0x2],0x0
JZ 0x00053380
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD ESP,0x10
MOV EDX,EAX
LEA EDI,[EAX + 0x1]
TEST ESI,ESI
JZ 0x000531e8
CMP byte ptr [ESI],0x0
JZ 0x00053190
CMP byte ptr [ESI + 0x1],0x0
JZ 0x000532e8
CMP byte ptr [ESI + 0x2],0x0
JNZ 0x00053360
LEA EDI,[EDX + 0x3]
MOV dword ptr [ESP + 0x4],EDX
SUB ESP,0xc
PUSH EDI
CALL 0x00099200
MOV EDI,EAX
POP EAX
POP EDX
PUSH EBP
PUSH EDI
CALL 0x0002f580
POP ECX
POP EBP
PUSH ESI
MOV EDX,dword ptr [ESP + 0x10]
ADD EDX,EDI
PUSH EDX
CALL 0x0002f580
ADD ESP,0x10
JMP 0x0005302d
SUB ESP,0xc
PUSH EDI
CALL 0x00052980
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x0005313e
XOR EDX,EDX
MOV EDI,0x1
LEA EBP,[EBX + 0xfffbc524]
JMP 0x00053174
SUB ESP,0xc
PUSH EDI
CALL 0x00099200
MOV EDI,EAX
POP EAX
POP EDX
PUSH EBP
PUSH EDI
CALL 0x0002f580
ADD ESP,0x10
JMP 0x0005302d
SUB ESP,0xc
PUSH 0x1
CALL 0x00099200
ADD ESP,0x10
MOV EBP,EAX
MOV byte ptr [EAX],0x0
JMP 0x0005309c
SUB ESP,0xc
PUSH EDI
CALL 0x00052980
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JZ 0x00053300
CMP byte ptr [EAX],0x0
JZ 0x000533b4
CMP byte ptr [EDX + 0x1],0x0
JZ 0x00053390
CMP byte ptr [EDX + 0x2],0x0
JZ 0x000533a2
SUB ESP,0xc
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x0002f760
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
LEA EBP,[EAX + 0x1]
MOV dword ptr [ESP + 0x4],EAX
NOP
TEST ESI,ESI
JZ 0x00053338
XOR EAX,EAX
CMP byte ptr [ESI],0x0
JZ 0x000532b0
CMP byte ptr [ESI + 0x1],0x0
MOV EAX,0x1
JZ 0x000532b0
CMP byte ptr [ESI + 0x2],0x0
MOV EAX,0x2
JZ 0x000532b0
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0xc
PUSH ESI
CALL 0x0002f760
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
LEA ESI,[ESI]
MOV dword ptr [ESP + 0x8],EDX
ADD EAX,EBP
SUB ESP,0xc
PUSH EAX
CALL 0x00099200
POP ECX
MOV EBP,EAX
POP EAX
MOV EDX,dword ptr [ESP + 0x10]
PUSH EDX
PUSH EBP
CALL 0x0002f580
POP EAX
POP EDX
PUSH ESI
MOV EAX,dword ptr [ESP + 0x10]
ADD EAX,EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
JMP 0x0005309c
LEA EDI,[EDX + 0x2]
JMP 0x00053190
MOV EDI,0x2
MOV EDX,0x1
JMP 0x00053170
MOV EBP,0x1
MOV dword ptr [ESP + 0x4],0x0
LEA EDX,[EBX + 0xfffbc524]
JMP 0x00053270
MOV EDI,0x1
XOR EDX,EDX
LEA EBP,[EBX + 0xfffbc524]
JMP 0x00053170
MOV dword ptr [ESP + 0x4],EDX
SUB ESP,0xc
PUSH EBP
CALL 0x00099200
MOV EBP,EAX
POP EAX
POP EDX
MOV EDX,dword ptr [ESP + 0xc]
PUSH EDX
PUSH EBP
CALL 0x0002f580
ADD ESP,0x10
JMP 0x0005309c
MOV dword ptr [ESP + 0x4],EDX
SUB ESP,0xc
PUSH ESI
CALL 0x0002f760
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x4]
ADD EDI,EAX
JMP 0x00053190
MOV EDI,0x3
MOV EDX,0x2
JMP 0x00053170
MOV EBP,0x2
MOV dword ptr [ESP + 0x4],0x1
JMP 0x00053270
MOV EBP,0x3
MOV dword ptr [ESP + 0x4],0x2
JMP 0x00053270
MOV EBP,0x1
MOV dword ptr [ESP + 0x4],0x0
JMP 0x00053270
CALL 0x000ecc40
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * make_variable_value(int param_1,char *param_2,uint param_3)\n\n{\n  char cVar1;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  longlong lVar7;\n  longlong lVar8;\n  size_t local_38;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }\n  if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar6);\n  strcpy(pcVar2,pcVar3);\n  strcpy(pcVar2 + sVar5,param_2);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000ecc40();\n}\n\n" comment (function_definition "char * make_variable_value(int param_1,char *param_2,uint param_3)\n\n{\n  char cVar1;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  longlong lVar7;\n  longlong lVar8;\n  size_t local_38;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }\n  if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar6);\n  strcpy(pcVar2,pcVar3);\n  strcpy(pcVar2 + sVar5,param_2);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000ecc40();\n}" primitive_type (pointer_declarator "* make_variable_value(int param_1,char *param_2,uint param_3)" * (function_declarator "make_variable_value(int param_1,char *param_2,uint param_3)" identifier (parameter_list "(int param_1,char *param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  longlong lVar7;\n  longlong lVar8;\n  size_t local_38;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }\n  if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar6);\n  strcpy(pcVar2,pcVar3);\n  strcpy(pcVar2 + sVar5,param_2);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000ecc40();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "longlong lVar8;" type_identifier identifier ;) (declaration "size_t local_38;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x52f49;" (assignment_expression "uStack_14 = 0x52f49" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" if (parenthesized_expression "((param_3 & 0x100) == 0)" ( (binary_expression "(param_3 & 0x100) == 0" (parenthesized_expression "(param_3 & 0x100)" ( (binary_expression "param_3 & 0x100" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }" { (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x10) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x10) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x10)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x10" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }" { (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x700) != 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x700) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x700)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x700" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }" { (if_statement "if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }" { (if_statement "if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" if (parenthesized_expression "(*param_2 == '\0')" ( (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }" { (expression_statement "pcVar3 = (char *)xmalloc(1);" (assignment_expression "pcVar3 = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*pcVar3 = '\0';" (assignment_expression "*pcVar3 = '\0'" (pointer_expression "*pcVar3" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" else (compound_statement "{\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" { (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar2 = (char *)xmalloc(sVar5 + 1);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar5 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + 1)" identifier (argument_list "(sVar5 + 1)" ( (binary_expression "sVar5 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar2,param_2);" (assignment_expression "pcVar3 = strcpy(pcVar2,param_2)" identifier = (call_expression "strcpy(pcVar2,param_2)" identifier (argument_list "(pcVar2,param_2)" ( identifier , identifier )))) ;) }))) }) (else_clause "else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" else (compound_statement "{\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" { (expression_statement "pcVar2 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar2 = (char *)get_variable_value(param_1)" identifier = (cast_expression "(char *)get_variable_value(param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_variable_value(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "pcVar2 = "";" (assignment_expression "pcVar2 = """ identifier = (string_literal """" " ")) ;) }) (else_clause "else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" else (if_statement "if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" if (parenthesized_expression "(*pcVar2 == '\0')" ( (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar6 = 1;\n            local_38 = 0;\n          }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) }) (else_clause "else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" else (if_statement "if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar2[1] == '\0')" ( (binary_expression "pcVar2[1] == '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar6 = 2;\n            local_38 = 1;\n          }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) }) (else_clause "else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" else (if_statement "if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar2[2] == '\0')" ( (binary_expression "pcVar2[2] == '\0'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar6 = 3;\n            local_38 = 2;\n          }" { (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;) }) (else_clause "else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" else (compound_statement "{\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" { (expression_statement "local_38 = strlen(pcVar2);" (assignment_expression "local_38 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "iVar6 = local_38 + 1;" (assignment_expression "iVar6 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) }))))))))) (if_statement "if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }" { (expression_statement "pcVar3 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar3 = (char *)xmalloc(iVar6)" identifier = (cast_expression "(char *)xmalloc(iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar3,pcVar2);" (call_expression "strcpy(pcVar3,pcVar2)" identifier (argument_list "(pcVar3,pcVar2)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" else (compound_statement "{\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" { (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;) (if_statement "if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }" if (parenthesized_expression "(((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0'))" ( (binary_expression "((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')" (parenthesized_expression "((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0'))" ( (binary_expression "(*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')" (parenthesized_expression "(*param_2 != '\0')" ( (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(sVar5 = 1, param_2[1] != '\0')" ( (comma_expression "sVar5 = 1, param_2[1] != '\0'" (assignment_expression "sVar5 = 1" identifier = number_literal) , (binary_expression "param_2[1] != '\0'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) && (parenthesized_expression "(sVar5 = 2, param_2[2] != '\0')" ( (comma_expression "sVar5 = 2, param_2[2] != '\0'" (assignment_expression "sVar5 = 2" identifier = number_literal) , (binary_expression "param_2[2] != '\0'" (subscript_expression "param_2[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n              sVar5 = strlen(param_2);\n            }" { (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) })) (expression_statement "pcVar3 = (char *)xmalloc(sVar5 + iVar6);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar5 + iVar6)" identifier = (cast_expression "(char *)xmalloc(sVar5 + iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + iVar6)" identifier (argument_list "(sVar5 + iVar6)" ( (binary_expression "sVar5 + iVar6" identifier + identifier) ))))) ;) (expression_statement "strcpy(pcVar3,pcVar2);" (call_expression "strcpy(pcVar3,pcVar2)" identifier (argument_list "(pcVar3,pcVar2)" ( identifier , identifier ))) ;) (expression_statement "strcpy(pcVar3 + local_38,param_2);" (call_expression "strcpy(pcVar3 + local_38,param_2)" identifier (argument_list "(pcVar3 + local_38,param_2)" ( (binary_expression "pcVar3 + local_38" identifier + identifier) , identifier ))) ;) }))) }))) (expression_statement "cVar1 = '\x04';" (assignment_expression "cVar1 = '\x04'" identifier = (char_literal "'\x04'" ' escape_sequence ')) ;) (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x400) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x400) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x400)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x400" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }" { (expression_statement "cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';" (assignment_expression "cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01'" identifier = (binary_expression "((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01'" (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x100) != 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x100) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x100)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x100" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) + (char_literal "'\x01'" ' escape_sequence '))) ;) })) (expression_statement "pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);" (assignment_expression "pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1)" identifier = (cast_expression "(char *)sh_modcase(pcVar3,0,cVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_modcase(pcVar3,0,cVar1)" identifier (argument_list "(pcVar3,0,cVar1)" ( identifier , number_literal , identifier ))))) ;) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (goto_statement "goto LAB_00052ff5;" goto statement_identifier ;) })) (if_statement "if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }" { (expression_statement "lVar7 = evalexp(param_2,0,&local_24);" (assignment_expression "lVar7 = evalexp(param_2,0,&local_24)" identifier = (call_expression "evalexp(param_2,0,&local_24)" identifier (argument_list "(param_2,0,&local_24)" ( identifier , number_literal , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }" { (labeled_statement "LAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);" statement_identifier : (expression_statement "pcVar2 = (char *)itos(lVar7);" (assignment_expression "pcVar2 = (char *)itos(lVar7)" identifier = (cast_expression "(char *)itos(lVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "itos(lVar7)" identifier (argument_list "(lVar7)" ( identifier ))))) ;)) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (if_statement "if ((param_3 & 0x200) == 0) goto LAB_00053103;" if (parenthesized_expression "((param_3 & 0x200) == 0)" ( (binary_expression "(param_3 & 0x200) == 0" (parenthesized_expression "(param_3 & 0x200)" ( (binary_expression "param_3 & 0x200" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00053103;" goto statement_identifier ;)) (labeled_statement "LAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" statement_identifier : (if_statement "if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" if (parenthesized_expression "(*param_2 == '\0')" ( (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }" { (expression_statement "pcVar2 = (char *)xmalloc(1);" (assignment_expression "pcVar2 = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*pcVar2 = '\0';" (assignment_expression "*pcVar2 = '\0'" (pointer_expression "*pcVar2" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" else (compound_statement "{\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" { (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar2 = (char *)xmalloc(sVar5 + 1);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar5 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + 1)" identifier (argument_list "(sVar5 + 1)" ( (binary_expression "sVar5 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = strcpy(pcVar2,param_2);" (assignment_expression "pcVar2 = strcpy(pcVar2,param_2)" identifier = (call_expression "strcpy(pcVar2,param_2)" identifier (argument_list "(pcVar2,param_2)" ( identifier , identifier )))) ;) })))) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (expression_statement "lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);" (assignment_expression "lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24)" identifier = (call_expression "evalexp(*(undefined4 *)(param_1 + 4),0,&local_24)" identifier (argument_list "(*(undefined4 *)(param_1 + 4),0,&local_24)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , number_literal , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }" { (expression_statement "lVar8 = evalexp(param_2,0,&local_24);" (assignment_expression "lVar8 = evalexp(param_2,0,&local_24)" identifier = (call_expression "evalexp(param_2,0,&local_24)" identifier (argument_list "(param_2,0,&local_24)" ( identifier , number_literal , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }" { (expression_statement "lVar7 = lVar7 + lVar8;" (assignment_expression "lVar7 = lVar7 + lVar8" identifier = (binary_expression "lVar7 + lVar8" identifier + identifier)) ;) (goto_statement "goto LAB_00052fdd;" goto statement_identifier ;) })) })) (if_statement "if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }" if (parenthesized_expression "((param_3 & 0x200) == 0)" ( (binary_expression "(param_3 & 0x200) == 0" (parenthesized_expression "(param_3 & 0x200)" ( (binary_expression "param_3 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }" { (labeled_statement "LAB_00053103:\n      top_level_cleanup();" statement_identifier : (expression_statement "top_level_cleanup();" (call_expression "top_level_cleanup()" identifier (argument_list "()" ( ))) ;)) comment (expression_statement "jump_to_top_level(2);" (call_expression "jump_to_top_level(2)" identifier (argument_list "(2)" ( number_literal ))) ;) })) (expression_statement "pcVar3 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar3 = (char *)get_variable_value(param_1)" identifier = (cast_expression "(char *)get_variable_value(param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_variable_value(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0005313e;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0005313e;" goto statement_identifier ;)) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ identifier = (string_literal """" " ")) ;) (labeled_statement "LAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" statement_identifier : (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" { (expression_statement "pcVar2 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar2 = (char *)xmalloc(iVar6)" identifier = (cast_expression "(char *)xmalloc(iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar2,pcVar3);" (call_expression "strcpy(pcVar2,pcVar3)" identifier (argument_list "(pcVar2,pcVar3)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) }))) }) (else_clause "else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" else (compound_statement "{\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" { (labeled_statement "LAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" statement_identifier : (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" { (expression_statement "pcVar2 = (char *)0x0;" (assignment_expression "pcVar2 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) }))) (if_statement "if ((param_3 & 1) == 0) goto LAB_00053006;" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00053006;" goto statement_identifier ;)) (expression_statement "pcVar3 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar3 = (char *)get_variable_value(param_1)" identifier = (cast_expression "(char *)get_variable_value(param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_variable_value(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }" { (labeled_statement "LAB_0005313e:\n      sVar5 = 0;" statement_identifier : (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;)) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (if_statement "if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }" if (parenthesized_expression "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }" { (if_statement "if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" if (parenthesized_expression "(pcVar3[1] == '\0')" ( (binary_expression "pcVar3[1] == '\0'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar6 = 2;\n          sVar5 = 1;\n        }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) }) (else_clause "else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" else (if_statement "if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" if (parenthesized_expression "(pcVar3[2] == '\0')" ( (binary_expression "pcVar3[2] == '\0'" (subscript_expression "pcVar3[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar6 = 3;\n          sVar5 = 2;\n        }" { (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) (expression_statement "sVar5 = 2;" (assignment_expression "sVar5 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" else (compound_statement "{\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" { (expression_statement "sVar5 = strlen(pcVar3);" (assignment_expression "sVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "iVar6 = sVar5 + 1;" (assignment_expression "iVar6 = sVar5 + 1" identifier = (binary_expression "sVar5 + 1" identifier + number_literal)) ;) }))))) })) (goto_statement "goto LAB_00053170;" goto statement_identifier ;) })) (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ identifier = (string_literal """" " ")) ;) }))) (if_statement "if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }" if (parenthesized_expression "(*param_2 != '\0')" ( (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }" { (if_statement "if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" if (parenthesized_expression "(param_2[1] == '\0')" ( (binary_expression "param_2[1] == '\0'" (subscript_expression "param_2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar6 = sVar5 + 2;\n    }" { (expression_statement "iVar6 = sVar5 + 2;" (assignment_expression "iVar6 = sVar5 + 2" identifier = (binary_expression "sVar5 + 2" identifier + number_literal)) ;) }) (else_clause "else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" else (if_statement "if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" if (parenthesized_expression "(param_2[2] == '\0')" ( (binary_expression "param_2[2] == '\0'" (subscript_expression "param_2[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar6 = sVar5 + 3;\n    }" { (expression_statement "iVar6 = sVar5 + 3;" (assignment_expression "iVar6 = sVar5 + 3" identifier = (binary_expression "sVar5 + 3" identifier + number_literal)) ;) }) (else_clause "else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" else (compound_statement "{\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" { (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar6 = iVar6 + sVar4;" (assignment_expression "iVar6 = iVar6 + sVar4" identifier = (binary_expression "iVar6 + sVar4" identifier + identifier)) ;) }))))) })) (expression_statement "pcVar2 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar2 = (char *)xmalloc(iVar6)" identifier = (cast_expression "(char *)xmalloc(iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar2,pcVar3);" (call_expression "strcpy(pcVar2,pcVar3)" identifier (argument_list "(pcVar2,pcVar3)" ( identifier , identifier ))) ;) (expression_statement "strcpy(pcVar2 + sVar5,param_2);" (call_expression "strcpy(pcVar2 + sVar5,param_2)" identifier (argument_list "(pcVar2 + sVar5,param_2)" ( (binary_expression "pcVar2 + sVar5" identifier + identifier) , identifier ))) ;) (labeled_statement "LAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return pcVar2;\n  }" { (return_statement "return pcVar2;" return identifier ;) }))) comment (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * make_variable_value(SHELL_VAR *var,char *value,int flags)\n\n{\n  char *pcVar1;\n  int flags_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int in_GS_OFFSET;\n  intmax_t iVar6;\n  intmax_t iVar7;\n  size_t local_38;\n  int expok;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((flags & 0x100U) == 0) {\n    if ((var->attributes & 0x10U) == 0) {\n      if ((var->attributes & 0x700U) != 0) {\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((flags & 1U) == 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }\n      if ((flags & 0x200U) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }\n      goto LAB_0005302d;\n    }\n    iVar6 = evalexp(var->value,0,&expok);\n    if (expok != 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((flags & 0x200U) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) goto LAB_0005313e;\n    sVar5 = 1;\n    sVar4 = 0;\n    pcVar2 = "";\nLAB_00053170:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)xmalloc(sVar5);\n      strcpy(pcVar1,pcVar2);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((flags & 1U) == 0) goto LAB_00053006;\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) {\nLAB_0005313e:\n      sVar4 = 0;\n      sVar5 = 1;\n      if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar4 = 0;\n    sVar5 = 1;\n    pcVar2 = "";\n  }\n  if (*value != '\0') {\n    if (value[1] == '\0') {\n      sVar5 = sVar4 + 2;\n    }\n    else if (value[2] == '\0') {\n      sVar5 = sVar4 + 3;\n    }\n    else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }\n  }\n  pcVar1 = (char *)xmalloc(sVar5);\n  strcpy(pcVar1,pcVar2);\n  strcpy(pcVar1 + sVar4,value);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment (function_definition "char * make_variable_value(SHELL_VAR *var,char *value,int flags)\n\n{\n  char *pcVar1;\n  int flags_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int in_GS_OFFSET;\n  intmax_t iVar6;\n  intmax_t iVar7;\n  size_t local_38;\n  int expok;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((flags & 0x100U) == 0) {\n    if ((var->attributes & 0x10U) == 0) {\n      if ((var->attributes & 0x700U) != 0) {\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((flags & 1U) == 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }\n      if ((flags & 0x200U) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }\n      goto LAB_0005302d;\n    }\n    iVar6 = evalexp(var->value,0,&expok);\n    if (expok != 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((flags & 0x200U) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) goto LAB_0005313e;\n    sVar5 = 1;\n    sVar4 = 0;\n    pcVar2 = "";\nLAB_00053170:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)xmalloc(sVar5);\n      strcpy(pcVar1,pcVar2);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((flags & 1U) == 0) goto LAB_00053006;\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) {\nLAB_0005313e:\n      sVar4 = 0;\n      sVar5 = 1;\n      if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar4 = 0;\n    sVar5 = 1;\n    pcVar2 = "";\n  }\n  if (*value != '\0') {\n    if (value[1] == '\0') {\n      sVar5 = sVar4 + 2;\n    }\n    else if (value[2] == '\0') {\n      sVar5 = sVar4 + 3;\n    }\n    else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }\n  }\n  pcVar1 = (char *)xmalloc(sVar5);\n  strcpy(pcVar1,pcVar2);\n  strcpy(pcVar1 + sVar4,value);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (pointer_declarator "* make_variable_value(SHELL_VAR *var,char *value,int flags)" * (function_declarator "make_variable_value(SHELL_VAR *var,char *value,int flags)" identifier (parameter_list "(SHELL_VAR *var,char *value,int flags)" ( (parameter_declaration "SHELL_VAR *var" type_identifier (pointer_declarator "*var" * identifier)) , (parameter_declaration "char *value" primitive_type (pointer_declarator "*value" * identifier)) , (parameter_declaration "int flags" primitive_type identifier) )))) (compound_statement "{\n  char *pcVar1;\n  int flags_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int in_GS_OFFSET;\n  intmax_t iVar6;\n  intmax_t iVar7;\n  size_t local_38;\n  int expok;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((flags & 0x100U) == 0) {\n    if ((var->attributes & 0x10U) == 0) {\n      if ((var->attributes & 0x700U) != 0) {\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((flags & 1U) == 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }\n      if ((flags & 0x200U) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }\n      goto LAB_0005302d;\n    }\n    iVar6 = evalexp(var->value,0,&expok);\n    if (expok != 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((flags & 0x200U) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) goto LAB_0005313e;\n    sVar5 = 1;\n    sVar4 = 0;\n    pcVar2 = "";\nLAB_00053170:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)xmalloc(sVar5);\n      strcpy(pcVar1,pcVar2);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((flags & 1U) == 0) goto LAB_00053006;\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) {\nLAB_0005313e:\n      sVar4 = 0;\n      sVar5 = 1;\n      if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar4 = 0;\n    sVar5 = 1;\n    pcVar2 = "";\n  }\n  if (*value != '\0') {\n    if (value[1] == '\0') {\n      sVar5 = sVar4 + 2;\n    }\n    else if (value[2] == '\0') {\n      sVar5 = sVar4 + 3;\n    }\n    else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }\n  }\n  pcVar1 = (char *)xmalloc(sVar5);\n  strcpy(pcVar1,pcVar2);\n  strcpy(pcVar1 + sVar4,value);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int flags_00;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "intmax_t iVar6;" type_identifier identifier ;) (declaration "intmax_t iVar7;" type_identifier identifier ;) (declaration "size_t local_38;" primitive_type identifier ;) (declaration "int expok;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x52f49;" (assignment_expression "uStack_14 = 0x52f49" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((flags & 0x100U) == 0) {\n    if ((var->attributes & 0x10U) == 0) {\n      if ((var->attributes & 0x700U) != 0) {\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((flags & 1U) == 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }\n      if ((flags & 0x200U) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }\n      goto LAB_0005302d;\n    }\n    iVar6 = evalexp(var->value,0,&expok);\n    if (expok != 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((flags & 0x200U) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) goto LAB_0005313e;\n    sVar5 = 1;\n    sVar4 = 0;\n    pcVar2 = "";\nLAB_00053170:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)xmalloc(sVar5);\n      strcpy(pcVar1,pcVar2);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((flags & 1U) == 0) goto LAB_00053006;\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) {\nLAB_0005313e:\n      sVar4 = 0;\n      sVar5 = 1;\n      if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar4 = 0;\n    sVar5 = 1;\n    pcVar2 = "";\n  }" if (parenthesized_expression "((flags & 0x100U) == 0)" ( (binary_expression "(flags & 0x100U) == 0" (parenthesized_expression "(flags & 0x100U)" ( (binary_expression "flags & 0x100U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((var->attributes & 0x10U) == 0) {\n      if ((var->attributes & 0x700U) != 0) {\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((flags & 1U) == 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }\n      if ((flags & 0x200U) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }\n      goto LAB_0005302d;\n    }\n    iVar6 = evalexp(var->value,0,&expok);\n    if (expok != 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((flags & 0x200U) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) goto LAB_0005313e;\n    sVar5 = 1;\n    sVar4 = 0;\n    pcVar2 = "";\nLAB_00053170:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)xmalloc(sVar5);\n      strcpy(pcVar1,pcVar2);\n      goto LAB_0005302d;\n    }\n  }" { (if_statement "if ((var->attributes & 0x10U) == 0) {\n      if ((var->attributes & 0x700U) != 0) {\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }" if (parenthesized_expression "((var->attributes & 0x10U) == 0)" ( (binary_expression "(var->attributes & 0x10U) == 0" (parenthesized_expression "(var->attributes & 0x10U)" ( (binary_expression "var->attributes & 0x10U" (field_expression "var->attributes" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((var->attributes & 0x700U) != 0) {\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }" { (if_statement "if ((var->attributes & 0x700U) != 0) {\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }" if (parenthesized_expression "((var->attributes & 0x700U) != 0)" ( (binary_expression "(var->attributes & 0x700U) != 0" (parenthesized_expression "(var->attributes & 0x700U)" ( (binary_expression "var->attributes & 0x700U" (field_expression "var->attributes" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }\n        flags_00 = 4;\n        if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }\n        pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);\n        free(pcVar2);\n        goto LAB_0005302d;\n      }" { (if_statement "if ((flags & 1U) == 0) {\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }\n        else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }" if (parenthesized_expression "((flags & 1U) == 0)" ( (binary_expression "(flags & 1U) == 0" (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }\n        }" { (if_statement "if (*value == '\0') {\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }\n          else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }" if (parenthesized_expression "(*value == '\0')" ( (binary_expression "*value == '\0'" (pointer_expression "*value" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pcVar2 = (char *)xmalloc(1);\n            *pcVar2 = '\0';\n          }" { (expression_statement "pcVar2 = (char *)xmalloc(1);" (assignment_expression "pcVar2 = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*pcVar2 = '\0';" (assignment_expression "*pcVar2 = '\0'" (pointer_expression "*pcVar2" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }" else (compound_statement "{\n            sVar4 = strlen(value);\n            pcVar1 = (char *)xmalloc(sVar4 + 1);\n            pcVar2 = strcpy(pcVar1,value);\n          }" { (expression_statement "sVar4 = strlen(value);" (assignment_expression "sVar4 = strlen(value)" identifier = (call_expression "strlen(value)" identifier (argument_list "(value)" ( identifier )))) ;) (expression_statement "pcVar1 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar1 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = strcpy(pcVar1,value);" (assignment_expression "pcVar2 = strcpy(pcVar1,value)" identifier = (call_expression "strcpy(pcVar1,value)" identifier (argument_list "(pcVar1,value)" ( identifier , identifier )))) ;) }))) }) (else_clause "else {\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }" else (compound_statement "{\n          pcVar1 = get_variable_value(var);\n          if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }\n          if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }\n        }" { (expression_statement "pcVar1 = get_variable_value(var);" (assignment_expression "pcVar1 = get_variable_value(var)" identifier = (call_expression "get_variable_value(var)" identifier (argument_list "(var)" ( identifier )))) ;) (if_statement "if (pcVar1 == (char *)0x0) {\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }\n          else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sVar5 = 1;\n            local_38 = 0;\n            pcVar1 = "";\n          }" { (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "pcVar1 = "";" (assignment_expression "pcVar1 = """ identifier = (string_literal """" " ")) ;) }) (else_clause "else if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" else (if_statement "if (*pcVar1 == '\0') {\n            sVar5 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" if (parenthesized_expression "(*pcVar1 == '\0')" ( (binary_expression "*pcVar1 == '\0'" (pointer_expression "*pcVar1" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            sVar5 = 1;\n            local_38 = 0;\n          }" { (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) }) (else_clause "else if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" else (if_statement "if (pcVar1[1] == '\0') {\n            sVar5 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar1[1] == '\0')" ( (binary_expression "pcVar1[1] == '\0'" (subscript_expression "pcVar1[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            sVar5 = 2;\n            local_38 = 1;\n          }" { (expression_statement "sVar5 = 2;" (assignment_expression "sVar5 = 2" identifier = number_literal) ;) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) }) (else_clause "else if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" else (if_statement "if (pcVar1[2] == '\0') {\n            sVar5 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar1[2] == '\0')" ( (binary_expression "pcVar1[2] == '\0'" (subscript_expression "pcVar1[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            sVar5 = 3;\n            local_38 = 2;\n          }" { (expression_statement "sVar5 = 3;" (assignment_expression "sVar5 = 3" identifier = number_literal) ;) (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;) }) (else_clause "else {\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" else (compound_statement "{\n            local_38 = strlen(pcVar1);\n            sVar5 = local_38 + 1;\n          }" { (expression_statement "local_38 = strlen(pcVar1);" (assignment_expression "local_38 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;) (expression_statement "sVar5 = local_38 + 1;" (assignment_expression "sVar5 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) }))))))))) (if_statement "if (value == (char *)0x0) {\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }\n          else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }" if (parenthesized_expression "(value == (char *)0x0)" ( (binary_expression "value == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar2 = (char *)xmalloc(sVar5);\n            strcpy(pcVar2,pcVar1);\n          }" { (expression_statement "pcVar2 = (char *)xmalloc(sVar5);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar2,pcVar1);" (call_expression "strcpy(pcVar2,pcVar1)" identifier (argument_list "(pcVar2,pcVar1)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }" else (compound_statement "{\n            sVar4 = 0;\n            if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }\n            pcVar2 = (char *)xmalloc(sVar4 + sVar5);\n            strcpy(pcVar2,pcVar1);\n            strcpy(pcVar2 + local_38,value);\n          }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               ) {\n              sVar4 = strlen(value);\n            }" if (parenthesized_expression "(((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')\n               )" ( (binary_expression "((*value != '\0') && (sVar4 = 1, value[1] != '\0')) && (sVar4 = 2, value[2] != '\0')" (parenthesized_expression "((*value != '\0') && (sVar4 = 1, value[1] != '\0'))" ( (binary_expression "(*value != '\0') && (sVar4 = 1, value[1] != '\0')" (parenthesized_expression "(*value != '\0')" ( (binary_expression "*value != '\0'" (pointer_expression "*value" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(sVar4 = 1, value[1] != '\0')" ( (comma_expression "sVar4 = 1, value[1] != '\0'" (assignment_expression "sVar4 = 1" identifier = number_literal) , (binary_expression "value[1] != '\0'" (subscript_expression "value[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) && (parenthesized_expression "(sVar4 = 2, value[2] != '\0')" ( (comma_expression "sVar4 = 2, value[2] != '\0'" (assignment_expression "sVar4 = 2" identifier = number_literal) , (binary_expression "value[2] != '\0'" (subscript_expression "value[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n              sVar4 = strlen(value);\n            }" { (expression_statement "sVar4 = strlen(value);" (assignment_expression "sVar4 = strlen(value)" identifier = (call_expression "strlen(value)" identifier (argument_list "(value)" ( identifier )))) ;) })) (expression_statement "pcVar2 = (char *)xmalloc(sVar4 + sVar5);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar4 + sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar4 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + sVar5)" identifier (argument_list "(sVar4 + sVar5)" ( (binary_expression "sVar4 + sVar5" identifier + identifier) ))))) ;) (expression_statement "strcpy(pcVar2,pcVar1);" (call_expression "strcpy(pcVar2,pcVar1)" identifier (argument_list "(pcVar2,pcVar1)" ( identifier , identifier ))) ;) (expression_statement "strcpy(pcVar2 + local_38,value);" (call_expression "strcpy(pcVar2 + local_38,value)" identifier (argument_list "(pcVar2 + local_38,value)" ( (binary_expression "pcVar2 + local_38" identifier + identifier) , identifier ))) ;) }))) }))) (expression_statement "flags_00 = 4;" (assignment_expression "flags_00 = 4" identifier = number_literal) ;) (if_statement "if ((var->attributes & 0x400U) == 0) {\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }" if (parenthesized_expression "((var->attributes & 0x400U) == 0)" ( (binary_expression "(var->attributes & 0x400U) == 0" (parenthesized_expression "(var->attributes & 0x400U)" ( (binary_expression "var->attributes & 0x400U" (field_expression "var->attributes" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          flags_00 = ((var->attributes & 0x100U) != 0) + 1;\n        }" { (expression_statement "flags_00 = ((var->attributes & 0x100U) != 0) + 1;" (assignment_expression "flags_00 = ((var->attributes & 0x100U) != 0) + 1" identifier = (binary_expression "((var->attributes & 0x100U) != 0) + 1" (parenthesized_expression "((var->attributes & 0x100U) != 0)" ( (binary_expression "(var->attributes & 0x100U) != 0" (parenthesized_expression "(var->attributes & 0x100U)" ( (binary_expression "var->attributes & 0x100U" (field_expression "var->attributes" identifier -> field_identifier) & number_literal) )) != number_literal) )) + number_literal)) ;) })) (expression_statement "pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00);" (assignment_expression "pcVar1 = sh_modcase(pcVar2,(char *)0x0,flags_00)" identifier = (call_expression "sh_modcase(pcVar2,(char *)0x0,flags_00)" identifier (argument_list "(pcVar2,(char *)0x0,flags_00)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;) (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (goto_statement "goto LAB_00052ff5;" goto statement_identifier ;) })) (if_statement "if ((flags & 1U) == 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }\n      if ((flags & 0x200U) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "((flags & 1U) == 0)" ( (binary_expression "(flags & 1U) == 0" (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }\n      if ((flags & 0x200U) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }\n      goto LAB_0005302d;\n    }" { (expression_statement "iVar7 = evalexp(value,0,&expok);" (assignment_expression "iVar7 = evalexp(value,0,&expok)" identifier = (call_expression "evalexp(value,0,&expok)" identifier (argument_list "(value,0,&expok)" ( identifier , number_literal , (pointer_expression "&expok" & identifier) )))) ;) (if_statement "if (expok != 0) {\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }" if (parenthesized_expression "(expok != 0)" ( (binary_expression "expok != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00052fdd:\n        pcVar1 = itos(iVar7);\n        goto LAB_0005302d;\n      }" { (labeled_statement "LAB_00052fdd:\n        pcVar1 = itos(iVar7);" statement_identifier : (expression_statement "pcVar1 = itos(iVar7);" (assignment_expression "pcVar1 = itos(iVar7)" identifier = (call_expression "itos(iVar7)" identifier (argument_list "(iVar7)" ( identifier )))) ;)) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (if_statement "if ((flags & 0x200U) == 0) goto LAB_00053103;" if (parenthesized_expression "((flags & 0x200U) == 0)" ( (binary_expression "(flags & 0x200U) == 0" (parenthesized_expression "(flags & 0x200U)" ( (binary_expression "flags & 0x200U" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00053103;" goto statement_identifier ;)) (labeled_statement "LAB_00053006:\n      if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }" statement_identifier : (if_statement "if (*value == '\0') {\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }\n      else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }" if (parenthesized_expression "(*value == '\0')" ( (binary_expression "*value == '\0'" (pointer_expression "*value" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pcVar1 = (char *)xmalloc(1);\n        *pcVar1 = '\0';\n      }" { (expression_statement "pcVar1 = (char *)xmalloc(1);" (assignment_expression "pcVar1 = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*pcVar1 = '\0';" (assignment_expression "*pcVar1 = '\0'" (pointer_expression "*pcVar1" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }" else (compound_statement "{\n        sVar4 = strlen(value);\n        pcVar1 = (char *)xmalloc(sVar4 + 1);\n        pcVar1 = strcpy(pcVar1,value);\n      }" { (expression_statement "sVar4 = strlen(value);" (assignment_expression "sVar4 = strlen(value)" identifier = (call_expression "strlen(value)" identifier (argument_list "(value)" ( identifier )))) ;) (expression_statement "pcVar1 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar1 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar1 = strcpy(pcVar1,value);" (assignment_expression "pcVar1 = strcpy(pcVar1,value)" identifier = (call_expression "strcpy(pcVar1,value)" identifier (argument_list "(pcVar1,value)" ( identifier , identifier )))) ;) })))) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (expression_statement "iVar6 = evalexp(var->value,0,&expok);" (assignment_expression "iVar6 = evalexp(var->value,0,&expok)" identifier = (call_expression "evalexp(var->value,0,&expok)" identifier (argument_list "(var->value,0,&expok)" ( (field_expression "var->value" identifier -> field_identifier) , number_literal , (pointer_expression "&expok" & identifier) )))) ;) (if_statement "if (expok != 0) {\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }\n    }" if (parenthesized_expression "(expok != 0)" ( (binary_expression "expok != 0" identifier != number_literal) )) (compound_statement "{\n      iVar7 = evalexp(value,0,&expok);\n      if (expok != 0) {\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }\n    }" { (expression_statement "iVar7 = evalexp(value,0,&expok);" (assignment_expression "iVar7 = evalexp(value,0,&expok)" identifier = (call_expression "evalexp(value,0,&expok)" identifier (argument_list "(value,0,&expok)" ( identifier , number_literal , (pointer_expression "&expok" & identifier) )))) ;) (if_statement "if (expok != 0) {\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }" if (parenthesized_expression "(expok != 0)" ( (binary_expression "expok != 0" identifier != number_literal) )) (compound_statement "{\n        iVar7 = iVar7 + iVar6;\n        goto LAB_00052fdd;\n      }" { (expression_statement "iVar7 = iVar7 + iVar6;" (assignment_expression "iVar7 = iVar7 + iVar6" identifier = (binary_expression "iVar7 + iVar6" identifier + identifier)) ;) (goto_statement "goto LAB_00052fdd;" goto statement_identifier ;) })) })) (if_statement "if ((flags & 0x200U) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }" if (parenthesized_expression "((flags & 0x200U) == 0)" ( (binary_expression "(flags & 0x200U) == 0" (parenthesized_expression "(flags & 0x200U)" ( (binary_expression "flags & 0x200U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00053103:\n      top_level_cleanup();\n                    /* WARNING: Subroutine does not return */\n      jump_to_top_level(2);\n    }" { (labeled_statement "LAB_00053103:\n      top_level_cleanup();" statement_identifier : (expression_statement "top_level_cleanup();" (call_expression "top_level_cleanup()" identifier (argument_list "()" ( ))) ;)) comment (expression_statement "jump_to_top_level(2);" (call_expression "jump_to_top_level(2)" identifier (argument_list "(2)" ( number_literal ))) ;) })) (expression_statement "pcVar2 = get_variable_value(var);" (assignment_expression "pcVar2 = get_variable_value(var)" identifier = (call_expression "get_variable_value(var)" identifier (argument_list "(var)" ( identifier )))) ;) (if_statement "if (pcVar2 != (char *)0x0) goto LAB_0005313e;" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0005313e;" goto statement_identifier ;)) (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (expression_statement "pcVar2 = "";" (assignment_expression "pcVar2 = """ identifier = (string_literal """" " ")) ;) (labeled_statement "LAB_00053170:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)xmalloc(sVar5);\n      strcpy(pcVar1,pcVar2);\n      goto LAB_0005302d;\n    }" statement_identifier : (if_statement "if (value == (char *)0x0) {\n      pcVar1 = (char *)xmalloc(sVar5);\n      strcpy(pcVar1,pcVar2);\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "(value == (char *)0x0)" ( (binary_expression "value == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar1 = (char *)xmalloc(sVar5);\n      strcpy(pcVar1,pcVar2);\n      goto LAB_0005302d;\n    }" { (expression_statement "pcVar1 = (char *)xmalloc(sVar5);" (assignment_expression "pcVar1 = (char *)xmalloc(sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar1,pcVar2);" (call_expression "strcpy(pcVar1,pcVar2)" identifier (argument_list "(pcVar1,pcVar2)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) }))) }) (else_clause "else {\nLAB_00052ff5:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((flags & 1U) == 0) goto LAB_00053006;\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) {\nLAB_0005313e:\n      sVar4 = 0;\n      sVar5 = 1;\n      if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar4 = 0;\n    sVar5 = 1;\n    pcVar2 = "";\n  }" else (compound_statement "{\nLAB_00052ff5:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((flags & 1U) == 0) goto LAB_00053006;\n    pcVar2 = get_variable_value(var);\n    if (pcVar2 != (char *)0x0) {\nLAB_0005313e:\n      sVar4 = 0;\n      sVar5 = 1;\n      if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar4 = 0;\n    sVar5 = 1;\n    pcVar2 = "";\n  }" { (labeled_statement "LAB_00052ff5:\n    if (value == (char *)0x0) {\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }" statement_identifier : (if_statement "if (value == (char *)0x0) {\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "(value == (char *)0x0)" ( (binary_expression "value == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar1 = (char *)0x0;\n      goto LAB_0005302d;\n    }" { (expression_statement "pcVar1 = (char *)0x0;" (assignment_expression "pcVar1 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) }))) (if_statement "if ((flags & 1U) == 0) goto LAB_00053006;" if (parenthesized_expression "((flags & 1U) == 0)" ( (binary_expression "(flags & 1U) == 0" (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00053006;" goto statement_identifier ;)) (expression_statement "pcVar2 = get_variable_value(var);" (assignment_expression "pcVar2 = get_variable_value(var)" identifier = (call_expression "get_variable_value(var)" identifier (argument_list "(var)" ( identifier )))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\nLAB_0005313e:\n      sVar4 = 0;\n      sVar5 = 1;\n      if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0005313e:\n      sVar4 = 0;\n      sVar5 = 1;\n      if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }" { (labeled_statement "LAB_0005313e:\n      sVar4 = 0;" statement_identifier : (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;)) (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) (if_statement "if (*pcVar2 != '\0') {\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }" if (parenthesized_expression "(*pcVar2 != '\0')" ( (binary_expression "*pcVar2 != '\0'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }\n      }" { (if_statement "if (pcVar2[1] == '\0') {\n          sVar5 = 2;\n          sVar4 = 1;\n        }\n        else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }" if (parenthesized_expression "(pcVar2[1] == '\0')" ( (binary_expression "pcVar2[1] == '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          sVar5 = 2;\n          sVar4 = 1;\n        }" { (expression_statement "sVar5 = 2;" (assignment_expression "sVar5 = 2" identifier = number_literal) ;) (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" identifier = number_literal) ;) }) (else_clause "else if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }" else (if_statement "if (pcVar2[2] == '\0') {\n          sVar5 = 3;\n          sVar4 = 2;\n        }\n        else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }" if (parenthesized_expression "(pcVar2[2] == '\0')" ( (binary_expression "pcVar2[2] == '\0'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          sVar5 = 3;\n          sVar4 = 2;\n        }" { (expression_statement "sVar5 = 3;" (assignment_expression "sVar5 = 3" identifier = number_literal) ;) (expression_statement "sVar4 = 2;" (assignment_expression "sVar4 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }" else (compound_statement "{\n          sVar4 = strlen(pcVar2);\n          sVar5 = sVar4 + 1;\n        }" { (expression_statement "sVar4 = strlen(pcVar2);" (assignment_expression "sVar4 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "sVar5 = sVar4 + 1;" (assignment_expression "sVar5 = sVar4 + 1" identifier = (binary_expression "sVar4 + 1" identifier + number_literal)) ;) }))))) })) (goto_statement "goto LAB_00053170;" goto statement_identifier ;) })) (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) (expression_statement "pcVar2 = "";" (assignment_expression "pcVar2 = """ identifier = (string_literal """" " ")) ;) }))) (if_statement "if (*value != '\0') {\n    if (value[1] == '\0') {\n      sVar5 = sVar4 + 2;\n    }\n    else if (value[2] == '\0') {\n      sVar5 = sVar4 + 3;\n    }\n    else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }\n  }" if (parenthesized_expression "(*value != '\0')" ( (binary_expression "*value != '\0'" (pointer_expression "*value" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (value[1] == '\0') {\n      sVar5 = sVar4 + 2;\n    }\n    else if (value[2] == '\0') {\n      sVar5 = sVar4 + 3;\n    }\n    else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }\n  }" { (if_statement "if (value[1] == '\0') {\n      sVar5 = sVar4 + 2;\n    }\n    else if (value[2] == '\0') {\n      sVar5 = sVar4 + 3;\n    }\n    else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }" if (parenthesized_expression "(value[1] == '\0')" ( (binary_expression "value[1] == '\0'" (subscript_expression "value[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar5 = sVar4 + 2;\n    }" { (expression_statement "sVar5 = sVar4 + 2;" (assignment_expression "sVar5 = sVar4 + 2" identifier = (binary_expression "sVar4 + 2" identifier + number_literal)) ;) }) (else_clause "else if (value[2] == '\0') {\n      sVar5 = sVar4 + 3;\n    }\n    else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }" else (if_statement "if (value[2] == '\0') {\n      sVar5 = sVar4 + 3;\n    }\n    else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }" if (parenthesized_expression "(value[2] == '\0')" ( (binary_expression "value[2] == '\0'" (subscript_expression "value[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar5 = sVar4 + 3;\n    }" { (expression_statement "sVar5 = sVar4 + 3;" (assignment_expression "sVar5 = sVar4 + 3" identifier = (binary_expression "sVar4 + 3" identifier + number_literal)) ;) }) (else_clause "else {\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }" else (compound_statement "{\n      sVar3 = strlen(value);\n      sVar5 = sVar5 + sVar3;\n    }" { (expression_statement "sVar3 = strlen(value);" (assignment_expression "sVar3 = strlen(value)" identifier = (call_expression "strlen(value)" identifier (argument_list "(value)" ( identifier )))) ;) (expression_statement "sVar5 = sVar5 + sVar3;" (assignment_expression "sVar5 = sVar5 + sVar3" identifier = (binary_expression "sVar5 + sVar3" identifier + identifier)) ;) }))))) })) (expression_statement "pcVar1 = (char *)xmalloc(sVar5);" (assignment_expression "pcVar1 = (char *)xmalloc(sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar1,pcVar2);" (call_expression "strcpy(pcVar1,pcVar2)" identifier (argument_list "(pcVar1,pcVar2)" ( identifier , identifier ))) ;) (expression_statement "strcpy(pcVar1 + sVar4,value);" (call_expression "strcpy(pcVar1 + sVar4,value)" identifier (argument_list "(pcVar1 + sVar4,value)" ( (binary_expression "pcVar1 + sVar4" identifier + identifier) , identifier ))) ;) (labeled_statement "LAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar1;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar1;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return pcVar1;\n  }" { (return_statement "return pcVar1;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "char * make_variable_value(int param_1,char *param_2,uint param_3)\n\n{\n  char cVar1;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  longlong lVar7;\n  longlong lVar8;\n  size_t local_38;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }\n  if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar6);\n  strcpy(pcVar2,pcVar3);\n  strcpy(pcVar2 + sVar5,param_2);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }\n                    \n  FUN_000ecc40();\n}\n\n" (function_definition "char * make_variable_value(int param_1,char *param_2,uint param_3)\n\n{\n  char cVar1;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  longlong lVar7;\n  longlong lVar8;\n  size_t local_38;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }\n  if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar6);\n  strcpy(pcVar2,pcVar3);\n  strcpy(pcVar2 + sVar5,param_2);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }\n                    \n  FUN_000ecc40();\n}" primitive_type (pointer_declarator "* make_variable_value(int param_1,char *param_2,uint param_3)" * (function_declarator "make_variable_value(int param_1,char *param_2,uint param_3)" identifier (parameter_list "(int param_1,char *param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  longlong lVar7;\n  longlong lVar8;\n  size_t local_38;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }\n  if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar6);\n  strcpy(pcVar2,pcVar3);\n  strcpy(pcVar2 + sVar5,param_2);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }\n                    \n  FUN_000ecc40();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "longlong lVar8;" type_identifier identifier ;) (declaration "size_t local_38;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x52f49;" (assignment_expression "uStack_14 = 0x52f49" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" if (parenthesized_expression "((param_3 & 0x100) == 0)" ( (binary_expression "(param_3 & 0x100) == 0" (parenthesized_expression "(param_3 & 0x100)" ( (binary_expression "param_3 & 0x100" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }" { (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x10) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x10) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x10)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x10" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }" { (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x700) != 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x700) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x700)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x700" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }" { (if_statement "if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }" { (if_statement "if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" if (parenthesized_expression "(*param_2 == '\0')" ( (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }" { (expression_statement "pcVar3 = (char *)xmalloc(1);" (assignment_expression "pcVar3 = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*pcVar3 = '\0';" (assignment_expression "*pcVar3 = '\0'" (pointer_expression "*pcVar3" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" else (compound_statement "{\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" { (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar2 = (char *)xmalloc(sVar5 + 1);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar5 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + 1)" identifier (argument_list "(sVar5 + 1)" ( (binary_expression "sVar5 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar2,param_2);" (assignment_expression "pcVar3 = strcpy(pcVar2,param_2)" identifier = (call_expression "strcpy(pcVar2,param_2)" identifier (argument_list "(pcVar2,param_2)" ( identifier , identifier )))) ;) }))) }) (else_clause "else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" else (compound_statement "{\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" { (expression_statement "pcVar2 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar2 = (char *)get_variable_value(param_1)" identifier = (cast_expression "(char *)get_variable_value(param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_variable_value(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "pcVar2 = "";" (assignment_expression "pcVar2 = """ identifier = (string_literal """" " ")) ;) }) (else_clause "else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" else (if_statement "if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" if (parenthesized_expression "(*pcVar2 == '\0')" ( (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar6 = 1;\n            local_38 = 0;\n          }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) }) (else_clause "else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" else (if_statement "if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar2[1] == '\0')" ( (binary_expression "pcVar2[1] == '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar6 = 2;\n            local_38 = 1;\n          }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) }) (else_clause "else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" else (if_statement "if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" if (parenthesized_expression "(pcVar2[2] == '\0')" ( (binary_expression "pcVar2[2] == '\0'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar6 = 3;\n            local_38 = 2;\n          }" { (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;) }) (else_clause "else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" else (compound_statement "{\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" { (expression_statement "local_38 = strlen(pcVar2);" (assignment_expression "local_38 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "iVar6 = local_38 + 1;" (assignment_expression "iVar6 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) }))))))))) (if_statement "if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }" { (expression_statement "pcVar3 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar3 = (char *)xmalloc(iVar6)" identifier = (cast_expression "(char *)xmalloc(iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar3,pcVar2);" (call_expression "strcpy(pcVar3,pcVar2)" identifier (argument_list "(pcVar3,pcVar2)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" else (compound_statement "{\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" { (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;) (if_statement "if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }" if (parenthesized_expression "(((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0'))" ( (binary_expression "((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')" (parenthesized_expression "((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0'))" ( (binary_expression "(*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')" (parenthesized_expression "(*param_2 != '\0')" ( (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(sVar5 = 1, param_2[1] != '\0')" ( (comma_expression "sVar5 = 1, param_2[1] != '\0'" (assignment_expression "sVar5 = 1" identifier = number_literal) , (binary_expression "param_2[1] != '\0'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) && (parenthesized_expression "(sVar5 = 2, param_2[2] != '\0')" ( (comma_expression "sVar5 = 2, param_2[2] != '\0'" (assignment_expression "sVar5 = 2" identifier = number_literal) , (binary_expression "param_2[2] != '\0'" (subscript_expression "param_2[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n              sVar5 = strlen(param_2);\n            }" { (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) })) (expression_statement "pcVar3 = (char *)xmalloc(sVar5 + iVar6);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar5 + iVar6)" identifier = (cast_expression "(char *)xmalloc(sVar5 + iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + iVar6)" identifier (argument_list "(sVar5 + iVar6)" ( (binary_expression "sVar5 + iVar6" identifier + identifier) ))))) ;) (expression_statement "strcpy(pcVar3,pcVar2);" (call_expression "strcpy(pcVar3,pcVar2)" identifier (argument_list "(pcVar3,pcVar2)" ( identifier , identifier ))) ;) (expression_statement "strcpy(pcVar3 + local_38,param_2);" (call_expression "strcpy(pcVar3 + local_38,param_2)" identifier (argument_list "(pcVar3 + local_38,param_2)" ( (binary_expression "pcVar3 + local_38" identifier + identifier) , identifier ))) ;) }))) }))) (expression_statement "cVar1 = '\x04';" (assignment_expression "cVar1 = '\x04'" identifier = (char_literal "'\x04'" ' escape_sequence ')) ;) (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x400) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x400) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x400)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x400" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }" { (expression_statement "cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';" (assignment_expression "cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01'" identifier = (binary_expression "((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01'" (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x100) != 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x100) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x100)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x100" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) + (char_literal "'\x01'" ' escape_sequence '))) ;) })) (expression_statement "pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);" (assignment_expression "pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1)" identifier = (cast_expression "(char *)sh_modcase(pcVar3,0,cVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_modcase(pcVar3,0,cVar1)" identifier (argument_list "(pcVar3,0,cVar1)" ( identifier , number_literal , identifier ))))) ;) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (goto_statement "goto LAB_00052ff5;" goto statement_identifier ;) })) (if_statement "if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }" { (expression_statement "lVar7 = evalexp(param_2,0,&local_24);" (assignment_expression "lVar7 = evalexp(param_2,0,&local_24)" identifier = (call_expression "evalexp(param_2,0,&local_24)" identifier (argument_list "(param_2,0,&local_24)" ( identifier , number_literal , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }" { (labeled_statement "LAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);" statement_identifier : (expression_statement "pcVar2 = (char *)itos(lVar7);" (assignment_expression "pcVar2 = (char *)itos(lVar7)" identifier = (cast_expression "(char *)itos(lVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "itos(lVar7)" identifier (argument_list "(lVar7)" ( identifier ))))) ;)) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (if_statement "if ((param_3 & 0x200) == 0) goto LAB_00053103;" if (parenthesized_expression "((param_3 & 0x200) == 0)" ( (binary_expression "(param_3 & 0x200) == 0" (parenthesized_expression "(param_3 & 0x200)" ( (binary_expression "param_3 & 0x200" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00053103;" goto statement_identifier ;)) (labeled_statement "LAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" statement_identifier : (if_statement "if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" if (parenthesized_expression "(*param_2 == '\0')" ( (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }" { (expression_statement "pcVar2 = (char *)xmalloc(1);" (assignment_expression "pcVar2 = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*pcVar2 = '\0';" (assignment_expression "*pcVar2 = '\0'" (pointer_expression "*pcVar2" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" else (compound_statement "{\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" { (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar2 = (char *)xmalloc(sVar5 + 1);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar5 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + 1)" identifier (argument_list "(sVar5 + 1)" ( (binary_expression "sVar5 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = strcpy(pcVar2,param_2);" (assignment_expression "pcVar2 = strcpy(pcVar2,param_2)" identifier = (call_expression "strcpy(pcVar2,param_2)" identifier (argument_list "(pcVar2,param_2)" ( identifier , identifier )))) ;) })))) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) })) (expression_statement "lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);" (assignment_expression "lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24)" identifier = (call_expression "evalexp(*(undefined4 *)(param_1 + 4),0,&local_24)" identifier (argument_list "(*(undefined4 *)(param_1 + 4),0,&local_24)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , number_literal , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }" { (expression_statement "lVar8 = evalexp(param_2,0,&local_24);" (assignment_expression "lVar8 = evalexp(param_2,0,&local_24)" identifier = (call_expression "evalexp(param_2,0,&local_24)" identifier (argument_list "(param_2,0,&local_24)" ( identifier , number_literal , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }" { (expression_statement "lVar7 = lVar7 + lVar8;" (assignment_expression "lVar7 = lVar7 + lVar8" identifier = (binary_expression "lVar7 + lVar8" identifier + identifier)) ;) (goto_statement "goto LAB_00052fdd;" goto statement_identifier ;) })) })) (if_statement "if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }" if (parenthesized_expression "((param_3 & 0x200) == 0)" ( (binary_expression "(param_3 & 0x200) == 0" (parenthesized_expression "(param_3 & 0x200)" ( (binary_expression "param_3 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }" { (labeled_statement "LAB_00053103:\n      top_level_cleanup();" statement_identifier : (expression_statement "top_level_cleanup();" (call_expression "top_level_cleanup()" identifier (argument_list "()" ( ))) ;)) (expression_statement "jump_to_top_level(2);" (call_expression "jump_to_top_level(2)" identifier (argument_list "(2)" ( number_literal ))) ;) })) (expression_statement "pcVar3 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar3 = (char *)get_variable_value(param_1)" identifier = (cast_expression "(char *)get_variable_value(param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_variable_value(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0005313e;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0005313e;" goto statement_identifier ;)) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ identifier = (string_literal """" " ")) ;) (labeled_statement "LAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" statement_identifier : (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" { (expression_statement "pcVar2 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar2 = (char *)xmalloc(iVar6)" identifier = (cast_expression "(char *)xmalloc(iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar2,pcVar3);" (call_expression "strcpy(pcVar2,pcVar3)" identifier (argument_list "(pcVar2,pcVar3)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) }))) }) (else_clause "else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" else (compound_statement "{\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" { (labeled_statement "LAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" statement_identifier : (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" { (expression_statement "pcVar2 = (char *)0x0;" (assignment_expression "pcVar2 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0005302d;" goto statement_identifier ;) }))) (if_statement "if ((param_3 & 1) == 0) goto LAB_00053006;" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00053006;" goto statement_identifier ;)) (expression_statement "pcVar3 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar3 = (char *)get_variable_value(param_1)" identifier = (cast_expression "(char *)get_variable_value(param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_variable_value(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }" { (labeled_statement "LAB_0005313e:\n      sVar5 = 0;" statement_identifier : (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;)) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (if_statement "if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }" if (parenthesized_expression "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }" { (if_statement "if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" if (parenthesized_expression "(pcVar3[1] == '\0')" ( (binary_expression "pcVar3[1] == '\0'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar6 = 2;\n          sVar5 = 1;\n        }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) }) (else_clause "else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" else (if_statement "if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" if (parenthesized_expression "(pcVar3[2] == '\0')" ( (binary_expression "pcVar3[2] == '\0'" (subscript_expression "pcVar3[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar6 = 3;\n          sVar5 = 2;\n        }" { (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) (expression_statement "sVar5 = 2;" (assignment_expression "sVar5 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" else (compound_statement "{\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" { (expression_statement "sVar5 = strlen(pcVar3);" (assignment_expression "sVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "iVar6 = sVar5 + 1;" (assignment_expression "iVar6 = sVar5 + 1" identifier = (binary_expression "sVar5 + 1" identifier + number_literal)) ;) }))))) })) (goto_statement "goto LAB_00053170;" goto statement_identifier ;) })) (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ identifier = (string_literal """" " ")) ;) }))) (if_statement "if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }" if (parenthesized_expression "(*param_2 != '\0')" ( (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }" { (if_statement "if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" if (parenthesized_expression "(param_2[1] == '\0')" ( (binary_expression "param_2[1] == '\0'" (subscript_expression "param_2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar6 = sVar5 + 2;\n    }" { (expression_statement "iVar6 = sVar5 + 2;" (assignment_expression "iVar6 = sVar5 + 2" identifier = (binary_expression "sVar5 + 2" identifier + number_literal)) ;) }) (else_clause "else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" else (if_statement "if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" if (parenthesized_expression "(param_2[2] == '\0')" ( (binary_expression "param_2[2] == '\0'" (subscript_expression "param_2[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar6 = sVar5 + 3;\n    }" { (expression_statement "iVar6 = sVar5 + 3;" (assignment_expression "iVar6 = sVar5 + 3" identifier = (binary_expression "sVar5 + 3" identifier + number_literal)) ;) }) (else_clause "else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" else (compound_statement "{\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" { (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar6 = iVar6 + sVar4;" (assignment_expression "iVar6 = iVar6 + sVar4" identifier = (binary_expression "iVar6 + sVar4" identifier + identifier)) ;) }))))) })) (expression_statement "pcVar2 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar2 = (char *)xmalloc(iVar6)" identifier = (cast_expression "(char *)xmalloc(iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "strcpy(pcVar2,pcVar3);" (call_expression "strcpy(pcVar2,pcVar3)" identifier (argument_list "(pcVar2,pcVar3)" ( identifier , identifier ))) ;) (expression_statement "strcpy(pcVar2 + sVar5,param_2);" (call_expression "strcpy(pcVar2 + sVar5,param_2)" identifier (argument_list "(pcVar2 + sVar5,param_2)" ( (binary_expression "pcVar2 + sVar5" identifier + identifier) , identifier ))) ;) (labeled_statement "LAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return pcVar2;\n  }" { (return_statement "return pcVar2;" return identifier ;) }))) (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (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 IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (string_literal " ")) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))))))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence '))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , IDENT ))) ;) }))) }))) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) + (char_literal ' escape_sequence '))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (string_literal " ")) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (string_literal " ")) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , IDENT ))) ;) (labeled_statement statement_identifier : (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 { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "char * make_variable_value(int param_1,char *param_2,uint param_3)\n\n{\n  char cVar1;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  longlong lVar7;\n  longlong lVar8;\n  size_t local_38;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }\n  if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar6);\n  strcpy(pcVar2,pcVar3);\n  strcpy(pcVar2 + sVar5,param_2);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }\n                    \n  FUN_000ecc40();\n}" (primitive_type "char") (pointer_declarator "* make_variable_value(int param_1,char *param_2,uint param_3)" (* "*") (function_declarator "make_variable_value(int param_1,char *param_2,uint param_3)" (identifier "make_variable_value") (parameter_list "(int param_1,char *param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")")))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  longlong lVar7;\n  longlong lVar8;\n  size_t local_38;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x52f49;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }\n  if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar6);\n  strcpy(pcVar2,pcVar3);\n  strcpy(pcVar2 + sVar5,param_2);\nLAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }\n                    \n  FUN_000ecc40();\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "longlong lVar7;" (type_identifier "longlong") (identifier "lVar7") (; ";")) (declaration "longlong lVar8;" (type_identifier "longlong") (identifier "lVar8") (; ";")) (declaration "size_t local_38;" (primitive_type "size_t") (identifier "local_38") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x52f49;" (assignment_expression "uStack_14 = 0x52f49" (identifier "uStack_14") (= "=") (number_literal "0x52f49")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((param_3 & 0x100) == 0) {\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }\n  else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" (if "if") (parenthesized_expression "((param_3 & 0x100) == 0)" (( "(") (binary_expression "(param_3 & 0x100) == 0" (parenthesized_expression "(param_3 & 0x100)" (( "(") (binary_expression "param_3 & 0x100" (identifier "param_3") (& "&") (number_literal "0x100")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }\n    if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }\n    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);\n    if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }\n    if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) goto LAB_0005313e;\n    iVar6 = 1;\n    sVar5 = 0;\n    pcVar3 = "";\nLAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }\n  }" ({ "{") (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x10) == 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x14) & 0x10) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x10)" (( "(") (binary_expression "*(uint *)(param_1 + 0x14) & 0x10" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }\n      goto LAB_00052ff5;\n    }" ({ "{") (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x700) != 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x14) & 0x700) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x700)" (( "(") (binary_expression "*(uint *)(param_1 + 0x14) & 0x700" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0x700")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }\n        cVar1 = '\x04';\n        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }\n        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);\n        free(pcVar3);\n        goto LAB_0005302d;\n      }" ({ "{") (if_statement "if ((param_3 & 1) == 0) {\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }\n        else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" (if "if") (parenthesized_expression "((param_3 & 1) == 0)" (( "(") (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" (( "(") (binary_expression "param_3 & 1" (identifier "param_3") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }\n        }" ({ "{") (if_statement "if (*param_2 == '\0') {\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }\n          else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" (if "if") (parenthesized_expression "(*param_2 == '\0')" (( "(") (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            pcVar3 = (char *)xmalloc(1);\n            *pcVar3 = '\0';\n          }" ({ "{") (expression_statement "pcVar3 = (char *)xmalloc(1);" (assignment_expression "pcVar3 = (char *)xmalloc(1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(1)" (identifier "xmalloc") (argument_list "(1)" (( "(") (number_literal "1") () ")"))))) (; ";")) (expression_statement "*pcVar3 = '\0';" (assignment_expression "*pcVar3 = '\0'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")) (else_clause "else {\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" (else "else") (compound_statement "{\n            sVar5 = strlen(param_2);\n            pcVar2 = (char *)xmalloc(sVar5 + 1);\n            pcVar3 = strcpy(pcVar2,param_2);\n          }" ({ "{") (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" (identifier "sVar5") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "pcVar2 = (char *)xmalloc(sVar5 + 1);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar5 + 1)" (identifier "pcVar2") (= "=") (cast_expression "(char *)xmalloc(sVar5 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar5 + 1)" (identifier "xmalloc") (argument_list "(sVar5 + 1)" (( "(") (binary_expression "sVar5 + 1" (identifier "sVar5") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar2,param_2);" (assignment_expression "pcVar3 = strcpy(pcVar2,param_2)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar2,param_2)" (identifier "strcpy") (argument_list "(pcVar2,param_2)" (( "(") (identifier "pcVar2") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" (else "else") (compound_statement "{\n          pcVar2 = (char *)get_variable_value(param_1);\n          if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }\n          if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }\n        }" ({ "{") (expression_statement "pcVar2 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar2 = (char *)get_variable_value(param_1)" (identifier "pcVar2") (= "=") (cast_expression "(char *)get_variable_value(param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "get_variable_value(param_1)" (identifier "get_variable_value") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (if_statement "if (pcVar2 == (char *)0x0) {\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }\n          else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" (if "if") (parenthesized_expression "(pcVar2 == (char *)0x0)" (( "(") (binary_expression "pcVar2 == (char *)0x0" (identifier "pcVar2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            iVar6 = 1;\n            local_38 = 0;\n            pcVar2 = "";\n          }" ({ "{") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar2 = "";" (assignment_expression "pcVar2 = """ (identifier "pcVar2") (= "=") (string_literal """" (" """) (" """))) (; ";")) (} "}")) (else_clause "else if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" (else "else") (if_statement "if (*pcVar2 == '\0') {\n            iVar6 = 1;\n            local_38 = 0;\n          }\n          else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" (if "if") (parenthesized_expression "(*pcVar2 == '\0')" (( "(") (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            iVar6 = 1;\n            local_38 = 0;\n          }" ({ "{") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" (else "else") (if_statement "if (pcVar2[1] == '\0') {\n            iVar6 = 2;\n            local_38 = 1;\n          }\n          else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" (if "if") (parenthesized_expression "(pcVar2[1] == '\0')" (( "(") (binary_expression "pcVar2[1] == '\0'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            iVar6 = 2;\n            local_38 = 1;\n          }" ({ "{") (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" (identifier "iVar6") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" (identifier "local_38") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" (else "else") (if_statement "if (pcVar2[2] == '\0') {\n            iVar6 = 3;\n            local_38 = 2;\n          }\n          else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" (if "if") (parenthesized_expression "(pcVar2[2] == '\0')" (( "(") (binary_expression "pcVar2[2] == '\0'" (subscript_expression "pcVar2[2]" (identifier "pcVar2") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            iVar6 = 3;\n            local_38 = 2;\n          }" ({ "{") (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" (identifier "iVar6") (= "=") (number_literal "3")) (; ";")) (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" (identifier "local_38") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" (else "else") (compound_statement "{\n            local_38 = strlen(pcVar2);\n            iVar6 = local_38 + 1;\n          }" ({ "{") (expression_statement "local_38 = strlen(pcVar2);" (assignment_expression "local_38 = strlen(pcVar2)" (identifier "local_38") (= "=") (call_expression "strlen(pcVar2)" (identifier "strlen") (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")")))) (; ";")) (expression_statement "iVar6 = local_38 + 1;" (assignment_expression "iVar6 = local_38 + 1" (identifier "iVar6") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (} "}")))))))))) (if_statement "if (param_2 == (char *)0x0) {\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }\n          else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" (if "if") (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            pcVar3 = (char *)xmalloc(iVar6);\n            strcpy(pcVar3,pcVar2);\n          }" ({ "{") (expression_statement "pcVar3 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar3 = (char *)xmalloc(iVar6)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(iVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar6)" (identifier "xmalloc") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))))) (; ";")) (expression_statement "strcpy(pcVar3,pcVar2);" (call_expression "strcpy(pcVar3,pcVar2)" (identifier "strcpy") (argument_list "(pcVar3,pcVar2)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" (else "else") (compound_statement "{\n            sVar5 = 0;\n            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }\n            pcVar3 = (char *)xmalloc(sVar5 + iVar6);\n            strcpy(pcVar3,pcVar2);\n            strcpy(pcVar3 + local_38,param_2);\n          }" ({ "{") (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" (identifier "sVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')) {\n              sVar5 = strlen(param_2);\n            }" (if "if") (parenthesized_expression "(((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0'))" (( "(") (binary_expression "((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&\n               (sVar5 = 2, param_2[2] != '\0')" (parenthesized_expression "((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0'))" (( "(") (binary_expression "(*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')" (parenthesized_expression "(*param_2 != '\0')" (( "(") (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(sVar5 = 1, param_2[1] != '\0')" (( "(") (comma_expression "sVar5 = 1, param_2[1] != '\0'" (assignment_expression "sVar5 = 1" (identifier "sVar5") (= "=") (number_literal "1")) (, ",") (binary_expression "param_2[1] != '\0'" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(sVar5 = 2, param_2[2] != '\0')" (( "(") (comma_expression "sVar5 = 2, param_2[2] != '\0'" (assignment_expression "sVar5 = 2" (identifier "sVar5") (= "=") (number_literal "2")) (, ",") (binary_expression "param_2[2] != '\0'" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n              sVar5 = strlen(param_2);\n            }" ({ "{") (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" (identifier "sVar5") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (} "}"))) (expression_statement "pcVar3 = (char *)xmalloc(sVar5 + iVar6);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar5 + iVar6)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar5 + iVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar5 + iVar6)" (identifier "xmalloc") (argument_list "(sVar5 + iVar6)" (( "(") (binary_expression "sVar5 + iVar6" (identifier "sVar5") (+ "+") (identifier "iVar6")) () ")"))))) (; ";")) (expression_statement "strcpy(pcVar3,pcVar2);" (call_expression "strcpy(pcVar3,pcVar2)" (identifier "strcpy") (argument_list "(pcVar3,pcVar2)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar2") () ")"))) (; ";")) (expression_statement "strcpy(pcVar3 + local_38,param_2);" (call_expression "strcpy(pcVar3 + local_38,param_2)" (identifier "strcpy") (argument_list "(pcVar3 + local_38,param_2)" (( "(") (binary_expression "pcVar3 + local_38" (identifier "pcVar3") (+ "+") (identifier "local_38")) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}")))) (} "}")))) (expression_statement "cVar1 = '\x04';" (assignment_expression "cVar1 = '\x04'" (identifier "cVar1") (= "=") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) (; ";")) (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x400) == 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x14) & 0x400) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x400)" (( "(") (binary_expression "*(uint *)(param_1 + 0x14) & 0x400" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';\n        }" ({ "{") (expression_statement "cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';" (assignment_expression "cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01'" (identifier "cVar1") (= "=") (binary_expression "((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01'" (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x100) != 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x14) & 0x100) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x100)" (( "(") (binary_expression "*(uint *)(param_1 + 0x14) & 0x100" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (} "}"))) (expression_statement "pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);" (assignment_expression "pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1)" (identifier "pcVar2") (= "=") (cast_expression "(char *)sh_modcase(pcVar3,0,cVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "sh_modcase(pcVar3,0,cVar1)" (identifier "sh_modcase") (argument_list "(pcVar3,0,cVar1)" (( "(") (identifier "pcVar3") (, ",") (number_literal "0") (, ",") (identifier "cVar1") () ")"))))) (; ";")) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (goto_statement "goto LAB_0005302d;" (goto "goto") (statement_identifier "LAB_0005302d") (; ";")) (} "}"))) (goto_statement "goto LAB_00052ff5;" (goto "goto") (statement_identifier "LAB_00052ff5") (; ";")) (} "}"))) (if_statement "if ((param_3 & 1) == 0) {\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }" (if "if") (parenthesized_expression "((param_3 & 1) == 0)" (( "(") (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" (( "(") (binary_expression "param_3 & 1" (identifier "param_3") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      lVar7 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }\n      if ((param_3 & 0x200) == 0) goto LAB_00053103;\nLAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }\n      goto LAB_0005302d;\n    }" ({ "{") (expression_statement "lVar7 = evalexp(param_2,0,&local_24);" (assignment_expression "lVar7 = evalexp(param_2,0,&local_24)" (identifier "lVar7") (= "=") (call_expression "evalexp(param_2,0,&local_24)" (identifier "evalexp") (argument_list "(param_2,0,&local_24)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")")))) (; ";")) (if_statement "if (local_24 != 0) {\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }" (if "if") (parenthesized_expression "(local_24 != 0)" (( "(") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);\n        goto LAB_0005302d;\n      }" ({ "{") (labeled_statement "LAB_00052fdd:\n        pcVar2 = (char *)itos(lVar7);" (statement_identifier "LAB_00052fdd") (: ":") (expression_statement "pcVar2 = (char *)itos(lVar7);" (assignment_expression "pcVar2 = (char *)itos(lVar7)" (identifier "pcVar2") (= "=") (cast_expression "(char *)itos(lVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "itos(lVar7)" (identifier "itos") (argument_list "(lVar7)" (( "(") (identifier "lVar7") () ")"))))) (; ";"))) (goto_statement "goto LAB_0005302d;" (goto "goto") (statement_identifier "LAB_0005302d") (; ";")) (} "}"))) (if_statement "if ((param_3 & 0x200) == 0) goto LAB_00053103;" (if "if") (parenthesized_expression "((param_3 & 0x200) == 0)" (( "(") (binary_expression "(param_3 & 0x200) == 0" (parenthesized_expression "(param_3 & 0x200)" (( "(") (binary_expression "param_3 & 0x200" (identifier "param_3") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00053103;" (goto "goto") (statement_identifier "LAB_00053103") (; ";"))) (labeled_statement "LAB_00053006:\n      if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" (statement_identifier "LAB_00053006") (: ":") (if_statement "if (*param_2 == '\0') {\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }\n      else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" (if "if") (parenthesized_expression "(*param_2 == '\0')" (( "(") (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        pcVar2 = (char *)xmalloc(1);\n        *pcVar2 = '\0';\n      }" ({ "{") (expression_statement "pcVar2 = (char *)xmalloc(1);" (assignment_expression "pcVar2 = (char *)xmalloc(1)" (identifier "pcVar2") (= "=") (cast_expression "(char *)xmalloc(1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(1)" (identifier "xmalloc") (argument_list "(1)" (( "(") (number_literal "1") () ")"))))) (; ";")) (expression_statement "*pcVar2 = '\0';" (assignment_expression "*pcVar2 = '\0'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")) (else_clause "else {\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" (else "else") (compound_statement "{\n        sVar5 = strlen(param_2);\n        pcVar2 = (char *)xmalloc(sVar5 + 1);\n        pcVar2 = strcpy(pcVar2,param_2);\n      }" ({ "{") (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" (identifier "sVar5") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "pcVar2 = (char *)xmalloc(sVar5 + 1);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar5 + 1)" (identifier "pcVar2") (= "=") (cast_expression "(char *)xmalloc(sVar5 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar5 + 1)" (identifier "xmalloc") (argument_list "(sVar5 + 1)" (( "(") (binary_expression "sVar5 + 1" (identifier "sVar5") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar2 = strcpy(pcVar2,param_2);" (assignment_expression "pcVar2 = strcpy(pcVar2,param_2)" (identifier "pcVar2") (= "=") (call_expression "strcpy(pcVar2,param_2)" (identifier "strcpy") (argument_list "(pcVar2,param_2)" (( "(") (identifier "pcVar2") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}"))))) (goto_statement "goto LAB_0005302d;" (goto "goto") (statement_identifier "LAB_0005302d") (; ";")) (} "}"))) (expression_statement "lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);" (assignment_expression "lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24)" (identifier "lVar7") (= "=") (call_expression "evalexp(*(undefined4 *)(param_1 + 4),0,&local_24)" (identifier "evalexp") (argument_list "(*(undefined4 *)(param_1 + 4),0,&local_24)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (number_literal "0") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")")))) (; ";")) (if_statement "if (local_24 != 0) {\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }" (if "if") (parenthesized_expression "(local_24 != 0)" (( "(") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar8 = evalexp(param_2,0,&local_24);\n      if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }\n    }" ({ "{") (expression_statement "lVar8 = evalexp(param_2,0,&local_24);" (assignment_expression "lVar8 = evalexp(param_2,0,&local_24)" (identifier "lVar8") (= "=") (call_expression "evalexp(param_2,0,&local_24)" (identifier "evalexp") (argument_list "(param_2,0,&local_24)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")")))) (; ";")) (if_statement "if (local_24 != 0) {\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }" (if "if") (parenthesized_expression "(local_24 != 0)" (( "(") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        lVar7 = lVar7 + lVar8;\n        goto LAB_00052fdd;\n      }" ({ "{") (expression_statement "lVar7 = lVar7 + lVar8;" (assignment_expression "lVar7 = lVar7 + lVar8" (identifier "lVar7") (= "=") (binary_expression "lVar7 + lVar8" (identifier "lVar7") (+ "+") (identifier "lVar8"))) (; ";")) (goto_statement "goto LAB_00052fdd;" (goto "goto") (statement_identifier "LAB_00052fdd") (; ";")) (} "}"))) (} "}"))) (if_statement "if ((param_3 & 0x200) == 0) {\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }" (if "if") (parenthesized_expression "((param_3 & 0x200) == 0)" (( "(") (binary_expression "(param_3 & 0x200) == 0" (parenthesized_expression "(param_3 & 0x200)" (( "(") (binary_expression "param_3 & 0x200" (identifier "param_3") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00053103:\n      top_level_cleanup();\n                    \n      jump_to_top_level(2);\n    }" ({ "{") (labeled_statement "LAB_00053103:\n      top_level_cleanup();" (statement_identifier "LAB_00053103") (: ":") (expression_statement "top_level_cleanup();" (call_expression "top_level_cleanup()" (identifier "top_level_cleanup") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "jump_to_top_level(2);" (call_expression "jump_to_top_level(2)" (identifier "jump_to_top_level") (argument_list "(2)" (( "(") (number_literal "2") () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar3 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar3 = (char *)get_variable_value(param_1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)get_variable_value(param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "get_variable_value(param_1)" (identifier "get_variable_value") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0005313e;" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0005313e;" (goto "goto") (statement_identifier "LAB_0005313e") (; ";"))) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" (identifier "sVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ (identifier "pcVar3") (= "=") (string_literal """" (" """) (" """))) (; ";")) (labeled_statement "LAB_00053170:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" (statement_identifier "LAB_00053170") (: ":") (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" (if "if") (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar2 = (char *)xmalloc(iVar6);\n      strcpy(pcVar2,pcVar3);\n      goto LAB_0005302d;\n    }" ({ "{") (expression_statement "pcVar2 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar2 = (char *)xmalloc(iVar6)" (identifier "pcVar2") (= "=") (cast_expression "(char *)xmalloc(iVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar6)" (identifier "xmalloc") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))))) (; ";")) (expression_statement "strcpy(pcVar2,pcVar3);" (call_expression "strcpy(pcVar2,pcVar3)" (identifier "strcpy") (argument_list "(pcVar2,pcVar3)" (( "(") (identifier "pcVar2") (, ",") (identifier "pcVar3") () ")"))) (; ";")) (goto_statement "goto LAB_0005302d;" (goto "goto") (statement_identifier "LAB_0005302d") (; ";")) (} "}")))) (} "}")) (else_clause "else {\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" (else "else") (compound_statement "{\nLAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }\n    if ((param_3 & 1) == 0) goto LAB_00053006;\n    pcVar3 = (char *)get_variable_value(param_1);\n    if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }\n    sVar5 = 0;\n    iVar6 = 1;\n    pcVar3 = "";\n  }" ({ "{") (labeled_statement "LAB_00052ff5:\n    if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" (statement_identifier "LAB_00052ff5") (: ":") (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" (if "if") (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar2 = (char *)0x0;\n      goto LAB_0005302d;\n    }" ({ "{") (expression_statement "pcVar2 = (char *)0x0;" (assignment_expression "pcVar2 = (char *)0x0" (identifier "pcVar2") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0005302d;" (goto "goto") (statement_identifier "LAB_0005302d") (; ";")) (} "}")))) (if_statement "if ((param_3 & 1) == 0) goto LAB_00053006;" (if "if") (parenthesized_expression "((param_3 & 1) == 0)" (( "(") (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" (( "(") (binary_expression "param_3 & 1" (identifier "param_3") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00053006;" (goto "goto") (statement_identifier "LAB_00053006") (; ";"))) (expression_statement "pcVar3 = (char *)get_variable_value(param_1);" (assignment_expression "pcVar3 = (char *)get_variable_value(param_1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)get_variable_value(param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "get_variable_value(param_1)" (identifier "get_variable_value") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) {\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0005313e:\n      sVar5 = 0;\n      iVar6 = 1;\n      if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }\n      goto LAB_00053170;\n    }" ({ "{") (labeled_statement "LAB_0005313e:\n      sVar5 = 0;" (statement_identifier "LAB_0005313e") (: ":") (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" (identifier "sVar5") (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*pcVar3 != '\0') {\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }" (if "if") (parenthesized_expression "(*pcVar3 != '\0')" (( "(") (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }\n      }" ({ "{") (if_statement "if (pcVar3[1] == '\0') {\n          iVar6 = 2;\n          sVar5 = 1;\n        }\n        else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" (if "if") (parenthesized_expression "(pcVar3[1] == '\0')" (( "(") (binary_expression "pcVar3[1] == '\0'" (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          iVar6 = 2;\n          sVar5 = 1;\n        }" ({ "{") (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" (identifier "iVar6") (= "=") (number_literal "2")) (; ";")) (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" (identifier "sVar5") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" (else "else") (if_statement "if (pcVar3[2] == '\0') {\n          iVar6 = 3;\n          sVar5 = 2;\n        }\n        else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" (if "if") (parenthesized_expression "(pcVar3[2] == '\0')" (( "(") (binary_expression "pcVar3[2] == '\0'" (subscript_expression "pcVar3[2]" (identifier "pcVar3") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          iVar6 = 3;\n          sVar5 = 2;\n        }" ({ "{") (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" (identifier "iVar6") (= "=") (number_literal "3")) (; ";")) (expression_statement "sVar5 = 2;" (assignment_expression "sVar5 = 2" (identifier "sVar5") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" (else "else") (compound_statement "{\n          sVar5 = strlen(pcVar3);\n          iVar6 = sVar5 + 1;\n        }" ({ "{") (expression_statement "sVar5 = strlen(pcVar3);" (assignment_expression "sVar5 = strlen(pcVar3)" (identifier "sVar5") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "iVar6 = sVar5 + 1;" (assignment_expression "iVar6 = sVar5 + 1" (identifier "iVar6") (= "=") (binary_expression "sVar5 + 1" (identifier "sVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")))))) (} "}"))) (goto_statement "goto LAB_00053170;" (goto "goto") (statement_identifier "LAB_00053170") (; ";")) (} "}"))) (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" (identifier "sVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ (identifier "pcVar3") (= "=") (string_literal """" (" """) (" """))) (; ";")) (} "}")))) (if_statement "if (*param_2 != '\0') {\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }" (if "if") (parenthesized_expression "(*param_2 != '\0')" (( "(") (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }\n  }" ({ "{") (if_statement "if (param_2[1] == '\0') {\n      iVar6 = sVar5 + 2;\n    }\n    else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" (if "if") (parenthesized_expression "(param_2[1] == '\0')" (( "(") (binary_expression "param_2[1] == '\0'" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar6 = sVar5 + 2;\n    }" ({ "{") (expression_statement "iVar6 = sVar5 + 2;" (assignment_expression "iVar6 = sVar5 + 2" (identifier "iVar6") (= "=") (binary_expression "sVar5 + 2" (identifier "sVar5") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" (else "else") (if_statement "if (param_2[2] == '\0') {\n      iVar6 = sVar5 + 3;\n    }\n    else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" (if "if") (parenthesized_expression "(param_2[2] == '\0')" (( "(") (binary_expression "param_2[2] == '\0'" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar6 = sVar5 + 3;\n    }" ({ "{") (expression_statement "iVar6 = sVar5 + 3;" (assignment_expression "iVar6 = sVar5 + 3" (identifier "iVar6") (= "=") (binary_expression "sVar5 + 3" (identifier "sVar5") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" (else "else") (compound_statement "{\n      sVar4 = strlen(param_2);\n      iVar6 = iVar6 + sVar4;\n    }" ({ "{") (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" (identifier "sVar4") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "iVar6 = iVar6 + sVar4;" (assignment_expression "iVar6 = iVar6 + sVar4" (identifier "iVar6") (= "=") (binary_expression "iVar6 + sVar4" (identifier "iVar6") (+ "+") (identifier "sVar4"))) (; ";")) (} "}")))))) (} "}"))) (expression_statement "pcVar2 = (char *)xmalloc(iVar6);" (assignment_expression "pcVar2 = (char *)xmalloc(iVar6)" (identifier "pcVar2") (= "=") (cast_expression "(char *)xmalloc(iVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar6)" (identifier "xmalloc") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))))) (; ";")) (expression_statement "strcpy(pcVar2,pcVar3);" (call_expression "strcpy(pcVar2,pcVar3)" (identifier "strcpy") (argument_list "(pcVar2,pcVar3)" (( "(") (identifier "pcVar2") (, ",") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "strcpy(pcVar2 + sVar5,param_2);" (call_expression "strcpy(pcVar2 + sVar5,param_2)" (identifier "strcpy") (argument_list "(pcVar2 + sVar5,param_2)" (( "(") (binary_expression "pcVar2 + sVar5" (identifier "pcVar2") (+ "+") (identifier "sVar5")) (, ",") (identifier "param_2") () ")"))) (; ";")) (labeled_statement "LAB_0005302d:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }" (statement_identifier "LAB_0005302d") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pcVar2;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return pcVar2;\n  }" ({ "{") (return_statement "return pcVar2;" (return "return") (identifier "pcVar2") (; ";")) (} "}")))) (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" (identifier "FUN_000ecc40") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * function_1(type_1 *var,char *var_10,int var_2)

{
  char *var_8;
  int flags_00;
  char *var_12;
  size_t var_22;
  size_t var_5;
  size_t var_11;
  int var_1;
  type_2 var_19;
  type_2 var_18;
  size_t var_9;
  int var_16;
  int var_23;
  type_3 uStack_14;
  
  uStack_14 = 0x52f49;
  var_23 = *(int *)(var_1 + 0x14);
  if ((var_2 & 0x100U) == 0) {
    if ((var->attributes & 0x10U) == 0) {
      if ((var->attributes & 0x700U) != 0) {
        if ((var_2 & 1U) == 0) {
          if (*var_10 == '\0') {
            var_12 = (char *)var_3(1);
            *var_12 = '\0';
          }
          else {
            var_5 = var_4(var_10);
            var_8 = (char *)var_3(var_5 + 1);
            var_12 = var_6(var_8,var_10);
          }
        }
        else {
          var_8 = var_7(var);
          if (var_8 == (char *)0x0) {
            var_11 = 1;
            var_9 = 0;
            var_8 = "";
          }
          else if (*var_8 == '\0') {
            var_11 = 1;
            var_9 = 0;
          }
          else if (var_8[1] == '\0') {
            var_11 = 2;
            var_9 = 1;
          }
          else if (var_8[2] == '\0') {
            var_11 = 3;
            var_9 = 2;
          }
          else {
            var_9 = var_4(var_8);
            var_11 = var_9 + 1;
          }
          if (var_10 == (char *)0x0) {
            var_12 = (char *)var_3(var_11);
            var_6(var_12,var_8);
          }
          else {
            var_5 = 0;
            if (((*var_10 != '\0') && (var_5 = 1, var_10[1] != '\0')) && (var_5 = 2, var_10[2] != '\0')
               ) {
              var_5 = var_4(var_10);
            }
            var_12 = (char *)var_3(var_5 + var_11);
            var_6(var_12,var_8);
            var_6(var_12 + var_9,var_10);
          }
        }
        flags_00 = 4;
        if ((var->attributes & 0x400U) == 0) {
          flags_00 = ((var->attributes & 0x100U) != 0) + 1;
        }
        var_8 = var_13(var_12,(char *)0x0,flags_00);
        var_14(var_12);
        goto LAB_0005302d;
      }
      goto LAB_00052ff5;
    }
    if ((var_2 & 1U) == 0) {
      var_18 = var_15(var_10,0,&var_16);
      if (var_16 != 0) {
LAB_00052fdd:
        var_8 = var_17(var_18);
        goto LAB_0005302d;
      }
      if ((var_2 & 0x200U) == 0) goto LAB_00053103;
LAB_00053006:
      if (*var_10 == '\0') {
        var_8 = (char *)var_3(1);
        *var_8 = '\0';
      }
      else {
        var_5 = var_4(var_10);
        var_8 = (char *)var_3(var_5 + 1);
        var_8 = var_6(var_8,var_10);
      }
      goto LAB_0005302d;
    }
    var_19 = var_15(var->var_10,0,&var_16);
    if (var_16 != 0) {
      var_18 = var_15(var_10,0,&var_16);
      if (var_16 != 0) {
        var_18 = var_18 + var_19;
        goto LAB_00052fdd;
      }
    }
    if ((var_2 & 0x200U) == 0) {
LAB_00053103:
      var_20();
                    /* WARNING: Subroutine does not return */
      var_21(2);
    }
    var_12 = var_7(var);
    if (var_12 != (char *)0x0) goto LAB_0005313e;
    var_11 = 1;
    var_5 = 0;
    var_12 = "";
LAB_00053170:
    if (var_10 == (char *)0x0) {
      var_8 = (char *)var_3(var_11);
      var_6(var_8,var_12);
      goto LAB_0005302d;
    }
  }
  else {
LAB_00052ff5:
    if (var_10 == (char *)0x0) {
      var_8 = (char *)0x0;
      goto LAB_0005302d;
    }
    if ((var_2 & 1U) == 0) goto LAB_00053006;
    var_12 = var_7(var);
    if (var_12 != (char *)0x0) {
LAB_0005313e:
      var_5 = 0;
      var_11 = 1;
      if (*var_12 != '\0') {
        if (var_12[1] == '\0') {
          var_11 = 2;
          var_5 = 1;
        }
        else if (var_12[2] == '\0') {
          var_11 = 3;
          var_5 = 2;
        }
        else {
          var_5 = var_4(var_12);
          var_11 = var_5 + 1;
        }
      }
      goto LAB_00053170;
    }
    var_5 = 0;
    var_11 = 1;
    var_12 = "";
  }
  if (*var_10 != '\0') {
    if (var_10[1] == '\0') {
      var_11 = var_5 + 2;
    }
    else if (var_10[2] == '\0') {
      var_11 = var_5 + 3;
    }
    else {
      var_22 = var_4(var_10);
      var_11 = var_11 + var_22;
    }
  }
  var_8 = (char *)var_3(var_11);
  var_6(var_8,var_12);
  var_6(var_8 + var_5,var_10);
LAB_0005302d:
  if (var_23 == *(int *)(var_1 + 0x14)) {
    return var_8;
  }
                    /* WARNING: Subroutine does not return */
  var_24();
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (identifier)) (expression_statement (assignment_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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (string_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (char_literal (escape_sequence))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (number_literal) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (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: (identifier) right: (identifier)))) (goto_statement label: (statement_identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (string_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (goto_statement label: (statement_identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (string_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier)))) (labeled_statement label: (statement_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 (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * MASKED(int param_1,char *param_2,uint param_3)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  size_t sVar4;
  size_t sVar5;
  int iVar6;
  int in_GS_OFFSET;
  longlong lVar7;
  longlong lVar8;
  size_t local_38;
  int local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x52f49;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if ((param_3 & 0x100) == 0) {
    if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {
      if ((*(uint *)(param_1 + 0x14) & 0x700) != 0) {
        if ((param_3 & 1) == 0) {
          if (*param_2 == '\0') {
            pcVar3 = (char *)xmalloc(1);
            *pcVar3 = '\0';
          }
          else {
            sVar5 = strlen(param_2);
            pcVar2 = (char *)xmalloc(sVar5 + 1);
            pcVar3 = strcpy(pcVar2,param_2);
          }
        }
        else {
          pcVar2 = (char *)get_variable_value(param_1);
          if (pcVar2 == (char *)0x0) {
            iVar6 = 1;
            local_38 = 0;
            pcVar2 = "";
          }
          else if (*pcVar2 == '\0') {
            iVar6 = 1;
            local_38 = 0;
          }
          else if (pcVar2[1] == '\0') {
            iVar6 = 2;
            local_38 = 1;
          }
          else if (pcVar2[2] == '\0') {
            iVar6 = 3;
            local_38 = 2;
          }
          else {
            local_38 = strlen(pcVar2);
            iVar6 = local_38 + 1;
          }
          if (param_2 == (char *)0x0) {
            pcVar3 = (char *)xmalloc(iVar6);
            strcpy(pcVar3,pcVar2);
          }
          else {
            sVar5 = 0;
            if (((*param_2 != '\0') && (sVar5 = 1, param_2[1] != '\0')) &&
               (sVar5 = 2, param_2[2] != '\0')) {
              sVar5 = strlen(param_2);
            }
            pcVar3 = (char *)xmalloc(sVar5 + iVar6);
            strcpy(pcVar3,pcVar2);
            strcpy(pcVar3 + local_38,param_2);
          }
        }
        cVar1 = '\x04';
        if ((*(uint *)(param_1 + 0x14) & 0x400) == 0) {
          cVar1 = ((*(uint *)(param_1 + 0x14) & 0x100) != 0) + '\x01';
        }
        pcVar2 = (char *)sh_modcase(pcVar3,0,cVar1);
        free(pcVar3);
        goto LAB_0005302d;
      }
      goto LAB_00052ff5;
    }
    if ((param_3 & 1) == 0) {
      lVar7 = evalexp(param_2,0,&local_24);
      if (local_24 != 0) {
LAB_00052fdd:
        pcVar2 = (char *)itos(lVar7);
        goto LAB_0005302d;
      }
      if ((param_3 & 0x200) == 0) goto LAB_00053103;
LAB_00053006:
      if (*param_2 == '\0') {
        pcVar2 = (char *)xmalloc(1);
        *pcVar2 = '\0';
      }
      else {
        sVar5 = strlen(param_2);
        pcVar2 = (char *)xmalloc(sVar5 + 1);
        pcVar2 = strcpy(pcVar2,param_2);
      }
      goto LAB_0005302d;
    }
    lVar7 = evalexp(*(undefined4 *)(param_1 + 4),0,&local_24);
    if (local_24 != 0) {
      lVar8 = evalexp(param_2,0,&local_24);
      if (local_24 != 0) {
        lVar7 = lVar7 + lVar8;
        goto LAB_00052fdd;
      }
    }
    if ((param_3 & 0x200) == 0) {
LAB_00053103:
      top_level_cleanup();
                    /* WARNING: Subroutine does not return */
      jump_to_top_level(2);
    }
    pcVar3 = (char *)get_variable_value(param_1);
    if (pcVar3 != (char *)0x0) goto LAB_0005313e;
    iVar6 = 1;
    sVar5 = 0;
    pcVar3 = "";
LAB_00053170:
    if (param_2 == (char *)0x0) {
      pcVar2 = (char *)xmalloc(iVar6);
      strcpy(pcVar2,pcVar3);
      goto LAB_0005302d;
    }
  }
  else {
LAB_00052ff5:
    if (param_2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
      goto LAB_0005302d;
    }
    if ((param_3 & 1) == 0) goto LAB_00053006;
    pcVar3 = (char *)get_variable_value(param_1);
    if (pcVar3 != (char *)0x0) {
LAB_0005313e:
      sVar5 = 0;
      iVar6 = 1;
      if (*pcVar3 != '\0') {
        if (pcVar3[1] == '\0') {
          iVar6 = 2;
          sVar5 = 1;
        }
        else if (pcVar3[2] == '\0') {
          iVar6 = 3;
          sVar5 = 2;
        }
        else {
          sVar5 = strlen(pcVar3);
          iVar6 = sVar5 + 1;
        }
      }
      goto LAB_00053170;
    }
    sVar5 = 0;
    iVar6 = 1;
    pcVar3 = "";
  }
  if (*param_2 != '\0') {
    if (param_2[1] == '\0') {
      iVar6 = sVar5 + 2;
    }
    else if (param_2[2] == '\0') {
      iVar6 = sVar5 + 3;
    }
    else {
      sVar4 = strlen(param_2);
      iVar6 = iVar6 + sVar4;
    }
  }
  pcVar2 = (char *)xmalloc(iVar6);
  strcpy(pcVar2,pcVar3);
  strcpy(pcVar2 + sVar5,param_2);
LAB_0005302d:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return pcVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000ecc40();
}

