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

char * __regparm3 get_pcb_str(int pcb,char *outp,int maxoutlen)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  char *pcVar7;
  undefined4 *puVar8;
  int in_GS_OFFSET;
  byte bVar9;
  char buff [128];
  
  bVar9 = 0;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  uVar2 = pcb >> 4 & 1;
  uVar3 = pcb >> 5 & 1;
  uVar4 = pcb >> 6 & 1;
  __sprintf_chk(buff,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",pcb >> 7,uVar4,uVar3,uVar2);
  iVar6 = 0x1a;
  if ((pcb & 0x10U) != 0) {
    __sprintf_chk(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2);
    iVar6 = 0x22;
  }
  __sprintf_chk(buff + iVar6,1,0xffffffff,"format+linking=%d  [0x%.2x]",pcb & 3,pcb,uVar3,uVar2);
  *(undefined4 *)outp = buff._0_4_;
  *(undefined4 *)(outp + iVar6 + 0x14) = *(undefined4 *)(buff + iVar6 + 0x14);
  iVar5 = (int)outp - (int)((uint)(outp + 4) & 0xfffffffc);
  pcVar7 = buff + -iVar5;
  puVar8 = (undefined4 *)((uint)(outp + 4) & 0xfffffffc);
  for (uVar2 = (uint)(iVar6 + 0x18 + iVar5) >> 2; uVar2 != 0; uVar2 = uVar2 - 1) {
    *puVar8 = *(undefined4 *)pcVar7;
    pcVar7 = pcVar7 + ((uint)bVar9 * -2 + 1) * 4;
    puVar8 = puVar8 + (uint)bVar9 * -2 + 1;
  }
  outp[iVar6 + 0x18] = '\0';
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return outp;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



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

undefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  int in_GS_OFFSET;
  byte bVar8;
  undefined4 local_a0 [5];
  undefined4 uStack_8c;
  undefined1 local_86 [102];
  int local_20;
  undefined4 uStack_14;
  
  bVar8 = 0;
  uStack_14 = 0x14e8d;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar1 = (int)param_1 >> 4 & 1;
  uVar2 = (int)param_1 >> 5 & 1;
  uVar3 = (int)param_1 >> 6 & 1;
  __sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1
               );
  iVar5 = 0x1a;
  if ((param_1 & 0x10) != 0) {
    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);
    iVar5 = 0x22;
  }
  __sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1
                ,uVar2,uVar1);
  *param_2 = local_a0[0];
  *(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);
  iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);
  puVar6 = (undefined4 *)((int)local_a0 - iVar4);
  puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);
  for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;
  }
  *(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00024b60();
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
MOV EDI,EAX
PUSH ESI
PUSH EBX
CALL 0x00013c20
ADD EBX,0x24073
SUB ESP,0xac
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x9c],EAX
XOR EAX,EAX
MOV EAX,EDI
SAR EAX,0x4
AND EAX,0x1
PUSH EAX
MOV EAX,EDI
SAR EAX,0x5
AND EAX,0x1
PUSH EAX
MOV EAX,EDI
SAR EAX,0x6
AND EAX,0x1
PUSH EAX
MOV EAX,EDI
SAR EAX,0x7
PUSH EAX
LEA EAX,[EBX + 0xfffedd88]
PUSH EAX
PUSH 0x80
PUSH 0x1
LEA ESI,[ESP + 0x38]
PUSH ESI
CALL 0x00012380
ADD ESP,0x20
MOV EDX,0x1a
TEST EDI,0x10
JNZ 0x00014f60
SUB ESP,0x8
LEA EAX,[EBX + 0xffff450c]
PUSH EDI
AND EDI,0x3
PUSH EDI
LEA EDI,[EBP + 0x4]
PUSH EAX
LEA EAX,[ESI + EDX*0x1]
AND EDI,0xfffffffc
PUSH -0x1
PUSH 0x1
MOV dword ptr [ESP + 0x28],EDX
PUSH EAX
CALL 0x00012380
MOV EDX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [EBP],EAX
MOV EAX,dword ptr [ESP + EDX*0x1 + 0x50]
LEA ECX,[EDX + 0x18]
ADD ESP,0x20
MOV dword ptr [EBP + EDX*0x1 + 0x14],EAX
MOV EAX,EBP
SUB EAX,EDI
ADD ECX,EAX
SUB ESI,EAX
MOV EAX,EBP
SHR ECX,0x2
MOVSD.REP ES:EDI,ESI
MOV byte ptr [EBP + EDX*0x1 + 0x18],0x0
MOV ESI,dword ptr [ESP + 0x9c]
XOR ESI,dword ptr GS:[0x14]
JNZ 0x00014f8e
ADD ESP,0xac
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EDI
SUB ESP,0xc
SAR EAX,0x2
AND EAX,0x3
PUSH EAX
LEA EAX,[EBX + 0xffff4502]
PUSH EAX
PUSH -0x1
PUSH 0x1
LEA EAX,[ESP + 0x52]
PUSH EAX
CALL 0x00012380
ADD ESP,0x20
MOV EDX,0x22
JMP 0x00014ef1
CALL 0x00024b60
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  undefined4 local_a0 [5];\n  undefined4 uStack_8c;\n  undefined1 local_86 [102];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar8 = 0;\n  uStack_14 = 0x14e8d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = (int)param_1 >> 4 & 1;\n  uVar2 = (int)param_1 >> 5 & 1;\n  uVar3 = (int)param_1 >> 6 & 1;\n  __sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               );\n  iVar5 = 0x1a;\n  if ((param_1 & 0x10) != 0) {\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }\n  __sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1);\n  *param_2 = local_a0[0];\n  *(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);\n  iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);\n  puVar6 = (undefined4 *)((int)local_a0 - iVar4);\n  puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);\n  for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  *(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return param_2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00024b60();\n}\n\n" comment (ERROR "undefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)" (binary_expression "undefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00014e80(uint param_1,undefined4 *param_2)" identifier (argument_list "(uint param_1,undefined4 *param_2)" ( (ERROR "uint" identifier) identifier , (binary_expression "undefined4 *param_2" identifier * identifier) ))))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  undefined4 local_a0 [5];\n  undefined4 uStack_8c;\n  undefined1 local_86 [102];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar8 = 0;\n  uStack_14 = 0x14e8d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = (int)param_1 >> 4 & 1;\n  uVar2 = (int)param_1 >> 5 & 1;\n  uVar3 = (int)param_1 >> 6 & 1;\n  __sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               );\n  iVar5 = 0x1a;\n  if ((param_1 & 0x10) != 0) {\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }\n  __sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1);\n  *param_2 = local_a0[0];\n  *(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);\n  iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);\n  puVar6 = (undefined4 *)((int)local_a0 - iVar4);\n  puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);\n  for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  *(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return param_2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00024b60();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 local_a0 [5];" type_identifier (array_declarator "local_a0 [5]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_8c;" type_identifier identifier ;) (declaration "undefined1 local_86 [102];" type_identifier (array_declarator "local_86 [102]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x14e8d;" (assignment_expression "uStack_14 = 0x14e8d" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = (int)param_1 >> 4 & 1;" (assignment_expression "uVar1 = (int)param_1 >> 4 & 1" identifier = (binary_expression "(int)param_1 >> 4 & 1" (binary_expression "(int)param_1 >> 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (expression_statement "uVar2 = (int)param_1 >> 5 & 1;" (assignment_expression "uVar2 = (int)param_1 >> 5 & 1" identifier = (binary_expression "(int)param_1 >> 5 & 1" (binary_expression "(int)param_1 >> 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (expression_statement "uVar3 = (int)param_1 >> 6 & 1;" (assignment_expression "uVar3 = (int)param_1 >> 6 & 1" identifier = (binary_expression "(int)param_1 >> 6 & 1" (binary_expression "(int)param_1 >> 6" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (expression_statement "__sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               );" (call_expression "__sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               )" identifier (argument_list "(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               )" ( identifier , number_literal , number_literal , (string_literal ""du=%d [ds=%d] tsd=%d [etc=%d] "" " string_content ") , (binary_expression "(int)param_1 >> 7" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "iVar5 = 0x1a;" (assignment_expression "iVar5 = 0x1a" identifier = number_literal) ;) (if_statement "if ((param_1 & 0x10) != 0) {\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }" if (parenthesized_expression "((param_1 & 0x10) != 0)" ( (binary_expression "(param_1 & 0x10) != 0" (parenthesized_expression "(param_1 & 0x10)" ( (binary_expression "param_1 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }" { (expression_statement "__sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);" (call_expression "__sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1)" identifier (argument_list "(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1)" ( identifier , number_literal , number_literal , (string_literal ""[tmc=%d] "" " string_content ") , (binary_expression "(int)param_1 >> 2 & 3" (binary_expression "(int)param_1 >> 2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "iVar5 = 0x22;" (assignment_expression "iVar5 = 0x22" identifier = number_literal) ;) })) (expression_statement "__sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1);" (call_expression "__sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1)" identifier (argument_list "((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1)" ( (binary_expression "(int)local_a0 + iVar5" (cast_expression "(int)local_a0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , number_literal , number_literal , (string_literal ""format+linking=%d  [0x%.2x]"" " string_content ") , (binary_expression "param_1 & 3" identifier & number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "*param_2 = local_a0[0];" (assignment_expression "*param_2 = local_a0[0]" (pointer_expression "*param_2" * identifier) = (subscript_expression "local_a0[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);" (assignment_expression "*(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5)" (pointer_expression "*(undefined4 *)((int)param_2 + iVar5 + 0x14)" * (cast_expression "(undefined4 *)((int)param_2 + iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar5 + 0x14)" ( (binary_expression "(int)param_2 + iVar5 + 0x14" (binary_expression "(int)param_2 + iVar5" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&uStack_8c + iVar5)" * (cast_expression "(undefined4 *)((int)&uStack_8c + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&uStack_8c + iVar5)" ( (binary_expression "(int)&uStack_8c + iVar5" (cast_expression "(int)&uStack_8c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_8c" & identifier)) + identifier) ))))) ;) (expression_statement "iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);" (assignment_expression "iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc)" identifier = (binary_expression "(int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc)" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)((uint)(param_2 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(param_2 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(param_2 + 1) & 0xfffffffc" (call_expression "(uint)(param_2 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar6 = (undefined4 *)((int)local_a0 - iVar4);" (assignment_expression "puVar6 = (undefined4 *)((int)local_a0 - iVar4)" identifier = (cast_expression "(undefined4 *)((int)local_a0 - iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_a0 - iVar4)" ( (binary_expression "(int)local_a0 - iVar4" (cast_expression "(int)local_a0" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);" (assignment_expression "puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(param_2 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(param_2 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(param_2 + 1) & 0xfffffffc" (call_expression "(uint)(param_2 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" for ( (assignment_expression "uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2" identifier = (binary_expression "(uint)(iVar5 + 0x18 + iVar4) >> 2" (call_expression "(uint)(iVar5 + 0x18 + iVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 + 0x18 + iVar4)" ( (binary_expression "iVar5 + 0x18 + iVar4" (binary_expression "iVar5 + 0x18" identifier + number_literal) + identifier) ))) >> number_literal)) ; (binary_expression "uVar1 != 0" identifier != number_literal) ; (assignment_expression "uVar1 = uVar1 - 1" identifier = (binary_expression "uVar1 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" { (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;" (assignment_expression "*(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0" (pointer_expression "*(undefined1 *)((int)param_2 + iVar5 + 0x18)" * (cast_expression "(undefined1 *)((int)param_2 + iVar5 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar5 + 0x18)" ( (binary_expression "(int)param_2 + iVar5 + 0x18" (binary_expression "(int)param_2 + iVar5" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return param_2;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return param_2;\n  }" { (return_statement "return param_2;" return identifier ;) })) comment (expression_statement "FUN_00024b60();" (call_expression "FUN_00024b60()" identifier (argument_list "()" ( ))) ;) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 get_pcb_str(int pcb,char *outp,int maxoutlen)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  undefined4 *puVar8;\n  int in_GS_OFFSET;\n  byte bVar9;\n  char buff [128];\n  \n  bVar9 = 0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = pcb >> 4 & 1;\n  uVar3 = pcb >> 5 & 1;\n  uVar4 = pcb >> 6 & 1;\n  __sprintf_chk(buff,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",pcb >> 7,uVar4,uVar3,uVar2);\n  iVar6 = 0x1a;\n  if ((pcb & 0x10U) != 0) {\n    __sprintf_chk(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2);\n    iVar6 = 0x22;\n  }\n  __sprintf_chk(buff + iVar6,1,0xffffffff,"format+linking=%d  [0x%.2x]",pcb & 3,pcb,uVar3,uVar2);\n  *(undefined4 *)outp = buff._0_4_;\n  *(undefined4 *)(outp + iVar6 + 0x14) = *(undefined4 *)(buff + iVar6 + 0x14);\n  iVar5 = (int)outp - (int)((uint)(outp + 4) & 0xfffffffc);\n  pcVar7 = buff + -iVar5;\n  puVar8 = (undefined4 *)((uint)(outp + 4) & 0xfffffffc);\n  for (uVar2 = (uint)(iVar6 + 0x18 + iVar5) >> 2; uVar2 != 0; uVar2 = uVar2 - 1) {\n    *puVar8 = *(undefined4 *)pcVar7;\n    pcVar7 = pcVar7 + ((uint)bVar9 * -2 + 1) * 4;\n    puVar8 = puVar8 + (uint)bVar9 * -2 + 1;\n  }\n  outp[iVar6 + 0x18] = '\0';\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return outp;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment (function_definition "char * __regparm3 get_pcb_str(int pcb,char *outp,int maxoutlen)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  undefined4 *puVar8;\n  int in_GS_OFFSET;\n  byte bVar9;\n  char buff [128];\n  \n  bVar9 = 0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = pcb >> 4 & 1;\n  uVar3 = pcb >> 5 & 1;\n  uVar4 = pcb >> 6 & 1;\n  __sprintf_chk(buff,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",pcb >> 7,uVar4,uVar3,uVar2);\n  iVar6 = 0x1a;\n  if ((pcb & 0x10U) != 0) {\n    __sprintf_chk(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2);\n    iVar6 = 0x22;\n  }\n  __sprintf_chk(buff + iVar6,1,0xffffffff,"format+linking=%d  [0x%.2x]",pcb & 3,pcb,uVar3,uVar2);\n  *(undefined4 *)outp = buff._0_4_;\n  *(undefined4 *)(outp + iVar6 + 0x14) = *(undefined4 *)(buff + iVar6 + 0x14);\n  iVar5 = (int)outp - (int)((uint)(outp + 4) & 0xfffffffc);\n  pcVar7 = buff + -iVar5;\n  puVar8 = (undefined4 *)((uint)(outp + 4) & 0xfffffffc);\n  for (uVar2 = (uint)(iVar6 + 0x18 + iVar5) >> 2; uVar2 != 0; uVar2 = uVar2 - 1) {\n    *puVar8 = *(undefined4 *)pcVar7;\n    pcVar7 = pcVar7 + ((uint)bVar9 * -2 + 1) * 4;\n    puVar8 = puVar8 + (uint)bVar9 * -2 + 1;\n  }\n  outp[iVar6 + 0x18] = '\0';\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return outp;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (pointer_declarator "* __regparm3 get_pcb_str(int pcb,char *outp,int maxoutlen)" * (ERROR "__regparm3" identifier) (function_declarator "get_pcb_str(int pcb,char *outp,int maxoutlen)" identifier (parameter_list "(int pcb,char *outp,int maxoutlen)" ( (parameter_declaration "int pcb" primitive_type identifier) , (parameter_declaration "char *outp" primitive_type (pointer_declarator "*outp" * identifier)) , (parameter_declaration "int maxoutlen" primitive_type identifier) )))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  undefined4 *puVar8;\n  int in_GS_OFFSET;\n  byte bVar9;\n  char buff [128];\n  \n  bVar9 = 0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = pcb >> 4 & 1;\n  uVar3 = pcb >> 5 & 1;\n  uVar4 = pcb >> 6 & 1;\n  __sprintf_chk(buff,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",pcb >> 7,uVar4,uVar3,uVar2);\n  iVar6 = 0x1a;\n  if ((pcb & 0x10U) != 0) {\n    __sprintf_chk(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2);\n    iVar6 = 0x22;\n  }\n  __sprintf_chk(buff + iVar6,1,0xffffffff,"format+linking=%d  [0x%.2x]",pcb & 3,pcb,uVar3,uVar2);\n  *(undefined4 *)outp = buff._0_4_;\n  *(undefined4 *)(outp + iVar6 + 0x14) = *(undefined4 *)(buff + iVar6 + 0x14);\n  iVar5 = (int)outp - (int)((uint)(outp + 4) & 0xfffffffc);\n  pcVar7 = buff + -iVar5;\n  puVar8 = (undefined4 *)((uint)(outp + 4) & 0xfffffffc);\n  for (uVar2 = (uint)(iVar6 + 0x18 + iVar5) >> 2; uVar2 != 0; uVar2 = uVar2 - 1) {\n    *puVar8 = *(undefined4 *)pcVar7;\n    pcVar7 = pcVar7 + ((uint)bVar9 * -2 + 1) * 4;\n    puVar8 = puVar8 + (uint)bVar9 * -2 + 1;\n  }\n  outp[iVar6 + 0x18] = '\0';\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return outp;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "char buff [128];" primitive_type (array_declarator "buff [128]" identifier [ number_literal ]) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = pcb >> 4 & 1;" (assignment_expression "uVar2 = pcb >> 4 & 1" identifier = (binary_expression "pcb >> 4 & 1" (binary_expression "pcb >> 4" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar3 = pcb >> 5 & 1;" (assignment_expression "uVar3 = pcb >> 5 & 1" identifier = (binary_expression "pcb >> 5 & 1" (binary_expression "pcb >> 5" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar4 = pcb >> 6 & 1;" (assignment_expression "uVar4 = pcb >> 6 & 1" identifier = (binary_expression "pcb >> 6 & 1" (binary_expression "pcb >> 6" identifier >> number_literal) & number_literal)) ;) (expression_statement "__sprintf_chk(buff,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",pcb >> 7,uVar4,uVar3,uVar2);" (call_expression "__sprintf_chk(buff,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",pcb >> 7,uVar4,uVar3,uVar2)" identifier (argument_list "(buff,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",pcb >> 7,uVar4,uVar3,uVar2)" ( identifier , number_literal , number_literal , (string_literal ""du=%d [ds=%d] tsd=%d [etc=%d] "" " string_content ") , (binary_expression "pcb >> 7" identifier >> number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "iVar6 = 0x1a;" (assignment_expression "iVar6 = 0x1a" identifier = number_literal) ;) (if_statement "if ((pcb & 0x10U) != 0) {\n    __sprintf_chk(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2);\n    iVar6 = 0x22;\n  }" if (parenthesized_expression "((pcb & 0x10U) != 0)" ( (binary_expression "(pcb & 0x10U) != 0" (parenthesized_expression "(pcb & 0x10U)" ( (binary_expression "pcb & 0x10U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    __sprintf_chk(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2);\n    iVar6 = 0x22;\n  }" { (expression_statement "__sprintf_chk(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2);" (call_expression "__sprintf_chk(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2)" identifier (argument_list "(buff + 0x1a,1,0xffffffff,"[tmc=%d] ",pcb >> 2 & 3,uVar4,uVar3,uVar2)" ( (binary_expression "buff + 0x1a" identifier + number_literal) , number_literal , number_literal , (string_literal ""[tmc=%d] "" " string_content ") , (binary_expression "pcb >> 2 & 3" (binary_expression "pcb >> 2" identifier >> number_literal) & number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "iVar6 = 0x22;" (assignment_expression "iVar6 = 0x22" identifier = number_literal) ;) })) (expression_statement "__sprintf_chk(buff + iVar6,1,0xffffffff,"format+linking=%d  [0x%.2x]",pcb & 3,pcb,uVar3,uVar2);" (call_expression "__sprintf_chk(buff + iVar6,1,0xffffffff,"format+linking=%d  [0x%.2x]",pcb & 3,pcb,uVar3,uVar2)" identifier (argument_list "(buff + iVar6,1,0xffffffff,"format+linking=%d  [0x%.2x]",pcb & 3,pcb,uVar3,uVar2)" ( (binary_expression "buff + iVar6" identifier + identifier) , number_literal , number_literal , (string_literal ""format+linking=%d  [0x%.2x]"" " string_content ") , (binary_expression "pcb & 3" identifier & number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "*(undefined4 *)outp = buff._0_4_;" (assignment_expression "*(undefined4 *)outp = buff._0_4_" (pointer_expression "*(undefined4 *)outp" * (cast_expression "(undefined4 *)outp" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (field_expression "buff._0_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)(outp + iVar6 + 0x14) = *(undefined4 *)(buff + iVar6 + 0x14);" (assignment_expression "*(undefined4 *)(outp + iVar6 + 0x14) = *(undefined4 *)(buff + iVar6 + 0x14)" (pointer_expression "*(undefined4 *)(outp + iVar6 + 0x14)" * (cast_expression "(undefined4 *)(outp + iVar6 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(outp + iVar6 + 0x14)" ( (binary_expression "outp + iVar6 + 0x14" (binary_expression "outp + iVar6" identifier + identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(buff + iVar6 + 0x14)" * (cast_expression "(undefined4 *)(buff + iVar6 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buff + iVar6 + 0x14)" ( (binary_expression "buff + iVar6 + 0x14" (binary_expression "buff + iVar6" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar5 = (int)outp - (int)((uint)(outp + 4) & 0xfffffffc);" (assignment_expression "iVar5 = (int)outp - (int)((uint)(outp + 4) & 0xfffffffc)" identifier = (binary_expression "(int)outp - (int)((uint)(outp + 4) & 0xfffffffc)" (cast_expression "(int)outp" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)((uint)(outp + 4) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(outp + 4) & 0xfffffffc)" ( (binary_expression "(uint)(outp + 4) & 0xfffffffc" (call_expression "(uint)(outp + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(outp + 4)" ( (binary_expression "outp + 4" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "pcVar7 = buff + -iVar5;" (assignment_expression "pcVar7 = buff + -iVar5" identifier = (binary_expression "buff + -iVar5" identifier + (unary_expression "-iVar5" - identifier))) ;) (expression_statement "puVar8 = (undefined4 *)((uint)(outp + 4) & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)((uint)(outp + 4) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(outp + 4) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(outp + 4) & 0xfffffffc)" ( (binary_expression "(uint)(outp + 4) & 0xfffffffc" (call_expression "(uint)(outp + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(outp + 4)" ( (binary_expression "outp + 4" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar2 = (uint)(iVar6 + 0x18 + iVar5) >> 2; uVar2 != 0; uVar2 = uVar2 - 1) {\n    *puVar8 = *(undefined4 *)pcVar7;\n    pcVar7 = pcVar7 + ((uint)bVar9 * -2 + 1) * 4;\n    puVar8 = puVar8 + (uint)bVar9 * -2 + 1;\n  }" for ( (assignment_expression "uVar2 = (uint)(iVar6 + 0x18 + iVar5) >> 2" identifier = (binary_expression "(uint)(iVar6 + 0x18 + iVar5) >> 2" (call_expression "(uint)(iVar6 + 0x18 + iVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 + 0x18 + iVar5)" ( (binary_expression "iVar6 + 0x18 + iVar5" (binary_expression "iVar6 + 0x18" identifier + number_literal) + identifier) ))) >> number_literal)) ; (binary_expression "uVar2 != 0" identifier != number_literal) ; (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar8 = *(undefined4 *)pcVar7;\n    pcVar7 = pcVar7 + ((uint)bVar9 * -2 + 1) * 4;\n    puVar8 = puVar8 + (uint)bVar9 * -2 + 1;\n  }" { (expression_statement "*puVar8 = *(undefined4 *)pcVar7;" (assignment_expression "*puVar8 = *(undefined4 *)pcVar7" (pointer_expression "*puVar8" * identifier) = (pointer_expression "*(undefined4 *)pcVar7" * (cast_expression "(undefined4 *)pcVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar7 = pcVar7 + ((uint)bVar9 * -2 + 1) * 4;" (assignment_expression "pcVar7 = pcVar7 + ((uint)bVar9 * -2 + 1) * 4" identifier = (binary_expression "pcVar7 + ((uint)bVar9 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar9 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar9 * -2 + 1)" ( (binary_expression "(uint)bVar9 * -2 + 1" (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar9 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar9 * -2 + 1" (binary_expression "puVar8 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "outp[iVar6 + 0x18] = '\0';" (assignment_expression "outp[iVar6 + 0x18] = '\0'" (subscript_expression "outp[iVar6 + 0x18]" identifier [ (binary_expression "iVar6 + 0x18" identifier + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return outp;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return outp;\n  }" { (return_statement "return outp;" return identifier ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  undefined4 local_a0 [5];\n  undefined4 uStack_8c;\n  undefined1 local_86 [102];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar8 = 0;\n  uStack_14 = 0x14e8d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = (int)param_1 >> 4 & 1;\n  uVar2 = (int)param_1 >> 5 & 1;\n  uVar3 = (int)param_1 >> 6 & 1;\n  __sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               );\n  iVar5 = 0x1a;\n  if ((param_1 & 0x10) != 0) {\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }\n  __sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1);\n  *param_2 = local_a0[0];\n  *(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);\n  iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);\n  puVar6 = (undefined4 *)((int)local_a0 - iVar4);\n  puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);\n  for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  *(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return param_2;\n  }\n                    \n  FUN_00024b60();\n}\n\n" (ERROR "undefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)" (binary_expression "undefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00014e80(uint param_1,undefined4 *param_2)" identifier (argument_list "(uint param_1,undefined4 *param_2)" ( (ERROR "uint" identifier) identifier , (binary_expression "undefined4 *param_2" identifier * identifier) ))))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  undefined4 local_a0 [5];\n  undefined4 uStack_8c;\n  undefined1 local_86 [102];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar8 = 0;\n  uStack_14 = 0x14e8d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = (int)param_1 >> 4 & 1;\n  uVar2 = (int)param_1 >> 5 & 1;\n  uVar3 = (int)param_1 >> 6 & 1;\n  __sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               );\n  iVar5 = 0x1a;\n  if ((param_1 & 0x10) != 0) {\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }\n  __sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1);\n  *param_2 = local_a0[0];\n  *(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);\n  iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);\n  puVar6 = (undefined4 *)((int)local_a0 - iVar4);\n  puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);\n  for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  *(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return param_2;\n  }\n                    \n  FUN_00024b60();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 local_a0 [5];" type_identifier (array_declarator "local_a0 [5]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_8c;" type_identifier identifier ;) (declaration "undefined1 local_86 [102];" type_identifier (array_declarator "local_86 [102]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x14e8d;" (assignment_expression "uStack_14 = 0x14e8d" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = (int)param_1 >> 4 & 1;" (assignment_expression "uVar1 = (int)param_1 >> 4 & 1" identifier = (binary_expression "(int)param_1 >> 4 & 1" (binary_expression "(int)param_1 >> 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (expression_statement "uVar2 = (int)param_1 >> 5 & 1;" (assignment_expression "uVar2 = (int)param_1 >> 5 & 1" identifier = (binary_expression "(int)param_1 >> 5 & 1" (binary_expression "(int)param_1 >> 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (expression_statement "uVar3 = (int)param_1 >> 6 & 1;" (assignment_expression "uVar3 = (int)param_1 >> 6 & 1" identifier = (binary_expression "(int)param_1 >> 6 & 1" (binary_expression "(int)param_1 >> 6" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (expression_statement "__sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               );" (call_expression "__sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               )" identifier (argument_list "(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               )" ( identifier , number_literal , number_literal , (string_literal ""du=%d [ds=%d] tsd=%d [etc=%d] "" " string_content ") , (binary_expression "(int)param_1 >> 7" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "iVar5 = 0x1a;" (assignment_expression "iVar5 = 0x1a" identifier = number_literal) ;) (if_statement "if ((param_1 & 0x10) != 0) {\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }" if (parenthesized_expression "((param_1 & 0x10) != 0)" ( (binary_expression "(param_1 & 0x10) != 0" (parenthesized_expression "(param_1 & 0x10)" ( (binary_expression "param_1 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }" { (expression_statement "__sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);" (call_expression "__sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1)" identifier (argument_list "(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1)" ( identifier , number_literal , number_literal , (string_literal ""[tmc=%d] "" " string_content ") , (binary_expression "(int)param_1 >> 2 & 3" (binary_expression "(int)param_1 >> 2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "iVar5 = 0x22;" (assignment_expression "iVar5 = 0x22" identifier = number_literal) ;) })) (expression_statement "__sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1);" (call_expression "__sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1)" identifier (argument_list "((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1)" ( (binary_expression "(int)local_a0 + iVar5" (cast_expression "(int)local_a0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , number_literal , number_literal , (string_literal ""format+linking=%d  [0x%.2x]"" " string_content ") , (binary_expression "param_1 & 3" identifier & number_literal) , identifier , identifier , identifier ))) ;) (expression_statement "*param_2 = local_a0[0];" (assignment_expression "*param_2 = local_a0[0]" (pointer_expression "*param_2" * identifier) = (subscript_expression "local_a0[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);" (assignment_expression "*(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5)" (pointer_expression "*(undefined4 *)((int)param_2 + iVar5 + 0x14)" * (cast_expression "(undefined4 *)((int)param_2 + iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar5 + 0x14)" ( (binary_expression "(int)param_2 + iVar5 + 0x14" (binary_expression "(int)param_2 + iVar5" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&uStack_8c + iVar5)" * (cast_expression "(undefined4 *)((int)&uStack_8c + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&uStack_8c + iVar5)" ( (binary_expression "(int)&uStack_8c + iVar5" (cast_expression "(int)&uStack_8c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_8c" & identifier)) + identifier) ))))) ;) (expression_statement "iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);" (assignment_expression "iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc)" identifier = (binary_expression "(int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc)" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)((uint)(param_2 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(param_2 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(param_2 + 1) & 0xfffffffc" (call_expression "(uint)(param_2 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar6 = (undefined4 *)((int)local_a0 - iVar4);" (assignment_expression "puVar6 = (undefined4 *)((int)local_a0 - iVar4)" identifier = (cast_expression "(undefined4 *)((int)local_a0 - iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_a0 - iVar4)" ( (binary_expression "(int)local_a0 - iVar4" (cast_expression "(int)local_a0" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);" (assignment_expression "puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(param_2 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(param_2 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(param_2 + 1) & 0xfffffffc" (call_expression "(uint)(param_2 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" for ( (assignment_expression "uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2" identifier = (binary_expression "(uint)(iVar5 + 0x18 + iVar4) >> 2" (call_expression "(uint)(iVar5 + 0x18 + iVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 + 0x18 + iVar4)" ( (binary_expression "iVar5 + 0x18 + iVar4" (binary_expression "iVar5 + 0x18" identifier + number_literal) + identifier) ))) >> number_literal)) ; (binary_expression "uVar1 != 0" identifier != number_literal) ; (assignment_expression "uVar1 = uVar1 - 1" identifier = (binary_expression "uVar1 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" { (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;" (assignment_expression "*(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0" (pointer_expression "*(undefined1 *)((int)param_2 + iVar5 + 0x18)" * (cast_expression "(undefined1 *)((int)param_2 + iVar5 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar5 + 0x18)" ( (binary_expression "(int)param_2 + iVar5 + 0x18" (binary_expression "(int)param_2 + iVar5" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return param_2;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return param_2;\n  }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "FUN_00024b60();" (call_expression "FUN_00024b60()" identifier (argument_list "()" ( ))) ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (ERROR IDENT) IDENT , (binary_expression IDENT * IDENT) ))))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (string_literal " string_content ") , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (string_literal " string_content ") , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT) , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) , LIT , LIT , (string_literal " string_content ") , (binary_expression IDENT & LIT) , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))
(ERROR "undefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)" (binary_expression "undefined4 * __regparm3 FUN_00014e80(uint param_1,undefined4 *param_2)" (identifier "undefined4") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_00014e80(uint param_1,undefined4 *param_2)" (identifier "FUN_00014e80") (argument_list "(uint param_1,undefined4 *param_2)" (( "(") (ERROR "uint" (identifier "uint")) (identifier "param_1") (, ",") (binary_expression "undefined4 *param_2" (identifier "undefined4") (* "*") (identifier "param_2")) () ")"))))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  undefined4 local_a0 [5];\n  undefined4 uStack_8c;\n  undefined1 local_86 [102];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar8 = 0;\n  uStack_14 = 0x14e8d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = (int)param_1 >> 4 & 1;\n  uVar2 = (int)param_1 >> 5 & 1;\n  uVar3 = (int)param_1 >> 6 & 1;\n  __sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               );\n  iVar5 = 0x1a;\n  if ((param_1 & 0x10) != 0) {\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }\n  __sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1);\n  *param_2 = local_a0[0];\n  *(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);\n  iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);\n  puVar6 = (undefined4 *)((int)local_a0 - iVar4);\n  puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);\n  for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  *(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return param_2;\n  }\n                    \n  FUN_00024b60();\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "undefined4 local_a0 [5];" (type_identifier "undefined4") (array_declarator "local_a0 [5]" (identifier "local_a0") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "undefined4 uStack_8c;" (type_identifier "undefined4") (identifier "uStack_8c") (; ";")) (declaration "undefined1 local_86 [102];" (type_identifier "undefined1") (array_declarator "local_86 [102]" (identifier "local_86") ([ "[") (number_literal "102") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x14e8d;" (assignment_expression "uStack_14 = 0x14e8d" (identifier "uStack_14") (= "=") (number_literal "0x14e8d")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar1 = (int)param_1 >> 4 & 1;" (assignment_expression "uVar1 = (int)param_1 >> 4 & 1" (identifier "uVar1") (= "=") (binary_expression "(int)param_1 >> 4 & 1" (binary_expression "(int)param_1 >> 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (>> ">>") (number_literal "4")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = (int)param_1 >> 5 & 1;" (assignment_expression "uVar2 = (int)param_1 >> 5 & 1" (identifier "uVar2") (= "=") (binary_expression "(int)param_1 >> 5 & 1" (binary_expression "(int)param_1 >> 5" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (>> ">>") (number_literal "5")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = (int)param_1 >> 6 & 1;" (assignment_expression "uVar3 = (int)param_1 >> 6 & 1" (identifier "uVar3") (= "=") (binary_expression "(int)param_1 >> 6 & 1" (binary_expression "(int)param_1 >> 6" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (>> ">>") (number_literal "6")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "__sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               );" (call_expression "__sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               )" (identifier "__sprintf_chk") (argument_list "(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1\n               )" (( "(") (identifier "local_a0") (, ",") (number_literal "1") (, ",") (number_literal "0x80") (, ",") (string_literal ""du=%d [ds=%d] tsd=%d [etc=%d] "" (" """) (string_content "du=%d [ds=%d] tsd=%d [etc=%d] ") (" """)) (, ",") (binary_expression "(int)param_1 >> 7" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (>> ">>") (number_literal "7")) (, ",") (identifier "uVar3") (, ",") (identifier "uVar2") (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "iVar5 = 0x1a;" (assignment_expression "iVar5 = 0x1a" (identifier "iVar5") (= "=") (number_literal "0x1a")) (; ";")) (if_statement "if ((param_1 & 0x10) != 0) {\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }" (if "if") (parenthesized_expression "((param_1 & 0x10) != 0)" (( "(") (binary_expression "(param_1 & 0x10) != 0" (parenthesized_expression "(param_1 & 0x10)" (( "(") (binary_expression "param_1 & 0x10" (identifier "param_1") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);\n    iVar5 = 0x22;\n  }" ({ "{") (expression_statement "__sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);" (call_expression "__sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1)" (identifier "__sprintf_chk") (argument_list "(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1)" (( "(") (identifier "local_86") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (string_literal ""[tmc=%d] "" (" """) (string_content "[tmc=%d] ") (" """)) (, ",") (binary_expression "(int)param_1 >> 2 & 3" (binary_expression "(int)param_1 >> 2" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (>> ">>") (number_literal "2")) (& "&") (number_literal "3")) (, ",") (identifier "uVar3") (, ",") (identifier "uVar2") (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "iVar5 = 0x22;" (assignment_expression "iVar5 = 0x22" (identifier "iVar5") (= "=") (number_literal "0x22")) (; ";")) (} "}"))) (expression_statement "__sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1);" (call_expression "__sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1)" (identifier "__sprintf_chk") (argument_list "((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1\n                ,uVar2,uVar1)" (( "(") (binary_expression "(int)local_a0 + iVar5" (cast_expression "(int)local_a0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_a0")) (+ "+") (identifier "iVar5")) (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (string_literal ""format+linking=%d  [0x%.2x]"" (" """) (string_content "format+linking=%d  [0x%.2x]") (" """)) (, ",") (binary_expression "param_1 & 3" (identifier "param_1") (& "&") (number_literal "3")) (, ",") (identifier "param_1") (, ",") (identifier "uVar2") (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "*param_2 = local_a0[0];" (assignment_expression "*param_2 = local_a0[0]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (subscript_expression "local_a0[0]" (identifier "local_a0") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);" (assignment_expression "*(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5)" (pointer_expression "*(undefined4 *)((int)param_2 + iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)((int)param_2 + iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + iVar5 + 0x14)" (( "(") (binary_expression "(int)param_2 + iVar5 + 0x14" (binary_expression "(int)param_2 + iVar5" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "iVar5")) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((int)&uStack_8c + iVar5)" (* "*") (cast_expression "(undefined4 *)((int)&uStack_8c + iVar5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&uStack_8c + iVar5)" (( "(") (binary_expression "(int)&uStack_8c + iVar5" (cast_expression "(int)&uStack_8c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&uStack_8c" (& "&") (identifier "uStack_8c"))) (+ "+") (identifier "iVar5")) () ")"))))) (; ";")) (expression_statement "iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);" (assignment_expression "iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc)" (identifier "iVar4") (= "=") (binary_expression "(int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc)" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (- "-") (cast_expression "(int)((uint)(param_2 + 1) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(param_2 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(param_2 + 1) & 0xfffffffc" (call_expression "(uint)(param_2 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 + 1)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")"))))) (; ";")) (expression_statement "puVar6 = (undefined4 *)((int)local_a0 - iVar4);" (assignment_expression "puVar6 = (undefined4 *)((int)local_a0 - iVar4)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)((int)local_a0 - iVar4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_a0 - iVar4)" (( "(") (binary_expression "(int)local_a0 - iVar4" (cast_expression "(int)local_a0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_a0")) (- "-") (identifier "iVar4")) () ")")))) (; ";")) (expression_statement "puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);" (assignment_expression "puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((uint)(param_2 + 1) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(param_2 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(param_2 + 1) & 0xfffffffc" (call_expression "(uint)(param_2 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 + 1)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" (for "for") (( "(") (assignment_expression "uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2" (identifier "uVar1") (= "=") (binary_expression "(uint)(iVar5 + 0x18 + iVar4) >> 2" (call_expression "(uint)(iVar5 + 0x18 + iVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 + 0x18 + iVar4)" (( "(") (binary_expression "iVar5 + 0x18 + iVar4" (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) (+ "+") (identifier "iVar4")) () ")"))) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar1 = uVar1 - 1" (identifier "uVar1") (= "=") (binary_expression "uVar1 - 1" (identifier "uVar1") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" (identifier "puVar6") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" (identifier "puVar7") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;" (assignment_expression "*(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0" (pointer_expression "*(undefined1 *)((int)param_2 + iVar5 + 0x18)" (* "*") (cast_expression "(undefined1 *)((int)param_2 + iVar5 + 0x18)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + iVar5 + 0x18)" (( "(") (binary_expression "(int)param_2 + iVar5 + 0x18" (binary_expression "(int)param_2 + iVar5" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "iVar5")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return param_2;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return param_2;\n  }" ({ "{") (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (expression_statement "FUN_00024b60();" (call_expression "FUN_00024b60()" (identifier "FUN_00024b60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))

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

char * __regparm3 function_1(int var_2,char *var_6,int maxoutlen)

{
  int var_11;
  type_1 var_8;
  type_1 uVar3;
  type_1 uVar4;
  int var_7;
  int var_5;
  char *var_9;
  type_2 *var_10;
  int var_1;
  type_3 bVar9;
  char var_4 [128];
  
  bVar9 = 0;
  var_11 = *(int *)(var_1 + 0x14);
  var_8 = var_2 >> 4 & 1;
  uVar3 = var_2 >> 5 & 1;
  uVar4 = var_2 >> 6 & 1;
  var_3(var_4,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",var_2 >> 7,uVar4,uVar3,var_8);
  var_5 = 0x1a;
  if ((var_2 & 0x10U) != 0) {
    var_3(var_4 + 0x1a,1,0xffffffff,"[tmc=%d] ",var_2 >> 2 & 3,uVar4,uVar3,var_8);
    var_5 = 0x22;
  }
  var_3(var_4 + var_5,1,0xffffffff,"format+linking=%d  [0x%.2x]",var_2 & 3,var_2,uVar3,var_8);
  *(type_2 *)var_6 = var_4._0_4_;
  *(type_2 *)(var_6 + var_5 + 0x14) = *(type_2 *)(var_4 + var_5 + 0x14);
  var_7 = (int)var_6 - (int)((type_1)(var_6 + 4) & 0xfffffffc);
  var_9 = var_4 + -var_7;
  var_10 = (type_2 *)((type_1)(var_6 + 4) & 0xfffffffc);
  for (var_8 = (type_1)(var_5 + 0x18 + var_7) >> 2; var_8 != 0; var_8 = var_8 - 1) {
    *var_10 = *(type_2 *)var_9;
    var_9 = var_9 + ((type_1)bVar9 * -2 + 1) * 4;
    var_10 = var_10 + (type_1)bVar9 * -2 + 1;
  }
  var_6[var_5 + 0x18] = '\0';
  if (var_11 == *(int *)(var_1 + 0x14)) {
    return var_6;
  }
                    /* WARNING: Subroutine does not return */
  var_12();
}


(translation_unit (ERROR (binary_expression left: (identifier) (ERROR (identifier)) right: (call_expression function: (identifier) arguments: (argument_list (ERROR (identifier)) (identifier) (binary_expression left: (identifier) right: (identifier)))))) (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (string_literal (string_content)) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (string_literal (string_content)) (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) (number_literal) (number_literal) (string_literal (string_content)) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) right: (number_literal))) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) 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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))

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

undefined4 * __regparm3 MASKED(uint param_1,undefined4 *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  int in_GS_OFFSET;
  byte bVar8;
  undefined4 local_a0 [5];
  undefined4 uStack_8c;
  undefined1 local_86 [102];
  int local_20;
  undefined4 uStack_14;
  
  bVar8 = 0;
  uStack_14 = 0x14e8d;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar1 = (int)param_1 >> 4 & 1;
  uVar2 = (int)param_1 >> 5 & 1;
  uVar3 = (int)param_1 >> 6 & 1;
  __sprintf_chk(local_a0,1,0x80,"du=%d [ds=%d] tsd=%d [etc=%d] ",(int)param_1 >> 7,uVar3,uVar2,uVar1
               );
  iVar5 = 0x1a;
  if ((param_1 & 0x10) != 0) {
    __sprintf_chk(local_86,1,0xffffffff,"[tmc=%d] ",(int)param_1 >> 2 & 3,uVar3,uVar2,uVar1);
    iVar5 = 0x22;
  }
  __sprintf_chk((int)local_a0 + iVar5,1,0xffffffff,"format+linking=%d  [0x%.2x]",param_1 & 3,param_1
                ,uVar2,uVar1);
  *param_2 = local_a0[0];
  *(undefined4 *)((int)param_2 + iVar5 + 0x14) = *(undefined4 *)((int)&uStack_8c + iVar5);
  iVar4 = (int)param_2 - (int)((uint)(param_2 + 1) & 0xfffffffc);
  puVar6 = (undefined4 *)((int)local_a0 - iVar4);
  puVar7 = (undefined4 *)((uint)(param_2 + 1) & 0xfffffffc);
  for (uVar1 = (uint)(iVar5 + 0x18 + iVar4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;
  }
  *(undefined1 *)((int)param_2 + iVar5 + 0x18) = 0;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00024b60();
}

