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

int printf_fetchargs(va_list args,arguments *a)

{
  argument *paVar1;
  longdouble *plVar2;
  int iVar3;
  uint local_1c;
  
  paVar1 = a->arg;
  if (a->count != 0) {
    local_1c = 0;
    do {
      switch(paVar1->type) {
      default:
        return -1;
      case TYPE_SCHAR:
      case TYPE_UCHAR:
        plVar2 = (longdouble *)((int)args + 4);
        (paVar1->a).field23[0] = *args;
        break;
      case TYPE_SHORT:
      case TYPE_USHORT:
        plVar2 = (longdouble *)((int)args + 4);
        (paVar1->a).a_short = (short)*(int *)args;
        break;
      case TYPE_INT:
      case TYPE_UINT:
      case TYPE_LONGINT:
      case TYPE_ULONGINT:
      case TYPE_CHAR:
      case TYPE_WIDE_CHAR:
      case TYPE_POINTER:
      case TYPE_COUNT_SCHAR_POINTER:
      case TYPE_COUNT_SHORT_POINTER:
      case TYPE_COUNT_INT_POINTER:
      case TYPE_COUNT_LONGINT_POINTER:
      case TYPE_COUNT_LONGLONGINT_POINTER:
        plVar2 = (longdouble *)((int)args + 4);
        (paVar1->a).a_int = *(int *)args;
        break;
      case TYPE_LONGLONGINT:
      case TYPE_ULONGLONGINT:
        iVar3 = *(int *)((int)args + 4);
        plVar2 = (longdouble *)((int)args + 8);
        (paVar1->a).a_int = *(int *)args;
        *(int *)((int)&paVar1->a + 4) = iVar3;
        break;
      case TYPE_DOUBLE:
        plVar2 = (longdouble *)((int)args + 8);
        (paVar1->a).a_longlongint = *(longlong *)args;
        break;
      case TYPE_LONGDOUBLE:
        plVar2 = (longdouble *)((int)args + 0xc);
        (paVar1->a).a_longdouble = *(longdouble *)args;
        break;
      case TYPE_STRING:
        plVar2 = (longdouble *)((int)args + 4);
        iVar3 = *(int *)args;
        if (iVar3 == 0) {
          (paVar1->a).a_float = (float)"(NULL)";
        }
        else {
LAB_0002af79:
          plVar2 = (longdouble *)((int)args + 4);
          (paVar1->a).a_int = iVar3;
        }
        break;
      case TYPE_WIDE_STRING:
        plVar2 = (longdouble *)((int)args + 4);
        iVar3 = *(int *)args;
        if (iVar3 != 0) goto LAB_0002af79;
        (paVar1->a).a_float = (float)L"(NULL)";
      }
      local_1c = local_1c + 1;
      paVar1 = paVar1 + 1;
      args = (va_list)plVar2;
    } while (local_1c < a->count);
  }
  return 0;
}



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

undefined4 FUN_0002ae90(int *param_1,uint *param_2)

{
  undefined4 *puVar1;
  int *piVar2;
  int iVar3;
  uint local_1c;
  
  puVar1 = (undefined4 *)param_2[1];
  if (*param_2 != 0) {
    local_1c = 0;
    do {
      switch(*puVar1) {
      default:
        return 0xffffffff;
      case 1:
      case 2:
        piVar2 = param_1 + 1;
        *(char *)(puVar1 + 1) = (char)*param_1;
        break;
      case 3:
      case 4:
        piVar2 = param_1 + 1;
        *(short *)(puVar1 + 1) = (short)*param_1;
        break;
      case 5:
      case 6:
      case 7:
      case 8:
      case 0xd:
      case 0xe:
      case 0x11:
      case 0x12:
      case 0x13:
      case 0x14:
      case 0x15:
      case 0x16:
        piVar2 = param_1 + 1;
        puVar1[1] = *param_1;
        break;
      case 9:
      case 10:
        iVar3 = param_1[1];
        piVar2 = param_1 + 2;
        puVar1[1] = *param_1;
        puVar1[2] = iVar3;
        break;
      case 0xb:
        piVar2 = param_1 + 2;
        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;
        break;
      case 0xc:
        piVar2 = param_1 + 3;
        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;
        break;
      case 0xf:
        piVar2 = param_1 + 1;
        iVar3 = *param_1;
        if (iVar3 == 0) {
          puVar1[1] = "(NULL)";
        }
        else {
code_r0x0002af79:
          piVar2 = param_1 + 1;
          puVar1[1] = iVar3;
        }
        break;
      case 0x10:
        piVar2 = param_1 + 1;
        iVar3 = *param_1;
        if (iVar3 != 0) goto code_r0x0002af79;
        puVar1[1] = &DAT_0002f9dc;
      }
      local_1c = local_1c + 1;
      puVar1 = puVar1 + 4;
      param_1 = piVar2;
    } while (local_1c < *param_2);
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000132d0
ADD EBX,0xe167
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x24]
MOV ECX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [EDI]
MOV EAX,dword ptr [EDI + 0x4]
TEST EDX,EDX
JZ 0x0002af0a
XOR EDX,EDX
LEA ESI,[EBX + 0xffff6978]
LEA EBP,[EBX + 0xffff69dc]
MOV dword ptr [ESP + 0x4],ESI
MOV dword ptr [ESP],EDX
LEA ESI,[ESI]
NOP
CMP dword ptr [EAX],0x16
JA 0x0002afa0
MOV ESI,dword ptr [EAX]
MOV EDX,dword ptr [EBX + ESI*0x4 + 0xffff6980]
ADD EDX,EBX
JMP EDX
ADD ESP,0xc
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0xc
MOV EAX,0xffffffff
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_0002ae90(int *param_1,uint *param_2)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int iVar3;\n  uint local_1c;\n  \n  puVar1 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_0002ae90(int *param_1,uint *param_2)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int iVar3;\n  uint local_1c;\n  \n  puVar1 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0002ae90(int *param_1,uint *param_2)" identifier (parameter_list "(int *param_1,uint *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  int iVar3;\n  uint local_1c;\n  \n  puVar1 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }\n  return 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint local_1c;" type_identifier identifier ;) (expression_statement "puVar1 = (undefined4 *)param_2[1];" (assignment_expression "puVar1 = (undefined4 *)param_2[1]" identifier = (cast_expression "(undefined4 *)param_2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }" if (parenthesized_expression "(*param_2 != 0)" ( (binary_expression "*param_2 != 0" (pointer_expression "*param_2" * identifier) != number_literal) )) (compound_statement "{\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }" { (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" identifier = number_literal) ;) (do_statement "do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);" do (compound_statement "{\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    }" { (switch_statement "switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }" switch (parenthesized_expression "(*puVar1)" ( (pointer_expression "*puVar1" * identifier) )) (compound_statement "{\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }" { (case_statement "default:\n        return 0xffffffff;" default : (return_statement "return 0xffffffff;" return number_literal ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)(puVar1 + 1) = (char)*param_1;" (assignment_expression "*(char *)(puVar1 + 1) = (char)*param_1" (pointer_expression "*(char *)(puVar1 + 1)" * (cast_expression "(char *)(puVar1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = (cast_expression "(char)*param_1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 3:" case number_literal :) (case_statement "case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*(short *)(puVar1 + 1) = (short)*param_1;" (assignment_expression "*(short *)(puVar1 + 1) = (short)*param_1" (pointer_expression "*(short *)(puVar1 + 1)" * (cast_expression "(short *)(puVar1 + 1)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = (cast_expression "(short)*param_1" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 5:" case number_literal :) (case_statement "case 6:" case number_literal :) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 0xd:" case number_literal :) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x12:" case number_literal :) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:" case number_literal :) (case_statement "case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "puVar1[1] = *param_1;" (assignment_expression "puVar1[1] = *param_1" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;" case number_literal : (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2 = param_1 + 2;" (assignment_expression "piVar2 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "puVar1[1] = *param_1;" (assignment_expression "puVar1[1] = *param_1" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar1[2] = iVar3;" (assignment_expression "puVar1[2] = iVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 2;" (assignment_expression "piVar2 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;" (assignment_expression "*(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1" (pointer_expression "*(undefined8 *)(puVar1 + 1)" * (cast_expression "(undefined8 *)(puVar1 + 1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)param_1" * (cast_expression "(undefined8 *)param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 3;" (assignment_expression "piVar2 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (expression_statement "*(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;" (assignment_expression "*(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1" (pointer_expression "*(unkbyte10 *)(puVar1 + 1)" * (cast_expression "(unkbyte10 *)(puVar1 + 1)" ( (type_descriptor "unkbyte10 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = (pointer_expression "*(unkbyte10 *)param_1" * (cast_expression "(unkbyte10 *)param_1" ( (type_descriptor "unkbyte10 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar1[1] = "(NULL)";\n        }" { (expression_statement "puVar1[1] = "(NULL)";" (assignment_expression "puVar1[1] = "(NULL)"" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (string_literal ""(NULL)"" " string_content ")) ;) }) (else_clause "else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" else (compound_statement "{\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" { (labeled_statement "code_r0x0002af79:\n          piVar2 = param_1 + 1;" statement_identifier : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;)) (expression_statement "puVar1[1] = iVar3;" (assignment_expression "puVar1[1] = iVar3" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) }))) (break_statement "break;" break ;)) (case_statement "case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (iVar3 != 0) goto code_r0x0002af79;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x0002af79;" goto statement_identifier ;)) (expression_statement "puVar1[1] = &DAT_0002f9dc;" (assignment_expression "puVar1[1] = &DAT_0002f9dc" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "&DAT_0002f9dc" & identifier)) ;)) })) (expression_statement "local_1c = local_1c + 1;" (assignment_expression "local_1c = local_1c + 1" identifier = (binary_expression "local_1c + 1" identifier + number_literal)) ;) (expression_statement "puVar1 = puVar1 + 4;" (assignment_expression "puVar1 = puVar1 + 4" identifier = (binary_expression "puVar1 + 4" identifier + number_literal)) ;) (expression_statement "param_1 = piVar2;" (assignment_expression "param_1 = piVar2" identifier = identifier) ;) }) while (parenthesized_expression "(local_1c < *param_2)" ( (binary_expression "local_1c < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint printf_fetchargs(va_list args,arguments *a)\n\n{\n  argument *paVar1;\n  longdouble *plVar2;\n  int iVar3;\n  uint local_1c;\n  \n  paVar1 = a->arg;\n  if (a->count != 0) {\n    local_1c = 0;\n    do {\n      switch(paVar1->type) {\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }\n      local_1c = local_1c + 1;\n      paVar1 = paVar1 + 1;\n      args = (va_list)plVar2;\n    } while (local_1c < a->count);\n  }\n  return 0;\n}\n\n" comment (function_definition "int printf_fetchargs(va_list args,arguments *a)\n\n{\n  argument *paVar1;\n  longdouble *plVar2;\n  int iVar3;\n  uint local_1c;\n  \n  paVar1 = a->arg;\n  if (a->count != 0) {\n    local_1c = 0;\n    do {\n      switch(paVar1->type) {\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }\n      local_1c = local_1c + 1;\n      paVar1 = paVar1 + 1;\n      args = (va_list)plVar2;\n    } while (local_1c < a->count);\n  }\n  return 0;\n}" primitive_type (function_declarator "printf_fetchargs(va_list args,arguments *a)" identifier (parameter_list "(va_list args,arguments *a)" ( (parameter_declaration "va_list args" type_identifier identifier) , (parameter_declaration "arguments *a" type_identifier (pointer_declarator "*a" * identifier)) ))) (compound_statement "{\n  argument *paVar1;\n  longdouble *plVar2;\n  int iVar3;\n  uint local_1c;\n  \n  paVar1 = a->arg;\n  if (a->count != 0) {\n    local_1c = 0;\n    do {\n      switch(paVar1->type) {\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }\n      local_1c = local_1c + 1;\n      paVar1 = paVar1 + 1;\n      args = (va_list)plVar2;\n    } while (local_1c < a->count);\n  }\n  return 0;\n}" { (declaration "argument *paVar1;" type_identifier (pointer_declarator "*paVar1" * identifier) ;) (declaration "longdouble *plVar2;" type_identifier (pointer_declarator "*plVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint local_1c;" type_identifier identifier ;) (expression_statement "paVar1 = a->arg;" (assignment_expression "paVar1 = a->arg" identifier = (field_expression "a->arg" identifier -> field_identifier)) ;) (if_statement "if (a->count != 0) {\n    local_1c = 0;\n    do {\n      switch(paVar1->type) {\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }\n      local_1c = local_1c + 1;\n      paVar1 = paVar1 + 1;\n      args = (va_list)plVar2;\n    } while (local_1c < a->count);\n  }" if (parenthesized_expression "(a->count != 0)" ( (binary_expression "a->count != 0" (field_expression "a->count" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    local_1c = 0;\n    do {\n      switch(paVar1->type) {\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }\n      local_1c = local_1c + 1;\n      paVar1 = paVar1 + 1;\n      args = (va_list)plVar2;\n    } while (local_1c < a->count);\n  }" { (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" identifier = number_literal) ;) (do_statement "do {\n      switch(paVar1->type) {\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }\n      local_1c = local_1c + 1;\n      paVar1 = paVar1 + 1;\n      args = (va_list)plVar2;\n    } while (local_1c < a->count);" do (compound_statement "{\n      switch(paVar1->type) {\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }\n      local_1c = local_1c + 1;\n      paVar1 = paVar1 + 1;\n      args = (va_list)plVar2;\n    }" { (switch_statement "switch(paVar1->type) {\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }" switch (parenthesized_expression "(paVar1->type)" ( (field_expression "paVar1->type" identifier -> field_identifier) )) (compound_statement "{\n      default:\n        return -1;\n      case TYPE_SCHAR:\n      case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;\n      case TYPE_SHORT:\n      case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;\n      case TYPE_INT:\n      case TYPE_UINT:\n      case TYPE_LONGINT:\n      case TYPE_ULONGINT:\n      case TYPE_CHAR:\n      case TYPE_WIDE_CHAR:\n      case TYPE_POINTER:\n      case TYPE_COUNT_SCHAR_POINTER:\n      case TYPE_COUNT_SHORT_POINTER:\n      case TYPE_COUNT_INT_POINTER:\n      case TYPE_COUNT_LONGINT_POINTER:\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;\n      case TYPE_LONGLONGINT:\n      case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;\n      case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;\n      case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;\n      case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";\n      }" { (case_statement "default:\n        return -1;" default : (return_statement "return -1;" return number_literal ;)) (case_statement "case TYPE_SCHAR:" case identifier :) (case_statement "case TYPE_UCHAR:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).field23[0] = *args;\n        break;" case identifier : (expression_statement "plVar2 = (longdouble *)((int)args + 4);" (assignment_expression "plVar2 = (longdouble *)((int)args + 4)" identifier = (cast_expression "(longdouble *)((int)args + 4)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 4)" ( (binary_expression "(int)args + 4" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(paVar1->a).field23[0] = *args;" (assignment_expression "(paVar1->a).field23[0] = *args" (subscript_expression "(paVar1->a).field23[0]" (field_expression "(paVar1->a).field23" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (pointer_expression "*args" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_SHORT:" case identifier :) (case_statement "case TYPE_USHORT:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_short = (short)*(int *)args;\n        break;" case identifier : (expression_statement "plVar2 = (longdouble *)((int)args + 4);" (assignment_expression "plVar2 = (longdouble *)((int)args + 4)" identifier = (cast_expression "(longdouble *)((int)args + 4)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 4)" ( (binary_expression "(int)args + 4" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(paVar1->a).a_short = (short)*(int *)args;" (assignment_expression "(paVar1->a).a_short = (short)*(int *)args" (field_expression "(paVar1->a).a_short" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(short)*(int *)args" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*(int *)args" * (cast_expression "(int *)args" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_INT:" case identifier :) (case_statement "case TYPE_UINT:" case identifier :) (case_statement "case TYPE_LONGINT:" case identifier :) (case_statement "case TYPE_ULONGINT:" case identifier :) (case_statement "case TYPE_CHAR:" case identifier :) (case_statement "case TYPE_WIDE_CHAR:" case identifier :) (case_statement "case TYPE_POINTER:" case identifier :) (case_statement "case TYPE_COUNT_SCHAR_POINTER:" case identifier :) (case_statement "case TYPE_COUNT_SHORT_POINTER:" case identifier :) (case_statement "case TYPE_COUNT_INT_POINTER:" case identifier :) (case_statement "case TYPE_COUNT_LONGINT_POINTER:" case identifier :) (case_statement "case TYPE_COUNT_LONGLONGINT_POINTER:\n        plVar2 = (longdouble *)((int)args + 4);\n        (paVar1->a).a_int = *(int *)args;\n        break;" case identifier : (expression_statement "plVar2 = (longdouble *)((int)args + 4);" (assignment_expression "plVar2 = (longdouble *)((int)args + 4)" identifier = (cast_expression "(longdouble *)((int)args + 4)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 4)" ( (binary_expression "(int)args + 4" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(paVar1->a).a_int = *(int *)args;" (assignment_expression "(paVar1->a).a_int = *(int *)args" (field_expression "(paVar1->a).a_int" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(int *)args" * (cast_expression "(int *)args" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_LONGLONGINT:" case identifier :) (case_statement "case TYPE_ULONGLONGINT:\n        iVar3 = *(int *)((int)args + 4);\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_int = *(int *)args;\n        *(int *)((int)&paVar1->a + 4) = iVar3;\n        break;" case identifier : (expression_statement "iVar3 = *(int *)((int)args + 4);" (assignment_expression "iVar3 = *(int *)((int)args + 4)" identifier = (pointer_expression "*(int *)((int)args + 4)" * (cast_expression "(int *)((int)args + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 4)" ( (binary_expression "(int)args + 4" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "plVar2 = (longdouble *)((int)args + 8);" (assignment_expression "plVar2 = (longdouble *)((int)args + 8)" identifier = (cast_expression "(longdouble *)((int)args + 8)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 8)" ( (binary_expression "(int)args + 8" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(paVar1->a).a_int = *(int *)args;" (assignment_expression "(paVar1->a).a_int = *(int *)args" (field_expression "(paVar1->a).a_int" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(int *)args" * (cast_expression "(int *)args" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int *)((int)&paVar1->a + 4) = iVar3;" (assignment_expression "*(int *)((int)&paVar1->a + 4) = iVar3" (pointer_expression "*(int *)((int)&paVar1->a + 4)" * (cast_expression "(int *)((int)&paVar1->a + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar1->a + 4)" ( (binary_expression "(int)&paVar1->a + 4" (cast_expression "(int)&paVar1->a" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar1->a" & (field_expression "paVar1->a" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_DOUBLE:\n        plVar2 = (longdouble *)((int)args + 8);\n        (paVar1->a).a_longlongint = *(longlong *)args;\n        break;" case identifier : (expression_statement "plVar2 = (longdouble *)((int)args + 8);" (assignment_expression "plVar2 = (longdouble *)((int)args + 8)" identifier = (cast_expression "(longdouble *)((int)args + 8)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 8)" ( (binary_expression "(int)args + 8" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(paVar1->a).a_longlongint = *(longlong *)args;" (assignment_expression "(paVar1->a).a_longlongint = *(longlong *)args" (field_expression "(paVar1->a).a_longlongint" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(longlong *)args" * (cast_expression "(longlong *)args" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_LONGDOUBLE:\n        plVar2 = (longdouble *)((int)args + 0xc);\n        (paVar1->a).a_longdouble = *(longdouble *)args;\n        break;" case identifier : (expression_statement "plVar2 = (longdouble *)((int)args + 0xc);" (assignment_expression "plVar2 = (longdouble *)((int)args + 0xc)" identifier = (cast_expression "(longdouble *)((int)args + 0xc)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 0xc)" ( (binary_expression "(int)args + 0xc" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(paVar1->a).a_longdouble = *(longdouble *)args;" (assignment_expression "(paVar1->a).a_longdouble = *(longdouble *)args" (field_expression "(paVar1->a).a_longdouble" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(longdouble *)args" * (cast_expression "(longdouble *)args" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }\n        break;" case identifier : (expression_statement "plVar2 = (longdouble *)((int)args + 4);" (assignment_expression "plVar2 = (longdouble *)((int)args + 4)" identifier = (cast_expression "(longdouble *)((int)args + 4)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 4)" ( (binary_expression "(int)args + 4" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar3 = *(int *)args;" (assignment_expression "iVar3 = *(int *)args" identifier = (pointer_expression "*(int *)args" * (cast_expression "(int *)args" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar3 == 0) {\n          (paVar1->a).a_float = (float)"(NULL)";\n        }\n        else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          (paVar1->a).a_float = (float)"(NULL)";\n        }" { (expression_statement "(paVar1->a).a_float = (float)"(NULL)";" (assignment_expression "(paVar1->a).a_float = (float)"(NULL)"" (field_expression "(paVar1->a).a_float" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(float)"(NULL)"" ( (type_descriptor "float" primitive_type) ) (string_literal ""(NULL)"" " string_content "))) ;) }) (else_clause "else {\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }" else (compound_statement "{\nLAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);\n          (paVar1->a).a_int = iVar3;\n        }" { (labeled_statement "LAB_0002af79:\n          plVar2 = (longdouble *)((int)args + 4);" statement_identifier : (expression_statement "plVar2 = (longdouble *)((int)args + 4);" (assignment_expression "plVar2 = (longdouble *)((int)args + 4)" identifier = (cast_expression "(longdouble *)((int)args + 4)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 4)" ( (binary_expression "(int)args + 4" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) (expression_statement "(paVar1->a).a_int = iVar3;" (assignment_expression "(paVar1->a).a_int = iVar3" (field_expression "(paVar1->a).a_int" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) (break_statement "break;" break ;)) (case_statement "case TYPE_WIDE_STRING:\n        plVar2 = (longdouble *)((int)args + 4);\n        iVar3 = *(int *)args;\n        if (iVar3 != 0) goto LAB_0002af79;\n        (paVar1->a).a_float = (float)L"(NULL)";" case identifier : (expression_statement "plVar2 = (longdouble *)((int)args + 4);" (assignment_expression "plVar2 = (longdouble *)((int)args + 4)" identifier = (cast_expression "(longdouble *)((int)args + 4)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)args + 4)" ( (binary_expression "(int)args + 4" (cast_expression "(int)args" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar3 = *(int *)args;" (assignment_expression "iVar3 = *(int *)args" identifier = (pointer_expression "*(int *)args" * (cast_expression "(int *)args" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar3 != 0) goto LAB_0002af79;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002af79;" goto statement_identifier ;)) (expression_statement "(paVar1->a).a_float = (float)L"(NULL)";" (assignment_expression "(paVar1->a).a_float = (float)L"(NULL)"" (field_expression "(paVar1->a).a_float" (parenthesized_expression "(paVar1->a)" ( (field_expression "paVar1->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(float)L"(NULL)"" ( (type_descriptor "float" primitive_type) ) (string_literal "L"(NULL)"" L" string_content "))) ;)) })) (expression_statement "local_1c = local_1c + 1;" (assignment_expression "local_1c = local_1c + 1" identifier = (binary_expression "local_1c + 1" identifier + number_literal)) ;) (expression_statement "paVar1 = paVar1 + 1;" (assignment_expression "paVar1 = paVar1 + 1" identifier = (binary_expression "paVar1 + 1" identifier + number_literal)) ;) (expression_statement "args = (va_list)plVar2;" (assignment_expression "args = (va_list)plVar2" identifier = (cast_expression "(va_list)plVar2" ( (type_descriptor "va_list" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(local_1c < a->count)" ( (binary_expression "local_1c < a->count" identifier < (field_expression "a->count" identifier -> field_identifier)) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_0002ae90(int *param_1,uint *param_2)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int iVar3;\n  uint local_1c;\n  \n  puVar1 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_0002ae90(int *param_1,uint *param_2)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int iVar3;\n  uint local_1c;\n  \n  puVar1 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0002ae90(int *param_1,uint *param_2)" identifier (parameter_list "(int *param_1,uint *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  int iVar3;\n  uint local_1c;\n  \n  puVar1 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }\n  return 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint local_1c;" type_identifier identifier ;) (expression_statement "puVar1 = (undefined4 *)param_2[1];" (assignment_expression "puVar1 = (undefined4 *)param_2[1]" identifier = (cast_expression "(undefined4 *)param_2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }" if (parenthesized_expression "(*param_2 != 0)" ( (binary_expression "*param_2 != 0" (pointer_expression "*param_2" * identifier) != number_literal) )) (compound_statement "{\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }" { (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" identifier = number_literal) ;) (do_statement "do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);" do (compound_statement "{\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    }" { (switch_statement "switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }" switch (parenthesized_expression "(*puVar1)" ( (pointer_expression "*puVar1" * identifier) )) (compound_statement "{\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }" { (case_statement "default:\n        return 0xffffffff;" default : (return_statement "return 0xffffffff;" return number_literal ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)(puVar1 + 1) = (char)*param_1;" (assignment_expression "*(char *)(puVar1 + 1) = (char)*param_1" (pointer_expression "*(char *)(puVar1 + 1)" * (cast_expression "(char *)(puVar1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = (cast_expression "(char)*param_1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 3:" case number_literal :) (case_statement "case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*(short *)(puVar1 + 1) = (short)*param_1;" (assignment_expression "*(short *)(puVar1 + 1) = (short)*param_1" (pointer_expression "*(short *)(puVar1 + 1)" * (cast_expression "(short *)(puVar1 + 1)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = (cast_expression "(short)*param_1" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 5:" case number_literal :) (case_statement "case 6:" case number_literal :) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 0xd:" case number_literal :) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x12:" case number_literal :) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:" case number_literal :) (case_statement "case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "puVar1[1] = *param_1;" (assignment_expression "puVar1[1] = *param_1" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;" case number_literal : (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2 = param_1 + 2;" (assignment_expression "piVar2 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "puVar1[1] = *param_1;" (assignment_expression "puVar1[1] = *param_1" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar1[2] = iVar3;" (assignment_expression "puVar1[2] = iVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 2;" (assignment_expression "piVar2 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;" (assignment_expression "*(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1" (pointer_expression "*(undefined8 *)(puVar1 + 1)" * (cast_expression "(undefined8 *)(puVar1 + 1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)param_1" * (cast_expression "(undefined8 *)param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 3;" (assignment_expression "piVar2 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (expression_statement "*(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;" (assignment_expression "*(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1" (pointer_expression "*(unkbyte10 *)(puVar1 + 1)" * (cast_expression "(unkbyte10 *)(puVar1 + 1)" ( (type_descriptor "unkbyte10 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = (pointer_expression "*(unkbyte10 *)param_1" * (cast_expression "(unkbyte10 *)param_1" ( (type_descriptor "unkbyte10 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar1[1] = "(NULL)";\n        }" { (expression_statement "puVar1[1] = "(NULL)";" (assignment_expression "puVar1[1] = "(NULL)"" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (string_literal ""(NULL)"" " string_content ")) ;) }) (else_clause "else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" else (compound_statement "{\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" { (labeled_statement "code_r0x0002af79:\n          piVar2 = param_1 + 1;" statement_identifier : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;)) (expression_statement "puVar1[1] = iVar3;" (assignment_expression "puVar1[1] = iVar3" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) }))) (break_statement "break;" break ;)) (case_statement "case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;" case number_literal : (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (iVar3 != 0) goto code_r0x0002af79;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x0002af79;" goto statement_identifier ;)) (expression_statement "puVar1[1] = &DAT_0002f9dc;" (assignment_expression "puVar1[1] = &DAT_0002f9dc" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "&DAT_0002f9dc" & identifier)) ;)) })) (expression_statement "local_1c = local_1c + 1;" (assignment_expression "local_1c = local_1c + 1" identifier = (binary_expression "local_1c + 1" identifier + number_literal)) ;) (expression_statement "puVar1 = puVar1 + 4;" (assignment_expression "puVar1 = puVar1 + 4" identifier = (binary_expression "puVar1 + 4" identifier + number_literal)) ;) (expression_statement "param_1 = piVar2;" (assignment_expression "param_1 = piVar2" identifier = identifier) ;) }) while (parenthesized_expression "(local_1c < *param_2)" ( (binary_expression "local_1c < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (switch_statement switch (parenthesized_expression ( (pointer_expression * IDENT) )) (compound_statement { (case_statement default : (return_statement return LIT ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression & IDENT)) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_0002ae90(int *param_1,uint *param_2)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int iVar3;\n  uint local_1c;\n  \n  puVar1 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_0002ae90(int *param_1,uint *param_2)" (identifier "FUN_0002ae90") (parameter_list "(int *param_1,uint *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  int iVar3;\n  uint local_1c;\n  \n  puVar1 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }\n  return 0;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint local_1c;" (type_identifier "uint") (identifier "local_1c") (; ";")) (expression_statement "puVar1 = (undefined4 *)param_2[1];" (assignment_expression "puVar1 = (undefined4 *)param_2[1]" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)param_2[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (*param_2 != 0) {\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }" (if "if") (parenthesized_expression "(*param_2 != 0)" (( "(") (binary_expression "*param_2 != 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_1c = 0;\n    do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);\n  }" ({ "{") (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" (identifier "local_1c") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    } while (local_1c < *param_2);" (do "do") (compound_statement "{\n      switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }\n      local_1c = local_1c + 1;\n      puVar1 = puVar1 + 4;\n      param_1 = piVar2;\n    }" ({ "{") (switch_statement "switch(*puVar1) {\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }" (switch "switch") (parenthesized_expression "(*puVar1)" (( "(") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) () ")")) (compound_statement "{\n      default:\n        return 0xffffffff;\n      case 1:\n      case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;\n      case 3:\n      case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 0xd:\n      case 0xe:\n      case 0x11:\n      case 0x12:\n      case 0x13:\n      case 0x14:\n      case 0x15:\n      case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;\n      case 9:\n      case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;\n      case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;\n      case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;\n      case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;\n      case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;\n      }" ({ "{") (case_statement "default:\n        return 0xffffffff;" (default "default") (: ":") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (case_statement "case 2:\n        piVar2 = param_1 + 1;\n        *(char *)(puVar1 + 1) = (char)*param_1;\n        break;" (case "case") (number_literal "2") (: ":") (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" (identifier "piVar2") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(char *)(puVar1 + 1) = (char)*param_1;" (assignment_expression "*(char *)(puVar1 + 1) = (char)*param_1" (pointer_expression "*(char *)(puVar1 + 1)" (* "*") (cast_expression "(char *)(puVar1 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)*param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:" (case "case") (number_literal "3") (: ":")) (case_statement "case 4:\n        piVar2 = param_1 + 1;\n        *(short *)(puVar1 + 1) = (short)*param_1;\n        break;" (case "case") (number_literal "4") (: ":") (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" (identifier "piVar2") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(short *)(puVar1 + 1) = (short)*param_1;" (assignment_expression "*(short *)(puVar1 + 1) = (short)*param_1" (pointer_expression "*(short *)(puVar1 + 1)" (* "*") (cast_expression "(short *)(puVar1 + 1)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(short)*param_1" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 5:" (case "case") (number_literal "5") (: ":")) (case_statement "case 6:" (case "case") (number_literal "6") (: ":")) (case_statement "case 7:" (case "case") (number_literal "7") (: ":")) (case_statement "case 8:" (case "case") (number_literal "8") (: ":")) (case_statement "case 0xd:" (case "case") (number_literal "0xd") (: ":")) (case_statement "case 0xe:" (case "case") (number_literal "0xe") (: ":")) (case_statement "case 0x11:" (case "case") (number_literal "0x11") (: ":")) (case_statement "case 0x12:" (case "case") (number_literal "0x12") (: ":")) (case_statement "case 0x13:" (case "case") (number_literal "0x13") (: ":")) (case_statement "case 0x14:" (case "case") (number_literal "0x14") (: ":")) (case_statement "case 0x15:" (case "case") (number_literal "0x15") (: ":")) (case_statement "case 0x16:\n        piVar2 = param_1 + 1;\n        puVar1[1] = *param_1;\n        break;" (case "case") (number_literal "0x16") (: ":") (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" (identifier "piVar2") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar1[1] = *param_1;" (assignment_expression "puVar1[1] = *param_1" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 9:" (case "case") (number_literal "9") (: ":")) (case_statement "case 10:\n        iVar3 = param_1[1];\n        piVar2 = param_1 + 2;\n        puVar1[1] = *param_1;\n        puVar1[2] = iVar3;\n        break;" (case "case") (number_literal "10") (: ":") (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" (identifier "iVar3") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar2 = param_1 + 2;" (assignment_expression "piVar2 = param_1 + 2" (identifier "piVar2") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar1[1] = *param_1;" (assignment_expression "puVar1[1] = *param_1" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar1[2] = iVar3;" (assignment_expression "puVar1[2] = iVar3" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xb:\n        piVar2 = param_1 + 2;\n        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;\n        break;" (case "case") (number_literal "0xb") (: ":") (expression_statement "piVar2 = param_1 + 2;" (assignment_expression "piVar2 = param_1 + 2" (identifier "piVar2") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;" (assignment_expression "*(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1" (pointer_expression "*(undefined8 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined8 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)param_1" (* "*") (cast_expression "(undefined8 *)param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xc:\n        piVar2 = param_1 + 3;\n        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;\n        break;" (case "case") (number_literal "0xc") (: ":") (expression_statement "piVar2 = param_1 + 3;" (assignment_expression "piVar2 = param_1 + 3" (identifier "piVar2") (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "*(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;" (assignment_expression "*(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1" (pointer_expression "*(unkbyte10 *)(puVar1 + 1)" (* "*") (cast_expression "(unkbyte10 *)(puVar1 + 1)" (( "(") (type_descriptor "unkbyte10 *" (type_identifier "unkbyte10") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*(unkbyte10 *)param_1" (* "*") (cast_expression "(unkbyte10 *)param_1" (( "(") (type_descriptor "unkbyte10 *" (type_identifier "unkbyte10") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xf:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }\n        break;" (case "case") (number_literal "0xf") (: ":") (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" (identifier "piVar2") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" (identifier "iVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (iVar3 == 0) {\n          puVar1[1] = "(NULL)";\n        }\n        else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar1[1] = "(NULL)";\n        }" ({ "{") (expression_statement "puVar1[1] = "(NULL)";" (assignment_expression "puVar1[1] = "(NULL)"" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (string_literal ""(NULL)"" (" """) (string_content "(NULL)") (" """))) (; ";")) (} "}")) (else_clause "else {\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" (else "else") (compound_statement "{\ncode_r0x0002af79:\n          piVar2 = param_1 + 1;\n          puVar1[1] = iVar3;\n        }" ({ "{") (labeled_statement "code_r0x0002af79:\n          piVar2 = param_1 + 1;" (statement_identifier "code_r0x0002af79") (: ":") (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" (identifier "piVar2") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar1[1] = iVar3;" (assignment_expression "puVar1[1] = iVar3" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x10:\n        piVar2 = param_1 + 1;\n        iVar3 = *param_1;\n        if (iVar3 != 0) goto code_r0x0002af79;\n        puVar1[1] = &DAT_0002f9dc;" (case "case") (number_literal "0x10") (: ":") (expression_statement "piVar2 = param_1 + 1;" (assignment_expression "piVar2 = param_1 + 1" (identifier "piVar2") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" (identifier "iVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (iVar3 != 0) goto code_r0x0002af79;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x0002af79;" (goto "goto") (statement_identifier "code_r0x0002af79") (; ";"))) (expression_statement "puVar1[1] = &DAT_0002f9dc;" (assignment_expression "puVar1[1] = &DAT_0002f9dc" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "&DAT_0002f9dc" (& "&") (identifier "DAT_0002f9dc"))) (; ";"))) (} "}"))) (expression_statement "local_1c = local_1c + 1;" (assignment_expression "local_1c = local_1c + 1" (identifier "local_1c") (= "=") (binary_expression "local_1c + 1" (identifier "local_1c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar1 = puVar1 + 4;" (assignment_expression "puVar1 = puVar1 + 4" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 4" (identifier "puVar1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_1 = piVar2;" (assignment_expression "param_1 = piVar2" (identifier "param_1") (= "=") (identifier "piVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_1c < *param_2)" (( "(") (binary_expression "local_1c < *param_2" (identifier "local_1c") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

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

int function_1(type_1 args,type_2 *a)

{
  type_3 *var_3;
  type_4 *plVar2;
  int var_1;
  type_5 var_2;
  
  var_3 = a->arg;
  if (a->count != 0) {
    var_2 = 0;
    do {
      switch(var_3->type) {
      default:
        return -1;
      case TYPE_SCHAR:
      case TYPE_UCHAR:
        plVar2 = (type_4 *)((int)args + 4);
        (var_3->a).field23[0] = *args;
        break;
      case TYPE_SHORT:
      case TYPE_USHORT:
        plVar2 = (type_4 *)((int)args + 4);
        (var_3->a).a_short = (short)*(int *)args;
        break;
      case TYPE_INT:
      case TYPE_UINT:
      case TYPE_LONGINT:
      case TYPE_ULONGINT:
      case TYPE_CHAR:
      case TYPE_WIDE_CHAR:
      case TYPE_POINTER:
      case TYPE_COUNT_SCHAR_POINTER:
      case TYPE_COUNT_SHORT_POINTER:
      case TYPE_COUNT_INT_POINTER:
      case TYPE_COUNT_LONGINT_POINTER:
      case TYPE_COUNT_LONGLONGINT_POINTER:
        plVar2 = (type_4 *)((int)args + 4);
        (var_3->a).a_int = *(int *)args;
        break;
      case TYPE_LONGLONGINT:
      case TYPE_ULONGLONGINT:
        var_1 = *(int *)((int)args + 4);
        plVar2 = (type_4 *)((int)args + 8);
        (var_3->a).a_int = *(int *)args;
        *(int *)((int)&var_3->a + 4) = var_1;
        break;
      case TYPE_DOUBLE:
        plVar2 = (type_4 *)((int)args + 8);
        (var_3->a).a_longlongint = *(type_6 *)args;
        break;
      case TYPE_LONGDOUBLE:
        plVar2 = (type_4 *)((int)args + 0xc);
        (var_3->a).a_longdouble = *(type_4 *)args;
        break;
      case TYPE_STRING:
        plVar2 = (type_4 *)((int)args + 4);
        var_1 = *(int *)args;
        if (var_1 == 0) {
          (var_3->a).a_float = (float)"(NULL)";
        }
        else {
LAB_0002af79:
          plVar2 = (type_4 *)((int)args + 4);
          (var_3->a).a_int = var_1;
        }
        break;
      case TYPE_WIDE_STRING:
        plVar2 = (type_4 *)((int)args + 4);
        var_1 = *(int *)args;
        if (var_1 != 0) goto LAB_0002af79;
        (var_3->a).a_float = (float)L"(NULL)";
      }
      var_2 = var_2 + 1;
      var_3 = var_3 + 1;
      args = (type_1)plVar2;
    } while (var_2 < a->count);
  }
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (switch_statement condition: (parenthesized_expression (pointer_expression argument: (identifier))) body: (compound_statement (case_statement (return_statement (number_literal))) (case_statement value: (number_literal)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (break_statement)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))))) (break_statement)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (string_literal (string_content))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (return_statement (number_literal)))))

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

undefined4 MASKED(int *param_1,uint *param_2)

{
  undefined4 *puVar1;
  int *piVar2;
  int iVar3;
  uint local_1c;
  
  puVar1 = (undefined4 *)param_2[1];
  if (*param_2 != 0) {
    local_1c = 0;
    do {
      switch(*puVar1) {
      default:
        return 0xffffffff;
      case 1:
      case 2:
        piVar2 = param_1 + 1;
        *(char *)(puVar1 + 1) = (char)*param_1;
        break;
      case 3:
      case 4:
        piVar2 = param_1 + 1;
        *(short *)(puVar1 + 1) = (short)*param_1;
        break;
      case 5:
      case 6:
      case 7:
      case 8:
      case 0xd:
      case 0xe:
      case 0x11:
      case 0x12:
      case 0x13:
      case 0x14:
      case 0x15:
      case 0x16:
        piVar2 = param_1 + 1;
        puVar1[1] = *param_1;
        break;
      case 9:
      case 10:
        iVar3 = param_1[1];
        piVar2 = param_1 + 2;
        puVar1[1] = *param_1;
        puVar1[2] = iVar3;
        break;
      case 0xb:
        piVar2 = param_1 + 2;
        *(undefined8 *)(puVar1 + 1) = *(undefined8 *)param_1;
        break;
      case 0xc:
        piVar2 = param_1 + 3;
        *(unkbyte10 *)(puVar1 + 1) = *(unkbyte10 *)param_1;
        break;
      case 0xf:
        piVar2 = param_1 + 1;
        iVar3 = *param_1;
        if (iVar3 == 0) {
          puVar1[1] = "(NULL)";
        }
        else {
code_r0x0002af79:
          piVar2 = param_1 + 1;
          puVar1[1] = iVar3;
        }
        break;
      case 0x10:
        piVar2 = param_1 + 1;
        iVar3 = *param_1;
        if (iVar3 != 0) goto code_r0x0002af79;
        puVar1[1] = &DAT_0002f9dc;
      }
      local_1c = local_1c + 1;
      puVar1 = puVar1 + 4;
      param_1 = piVar2;
    } while (local_1c < *param_2);
  }
  return 0;
}

