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

char * __regparm3 etype_str(int elem_type_code,char *b,int mlen_b)

{
  char *pcVar1;
  size_t sVar2;
  uint uVar3;
  element_type_t *peVar4;
  int iVar5;
  uint uVar6;
  
  if (element_type_arr[0].desc != (char *)0x0) {
    pcVar1 = element_type_arr[0].desc;
    if (elem_type_code == element_type_arr[0].elem_type_code) {
LAB_00016a60:
      sVar2 = strlen(pcVar1);
      if (0x3f < sVar2) {
        strncpy(b,pcVar1,0x3f);
        b[0x3f] = '\0';
        return b;
      }
      uVar3 = sVar2 + 1;
      if (3 < uVar3) {
        *(undefined4 *)b = *(undefined4 *)pcVar1;
        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));
        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);
        uVar3 = uVar3 + iVar5 & 0xfffffffc;
        if (uVar3 < 4) {
          return b;
        }
        uVar6 = 0;
        do {
          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =
               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));
          uVar6 = uVar6 + 4;
        } while (uVar6 < uVar3);
        return b;
      }
      if (uVar3 == 0) {
        return b;
      }
      *b = *pcVar1;
      if ((uVar3 & 2) == 0) {
        return b;
      }
      *(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));
      return b;
    }
    if (element_type_arr[0].elem_type_code <= elem_type_code) {
      peVar4 = element_type_arr;
      do {
        pcVar1 = peVar4[1].desc;
        if (pcVar1 == (char *)0x0) break;
        iVar5 = peVar4[1].elem_type_code;
        if (iVar5 == elem_type_code) goto LAB_00016a60;
        peVar4 = peVar4 + 1;
      } while (iVar5 <= elem_type_code);
    }
  }
  if (elem_type_code < 0x80) {
    pcVar1 = "[0x%x]";
  }
  else {
    pcVar1 = "vendor specific [0x%x]";
  }
  __snprintf_chk(b,0x3f,1,0xffffffff,pcVar1,elem_type_code);
  b[0x3f] = '\0';
  return b;
}



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

char * __regparm3 FUN_000169f0(int param_1,char *param_2)

{
  char *pcVar1;
  size_t sVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  uint uVar6;
  
  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {
    pcVar1 = PTR_s_Unspecified_0002c5a8;
    if (param_1 == DAT_0002c5a0) {
LAB_00016a60:
      sVar2 = strlen(pcVar1);
      if (0x3f < sVar2) {
        strncpy(param_2,pcVar1,0x3f);
        param_2[0x3f] = '\0';
        return param_2;
      }
      uVar3 = sVar2 + 1;
      if (3 < uVar3) {
        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;
        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));
        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);
        uVar3 = uVar3 + iVar5 & 0xfffffffc;
        if (uVar3 < 4) {
          return param_2;
        }
        uVar6 = 0;
        do {
          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =
               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));
          uVar6 = uVar6 + 4;
        } while (uVar6 < uVar3);
        return param_2;
      }
      if (uVar3 == 0) {
        return param_2;
      }
      *param_2 = *pcVar1;
      if ((uVar3 & 2) == 0) {
        return param_2;
      }
      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));
      return param_2;
    }
    if (DAT_0002c5a0 <= param_1) {
      piVar4 = &DAT_0002c5a0;
      do {
        pcVar1 = (char *)piVar4[5];
        if (pcVar1 == (char *)0x0) break;
        iVar5 = piVar4[3];
        if (iVar5 == param_1) goto LAB_00016a60;
        piVar4 = piVar4 + 3;
      } while (iVar5 <= param_1);
    }
  }
  if (param_1 < 0x80) {
    pcVar1 = "[0x%x]";
  }
  else {
    pcVar1 = "vendor specific [0x%x]";
  }
  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);
  param_2[0x3f] = '\0';
  return param_2;
}


PUSH EDI
MOV EDI,EDX
PUSH ESI
PUSH EBX
CALL 0x00015a70
ADD EBX,0x144c6
MOV ESI,dword ptr [EBX + 0x16e8]
TEST ESI,ESI
JZ 0x00016a30
CMP EAX,dword ptr [EBX + 0x16e0]
JZ 0x00016a60
JL 0x00016a30
LEA ECX,[EBX + 0x16e0]
JMP 0x00016a26
CMP dword ptr [ECX],EAX
JZ 0x00016a60
JG 0x00016a30
ADD ECX,0xc
MOV ESI,dword ptr [ECX + 0x8]
TEST ESI,ESI
JNZ 0x00016a20
CMP EAX,0x7f
JG 0x00016a98
SUB ESP,0x8
PUSH EAX
LEA EAX,[EBX + 0xffff422d]
PUSH EAX
PUSH -0x1
PUSH 0x1
PUSH 0x3f
PUSH EDI
CALL 0x00012050
MOV byte ptr [EDI + 0x3f],0x0
ADD ESP,0x20
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0xc
PUSH ESI
CALL 0x00012220
ADD ESP,0x10
CMP EAX,0x3f
JA 0x00016aa8
ADD EAX,0x1
CMP EAX,0x4
JNC 0x00016ac1
TEST EAX,EAX
JZ 0x00016a53
MOVZX EDX,byte ptr [ESI]
MOV byte ptr [EDI],DL
TEST AL,0x2
JZ 0x00016a53
MOVZX EDX,word ptr [ESI + EAX*0x1 + -0x2]
MOV word ptr [EDI + EAX*0x1 + -0x2],DX
JMP 0x00016a53
SUB ESP,0x8
PUSH EAX
LEA EAX,[EBX + 0xffff421d]
JMP 0x00016a3f
SUB ESP,0x4
PUSH 0x3f
PUSH ESI
PUSH EDI
CALL 0x000122b0
ADD ESP,0x10
MOV EAX,EDI
MOV byte ptr [EDI + 0x3f],0x0
POP EBX
POP ESI
POP EDI
RET
MOV EDX,dword ptr [ESI]
LEA ECX,[EDI + 0x4]
AND ECX,0xfffffffc
MOV dword ptr [EDI],EDX
MOV EDX,dword ptr [ESI + EAX*0x1 + -0x4]
MOV dword ptr [EDI + EAX*0x1 + -0x4],EDX
MOV EDX,EDI
SUB EDX,ECX
ADD EAX,EDX
SUB ESI,EDX
AND EAX,0xfffffffc
CMP EAX,0x4
JC 0x00016a53
AND EAX,0xfffffffc
XOR EDX,EDX
MOV EBX,dword ptr [ESI + EDX*0x1]
MOV dword ptr [ECX + EDX*0x1],EBX
ADD EDX,0x4
CMP EDX,EAX
JC 0x00016aec
JMP 0x00016a53
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 FUN_000169f0(int param_1,char *param_2)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }\n  if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);\n  param_2[0x3f] = '\0';\n  return param_2;\n}\n\n" comment (function_definition "char * __regparm3 FUN_000169f0(int param_1,char *param_2)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }\n  if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);\n  param_2[0x3f] = '\0';\n  return param_2;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_000169f0(int param_1,char *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_000169f0(int param_1,char *param_2)" identifier (parameter_list "(int param_1,char *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }\n  if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);\n  param_2[0x3f] = '\0';\n  return param_2;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (if_statement "if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }" if (parenthesized_expression "(PTR_s_Unspecified_0002c5a8 != (undefined *)0x0)" ( (binary_expression "PTR_s_Unspecified_0002c5a8 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }" { (expression_statement "pcVar1 = PTR_s_Unspecified_0002c5a8;" (assignment_expression "pcVar1 = PTR_s_Unspecified_0002c5a8" identifier = identifier) ;) (if_statement "if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }" if (parenthesized_expression "(param_1 == DAT_0002c5a0)" ( (binary_expression "param_1 == DAT_0002c5a0" identifier == identifier) )) (compound_statement "{\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }" { (labeled_statement "LAB_00016a60:\n      sVar2 = strlen(pcVar1);" statement_identifier : (expression_statement "sVar2 = strlen(pcVar1);" (assignment_expression "sVar2 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;)) (if_statement "if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }" if (parenthesized_expression "(0x3f < sVar2)" ( (binary_expression "0x3f < sVar2" number_literal < identifier) )) (compound_statement "{\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }" { (expression_statement "strncpy(param_2,pcVar1,0x3f);" (call_expression "strncpy(param_2,pcVar1,0x3f)" identifier (argument_list "(param_2,pcVar1,0x3f)" ( identifier , identifier , number_literal ))) ;) (expression_statement "param_2[0x3f] = '\0';" (assignment_expression "param_2[0x3f] = '\0'" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return param_2;" return identifier ;) })) (expression_statement "uVar3 = sVar2 + 1;" (assignment_expression "uVar3 = sVar2 + 1" identifier = (binary_expression "sVar2 + 1" identifier + number_literal)) ;) (if_statement "if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }" if (parenthesized_expression "(3 < uVar3)" ( (binary_expression "3 < uVar3" number_literal < identifier) )) (compound_statement "{\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }" { (expression_statement "*(undefined4 *)param_2 = *(undefined4 *)pcVar1;" (assignment_expression "*(undefined4 *)param_2 = *(undefined4 *)pcVar1" (pointer_expression "*(undefined4 *)param_2" * (cast_expression "(undefined4 *)param_2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar1" * (cast_expression "(undefined4 *)pcVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));" (assignment_expression "*(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3))" (pointer_expression "*(undefined4 *)(param_2 + (sVar2 - 3))" * (cast_expression "(undefined4 *)(param_2 + (sVar2 - 3))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (sVar2 - 3))" ( (binary_expression "param_2 + (sVar2 - 3)" identifier + (parenthesized_expression "(sVar2 - 3)" ( (binary_expression "sVar2 - 3" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)(pcVar1 + (sVar2 - 3))" * (cast_expression "(undefined4 *)(pcVar1 + (sVar2 - 3))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (sVar2 - 3))" ( (binary_expression "pcVar1 + (sVar2 - 3)" identifier + (parenthesized_expression "(sVar2 - 3)" ( (binary_expression "sVar2 - 3" identifier - number_literal) ))) ))))) ;) (expression_statement "iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);" (assignment_expression "iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc)" identifier = (binary_expression "(int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc)" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((uint)(param_2 + 4) & 0xfffffffc)" ( (binary_expression "(uint)(param_2 + 4) & 0xfffffffc" (call_expression "(uint)(param_2 + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar3 = uVar3 + iVar5 & 0xfffffffc;" (assignment_expression "uVar3 = uVar3 + iVar5 & 0xfffffffc" identifier = (binary_expression "uVar3 + iVar5 & 0xfffffffc" (binary_expression "uVar3 + iVar5" identifier + identifier) & number_literal)) ;) (if_statement "if (uVar3 < 4) {\n          return param_2;\n        }" if (parenthesized_expression "(uVar3 < 4)" ( (binary_expression "uVar3 < 4" identifier < number_literal) )) (compound_statement "{\n          return param_2;\n        }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);" do (compound_statement "{\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        }" { (expression_statement "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));" (assignment_expression "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5))" (pointer_expression "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" * (cast_expression "(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" ( (binary_expression "((uint)(param_2 + 4) & 0xfffffffc) + uVar6" (parenthesized_expression "((uint)(param_2 + 4) & 0xfffffffc)" ( (binary_expression "(uint)(param_2 + 4) & 0xfffffffc" (call_expression "(uint)(param_2 + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))) & number_literal) )) + identifier) )))) = (pointer_expression "*(undefined4 *)(pcVar1 + (uVar6 - iVar5))" * (cast_expression "(undefined4 *)(pcVar1 + (uVar6 - iVar5))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (uVar6 - iVar5))" ( (binary_expression "pcVar1 + (uVar6 - iVar5)" identifier + (parenthesized_expression "(uVar6 - iVar5)" ( (binary_expression "uVar6 - iVar5" identifier - identifier) ))) ))))) ;) (expression_statement "uVar6 = uVar6 + 4;" (assignment_expression "uVar6 = uVar6 + 4" identifier = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 < uVar3)" ( (binary_expression "uVar6 < uVar3" identifier < identifier) )) ;) (return_statement "return param_2;" return identifier ;) })) (if_statement "if (uVar3 == 0) {\n        return param_2;\n      }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return param_2;\n      }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "*param_2 = *pcVar1;" (assignment_expression "*param_2 = *pcVar1" (pointer_expression "*param_2" * identifier) = (pointer_expression "*pcVar1" * identifier)) ;) (if_statement "if ((uVar3 & 2) == 0) {\n        return param_2;\n      }" if (parenthesized_expression "((uVar3 & 2) == 0)" ( (binary_expression "(uVar3 & 2) == 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        return param_2;\n      }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "*(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));" (assignment_expression "*(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1))" (pointer_expression "*(undefined2 *)(param_2 + (sVar2 - 1))" * (cast_expression "(undefined2 *)(param_2 + (sVar2 - 1))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (sVar2 - 1))" ( (binary_expression "param_2 + (sVar2 - 1)" identifier + (parenthesized_expression "(sVar2 - 1)" ( (binary_expression "sVar2 - 1" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)(pcVar1 + (sVar2 - 1))" * (cast_expression "(undefined2 *)(pcVar1 + (sVar2 - 1))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (sVar2 - 1))" ( (binary_expression "pcVar1 + (sVar2 - 1)" identifier + (parenthesized_expression "(sVar2 - 1)" ( (binary_expression "sVar2 - 1" identifier - number_literal) ))) ))))) ;) (return_statement "return param_2;" return identifier ;) })) (if_statement "if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }" if (parenthesized_expression "(DAT_0002c5a0 <= param_1)" ( (binary_expression "DAT_0002c5a0 <= param_1" identifier <= identifier) )) (compound_statement "{\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }" { (expression_statement "piVar4 = &DAT_0002c5a0;" (assignment_expression "piVar4 = &DAT_0002c5a0" identifier = (pointer_expression "&DAT_0002c5a0" & identifier)) ;) (do_statement "do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);" do (compound_statement "{\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      }" { (expression_statement "pcVar1 = (char *)piVar4[5];" (assignment_expression "pcVar1 = (char *)piVar4[5]" identifier = (cast_expression "(char *)piVar4[5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[5]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar1 == (char *)0x0) break;" 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)) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = piVar4[3];" (assignment_expression "iVar5 = piVar4[3]" identifier = (subscript_expression "piVar4[3]" identifier [ number_literal ])) ;) (if_statement "if (iVar5 == param_1) goto LAB_00016a60;" if (parenthesized_expression "(iVar5 == param_1)" ( (binary_expression "iVar5 == param_1" identifier == identifier) )) (goto_statement "goto LAB_00016a60;" goto statement_identifier ;)) (expression_statement "piVar4 = piVar4 + 3;" (assignment_expression "piVar4 = piVar4 + 3" identifier = (binary_expression "piVar4 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 <= param_1)" ( (binary_expression "iVar5 <= param_1" identifier <= identifier) )) ;) })) })) (if_statement "if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }" if (parenthesized_expression "(param_1 < 0x80)" ( (binary_expression "param_1 < 0x80" identifier < number_literal) )) (compound_statement "{\n    pcVar1 = "[0x%x]";\n  }" { (expression_statement "pcVar1 = "[0x%x]";" (assignment_expression "pcVar1 = "[0x%x]"" identifier = (string_literal ""[0x%x]"" " string_content ")) ;) }) (else_clause "else {\n    pcVar1 = "vendor specific [0x%x]";\n  }" else (compound_statement "{\n    pcVar1 = "vendor specific [0x%x]";\n  }" { (expression_statement "pcVar1 = "vendor specific [0x%x]";" (assignment_expression "pcVar1 = "vendor specific [0x%x]"" identifier = (string_literal ""vendor specific [0x%x]"" " string_content ")) ;) }))) (expression_statement "__snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);" (call_expression "__snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1)" identifier (argument_list "(param_2,0x3f,1,0xffffffff,pcVar1,param_1)" ( identifier , number_literal , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "param_2[0x3f] = '\0';" (assignment_expression "param_2[0x3f] = '\0'" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return param_2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 etype_str(int elem_type_code,char *b,int mlen_b)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  element_type_t *peVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (element_type_arr[0].desc != (char *)0x0) {\n    pcVar1 = element_type_arr[0].desc;\n    if (elem_type_code == element_type_arr[0].elem_type_code) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }\n      if (uVar3 == 0) {\n        return b;\n      }\n      *b = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return b;\n      }\n      *(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return b;\n    }\n    if (element_type_arr[0].elem_type_code <= elem_type_code) {\n      peVar4 = element_type_arr;\n      do {\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      } while (iVar5 <= elem_type_code);\n    }\n  }\n  if (elem_type_code < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(b,0x3f,1,0xffffffff,pcVar1,elem_type_code);\n  b[0x3f] = '\0';\n  return b;\n}\n\n" comment (function_definition "char * __regparm3 etype_str(int elem_type_code,char *b,int mlen_b)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  element_type_t *peVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (element_type_arr[0].desc != (char *)0x0) {\n    pcVar1 = element_type_arr[0].desc;\n    if (elem_type_code == element_type_arr[0].elem_type_code) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }\n      if (uVar3 == 0) {\n        return b;\n      }\n      *b = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return b;\n      }\n      *(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return b;\n    }\n    if (element_type_arr[0].elem_type_code <= elem_type_code) {\n      peVar4 = element_type_arr;\n      do {\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      } while (iVar5 <= elem_type_code);\n    }\n  }\n  if (elem_type_code < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(b,0x3f,1,0xffffffff,pcVar1,elem_type_code);\n  b[0x3f] = '\0';\n  return b;\n}" primitive_type (pointer_declarator "* __regparm3 etype_str(int elem_type_code,char *b,int mlen_b)" * (ERROR "__regparm3" identifier) (function_declarator "etype_str(int elem_type_code,char *b,int mlen_b)" identifier (parameter_list "(int elem_type_code,char *b,int mlen_b)" ( (parameter_declaration "int elem_type_code" primitive_type identifier) , (parameter_declaration "char *b" primitive_type (pointer_declarator "*b" * identifier)) , (parameter_declaration "int mlen_b" primitive_type identifier) )))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  element_type_t *peVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (element_type_arr[0].desc != (char *)0x0) {\n    pcVar1 = element_type_arr[0].desc;\n    if (elem_type_code == element_type_arr[0].elem_type_code) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }\n      if (uVar3 == 0) {\n        return b;\n      }\n      *b = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return b;\n      }\n      *(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return b;\n    }\n    if (element_type_arr[0].elem_type_code <= elem_type_code) {\n      peVar4 = element_type_arr;\n      do {\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      } while (iVar5 <= elem_type_code);\n    }\n  }\n  if (elem_type_code < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(b,0x3f,1,0xffffffff,pcVar1,elem_type_code);\n  b[0x3f] = '\0';\n  return b;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "element_type_t *peVar4;" type_identifier (pointer_declarator "*peVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (if_statement "if (element_type_arr[0].desc != (char *)0x0) {\n    pcVar1 = element_type_arr[0].desc;\n    if (elem_type_code == element_type_arr[0].elem_type_code) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }\n      if (uVar3 == 0) {\n        return b;\n      }\n      *b = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return b;\n      }\n      *(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return b;\n    }\n    if (element_type_arr[0].elem_type_code <= elem_type_code) {\n      peVar4 = element_type_arr;\n      do {\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      } while (iVar5 <= elem_type_code);\n    }\n  }" if (parenthesized_expression "(element_type_arr[0].desc != (char *)0x0)" ( (binary_expression "element_type_arr[0].desc != (char *)0x0" (field_expression "element_type_arr[0].desc" (subscript_expression "element_type_arr[0]" identifier [ number_literal ]) . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = element_type_arr[0].desc;\n    if (elem_type_code == element_type_arr[0].elem_type_code) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }\n      if (uVar3 == 0) {\n        return b;\n      }\n      *b = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return b;\n      }\n      *(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return b;\n    }\n    if (element_type_arr[0].elem_type_code <= elem_type_code) {\n      peVar4 = element_type_arr;\n      do {\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      } while (iVar5 <= elem_type_code);\n    }\n  }" { (expression_statement "pcVar1 = element_type_arr[0].desc;" (assignment_expression "pcVar1 = element_type_arr[0].desc" identifier = (field_expression "element_type_arr[0].desc" (subscript_expression "element_type_arr[0]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (elem_type_code == element_type_arr[0].elem_type_code) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }\n      if (uVar3 == 0) {\n        return b;\n      }\n      *b = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return b;\n      }\n      *(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return b;\n    }" if (parenthesized_expression "(elem_type_code == element_type_arr[0].elem_type_code)" ( (binary_expression "elem_type_code == element_type_arr[0].elem_type_code" identifier == (field_expression "element_type_arr[0].elem_type_code" (subscript_expression "element_type_arr[0]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }\n      if (uVar3 == 0) {\n        return b;\n      }\n      *b = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return b;\n      }\n      *(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return b;\n    }" { (labeled_statement "LAB_00016a60:\n      sVar2 = strlen(pcVar1);" statement_identifier : (expression_statement "sVar2 = strlen(pcVar1);" (assignment_expression "sVar2 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;)) (if_statement "if (0x3f < sVar2) {\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }" if (parenthesized_expression "(0x3f < sVar2)" ( (binary_expression "0x3f < sVar2" number_literal < identifier) )) (compound_statement "{\n        strncpy(b,pcVar1,0x3f);\n        b[0x3f] = '\0';\n        return b;\n      }" { (expression_statement "strncpy(b,pcVar1,0x3f);" (call_expression "strncpy(b,pcVar1,0x3f)" identifier (argument_list "(b,pcVar1,0x3f)" ( identifier , identifier , number_literal ))) ;) (expression_statement "b[0x3f] = '\0';" (assignment_expression "b[0x3f] = '\0'" (subscript_expression "b[0x3f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return b;" return identifier ;) })) (expression_statement "uVar3 = sVar2 + 1;" (assignment_expression "uVar3 = sVar2 + 1" identifier = (binary_expression "sVar2 + 1" identifier + number_literal)) ;) (if_statement "if (3 < uVar3) {\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }" if (parenthesized_expression "(3 < uVar3)" ( (binary_expression "3 < uVar3" number_literal < identifier) )) (compound_statement "{\n        *(undefined4 *)b = *(undefined4 *)pcVar1;\n        *(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return b;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return b;\n      }" { (expression_statement "*(undefined4 *)b = *(undefined4 *)pcVar1;" (assignment_expression "*(undefined4 *)b = *(undefined4 *)pcVar1" (pointer_expression "*(undefined4 *)b" * (cast_expression "(undefined4 *)b" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar1" * (cast_expression "(undefined4 *)pcVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));" (assignment_expression "*(undefined4 *)(b + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3))" (pointer_expression "*(undefined4 *)(b + (sVar2 - 3))" * (cast_expression "(undefined4 *)(b + (sVar2 - 3))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(b + (sVar2 - 3))" ( (binary_expression "b + (sVar2 - 3)" identifier + (parenthesized_expression "(sVar2 - 3)" ( (binary_expression "sVar2 - 3" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)(pcVar1 + (sVar2 - 3))" * (cast_expression "(undefined4 *)(pcVar1 + (sVar2 - 3))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (sVar2 - 3))" ( (binary_expression "pcVar1 + (sVar2 - 3)" identifier + (parenthesized_expression "(sVar2 - 3)" ( (binary_expression "sVar2 - 3" identifier - number_literal) ))) ))))) ;) (expression_statement "iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc);" (assignment_expression "iVar5 = (int)b - ((uint)(b + 4) & 0xfffffffc)" identifier = (binary_expression "(int)b - ((uint)(b + 4) & 0xfffffffc)" (cast_expression "(int)b" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((uint)(b + 4) & 0xfffffffc)" ( (binary_expression "(uint)(b + 4) & 0xfffffffc" (call_expression "(uint)(b + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(b + 4)" ( (binary_expression "b + 4" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar3 = uVar3 + iVar5 & 0xfffffffc;" (assignment_expression "uVar3 = uVar3 + iVar5 & 0xfffffffc" identifier = (binary_expression "uVar3 + iVar5 & 0xfffffffc" (binary_expression "uVar3 + iVar5" identifier + identifier) & number_literal)) ;) (if_statement "if (uVar3 < 4) {\n          return b;\n        }" if (parenthesized_expression "(uVar3 < 4)" ( (binary_expression "uVar3 < 4" identifier < number_literal) )) (compound_statement "{\n          return b;\n        }" { (return_statement "return b;" return identifier ;) })) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);" do (compound_statement "{\n          *(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        }" { (expression_statement "*(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));" (assignment_expression "*(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5))" (pointer_expression "*(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6)" * (cast_expression "(undefined4 *)(((uint)(b + 4) & 0xfffffffc) + uVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((uint)(b + 4) & 0xfffffffc) + uVar6)" ( (binary_expression "((uint)(b + 4) & 0xfffffffc) + uVar6" (parenthesized_expression "((uint)(b + 4) & 0xfffffffc)" ( (binary_expression "(uint)(b + 4) & 0xfffffffc" (call_expression "(uint)(b + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(b + 4)" ( (binary_expression "b + 4" identifier + number_literal) ))) & number_literal) )) + identifier) )))) = (pointer_expression "*(undefined4 *)(pcVar1 + (uVar6 - iVar5))" * (cast_expression "(undefined4 *)(pcVar1 + (uVar6 - iVar5))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (uVar6 - iVar5))" ( (binary_expression "pcVar1 + (uVar6 - iVar5)" identifier + (parenthesized_expression "(uVar6 - iVar5)" ( (binary_expression "uVar6 - iVar5" identifier - identifier) ))) ))))) ;) (expression_statement "uVar6 = uVar6 + 4;" (assignment_expression "uVar6 = uVar6 + 4" identifier = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 < uVar3)" ( (binary_expression "uVar6 < uVar3" identifier < identifier) )) ;) (return_statement "return b;" return identifier ;) })) (if_statement "if (uVar3 == 0) {\n        return b;\n      }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return b;\n      }" { (return_statement "return b;" return identifier ;) })) (expression_statement "*b = *pcVar1;" (assignment_expression "*b = *pcVar1" (pointer_expression "*b" * identifier) = (pointer_expression "*pcVar1" * identifier)) ;) (if_statement "if ((uVar3 & 2) == 0) {\n        return b;\n      }" if (parenthesized_expression "((uVar3 & 2) == 0)" ( (binary_expression "(uVar3 & 2) == 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        return b;\n      }" { (return_statement "return b;" return identifier ;) })) (expression_statement "*(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));" (assignment_expression "*(undefined2 *)(b + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1))" (pointer_expression "*(undefined2 *)(b + (sVar2 - 1))" * (cast_expression "(undefined2 *)(b + (sVar2 - 1))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(b + (sVar2 - 1))" ( (binary_expression "b + (sVar2 - 1)" identifier + (parenthesized_expression "(sVar2 - 1)" ( (binary_expression "sVar2 - 1" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)(pcVar1 + (sVar2 - 1))" * (cast_expression "(undefined2 *)(pcVar1 + (sVar2 - 1))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (sVar2 - 1))" ( (binary_expression "pcVar1 + (sVar2 - 1)" identifier + (parenthesized_expression "(sVar2 - 1)" ( (binary_expression "sVar2 - 1" identifier - number_literal) ))) ))))) ;) (return_statement "return b;" return identifier ;) })) (if_statement "if (element_type_arr[0].elem_type_code <= elem_type_code) {\n      peVar4 = element_type_arr;\n      do {\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      } while (iVar5 <= elem_type_code);\n    }" if (parenthesized_expression "(element_type_arr[0].elem_type_code <= elem_type_code)" ( (binary_expression "element_type_arr[0].elem_type_code <= elem_type_code" (field_expression "element_type_arr[0].elem_type_code" (subscript_expression "element_type_arr[0]" identifier [ number_literal ]) . field_identifier) <= identifier) )) (compound_statement "{\n      peVar4 = element_type_arr;\n      do {\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      } while (iVar5 <= elem_type_code);\n    }" { (expression_statement "peVar4 = element_type_arr;" (assignment_expression "peVar4 = element_type_arr" identifier = identifier) ;) (do_statement "do {\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      } while (iVar5 <= elem_type_code);" do (compound_statement "{\n        pcVar1 = peVar4[1].desc;\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = peVar4[1].elem_type_code;\n        if (iVar5 == elem_type_code) goto LAB_00016a60;\n        peVar4 = peVar4 + 1;\n      }" { (expression_statement "pcVar1 = peVar4[1].desc;" (assignment_expression "pcVar1 = peVar4[1].desc" identifier = (field_expression "peVar4[1].desc" (subscript_expression "peVar4[1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (pcVar1 == (char *)0x0) break;" 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)) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = peVar4[1].elem_type_code;" (assignment_expression "iVar5 = peVar4[1].elem_type_code" identifier = (field_expression "peVar4[1].elem_type_code" (subscript_expression "peVar4[1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (iVar5 == elem_type_code) goto LAB_00016a60;" if (parenthesized_expression "(iVar5 == elem_type_code)" ( (binary_expression "iVar5 == elem_type_code" identifier == identifier) )) (goto_statement "goto LAB_00016a60;" goto statement_identifier ;)) (expression_statement "peVar4 = peVar4 + 1;" (assignment_expression "peVar4 = peVar4 + 1" identifier = (binary_expression "peVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 <= elem_type_code)" ( (binary_expression "iVar5 <= elem_type_code" identifier <= identifier) )) ;) })) })) (if_statement "if (elem_type_code < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }" if (parenthesized_expression "(elem_type_code < 0x80)" ( (binary_expression "elem_type_code < 0x80" identifier < number_literal) )) (compound_statement "{\n    pcVar1 = "[0x%x]";\n  }" { (expression_statement "pcVar1 = "[0x%x]";" (assignment_expression "pcVar1 = "[0x%x]"" identifier = (string_literal ""[0x%x]"" " string_content ")) ;) }) (else_clause "else {\n    pcVar1 = "vendor specific [0x%x]";\n  }" else (compound_statement "{\n    pcVar1 = "vendor specific [0x%x]";\n  }" { (expression_statement "pcVar1 = "vendor specific [0x%x]";" (assignment_expression "pcVar1 = "vendor specific [0x%x]"" identifier = (string_literal ""vendor specific [0x%x]"" " string_content ")) ;) }))) (expression_statement "__snprintf_chk(b,0x3f,1,0xffffffff,pcVar1,elem_type_code);" (call_expression "__snprintf_chk(b,0x3f,1,0xffffffff,pcVar1,elem_type_code)" identifier (argument_list "(b,0x3f,1,0xffffffff,pcVar1,elem_type_code)" ( identifier , number_literal , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "b[0x3f] = '\0';" (assignment_expression "b[0x3f] = '\0'" (subscript_expression "b[0x3f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return b;" return identifier ;) })))
(translation_unit "char * __regparm3 FUN_000169f0(int param_1,char *param_2)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }\n  if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);\n  param_2[0x3f] = '\0';\n  return param_2;\n}\n\n" (function_definition "char * __regparm3 FUN_000169f0(int param_1,char *param_2)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }\n  if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);\n  param_2[0x3f] = '\0';\n  return param_2;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_000169f0(int param_1,char *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_000169f0(int param_1,char *param_2)" identifier (parameter_list "(int param_1,char *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }\n  if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);\n  param_2[0x3f] = '\0';\n  return param_2;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (if_statement "if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }" if (parenthesized_expression "(PTR_s_Unspecified_0002c5a8 != (undefined *)0x0)" ( (binary_expression "PTR_s_Unspecified_0002c5a8 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }" { (expression_statement "pcVar1 = PTR_s_Unspecified_0002c5a8;" (assignment_expression "pcVar1 = PTR_s_Unspecified_0002c5a8" identifier = identifier) ;) (if_statement "if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }" if (parenthesized_expression "(param_1 == DAT_0002c5a0)" ( (binary_expression "param_1 == DAT_0002c5a0" identifier == identifier) )) (compound_statement "{\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }" { (labeled_statement "LAB_00016a60:\n      sVar2 = strlen(pcVar1);" statement_identifier : (expression_statement "sVar2 = strlen(pcVar1);" (assignment_expression "sVar2 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;)) (if_statement "if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }" if (parenthesized_expression "(0x3f < sVar2)" ( (binary_expression "0x3f < sVar2" number_literal < identifier) )) (compound_statement "{\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }" { (expression_statement "strncpy(param_2,pcVar1,0x3f);" (call_expression "strncpy(param_2,pcVar1,0x3f)" identifier (argument_list "(param_2,pcVar1,0x3f)" ( identifier , identifier , number_literal ))) ;) (expression_statement "param_2[0x3f] = '\0';" (assignment_expression "param_2[0x3f] = '\0'" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return param_2;" return identifier ;) })) (expression_statement "uVar3 = sVar2 + 1;" (assignment_expression "uVar3 = sVar2 + 1" identifier = (binary_expression "sVar2 + 1" identifier + number_literal)) ;) (if_statement "if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }" if (parenthesized_expression "(3 < uVar3)" ( (binary_expression "3 < uVar3" number_literal < identifier) )) (compound_statement "{\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }" { (expression_statement "*(undefined4 *)param_2 = *(undefined4 *)pcVar1;" (assignment_expression "*(undefined4 *)param_2 = *(undefined4 *)pcVar1" (pointer_expression "*(undefined4 *)param_2" * (cast_expression "(undefined4 *)param_2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar1" * (cast_expression "(undefined4 *)pcVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));" (assignment_expression "*(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3))" (pointer_expression "*(undefined4 *)(param_2 + (sVar2 - 3))" * (cast_expression "(undefined4 *)(param_2 + (sVar2 - 3))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (sVar2 - 3))" ( (binary_expression "param_2 + (sVar2 - 3)" identifier + (parenthesized_expression "(sVar2 - 3)" ( (binary_expression "sVar2 - 3" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)(pcVar1 + (sVar2 - 3))" * (cast_expression "(undefined4 *)(pcVar1 + (sVar2 - 3))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (sVar2 - 3))" ( (binary_expression "pcVar1 + (sVar2 - 3)" identifier + (parenthesized_expression "(sVar2 - 3)" ( (binary_expression "sVar2 - 3" identifier - number_literal) ))) ))))) ;) (expression_statement "iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);" (assignment_expression "iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc)" identifier = (binary_expression "(int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc)" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((uint)(param_2 + 4) & 0xfffffffc)" ( (binary_expression "(uint)(param_2 + 4) & 0xfffffffc" (call_expression "(uint)(param_2 + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar3 = uVar3 + iVar5 & 0xfffffffc;" (assignment_expression "uVar3 = uVar3 + iVar5 & 0xfffffffc" identifier = (binary_expression "uVar3 + iVar5 & 0xfffffffc" (binary_expression "uVar3 + iVar5" identifier + identifier) & number_literal)) ;) (if_statement "if (uVar3 < 4) {\n          return param_2;\n        }" if (parenthesized_expression "(uVar3 < 4)" ( (binary_expression "uVar3 < 4" identifier < number_literal) )) (compound_statement "{\n          return param_2;\n        }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);" do (compound_statement "{\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        }" { (expression_statement "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));" (assignment_expression "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5))" (pointer_expression "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" * (cast_expression "(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" ( (binary_expression "((uint)(param_2 + 4) & 0xfffffffc) + uVar6" (parenthesized_expression "((uint)(param_2 + 4) & 0xfffffffc)" ( (binary_expression "(uint)(param_2 + 4) & 0xfffffffc" (call_expression "(uint)(param_2 + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))) & number_literal) )) + identifier) )))) = (pointer_expression "*(undefined4 *)(pcVar1 + (uVar6 - iVar5))" * (cast_expression "(undefined4 *)(pcVar1 + (uVar6 - iVar5))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (uVar6 - iVar5))" ( (binary_expression "pcVar1 + (uVar6 - iVar5)" identifier + (parenthesized_expression "(uVar6 - iVar5)" ( (binary_expression "uVar6 - iVar5" identifier - identifier) ))) ))))) ;) (expression_statement "uVar6 = uVar6 + 4;" (assignment_expression "uVar6 = uVar6 + 4" identifier = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 < uVar3)" ( (binary_expression "uVar6 < uVar3" identifier < identifier) )) ;) (return_statement "return param_2;" return identifier ;) })) (if_statement "if (uVar3 == 0) {\n        return param_2;\n      }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return param_2;\n      }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "*param_2 = *pcVar1;" (assignment_expression "*param_2 = *pcVar1" (pointer_expression "*param_2" * identifier) = (pointer_expression "*pcVar1" * identifier)) ;) (if_statement "if ((uVar3 & 2) == 0) {\n        return param_2;\n      }" if (parenthesized_expression "((uVar3 & 2) == 0)" ( (binary_expression "(uVar3 & 2) == 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        return param_2;\n      }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "*(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));" (assignment_expression "*(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1))" (pointer_expression "*(undefined2 *)(param_2 + (sVar2 - 1))" * (cast_expression "(undefined2 *)(param_2 + (sVar2 - 1))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (sVar2 - 1))" ( (binary_expression "param_2 + (sVar2 - 1)" identifier + (parenthesized_expression "(sVar2 - 1)" ( (binary_expression "sVar2 - 1" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)(pcVar1 + (sVar2 - 1))" * (cast_expression "(undefined2 *)(pcVar1 + (sVar2 - 1))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + (sVar2 - 1))" ( (binary_expression "pcVar1 + (sVar2 - 1)" identifier + (parenthesized_expression "(sVar2 - 1)" ( (binary_expression "sVar2 - 1" identifier - number_literal) ))) ))))) ;) (return_statement "return param_2;" return identifier ;) })) (if_statement "if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }" if (parenthesized_expression "(DAT_0002c5a0 <= param_1)" ( (binary_expression "DAT_0002c5a0 <= param_1" identifier <= identifier) )) (compound_statement "{\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }" { (expression_statement "piVar4 = &DAT_0002c5a0;" (assignment_expression "piVar4 = &DAT_0002c5a0" identifier = (pointer_expression "&DAT_0002c5a0" & identifier)) ;) (do_statement "do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);" do (compound_statement "{\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      }" { (expression_statement "pcVar1 = (char *)piVar4[5];" (assignment_expression "pcVar1 = (char *)piVar4[5]" identifier = (cast_expression "(char *)piVar4[5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[5]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar1 == (char *)0x0) break;" 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)) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = piVar4[3];" (assignment_expression "iVar5 = piVar4[3]" identifier = (subscript_expression "piVar4[3]" identifier [ number_literal ])) ;) (if_statement "if (iVar5 == param_1) goto LAB_00016a60;" if (parenthesized_expression "(iVar5 == param_1)" ( (binary_expression "iVar5 == param_1" identifier == identifier) )) (goto_statement "goto LAB_00016a60;" goto statement_identifier ;)) (expression_statement "piVar4 = piVar4 + 3;" (assignment_expression "piVar4 = piVar4 + 3" identifier = (binary_expression "piVar4 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 <= param_1)" ( (binary_expression "iVar5 <= param_1" identifier <= identifier) )) ;) })) })) (if_statement "if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }" if (parenthesized_expression "(param_1 < 0x80)" ( (binary_expression "param_1 < 0x80" identifier < number_literal) )) (compound_statement "{\n    pcVar1 = "[0x%x]";\n  }" { (expression_statement "pcVar1 = "[0x%x]";" (assignment_expression "pcVar1 = "[0x%x]"" identifier = (string_literal ""[0x%x]"" " string_content ")) ;) }) (else_clause "else {\n    pcVar1 = "vendor specific [0x%x]";\n  }" else (compound_statement "{\n    pcVar1 = "vendor specific [0x%x]";\n  }" { (expression_statement "pcVar1 = "vendor specific [0x%x]";" (assignment_expression "pcVar1 = "vendor specific [0x%x]"" identifier = (string_literal ""vendor specific [0x%x]"" " string_content ")) ;) }))) (expression_statement "__snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);" (call_expression "__snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1)" identifier (argument_list "(param_2,0x3f,1,0xffffffff,pcVar1,param_1)" ( identifier , number_literal , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "param_2[0x3f] = '\0';" (assignment_expression "param_2[0x3f] = '\0'" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return param_2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (return_statement return IDENT ;) })))
(function_definition "char * __regparm3 FUN_000169f0(int param_1,char *param_2)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }\n  if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);\n  param_2[0x3f] = '\0';\n  return param_2;\n}" (primitive_type "char") (pointer_declarator "* __regparm3 FUN_000169f0(int param_1,char *param_2)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000169f0(int param_1,char *param_2)" (identifier "FUN_000169f0") (parameter_list "(int param_1,char *param_2)" (( "(") (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"))) () ")")))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }\n  if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }\n  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);\n  param_2[0x3f] = '\0';\n  return param_2;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "size_t sVar2;" (primitive_type "size_t") (identifier "sVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (if_statement "if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }" (if "if") (parenthesized_expression "(PTR_s_Unspecified_0002c5a8 != (undefined *)0x0)" (( "(") (binary_expression "PTR_s_Unspecified_0002c5a8 != (undefined *)0x0" (identifier "PTR_s_Unspecified_0002c5a8") (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar1 = PTR_s_Unspecified_0002c5a8;\n    if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }\n    if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }\n  }" ({ "{") (expression_statement "pcVar1 = PTR_s_Unspecified_0002c5a8;" (assignment_expression "pcVar1 = PTR_s_Unspecified_0002c5a8" (identifier "pcVar1") (= "=") (identifier "PTR_s_Unspecified_0002c5a8")) (; ";")) (if_statement "if (param_1 == DAT_0002c5a0) {\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }" (if "if") (parenthesized_expression "(param_1 == DAT_0002c5a0)" (( "(") (binary_expression "param_1 == DAT_0002c5a0" (identifier "param_1") (== "==") (identifier "DAT_0002c5a0")) () ")")) (compound_statement "{\nLAB_00016a60:\n      sVar2 = strlen(pcVar1);\n      if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }\n      uVar3 = sVar2 + 1;\n      if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }\n      if (uVar3 == 0) {\n        return param_2;\n      }\n      *param_2 = *pcVar1;\n      if ((uVar3 & 2) == 0) {\n        return param_2;\n      }\n      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));\n      return param_2;\n    }" ({ "{") (labeled_statement "LAB_00016a60:\n      sVar2 = strlen(pcVar1);" (statement_identifier "LAB_00016a60") (: ":") (expression_statement "sVar2 = strlen(pcVar1);" (assignment_expression "sVar2 = strlen(pcVar1)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar1)" (identifier "strlen") (argument_list "(pcVar1)" (( "(") (identifier "pcVar1") () ")")))) (; ";"))) (if_statement "if (0x3f < sVar2) {\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }" (if "if") (parenthesized_expression "(0x3f < sVar2)" (( "(") (binary_expression "0x3f < sVar2" (number_literal "0x3f") (< "<") (identifier "sVar2")) () ")")) (compound_statement "{\n        strncpy(param_2,pcVar1,0x3f);\n        param_2[0x3f] = '\0';\n        return param_2;\n      }" ({ "{") (expression_statement "strncpy(param_2,pcVar1,0x3f);" (call_expression "strncpy(param_2,pcVar1,0x3f)" (identifier "strncpy") (argument_list "(param_2,pcVar1,0x3f)" (( "(") (identifier "param_2") (, ",") (identifier "pcVar1") (, ",") (number_literal "0x3f") () ")"))) (; ";")) (expression_statement "param_2[0x3f] = '\0';" (assignment_expression "param_2[0x3f] = '\0'" (subscript_expression "param_2[0x3f]" (identifier "param_2") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (expression_statement "uVar3 = sVar2 + 1;" (assignment_expression "uVar3 = sVar2 + 1" (identifier "uVar3") (= "=") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (3 < uVar3) {\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }" (if "if") (parenthesized_expression "(3 < uVar3)" (( "(") (binary_expression "3 < uVar3" (number_literal "3") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;\n        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));\n        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);\n        uVar3 = uVar3 + iVar5 & 0xfffffffc;\n        if (uVar3 < 4) {\n          return param_2;\n        }\n        uVar6 = 0;\n        do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);\n        return param_2;\n      }" ({ "{") (expression_statement "*(undefined4 *)param_2 = *(undefined4 *)pcVar1;" (assignment_expression "*(undefined4 *)param_2 = *(undefined4 *)pcVar1" (pointer_expression "*(undefined4 *)param_2" (* "*") (cast_expression "(undefined4 *)param_2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (= "=") (pointer_expression "*(undefined4 *)pcVar1" (* "*") (cast_expression "(undefined4 *)pcVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar1")))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));" (assignment_expression "*(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3))" (pointer_expression "*(undefined4 *)(param_2 + (sVar2 - 3))" (* "*") (cast_expression "(undefined4 *)(param_2 + (sVar2 - 3))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + (sVar2 - 3))" (( "(") (binary_expression "param_2 + (sVar2 - 3)" (identifier "param_2") (+ "+") (parenthesized_expression "(sVar2 - 3)" (( "(") (binary_expression "sVar2 - 3" (identifier "sVar2") (- "-") (number_literal "3")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(pcVar1 + (sVar2 - 3))" (* "*") (cast_expression "(undefined4 *)(pcVar1 + (sVar2 - 3))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar1 + (sVar2 - 3))" (( "(") (binary_expression "pcVar1 + (sVar2 - 3)" (identifier "pcVar1") (+ "+") (parenthesized_expression "(sVar2 - 3)" (( "(") (binary_expression "sVar2 - 3" (identifier "sVar2") (- "-") (number_literal "3")) () ")"))) () ")"))))) (; ";")) (expression_statement "iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);" (assignment_expression "iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc)" (identifier "iVar5") (= "=") (binary_expression "(int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc)" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (- "-") (parenthesized_expression "((uint)(param_2 + 4) & 0xfffffffc)" (( "(") (binary_expression "(uint)(param_2 + 4) & 0xfffffffc" (call_expression "(uint)(param_2 + 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "uVar3 = uVar3 + iVar5 & 0xfffffffc;" (assignment_expression "uVar3 = uVar3 + iVar5 & 0xfffffffc" (identifier "uVar3") (= "=") (binary_expression "uVar3 + iVar5 & 0xfffffffc" (binary_expression "uVar3 + iVar5" (identifier "uVar3") (+ "+") (identifier "iVar5")) (& "&") (number_literal "0xfffffffc"))) (; ";")) (if_statement "if (uVar3 < 4) {\n          return param_2;\n        }" (if "if") (parenthesized_expression "(uVar3 < 4)" (( "(") (binary_expression "uVar3 < 4" (identifier "uVar3") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n          return param_2;\n        }" ({ "{") (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        } while (uVar6 < uVar3);" (do "do") (compound_statement "{\n          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));\n          uVar6 = uVar6 + 4;\n        }" ({ "{") (expression_statement "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));" (assignment_expression "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =\n               *(undefined4 *)(pcVar1 + (uVar6 - iVar5))" (pointer_expression "*(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" (* "*") (cast_expression "(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((uint)(param_2 + 4) & 0xfffffffc) + uVar6)" (( "(") (binary_expression "((uint)(param_2 + 4) & 0xfffffffc) + uVar6" (parenthesized_expression "((uint)(param_2 + 4) & 0xfffffffc)" (( "(") (binary_expression "(uint)(param_2 + 4) & 0xfffffffc" (call_expression "(uint)(param_2 + 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")) (+ "+") (identifier "uVar6")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(pcVar1 + (uVar6 - iVar5))" (* "*") (cast_expression "(undefined4 *)(pcVar1 + (uVar6 - iVar5))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar1 + (uVar6 - iVar5))" (( "(") (binary_expression "pcVar1 + (uVar6 - iVar5)" (identifier "pcVar1") (+ "+") (parenthesized_expression "(uVar6 - iVar5)" (( "(") (binary_expression "uVar6 - iVar5" (identifier "uVar6") (- "-") (identifier "iVar5")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar6 = uVar6 + 4;" (assignment_expression "uVar6 = uVar6 + 4" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 4" (identifier "uVar6") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 < uVar3)" (( "(") (binary_expression "uVar6 < uVar3" (identifier "uVar6") (< "<") (identifier "uVar3")) () ")")) (; ";")) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (if_statement "if (uVar3 == 0) {\n        return param_2;\n      }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return param_2;\n      }" ({ "{") (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (expression_statement "*param_2 = *pcVar1;" (assignment_expression "*param_2 = *pcVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1"))) (; ";")) (if_statement "if ((uVar3 & 2) == 0) {\n        return param_2;\n      }" (if "if") (parenthesized_expression "((uVar3 & 2) == 0)" (( "(") (binary_expression "(uVar3 & 2) == 0" (parenthesized_expression "(uVar3 & 2)" (( "(") (binary_expression "uVar3 & 2" (identifier "uVar3") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return param_2;\n      }" ({ "{") (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (expression_statement "*(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));" (assignment_expression "*(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1))" (pointer_expression "*(undefined2 *)(param_2 + (sVar2 - 1))" (* "*") (cast_expression "(undefined2 *)(param_2 + (sVar2 - 1))" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + (sVar2 - 1))" (( "(") (binary_expression "param_2 + (sVar2 - 1)" (identifier "param_2") (+ "+") (parenthesized_expression "(sVar2 - 1)" (( "(") (binary_expression "sVar2 - 1" (identifier "sVar2") (- "-") (number_literal "1")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined2 *)(pcVar1 + (sVar2 - 1))" (* "*") (cast_expression "(undefined2 *)(pcVar1 + (sVar2 - 1))" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar1 + (sVar2 - 1))" (( "(") (binary_expression "pcVar1 + (sVar2 - 1)" (identifier "pcVar1") (+ "+") (parenthesized_expression "(sVar2 - 1)" (( "(") (binary_expression "sVar2 - 1" (identifier "sVar2") (- "-") (number_literal "1")) () ")"))) () ")"))))) (; ";")) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (if_statement "if (DAT_0002c5a0 <= param_1) {\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }" (if "if") (parenthesized_expression "(DAT_0002c5a0 <= param_1)" (( "(") (binary_expression "DAT_0002c5a0 <= param_1" (identifier "DAT_0002c5a0") (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n      piVar4 = &DAT_0002c5a0;\n      do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);\n    }" ({ "{") (expression_statement "piVar4 = &DAT_0002c5a0;" (assignment_expression "piVar4 = &DAT_0002c5a0" (identifier "piVar4") (= "=") (pointer_expression "&DAT_0002c5a0" (& "&") (identifier "DAT_0002c5a0"))) (; ";")) (do_statement "do {\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      } while (iVar5 <= param_1);" (do "do") (compound_statement "{\n        pcVar1 = (char *)piVar4[5];\n        if (pcVar1 == (char *)0x0) break;\n        iVar5 = piVar4[3];\n        if (iVar5 == param_1) goto LAB_00016a60;\n        piVar4 = piVar4 + 3;\n      }" ({ "{") (expression_statement "pcVar1 = (char *)piVar4[5];" (assignment_expression "pcVar1 = (char *)piVar4[5]" (identifier "pcVar1") (= "=") (cast_expression "(char *)piVar4[5]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")))) (; ";")) (if_statement "if (pcVar1 == (char *)0x0) break;" (if "if") (parenthesized_expression "(pcVar1 == (char *)0x0)" (( "(") (binary_expression "pcVar1 == (char *)0x0" (identifier "pcVar1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = piVar4[3];" (assignment_expression "iVar5 = piVar4[3]" (identifier "iVar5") (= "=") (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (iVar5 == param_1) goto LAB_00016a60;" (if "if") (parenthesized_expression "(iVar5 == param_1)" (( "(") (binary_expression "iVar5 == param_1" (identifier "iVar5") (== "==") (identifier "param_1")) () ")")) (goto_statement "goto LAB_00016a60;" (goto "goto") (statement_identifier "LAB_00016a60") (; ";"))) (expression_statement "piVar4 = piVar4 + 3;" (assignment_expression "piVar4 = piVar4 + 3" (identifier "piVar4") (= "=") (binary_expression "piVar4 + 3" (identifier "piVar4") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 <= param_1)" (( "(") (binary_expression "iVar5 <= param_1" (identifier "iVar5") (<= "<=") (identifier "param_1")) () ")")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (param_1 < 0x80) {\n    pcVar1 = "[0x%x]";\n  }\n  else {\n    pcVar1 = "vendor specific [0x%x]";\n  }" (if "if") (parenthesized_expression "(param_1 < 0x80)" (( "(") (binary_expression "param_1 < 0x80" (identifier "param_1") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n    pcVar1 = "[0x%x]";\n  }" ({ "{") (expression_statement "pcVar1 = "[0x%x]";" (assignment_expression "pcVar1 = "[0x%x]"" (identifier "pcVar1") (= "=") (string_literal ""[0x%x]"" (" """) (string_content "[0x%x]") (" """))) (; ";")) (} "}")) (else_clause "else {\n    pcVar1 = "vendor specific [0x%x]";\n  }" (else "else") (compound_statement "{\n    pcVar1 = "vendor specific [0x%x]";\n  }" ({ "{") (expression_statement "pcVar1 = "vendor specific [0x%x]";" (assignment_expression "pcVar1 = "vendor specific [0x%x]"" (identifier "pcVar1") (= "=") (string_literal ""vendor specific [0x%x]"" (" """) (string_content "vendor specific [0x%x]") (" """))) (; ";")) (} "}")))) (expression_statement "__snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);" (call_expression "__snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1)" (identifier "__snprintf_chk") (argument_list "(param_2,0x3f,1,0xffffffff,pcVar1,param_1)" (( "(") (identifier "param_2") (, ",") (number_literal "0x3f") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (identifier "pcVar1") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "param_2[0x3f] = '\0';" (assignment_expression "param_2[0x3f] = '\0'" (subscript_expression "param_2[0x3f]" (identifier "param_2") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}")))

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

char * __regparm3 function_1(int var_1,char *var_6,int mlen_b)

{
  char *var_7;
  size_t var_3;
  type_1 var_5;
  type_2 *var_10;
  int var_8;
  type_1 var_9;
  
  if (element_type_arr[0].desc != (char *)0x0) {
    var_7 = element_type_arr[0].desc;
    if (var_1 == element_type_arr[0].var_1) {
LAB_00016a60:
      var_3 = var_2(var_7);
      if (0x3f < var_3) {
        var_4(var_6,var_7,0x3f);
        var_6[0x3f] = '\0';
        return var_6;
      }
      var_5 = var_3 + 1;
      if (3 < var_5) {
        *(type_3 *)var_6 = *(type_3 *)var_7;
        *(type_3 *)(var_6 + (var_3 - 3)) = *(type_3 *)(var_7 + (var_3 - 3));
        var_8 = (int)var_6 - ((type_1)(var_6 + 4) & 0xfffffffc);
        var_5 = var_5 + var_8 & 0xfffffffc;
        if (var_5 < 4) {
          return var_6;
        }
        var_9 = 0;
        do {
          *(type_3 *)(((type_1)(var_6 + 4) & 0xfffffffc) + var_9) =
               *(type_3 *)(var_7 + (var_9 - var_8));
          var_9 = var_9 + 4;
        } while (var_9 < var_5);
        return var_6;
      }
      if (var_5 == 0) {
        return var_6;
      }
      *var_6 = *var_7;
      if ((var_5 & 2) == 0) {
        return var_6;
      }
      *(type_4 *)(var_6 + (var_3 - 1)) = *(type_4 *)(var_7 + (var_3 - 1));
      return var_6;
    }
    if (element_type_arr[0].var_1 <= var_1) {
      var_10 = element_type_arr;
      do {
        var_7 = var_10[1].desc;
        if (var_7 == (char *)0x0) break;
        var_8 = var_10[1].var_1;
        if (var_8 == var_1) goto LAB_00016a60;
        var_10 = var_10 + 1;
      } while (var_8 <= var_1);
    }
  }
  if (var_1 < 0x80) {
    var_7 = "[0x%x]";
  }
  else {
    var_7 = "vendor specific [0x%x]";
  }
  var_11(var_6,0x3f,1,0xffffffff,var_7,var_1);
  var_6[0x3f] = '\0';
  return var_6;
}


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

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

char * __regparm3 MASKED(int param_1,char *param_2)

{
  char *pcVar1;
  size_t sVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  uint uVar6;
  
  if (PTR_s_Unspecified_0002c5a8 != (undefined *)0x0) {
    pcVar1 = PTR_s_Unspecified_0002c5a8;
    if (param_1 == DAT_0002c5a0) {
LAB_00016a60:
      sVar2 = strlen(pcVar1);
      if (0x3f < sVar2) {
        strncpy(param_2,pcVar1,0x3f);
        param_2[0x3f] = '\0';
        return param_2;
      }
      uVar3 = sVar2 + 1;
      if (3 < uVar3) {
        *(undefined4 *)param_2 = *(undefined4 *)pcVar1;
        *(undefined4 *)(param_2 + (sVar2 - 3)) = *(undefined4 *)(pcVar1 + (sVar2 - 3));
        iVar5 = (int)param_2 - ((uint)(param_2 + 4) & 0xfffffffc);
        uVar3 = uVar3 + iVar5 & 0xfffffffc;
        if (uVar3 < 4) {
          return param_2;
        }
        uVar6 = 0;
        do {
          *(undefined4 *)(((uint)(param_2 + 4) & 0xfffffffc) + uVar6) =
               *(undefined4 *)(pcVar1 + (uVar6 - iVar5));
          uVar6 = uVar6 + 4;
        } while (uVar6 < uVar3);
        return param_2;
      }
      if (uVar3 == 0) {
        return param_2;
      }
      *param_2 = *pcVar1;
      if ((uVar3 & 2) == 0) {
        return param_2;
      }
      *(undefined2 *)(param_2 + (sVar2 - 1)) = *(undefined2 *)(pcVar1 + (sVar2 - 1));
      return param_2;
    }
    if (DAT_0002c5a0 <= param_1) {
      piVar4 = &DAT_0002c5a0;
      do {
        pcVar1 = (char *)piVar4[5];
        if (pcVar1 == (char *)0x0) break;
        iVar5 = piVar4[3];
        if (iVar5 == param_1) goto LAB_00016a60;
        piVar4 = piVar4 + 3;
      } while (iVar5 <= param_1);
    }
  }
  if (param_1 < 0x80) {
    pcVar1 = "[0x%x]";
  }
  else {
    pcVar1 = "vendor specific [0x%x]";
  }
  __snprintf_chk(param_2,0x3f,1,0xffffffff,pcVar1,param_1);
  param_2[0x3f] = '\0';
  return param_2;
}

