
void __regparm3 des_keysetup_xdmauth(uchar *keydata,DESContext *dc)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int in_GS_OFFSET;
  int local_38;
  uchar key [8];
  int local_20 [4];
  
  iVar2 = 0;
  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);
  uVar1 = 0;
  local_38 = 0;
  piVar3 = (int *)key;
  do {
    if (iVar2 < 7) {
      iVar2 = iVar2 + 8;
      uVar1 = uVar1 << 8 | (uint)keydata[local_38];
      local_38 = local_38 + 1;
    }
    iVar2 = iVar2 + -7;
    piVar4 = (int *)((int)piVar3 + 1);
    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';
    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));
    piVar3 = piVar4;
  } while (piVar4 != local_20);
  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {
    des_key_setup((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8
                  | key._0_4_ << 0x18,
                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8
                  | key._4_4_ << 0x18,dc);
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



void __regparm3 FUN_00025710(int param_1)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int in_GS_OFFSET;
  int local_38;
  int local_28 [2];
  int local_20 [4];
  
  iVar2 = 0;
  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);
  uVar1 = 0;
  local_38 = 0;
  piVar3 = local_28;
  do {
    if (iVar2 < 7) {
      iVar2 = iVar2 + 8;
      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);
      local_38 = local_38 + 1;
    }
    iVar2 = iVar2 + -7;
    piVar4 = (int *)((int)piVar3 + 1);
    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';
    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));
    piVar3 = piVar4;
  } while (piVar4 != local_20);
  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {
    FUN_00024270();
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0003dc30();
}


PUSH EBP
XOR ECX,ECX
PUSH EDI
PUSH ESI
MOV ESI,0x7f
PUSH EBX
XOR EBX,EBX
SUB ESP,0x2c
MOV dword ptr [ESP + 0xc],EDX
LEA EDI,[ESP + 0x1c]
LEA EDX,[ESP + 0x14]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1c],EAX
XOR EAX,EAX
MOV dword ptr [ESP + 0x4],EBX
CMP ECX,0x6
JG 0x0002575e
MOV EBP,dword ptr [ESP + 0x4]
MOV EBX,dword ptr [ESP + 0x8]
SHL EAX,0x8
ADD ECX,0x8
ADD dword ptr [ESP + 0x4],0x1
MOVZX EBP,byte ptr [EBX + EBP*0x1]
OR EAX,EBP
SUB ECX,0x7
MOV EBP,EAX
ADD EDX,0x1
SHR EBP,CL
ADD EBP,EBP
MOV EBX,EBP
MOV EBP,ESI
SHL EBP,CL
MOV byte ptr [EDX + -0x1],BL
NOT EBP
AND EAX,EBP
CMP EDX,EDI
JNZ 0x00025740
MOV ESI,dword ptr [ESP + 0x1c]
XOR ESI,dword ptr GS:[0x14]
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x14]
BSWAP EDX
BSWAP EAX
JNZ 0x000257a4
MOV ECX,dword ptr [ESP + 0xc]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x00024270
CALL 0x0003dc30
(translation_unit "void __regparm3 FUN_00025710(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  int local_28 [2];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = local_28;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0003dc30();\n}\n\n" (function_definition "void __regparm3 FUN_00025710(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  int local_28 [2];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = local_28;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0003dc30();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00025710(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  int local_28 [2];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = local_28;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0003dc30();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_28 [2];" primitive_type (array_declarator "local_28 [2]" identifier [ number_literal ]) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "local_20[0] = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (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 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "piVar3 = local_28;" (assignment_expression "piVar3 = local_28" identifier = identifier) ;) (do_statement "do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);" do (compound_statement "{\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  }" { (if_statement "if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }" if (parenthesized_expression "(iVar2 < 7)" ( (binary_expression "iVar2 < 7" identifier < number_literal) )) (compound_statement "{\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }" { (expression_statement "iVar2 = iVar2 + 8;" (assignment_expression "iVar2 = iVar2 + 8" identifier = (binary_expression "iVar2 + 8" identifier + number_literal)) ;) (expression_statement "uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);" (assignment_expression "uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38)" identifier = (binary_expression "uVar1 << 8 | (uint)*(byte *)(param_1 + local_38)" (binary_expression "uVar1 << 8" identifier << number_literal) | (binary_expression "(uint)*(byte *)(param_1 + local_38)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + local_38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_38)" ( (binary_expression "param_1 + local_38" identifier + identifier) )))))) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar2 = iVar2 + -7;" (assignment_expression "iVar2 = iVar2 + -7" identifier = (binary_expression "iVar2 + -7" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)((int)piVar3 + 1);" (assignment_expression "piVar4 = (int *)((int)piVar3 + 1)" identifier = (cast_expression "(int *)((int)piVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 1)" ( (binary_expression "(int)piVar3 + 1" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';" (assignment_expression "*(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02'" (pointer_expression "*(char *)piVar3" * (cast_expression "(char *)piVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02'" (cast_expression "(char)(uVar1 >> ((byte)iVar2 & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar1 >> ((byte)iVar2 & 0x1f))" ( (binary_expression "uVar1 >> ((byte)iVar2 & 0x1f)" identifier >> (parenthesized_expression "((byte)iVar2 & 0x1f)" ( (binary_expression "(byte)iVar2 & 0x1f" (cast_expression "(byte)iVar2" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) * (char_literal "'\x02'" ' escape_sequence '))) ;) (expression_statement "uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));" (assignment_expression "uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f))" identifier = (binary_expression "uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f))" identifier & (unary_expression "~(0x7f << ((byte)iVar2 & 0x1f))" ~ (parenthesized_expression "(0x7f << ((byte)iVar2 & 0x1f))" ( (binary_expression "0x7f << ((byte)iVar2 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar2 & 0x1f)" ( (binary_expression "(byte)iVar2 & 0x1f" (cast_expression "(byte)iVar2" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) }) while (parenthesized_expression "(piVar4 != local_20)" ( (binary_expression "piVar4 != local_20" identifier != identifier) )) ;) (if_statement "if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }" if (parenthesized_expression "(local_20[0] == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] == *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) == (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    FUN_00024270();\n    return;\n  }" { (expression_statement "FUN_00024270();" (call_expression "FUN_00024270()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0003dc30();" (call_expression "FUN_0003dc30()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void __regparm3 des_keysetup_xdmauth(uchar *keydata,DESContext *dc)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  uchar key [8];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = (int *)key;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)keydata[local_38];\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    des_key_setup((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18,\n                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18,dc);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" (function_definition "void __regparm3 des_keysetup_xdmauth(uchar *keydata,DESContext *dc)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  uchar key [8];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = (int *)key;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)keydata[local_38];\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    des_key_setup((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18,\n                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18,dc);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "des_keysetup_xdmauth(uchar *keydata,DESContext *dc)" identifier (parameter_list "(uchar *keydata,DESContext *dc)" ( (parameter_declaration "uchar *keydata" type_identifier (pointer_declarator "*keydata" * identifier)) , (parameter_declaration "DESContext *dc" type_identifier (pointer_declarator "*dc" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  uchar key [8];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = (int *)key;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)keydata[local_38];\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    des_key_setup((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18,\n                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18,dc);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "uchar key [8];" type_identifier (array_declarator "key [8]" identifier [ number_literal ]) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "local_20[0] = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (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 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "piVar3 = (int *)key;" (assignment_expression "piVar3 = (int *)key" identifier = (cast_expression "(int *)key" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)keydata[local_38];\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);" do (compound_statement "{\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)keydata[local_38];\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  }" { (if_statement "if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)keydata[local_38];\n      local_38 = local_38 + 1;\n    }" if (parenthesized_expression "(iVar2 < 7)" ( (binary_expression "iVar2 < 7" identifier < number_literal) )) (compound_statement "{\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)keydata[local_38];\n      local_38 = local_38 + 1;\n    }" { (expression_statement "iVar2 = iVar2 + 8;" (assignment_expression "iVar2 = iVar2 + 8" identifier = (binary_expression "iVar2 + 8" identifier + number_literal)) ;) (expression_statement "uVar1 = uVar1 << 8 | (uint)keydata[local_38];" (assignment_expression "uVar1 = uVar1 << 8 | (uint)keydata[local_38]" identifier = (binary_expression "uVar1 << 8 | (uint)keydata[local_38]" (binary_expression "uVar1 << 8" identifier << number_literal) | (cast_expression "(uint)keydata[local_38]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "keydata[local_38]" identifier [ identifier ])))) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar2 = iVar2 + -7;" (assignment_expression "iVar2 = iVar2 + -7" identifier = (binary_expression "iVar2 + -7" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)((int)piVar3 + 1);" (assignment_expression "piVar4 = (int *)((int)piVar3 + 1)" identifier = (cast_expression "(int *)((int)piVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 1)" ( (binary_expression "(int)piVar3 + 1" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';" (assignment_expression "*(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02'" (pointer_expression "*(char *)piVar3" * (cast_expression "(char *)piVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02'" (cast_expression "(char)(uVar1 >> ((byte)iVar2 & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar1 >> ((byte)iVar2 & 0x1f))" ( (binary_expression "uVar1 >> ((byte)iVar2 & 0x1f)" identifier >> (parenthesized_expression "((byte)iVar2 & 0x1f)" ( (binary_expression "(byte)iVar2 & 0x1f" (cast_expression "(byte)iVar2" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) * (char_literal "'\x02'" ' escape_sequence '))) ;) (expression_statement "uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));" (assignment_expression "uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f))" identifier = (binary_expression "uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f))" identifier & (unary_expression "~(0x7f << ((byte)iVar2 & 0x1f))" ~ (parenthesized_expression "(0x7f << ((byte)iVar2 & 0x1f))" ( (binary_expression "0x7f << ((byte)iVar2 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar2 & 0x1f)" ( (binary_expression "(byte)iVar2 & 0x1f" (cast_expression "(byte)iVar2" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) }) while (parenthesized_expression "(piVar4 != local_20)" ( (binary_expression "piVar4 != local_20" identifier != identifier) )) ;) (if_statement "if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    des_key_setup((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18,\n                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18,dc);\n    return;\n  }" if (parenthesized_expression "(local_20[0] == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] == *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) == (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    des_key_setup((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18,\n                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18,dc);\n    return;\n  }" { (expression_statement "des_key_setup((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18,\n                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18,dc);" (call_expression "des_key_setup((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18,\n                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18,dc)" identifier (argument_list "((uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18,\n                  (uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18,dc)" ( (binary_expression "(uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8\n                  | key._0_4_ << 0x18" (binary_expression "(uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8" (binary_expression "(uint)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8" (binary_expression "(uint)key._0_4_ >> 0x18" (cast_expression "(uint)key._0_4_" ( (type_descriptor "uint" type_identifier) ) (field_expression "key._0_4_" identifier . field_identifier)) >> number_literal) | (binary_expression "(key._0_4_ & 0xff0000) >> 8" (parenthesized_expression "(key._0_4_ & 0xff0000)" ( (binary_expression "key._0_4_ & 0xff0000" (field_expression "key._0_4_" identifier . field_identifier) & number_literal) )) >> number_literal)) | (binary_expression "(key._0_4_ & 0xff00) << 8" (parenthesized_expression "(key._0_4_ & 0xff00)" ( (binary_expression "key._0_4_ & 0xff00" (field_expression "key._0_4_" identifier . field_identifier) & number_literal) )) << number_literal)) | (binary_expression "key._0_4_ << 0x18" (field_expression "key._0_4_" identifier . field_identifier) << number_literal)) , (binary_expression "(uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8\n                  | key._4_4_ << 0x18" (binary_expression "(uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8" (binary_expression "(uint)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8" (binary_expression "(uint)key._4_4_ >> 0x18" (cast_expression "(uint)key._4_4_" ( (type_descriptor "uint" type_identifier) ) (field_expression "key._4_4_" identifier . field_identifier)) >> number_literal) | (binary_expression "(key._4_4_ & 0xff0000) >> 8" (parenthesized_expression "(key._4_4_ & 0xff0000)" ( (binary_expression "key._4_4_ & 0xff0000" (field_expression "key._4_4_" identifier . field_identifier) & number_literal) )) >> number_literal)) | (binary_expression "(key._4_4_ & 0xff00) << 8" (parenthesized_expression "(key._4_4_ & 0xff00)" ( (binary_expression "key._4_4_ & 0xff00" (field_expression "key._4_4_" identifier . field_identifier) & number_literal) )) << number_literal)) | (binary_expression "key._4_4_ << 0x18" (field_expression "key._4_4_" identifier . field_identifier) << number_literal)) , identifier ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void __regparm3 FUN_00025710(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  int local_28 [2];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = local_28;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }\n                    \n  FUN_0003dc30();\n}\n\n" (function_definition "void __regparm3 FUN_00025710(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  int local_28 [2];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = local_28;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }\n                    \n  FUN_0003dc30();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00025710(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  int local_28 [2];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = local_28;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }\n                    \n  FUN_0003dc30();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_28 [2];" primitive_type (array_declarator "local_28 [2]" identifier [ number_literal ]) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "local_20[0] = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (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 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "piVar3 = local_28;" (assignment_expression "piVar3 = local_28" identifier = identifier) ;) (do_statement "do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);" do (compound_statement "{\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  }" { (if_statement "if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }" if (parenthesized_expression "(iVar2 < 7)" ( (binary_expression "iVar2 < 7" identifier < number_literal) )) (compound_statement "{\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }" { (expression_statement "iVar2 = iVar2 + 8;" (assignment_expression "iVar2 = iVar2 + 8" identifier = (binary_expression "iVar2 + 8" identifier + number_literal)) ;) (expression_statement "uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);" (assignment_expression "uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38)" identifier = (binary_expression "uVar1 << 8 | (uint)*(byte *)(param_1 + local_38)" (binary_expression "uVar1 << 8" identifier << number_literal) | (binary_expression "(uint)*(byte *)(param_1 + local_38)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + local_38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_38)" ( (binary_expression "param_1 + local_38" identifier + identifier) )))))) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar2 = iVar2 + -7;" (assignment_expression "iVar2 = iVar2 + -7" identifier = (binary_expression "iVar2 + -7" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)((int)piVar3 + 1);" (assignment_expression "piVar4 = (int *)((int)piVar3 + 1)" identifier = (cast_expression "(int *)((int)piVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 1)" ( (binary_expression "(int)piVar3 + 1" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';" (assignment_expression "*(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02'" (pointer_expression "*(char *)piVar3" * (cast_expression "(char *)piVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02'" (cast_expression "(char)(uVar1 >> ((byte)iVar2 & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar1 >> ((byte)iVar2 & 0x1f))" ( (binary_expression "uVar1 >> ((byte)iVar2 & 0x1f)" identifier >> (parenthesized_expression "((byte)iVar2 & 0x1f)" ( (binary_expression "(byte)iVar2 & 0x1f" (cast_expression "(byte)iVar2" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) * (char_literal "'\x02'" ' escape_sequence '))) ;) (expression_statement "uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));" (assignment_expression "uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f))" identifier = (binary_expression "uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f))" identifier & (unary_expression "~(0x7f << ((byte)iVar2 & 0x1f))" ~ (parenthesized_expression "(0x7f << ((byte)iVar2 & 0x1f))" ( (binary_expression "0x7f << ((byte)iVar2 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar2 & 0x1f)" ( (binary_expression "(byte)iVar2 & 0x1f" (cast_expression "(byte)iVar2" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) }) while (parenthesized_expression "(piVar4 != local_20)" ( (binary_expression "piVar4 != local_20" identifier != identifier) )) ;) (if_statement "if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }" if (parenthesized_expression "(local_20[0] == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] == *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) == (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    FUN_00024270();\n    return;\n  }" { (expression_statement "FUN_00024270();" (call_expression "FUN_00024270()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0003dc30();" (call_expression "FUN_0003dc30()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) * (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void __regparm3 FUN_00025710(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  int local_28 [2];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = local_28;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }\n                    \n  FUN_0003dc30();\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00025710(int param_1)" (identifier "FUN_00025710") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int in_GS_OFFSET;\n  int local_38;\n  int local_28 [2];\n  int local_20 [4];\n  \n  iVar2 = 0;\n  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);\n  uVar1 = 0;\n  local_38 = 0;\n  piVar3 = local_28;\n  do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);\n  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }\n                    \n  FUN_0003dc30();\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_28 [2];" (primitive_type "int") (array_declarator "local_28 [2]" (identifier "local_28") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int local_20 [4];" (primitive_type "int") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]")) (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[0] = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (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 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3 = local_28;" (assignment_expression "piVar3 = local_28" (identifier "piVar3") (= "=") (identifier "local_28")) (; ";")) (do_statement "do {\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  } while (piVar4 != local_20);" (do "do") (compound_statement "{\n    if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }\n    iVar2 = iVar2 + -7;\n    piVar4 = (int *)((int)piVar3 + 1);\n    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';\n    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));\n    piVar3 = piVar4;\n  }" ({ "{") (if_statement "if (iVar2 < 7) {\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }" (if "if") (parenthesized_expression "(iVar2 < 7)" (( "(") (binary_expression "iVar2 < 7" (identifier "iVar2") (< "<") (number_literal "7")) () ")")) (compound_statement "{\n      iVar2 = iVar2 + 8;\n      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);\n      local_38 = local_38 + 1;\n    }" ({ "{") (expression_statement "iVar2 = iVar2 + 8;" (assignment_expression "iVar2 = iVar2 + 8" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);" (assignment_expression "uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38)" (identifier "uVar1") (= "=") (binary_expression "uVar1 << 8 | (uint)*(byte *)(param_1 + local_38)" (binary_expression "uVar1 << 8" (identifier "uVar1") (<< "<<") (number_literal "8")) (| "|") (binary_expression "(uint)*(byte *)(param_1 + local_38)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + local_38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + local_38)" (( "(") (binary_expression "param_1 + local_38" (identifier "param_1") (+ "+") (identifier "local_38")) () ")")))))) (; ";")) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar2 = iVar2 + -7;" (assignment_expression "iVar2 = iVar2 + -7" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -7" (identifier "iVar2") (+ "+") (number_literal "-7"))) (; ";")) (expression_statement "piVar4 = (int *)((int)piVar3 + 1);" (assignment_expression "piVar4 = (int *)((int)piVar3 + 1)" (identifier "piVar4") (= "=") (cast_expression "(int *)((int)piVar3 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar3 + 1)" (( "(") (binary_expression "(int)piVar3 + 1" (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';" (assignment_expression "*(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02'" (pointer_expression "*(char *)piVar3" (* "*") (cast_expression "(char *)piVar3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar3"))) (= "=") (binary_expression "(char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02'" (cast_expression "(char)(uVar1 >> ((byte)iVar2 & 0x1f))" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar1 >> ((byte)iVar2 & 0x1f))" (( "(") (binary_expression "uVar1 >> ((byte)iVar2 & 0x1f)" (identifier "uVar1") (>> ">>") (parenthesized_expression "((byte)iVar2 & 0x1f)" (( "(") (binary_expression "(byte)iVar2 & 0x1f" (cast_expression "(byte)iVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar2")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (* "*") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'")))) (; ";")) (expression_statement "uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));" (assignment_expression "uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f))" (identifier "uVar1") (= "=") (binary_expression "uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f))" (identifier "uVar1") (& "&") (unary_expression "~(0x7f << ((byte)iVar2 & 0x1f))" (~ "~") (parenthesized_expression "(0x7f << ((byte)iVar2 & 0x1f))" (( "(") (binary_expression "0x7f << ((byte)iVar2 & 0x1f)" (number_literal "0x7f") (<< "<<") (parenthesized_expression "((byte)iVar2 & 0x1f)" (( "(") (binary_expression "(byte)iVar2 & 0x1f" (cast_expression "(byte)iVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar2")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))))) (; ";")) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" (identifier "piVar3") (= "=") (identifier "piVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar4 != local_20)" (( "(") (binary_expression "piVar4 != local_20" (identifier "piVar4") (!= "!=") (identifier "local_20")) () ")")) (; ";")) (if_statement "if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00024270();\n    return;\n  }" (if "if") (parenthesized_expression "(local_20[0] == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20[0] == *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (== "==") (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    FUN_00024270();\n    return;\n  }" ({ "{") (expression_statement "FUN_00024270();" (call_expression "FUN_00024270()" (identifier "FUN_00024270") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0003dc30();" (call_expression "FUN_0003dc30()" (identifier "FUN_0003dc30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

void __regparm3 function_1(type_1 *keydata,type_2 *dc)

{
  type_3 var_3;
  int var_2;
  int *piVar3;
  int *var_5;
  int var_1;
  int var_4;
  type_1 key [8];
  int var_6 [4];
  
  var_2 = 0;
  var_6[0] = *(int *)(var_1 + 0x14);
  var_3 = 0;
  var_4 = 0;
  piVar3 = (int *)key;
  do {
    if (var_2 < 7) {
      var_2 = var_2 + 8;
      var_3 = var_3 << 8 | (type_3)keydata[var_4];
      var_4 = var_4 + 1;
    }
    var_2 = var_2 + -7;
    var_5 = (int *)((int)piVar3 + 1);
    *(char *)piVar3 = (char)(var_3 >> ((type_4)var_2 & 0x1f)) * '\x02';
    var_3 = var_3 & ~(0x7f << ((type_4)var_2 & 0x1f));
    piVar3 = var_5;
  } while (var_5 != var_6);
  if (var_6[0] == *(int *)(var_1 + 0x14)) {
    var_7((type_3)key._0_4_ >> 0x18 | (key._0_4_ & 0xff0000) >> 8 | (key._0_4_ & 0xff00) << 8
                  | key._0_4_ << 0x18,
                  (type_3)key._4_4_ >> 0x18 | (key._4_4_ & 0xff0000) >> 8 | (key._4_4_ & 0xff00) << 8
                  | key._4_4_ << 0x18,dc);
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_8();
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

void __regparm3 MASKED(int param_1)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int in_GS_OFFSET;
  int local_38;
  int local_28 [2];
  int local_20 [4];
  
  iVar2 = 0;
  local_20[0] = *(int *)(in_GS_OFFSET + 0x14);
  uVar1 = 0;
  local_38 = 0;
  piVar3 = local_28;
  do {
    if (iVar2 < 7) {
      iVar2 = iVar2 + 8;
      uVar1 = uVar1 << 8 | (uint)*(byte *)(param_1 + local_38);
      local_38 = local_38 + 1;
    }
    iVar2 = iVar2 + -7;
    piVar4 = (int *)((int)piVar3 + 1);
    *(char *)piVar3 = (char)(uVar1 >> ((byte)iVar2 & 0x1f)) * '\x02';
    uVar1 = uVar1 & ~(0x7f << ((byte)iVar2 & 0x1f));
    piVar3 = piVar4;
  } while (piVar4 != local_20);
  if (local_20[0] == *(int *)(in_GS_OFFSET + 0x14)) {
    FUN_00024270();
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0003dc30();
}

