
void aes_iv(void *handle,uchar *iv)

{
  AESContext *ctx;
  uint *puVar1;
  byte *pbVar2;
  byte *pbVar3;
  
  puVar1 = (uint *)((int)handle + 0x3c8);
  pbVar2 = iv;
  do {
    pbVar3 = pbVar2 + 4;
    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |
              (uint)pbVar2[2] << 8;
    puVar1 = puVar1 + 1;
    pbVar2 = pbVar3;
  } while (iv + 0x10 != pbVar3);
  return;
}



void aes_iv(int param_1,byte *param_2)

{
  uint *puVar1;
  byte *pbVar2;
  byte *pbVar3;
  
  puVar1 = (uint *)(param_1 + 0x3c8);
  pbVar2 = param_2;
  do {
    pbVar3 = pbVar2 + 4;
    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |
              (uint)pbVar2[2] << 8;
    puVar1 = puVar1 + 1;
    pbVar2 = pbVar3;
  } while (param_2 + 0x10 != pbVar3);
  return;
}


addiu a0,a0,0x3c8
addiu t0,a1,0x10
lbu v0,0x0(a1)
addiu a1,a1,0x4
addiu a0,a0,0x4
sll v0,v0,0x18
lbu a2,-0x3(a1)
lbu v1,-0x2(a1)
lbu a3,-0x1(a1)
sll a2,a2,0x10
sll v1,v1,0x8
or v0,v0,a2
or v0,v0,a3
or v0,v0,v1
bne t0,a1,0x00022edc
_sw v0,-0x4(a0)
jr ra
_nop
(translation_unit "void aes_iv(int param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)(param_1 + 0x3c8);\n  pbVar2 = param_2;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);\n  return;\n}\n\n" (function_definition "void aes_iv(int param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)(param_1 + 0x3c8);\n  pbVar2 = param_2;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);\n  return;\n}" primitive_type (function_declarator "aes_iv(int param_1,byte *param_2)" identifier (parameter_list "(int param_1,byte *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)(param_1 + 0x3c8);\n  pbVar2 = param_2;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (expression_statement "puVar1 = (uint *)(param_1 + 0x3c8);" (assignment_expression "puVar1 = (uint *)(param_1 + 0x3c8)" identifier = (cast_expression "(uint *)(param_1 + 0x3c8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c8)" ( (binary_expression "param_1 + 0x3c8" identifier + number_literal) )))) ;) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" identifier = identifier) ;) (do_statement "do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);" do (compound_statement "{\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  }" { (expression_statement "pbVar3 = pbVar2 + 4;" (assignment_expression "pbVar3 = pbVar2 + 4" identifier = (binary_expression "pbVar2 + 4" identifier + number_literal)) ;) (expression_statement "*puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;" (assignment_expression "*puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8" (pointer_expression "*puVar1" * identifier) = (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8" (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3]" (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10" (binary_expression "(uint)*pbVar2 << 0x18" (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)pbVar2[1] << 0x10" (cast_expression "(uint)pbVar2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)pbVar2[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[3]" identifier [ number_literal ]))) | (binary_expression "(uint)pbVar2[2] << 8" (cast_expression "(uint)pbVar2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[2]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "pbVar2 = pbVar3;" (assignment_expression "pbVar2 = pbVar3" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 + 0x10 != pbVar3)" ( (binary_expression "param_2 + 0x10 != pbVar3" (binary_expression "param_2 + 0x10" identifier + number_literal) != identifier) )) ;) (return_statement "return;" return ;) })))
(translation_unit "void aes_iv(void *handle,uchar *iv)\n\n{\n  AESContext *ctx;\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)((int)handle + 0x3c8);\n  pbVar2 = iv;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (iv + 0x10 != pbVar3);\n  return;\n}\n\n" (function_definition "void aes_iv(void *handle,uchar *iv)\n\n{\n  AESContext *ctx;\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)((int)handle + 0x3c8);\n  pbVar2 = iv;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (iv + 0x10 != pbVar3);\n  return;\n}" primitive_type (function_declarator "aes_iv(void *handle,uchar *iv)" identifier (parameter_list "(void *handle,uchar *iv)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "uchar *iv" type_identifier (pointer_declarator "*iv" * identifier)) ))) (compound_statement "{\n  AESContext *ctx;\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)((int)handle + 0x3c8);\n  pbVar2 = iv;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (iv + 0x10 != pbVar3);\n  return;\n}" { (declaration "AESContext *ctx;" type_identifier (pointer_declarator "*ctx" * identifier) ;) (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (expression_statement "puVar1 = (uint *)((int)handle + 0x3c8);" (assignment_expression "puVar1 = (uint *)((int)handle + 0x3c8)" identifier = (cast_expression "(uint *)((int)handle + 0x3c8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x3c8)" ( (binary_expression "(int)handle + 0x3c8" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar2 = iv;" (assignment_expression "pbVar2 = iv" identifier = identifier) ;) (do_statement "do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (iv + 0x10 != pbVar3);" do (compound_statement "{\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  }" { (expression_statement "pbVar3 = pbVar2 + 4;" (assignment_expression "pbVar3 = pbVar2 + 4" identifier = (binary_expression "pbVar2 + 4" identifier + number_literal)) ;) (expression_statement "*puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;" (assignment_expression "*puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8" (pointer_expression "*puVar1" * identifier) = (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8" (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3]" (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10" (binary_expression "(uint)*pbVar2 << 0x18" (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)pbVar2[1] << 0x10" (cast_expression "(uint)pbVar2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)pbVar2[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[3]" identifier [ number_literal ]))) | (binary_expression "(uint)pbVar2[2] << 8" (cast_expression "(uint)pbVar2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[2]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "pbVar2 = pbVar3;" (assignment_expression "pbVar2 = pbVar3" identifier = identifier) ;) }) while (parenthesized_expression "(iv + 0x10 != pbVar3)" ( (binary_expression "iv + 0x10 != pbVar3" (binary_expression "iv + 0x10" identifier + number_literal) != identifier) )) ;) (return_statement "return;" return ;) })))
(translation_unit "void aes_iv(int param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)(param_1 + 0x3c8);\n  pbVar2 = param_2;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);\n  return;\n}\n\n" (function_definition "void aes_iv(int param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)(param_1 + 0x3c8);\n  pbVar2 = param_2;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);\n  return;\n}" primitive_type (function_declarator "aes_iv(int param_1,byte *param_2)" identifier (parameter_list "(int param_1,byte *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)(param_1 + 0x3c8);\n  pbVar2 = param_2;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (expression_statement "puVar1 = (uint *)(param_1 + 0x3c8);" (assignment_expression "puVar1 = (uint *)(param_1 + 0x3c8)" identifier = (cast_expression "(uint *)(param_1 + 0x3c8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c8)" ( (binary_expression "param_1 + 0x3c8" identifier + number_literal) )))) ;) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" identifier = identifier) ;) (do_statement "do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);" do (compound_statement "{\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  }" { (expression_statement "pbVar3 = pbVar2 + 4;" (assignment_expression "pbVar3 = pbVar2 + 4" identifier = (binary_expression "pbVar2 + 4" identifier + number_literal)) ;) (expression_statement "*puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;" (assignment_expression "*puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8" (pointer_expression "*puVar1" * identifier) = (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8" (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3]" (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10" (binary_expression "(uint)*pbVar2 << 0x18" (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)pbVar2[1] << 0x10" (cast_expression "(uint)pbVar2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)pbVar2[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[3]" identifier [ number_literal ]))) | (binary_expression "(uint)pbVar2[2] << 8" (cast_expression "(uint)pbVar2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar2[2]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "pbVar2 = pbVar3;" (assignment_expression "pbVar2 = pbVar3" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 + 0x10 != pbVar3)" ( (binary_expression "param_2 + 0x10 != pbVar3" (binary_expression "param_2 + 0x10" identifier + number_literal) != identifier) )) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT)) | (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (return_statement return ;) })))
(function_definition "void aes_iv(int param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)(param_1 + 0x3c8);\n  pbVar2 = param_2;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);\n  return;\n}" (primitive_type "void") (function_declarator "aes_iv(int param_1,byte *param_2)" (identifier "aes_iv") (parameter_list "(int param_1,byte *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  \n  puVar1 = (uint *)(param_1 + 0x3c8);\n  pbVar2 = param_2;\n  do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);\n  return;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (expression_statement "puVar1 = (uint *)(param_1 + 0x3c8);" (assignment_expression "puVar1 = (uint *)(param_1 + 0x3c8)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(param_1 + 0x3c8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c8)" (( "(") (binary_expression "param_1 + 0x3c8" (identifier "param_1") (+ "+") (number_literal "0x3c8")) () ")")))) (; ";")) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" (identifier "pbVar2") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  } while (param_2 + 0x10 != pbVar3);" (do "do") (compound_statement "{\n    pbVar3 = pbVar2 + 4;\n    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;\n    puVar1 = puVar1 + 1;\n    pbVar2 = pbVar3;\n  }" ({ "{") (expression_statement "pbVar3 = pbVar2 + 4;" (assignment_expression "pbVar3 = pbVar2 + 4" (identifier "pbVar3") (= "=") (binary_expression "pbVar2 + 4" (identifier "pbVar2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8;" (assignment_expression "*puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |\n              (uint)pbVar2[2] << 8" (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3]" (binary_expression "(uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10" (binary_expression "(uint)*pbVar2 << 0x18" (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar2")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)pbVar2[1] << 0x10" (cast_expression "(uint)pbVar2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar2[1]" (identifier "pbVar2") ([ "[") (number_literal "1") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)pbVar2[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar2[3]" (identifier "pbVar2") ([ "[") (number_literal "3") (] "]")))) (| "|") (binary_expression "(uint)pbVar2[2] << 8" (cast_expression "(uint)pbVar2[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar2[2]" (identifier "pbVar2") ([ "[") (number_literal "2") (] "]"))) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar2 = pbVar3;" (assignment_expression "pbVar2 = pbVar3" (identifier "pbVar2") (= "=") (identifier "pbVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 + 0x10 != pbVar3)" (( "(") (binary_expression "param_2 + 0x10 != pbVar3" (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) (!= "!=") (identifier "pbVar3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(void *handle,type_1 *var_3)

{
  type_2 *ctx;
  type_3 *var_2;
  type_4 *var_1;
  type_4 *var_4;
  
  var_2 = (type_3 *)((int)handle + 0x3c8);
  var_1 = var_3;
  do {
    var_4 = var_1 + 4;
    *var_2 = (type_3)*var_1 << 0x18 | (type_3)var_1[1] << 0x10 | (type_3)var_1[3] |
              (type_3)var_1[2] << 8;
    var_2 = var_2 + 1;
    var_1 = var_4;
  } while (var_3 + 0x10 != var_4);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (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: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (return_statement))))

void MASKED(int param_1,byte *param_2)

{
  uint *puVar1;
  byte *pbVar2;
  byte *pbVar3;
  
  puVar1 = (uint *)(param_1 + 0x3c8);
  pbVar2 = param_2;
  do {
    pbVar3 = pbVar2 + 4;
    *puVar1 = (uint)*pbVar2 << 0x18 | (uint)pbVar2[1] << 0x10 | (uint)pbVar2[3] |
              (uint)pbVar2[2] << 8;
    puVar1 = puVar1 + 1;
    pbVar2 = pbVar3;
  } while (param_2 + 0x10 != pbVar3);
  return;
}

