
/* WARNING: Unknown calling convention */

void cycle(ulong32 *R)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  ulong32 uVar4;
  ulong32 uVar5;
  
  uVar1 = *R;
  uVar2 = R[4];
  *R = R[1];
  uVar3 = Multab[uVar1 >> 0x18];
  R[1] = R[2];
  uVar4 = R[6];
  R[6] = R[7];
  uVar5 = R[4];
  R[4] = R[5];
  R[2] = R[3];
  R[3] = uVar5;
  R[5] = uVar4;
  R[7] = R[8];
  R[8] = R[9];
  R[9] = R[10];
  R[10] = R[0xb];
  R[0xb] = R[0xc];
  R[0xc] = R[0xd];
  R[0xd] = R[0xe];
  R[0xe] = R[0xf];
  uVar4 = R[0x10];
  R[0x10] = uVar2 ^ R[0xf] ^ uVar1 << 8 ^ uVar3;
  R[0xf] = uVar4;
  return;
}



void FUN_0018b210(uint *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  
  uVar1 = *param_1;
  uVar2 = param_1[4];
  *param_1 = param_1[1];
  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);
  param_1[1] = param_1[2];
  uVar4 = param_1[6];
  param_1[6] = param_1[7];
  uVar5 = param_1[4];
  param_1[4] = param_1[5];
  param_1[2] = param_1[3];
  param_1[3] = uVar5;
  param_1[5] = uVar4;
  param_1[7] = param_1[8];
  param_1[8] = param_1[9];
  param_1[9] = param_1[10];
  param_1[10] = param_1[0xb];
  param_1[0xb] = param_1[0xc];
  param_1[0xc] = param_1[0xd];
  param_1[0xd] = param_1[0xe];
  param_1[0xe] = param_1[0xf];
  uVar4 = param_1[0x10];
  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;
  param_1[0xf] = uVar4;
  return;
}


MOV EAX,dword ptr [RDI]
MOV ECX,dword ptr [RDI + 0x3c]
LEA R8,[0x1c7720]
MOV EDX,dword ptr [RDI + 0x10]
MOV R10D,dword ptr [RDI + 0x4]
MOV ESI,EAX
MOV R11D,dword ptr [RDI + 0x8]
SHR EAX,0x18
XOR EDX,ECX
SHL ESI,0x8
MOV dword ptr [RDI],R10D
MOV R10D,dword ptr [RDI + 0x1c]
XOR EDX,ESI
XOR EDX,dword ptr [R8 + RAX*0x4]
MOV ESI,dword ptr [RDI + 0x14]
MOV dword ptr [RDI + 0x4],R11D
MOV EAX,dword ptr [RDI + 0xc]
MOV R8D,dword ptr [RDI + 0x18]
MOV R9D,EDX
MOV dword ptr [RDI + 0x18],R10D
MOV EDX,dword ptr [RDI + 0x10]
MOV R11D,dword ptr [RDI + 0x20]
MOV dword ptr [RDI + 0x10],ESI
MOV R10D,dword ptr [RDI + 0x34]
MOV ESI,dword ptr [RDI + 0x2c]
MOV dword ptr [RDI + 0x8],EAX
MOV dword ptr [RDI + 0xc],EDX
MOV EAX,dword ptr [RDI + 0x24]
MOV EDX,dword ptr [RDI + 0x28]
MOV dword ptr [RDI + 0x14],R8D
MOV dword ptr [RDI + 0x1c],R11D
MOV R8D,dword ptr [RDI + 0x30]
MOV R11D,dword ptr [RDI + 0x38]
MOV dword ptr [RDI + 0x20],EAX
MOV dword ptr [RDI + 0x24],EDX
MOV dword ptr [RDI + 0x28],ESI
MOV dword ptr [RDI + 0x2c],R8D
MOV dword ptr [RDI + 0x30],R10D
MOV dword ptr [RDI + 0x34],R11D
MOV dword ptr [RDI + 0x38],ECX
MOV ECX,dword ptr [RDI + 0x40]
MOV dword ptr [RDI + 0x40],R9D
MOV dword ptr [RDI + 0x3c],ECX
RET
(translation_unit "void FUN_0018b210(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  uVar1 = *param_1;\n  uVar2 = param_1[4];\n  *param_1 = param_1[1];\n  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);\n  param_1[1] = param_1[2];\n  uVar4 = param_1[6];\n  param_1[6] = param_1[7];\n  uVar5 = param_1[4];\n  param_1[4] = param_1[5];\n  param_1[2] = param_1[3];\n  param_1[3] = uVar5;\n  param_1[5] = uVar4;\n  param_1[7] = param_1[8];\n  param_1[8] = param_1[9];\n  param_1[9] = param_1[10];\n  param_1[10] = param_1[0xb];\n  param_1[0xb] = param_1[0xc];\n  param_1[0xc] = param_1[0xd];\n  param_1[0xd] = param_1[0xe];\n  param_1[0xe] = param_1[0xf];\n  uVar4 = param_1[0x10];\n  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;\n  param_1[0xf] = uVar4;\n  return;\n}\n\n" (function_definition "void FUN_0018b210(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  uVar1 = *param_1;\n  uVar2 = param_1[4];\n  *param_1 = param_1[1];\n  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);\n  param_1[1] = param_1[2];\n  uVar4 = param_1[6];\n  param_1[6] = param_1[7];\n  uVar5 = param_1[4];\n  param_1[4] = param_1[5];\n  param_1[2] = param_1[3];\n  param_1[3] = uVar5;\n  param_1[5] = uVar4;\n  param_1[7] = param_1[8];\n  param_1[8] = param_1[9];\n  param_1[9] = param_1[10];\n  param_1[10] = param_1[0xb];\n  param_1[0xb] = param_1[0xc];\n  param_1[0xc] = param_1[0xd];\n  param_1[0xd] = param_1[0xe];\n  param_1[0xe] = param_1[0xf];\n  uVar4 = param_1[0x10];\n  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;\n  param_1[0xf] = uVar4;\n  return;\n}" primitive_type (function_declarator "FUN_0018b210(uint *param_1)" identifier (parameter_list "(uint *param_1)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  uVar1 = *param_1;\n  uVar2 = param_1[4];\n  *param_1 = param_1[1];\n  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);\n  param_1[1] = param_1[2];\n  uVar4 = param_1[6];\n  param_1[6] = param_1[7];\n  uVar5 = param_1[4];\n  param_1[4] = param_1[5];\n  param_1[2] = param_1[3];\n  param_1[3] = uVar5;\n  param_1[5] = uVar4;\n  param_1[7] = param_1[8];\n  param_1[8] = param_1[9];\n  param_1[9] = param_1[10];\n  param_1[10] = param_1[0xb];\n  param_1[0xb] = param_1[0xc];\n  param_1[0xc] = param_1[0xd];\n  param_1[0xd] = param_1[0xe];\n  param_1[0xe] = param_1[0xf];\n  uVar4 = param_1[0x10];\n  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;\n  param_1[0xf] = uVar4;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar2 = param_1[4];" (assignment_expression "uVar2 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = param_1[1];" (assignment_expression "*param_1 = param_1[1]" (pointer_expression "*param_1" * identifier) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);" (assignment_expression "uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" identifier = (pointer_expression "*(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" ( (binary_expression "&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4" (pointer_expression "&DAT_001c7720" & identifier) + (binary_expression "(ulong)(uVar1 >> 0x18) * 4" (call_expression "(ulong)(uVar1 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar1 >> 0x18)" ( (binary_expression "uVar1 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ;) (expression_statement "param_1[1] = param_1[2];" (assignment_expression "param_1[1] = param_1[2]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[6];" (assignment_expression "uVar4 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "param_1[6] = param_1[7];" (assignment_expression "param_1[6] = param_1[7]" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[4];" (assignment_expression "uVar5 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "param_1[4] = param_1[5];" (assignment_expression "param_1[4] = param_1[5]" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = param_1[3];" (assignment_expression "param_1[2] = param_1[3]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "param_1[3] = uVar5;" (assignment_expression "param_1[3] = uVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = uVar4;" (assignment_expression "param_1[5] = uVar4" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[7] = param_1[8];" (assignment_expression "param_1[7] = param_1[8]" (subscript_expression "param_1[7]" identifier [ number_literal ]) = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "param_1[8] = param_1[9];" (assignment_expression "param_1[8] = param_1[9]" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "param_1[9] = param_1[10];" (assignment_expression "param_1[9] = param_1[10]" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "param_1[10] = param_1[0xb];" (assignment_expression "param_1[10] = param_1[0xb]" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xb] = param_1[0xc];" (assignment_expression "param_1[0xb] = param_1[0xc]" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = param_1[0xd];" (assignment_expression "param_1[0xc] = param_1[0xd]" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xd] = param_1[0xe];" (assignment_expression "param_1[0xd] = param_1[0xe]" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xe] = param_1[0xf];" (assignment_expression "param_1[0xe] = param_1[0xf]" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[0x10];" (assignment_expression "uVar4 = param_1[0x10]" identifier = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;" (assignment_expression "param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = (binary_expression "uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3" (binary_expression "uVar2 ^ param_1[0xf] ^ uVar1 << 8" (binary_expression "uVar2 ^ param_1[0xf]" identifier ^ (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ^ (binary_expression "uVar1 << 8" identifier << number_literal)) ^ identifier)) ;) (expression_statement "param_1[0xf] = uVar4;" (assignment_expression "param_1[0xf] = uVar4" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nvoid cycle(ulong32 *R)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong32 uVar4;\n  ulong32 uVar5;\n  \n  uVar1 = *R;\n  uVar2 = R[4];\n  *R = R[1];\n  uVar3 = Multab[uVar1 >> 0x18];\n  R[1] = R[2];\n  uVar4 = R[6];\n  R[6] = R[7];\n  uVar5 = R[4];\n  R[4] = R[5];\n  R[2] = R[3];\n  R[3] = uVar5;\n  R[5] = uVar4;\n  R[7] = R[8];\n  R[8] = R[9];\n  R[9] = R[10];\n  R[10] = R[0xb];\n  R[0xb] = R[0xc];\n  R[0xc] = R[0xd];\n  R[0xd] = R[0xe];\n  R[0xe] = R[0xf];\n  uVar4 = R[0x10];\n  R[0x10] = uVar2 ^ R[0xf] ^ uVar1 << 8 ^ uVar3;\n  R[0xf] = uVar4;\n  return;\n}\n\n" comment (function_definition "void cycle(ulong32 *R)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong32 uVar4;\n  ulong32 uVar5;\n  \n  uVar1 = *R;\n  uVar2 = R[4];\n  *R = R[1];\n  uVar3 = Multab[uVar1 >> 0x18];\n  R[1] = R[2];\n  uVar4 = R[6];\n  R[6] = R[7];\n  uVar5 = R[4];\n  R[4] = R[5];\n  R[2] = R[3];\n  R[3] = uVar5;\n  R[5] = uVar4;\n  R[7] = R[8];\n  R[8] = R[9];\n  R[9] = R[10];\n  R[10] = R[0xb];\n  R[0xb] = R[0xc];\n  R[0xc] = R[0xd];\n  R[0xd] = R[0xe];\n  R[0xe] = R[0xf];\n  uVar4 = R[0x10];\n  R[0x10] = uVar2 ^ R[0xf] ^ uVar1 << 8 ^ uVar3;\n  R[0xf] = uVar4;\n  return;\n}" primitive_type (function_declarator "cycle(ulong32 *R)" identifier (parameter_list "(ulong32 *R)" ( (parameter_declaration "ulong32 *R" type_identifier (pointer_declarator "*R" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong32 uVar4;\n  ulong32 uVar5;\n  \n  uVar1 = *R;\n  uVar2 = R[4];\n  *R = R[1];\n  uVar3 = Multab[uVar1 >> 0x18];\n  R[1] = R[2];\n  uVar4 = R[6];\n  R[6] = R[7];\n  uVar5 = R[4];\n  R[4] = R[5];\n  R[2] = R[3];\n  R[3] = uVar5;\n  R[5] = uVar4;\n  R[7] = R[8];\n  R[8] = R[9];\n  R[9] = R[10];\n  R[10] = R[0xb];\n  R[0xb] = R[0xc];\n  R[0xc] = R[0xd];\n  R[0xd] = R[0xe];\n  R[0xe] = R[0xf];\n  uVar4 = R[0x10];\n  R[0x10] = uVar2 ^ R[0xf] ^ uVar1 << 8 ^ uVar3;\n  R[0xf] = uVar4;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong32 uVar4;" type_identifier identifier ;) (declaration "ulong32 uVar5;" type_identifier identifier ;) (expression_statement "uVar1 = *R;" (assignment_expression "uVar1 = *R" identifier = (pointer_expression "*R" * identifier)) ;) (expression_statement "uVar2 = R[4];" (assignment_expression "uVar2 = R[4]" identifier = (subscript_expression "R[4]" identifier [ number_literal ])) ;) (expression_statement "*R = R[1];" (assignment_expression "*R = R[1]" (pointer_expression "*R" * identifier) = (subscript_expression "R[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = Multab[uVar1 >> 0x18];" (assignment_expression "uVar3 = Multab[uVar1 >> 0x18]" identifier = (subscript_expression "Multab[uVar1 >> 0x18]" identifier [ (binary_expression "uVar1 >> 0x18" identifier >> number_literal) ])) ;) (expression_statement "R[1] = R[2];" (assignment_expression "R[1] = R[2]" (subscript_expression "R[1]" identifier [ number_literal ]) = (subscript_expression "R[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = R[6];" (assignment_expression "uVar4 = R[6]" identifier = (subscript_expression "R[6]" identifier [ number_literal ])) ;) (expression_statement "R[6] = R[7];" (assignment_expression "R[6] = R[7]" (subscript_expression "R[6]" identifier [ number_literal ]) = (subscript_expression "R[7]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = R[4];" (assignment_expression "uVar5 = R[4]" identifier = (subscript_expression "R[4]" identifier [ number_literal ])) ;) (expression_statement "R[4] = R[5];" (assignment_expression "R[4] = R[5]" (subscript_expression "R[4]" identifier [ number_literal ]) = (subscript_expression "R[5]" identifier [ number_literal ])) ;) (expression_statement "R[2] = R[3];" (assignment_expression "R[2] = R[3]" (subscript_expression "R[2]" identifier [ number_literal ]) = (subscript_expression "R[3]" identifier [ number_literal ])) ;) (expression_statement "R[3] = uVar5;" (assignment_expression "R[3] = uVar5" (subscript_expression "R[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "R[5] = uVar4;" (assignment_expression "R[5] = uVar4" (subscript_expression "R[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "R[7] = R[8];" (assignment_expression "R[7] = R[8]" (subscript_expression "R[7]" identifier [ number_literal ]) = (subscript_expression "R[8]" identifier [ number_literal ])) ;) (expression_statement "R[8] = R[9];" (assignment_expression "R[8] = R[9]" (subscript_expression "R[8]" identifier [ number_literal ]) = (subscript_expression "R[9]" identifier [ number_literal ])) ;) (expression_statement "R[9] = R[10];" (assignment_expression "R[9] = R[10]" (subscript_expression "R[9]" identifier [ number_literal ]) = (subscript_expression "R[10]" identifier [ number_literal ])) ;) (expression_statement "R[10] = R[0xb];" (assignment_expression "R[10] = R[0xb]" (subscript_expression "R[10]" identifier [ number_literal ]) = (subscript_expression "R[0xb]" identifier [ number_literal ])) ;) (expression_statement "R[0xb] = R[0xc];" (assignment_expression "R[0xb] = R[0xc]" (subscript_expression "R[0xb]" identifier [ number_literal ]) = (subscript_expression "R[0xc]" identifier [ number_literal ])) ;) (expression_statement "R[0xc] = R[0xd];" (assignment_expression "R[0xc] = R[0xd]" (subscript_expression "R[0xc]" identifier [ number_literal ]) = (subscript_expression "R[0xd]" identifier [ number_literal ])) ;) (expression_statement "R[0xd] = R[0xe];" (assignment_expression "R[0xd] = R[0xe]" (subscript_expression "R[0xd]" identifier [ number_literal ]) = (subscript_expression "R[0xe]" identifier [ number_literal ])) ;) (expression_statement "R[0xe] = R[0xf];" (assignment_expression "R[0xe] = R[0xf]" (subscript_expression "R[0xe]" identifier [ number_literal ]) = (subscript_expression "R[0xf]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = R[0x10];" (assignment_expression "uVar4 = R[0x10]" identifier = (subscript_expression "R[0x10]" identifier [ number_literal ])) ;) (expression_statement "R[0x10] = uVar2 ^ R[0xf] ^ uVar1 << 8 ^ uVar3;" (assignment_expression "R[0x10] = uVar2 ^ R[0xf] ^ uVar1 << 8 ^ uVar3" (subscript_expression "R[0x10]" identifier [ number_literal ]) = (binary_expression "uVar2 ^ R[0xf] ^ uVar1 << 8 ^ uVar3" (binary_expression "uVar2 ^ R[0xf] ^ uVar1 << 8" (binary_expression "uVar2 ^ R[0xf]" identifier ^ (subscript_expression "R[0xf]" identifier [ number_literal ])) ^ (binary_expression "uVar1 << 8" identifier << number_literal)) ^ identifier)) ;) (expression_statement "R[0xf] = uVar4;" (assignment_expression "R[0xf] = uVar4" (subscript_expression "R[0xf]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0018b210(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  uVar1 = *param_1;\n  uVar2 = param_1[4];\n  *param_1 = param_1[1];\n  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);\n  param_1[1] = param_1[2];\n  uVar4 = param_1[6];\n  param_1[6] = param_1[7];\n  uVar5 = param_1[4];\n  param_1[4] = param_1[5];\n  param_1[2] = param_1[3];\n  param_1[3] = uVar5;\n  param_1[5] = uVar4;\n  param_1[7] = param_1[8];\n  param_1[8] = param_1[9];\n  param_1[9] = param_1[10];\n  param_1[10] = param_1[0xb];\n  param_1[0xb] = param_1[0xc];\n  param_1[0xc] = param_1[0xd];\n  param_1[0xd] = param_1[0xe];\n  param_1[0xe] = param_1[0xf];\n  uVar4 = param_1[0x10];\n  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;\n  param_1[0xf] = uVar4;\n  return;\n}\n\n" (function_definition "void FUN_0018b210(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  uVar1 = *param_1;\n  uVar2 = param_1[4];\n  *param_1 = param_1[1];\n  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);\n  param_1[1] = param_1[2];\n  uVar4 = param_1[6];\n  param_1[6] = param_1[7];\n  uVar5 = param_1[4];\n  param_1[4] = param_1[5];\n  param_1[2] = param_1[3];\n  param_1[3] = uVar5;\n  param_1[5] = uVar4;\n  param_1[7] = param_1[8];\n  param_1[8] = param_1[9];\n  param_1[9] = param_1[10];\n  param_1[10] = param_1[0xb];\n  param_1[0xb] = param_1[0xc];\n  param_1[0xc] = param_1[0xd];\n  param_1[0xd] = param_1[0xe];\n  param_1[0xe] = param_1[0xf];\n  uVar4 = param_1[0x10];\n  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;\n  param_1[0xf] = uVar4;\n  return;\n}" primitive_type (function_declarator "FUN_0018b210(uint *param_1)" identifier (parameter_list "(uint *param_1)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  uVar1 = *param_1;\n  uVar2 = param_1[4];\n  *param_1 = param_1[1];\n  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);\n  param_1[1] = param_1[2];\n  uVar4 = param_1[6];\n  param_1[6] = param_1[7];\n  uVar5 = param_1[4];\n  param_1[4] = param_1[5];\n  param_1[2] = param_1[3];\n  param_1[3] = uVar5;\n  param_1[5] = uVar4;\n  param_1[7] = param_1[8];\n  param_1[8] = param_1[9];\n  param_1[9] = param_1[10];\n  param_1[10] = param_1[0xb];\n  param_1[0xb] = param_1[0xc];\n  param_1[0xc] = param_1[0xd];\n  param_1[0xd] = param_1[0xe];\n  param_1[0xe] = param_1[0xf];\n  uVar4 = param_1[0x10];\n  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;\n  param_1[0xf] = uVar4;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar2 = param_1[4];" (assignment_expression "uVar2 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = param_1[1];" (assignment_expression "*param_1 = param_1[1]" (pointer_expression "*param_1" * identifier) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);" (assignment_expression "uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" identifier = (pointer_expression "*(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" ( (binary_expression "&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4" (pointer_expression "&DAT_001c7720" & identifier) + (binary_expression "(ulong)(uVar1 >> 0x18) * 4" (call_expression "(ulong)(uVar1 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar1 >> 0x18)" ( (binary_expression "uVar1 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ;) (expression_statement "param_1[1] = param_1[2];" (assignment_expression "param_1[1] = param_1[2]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[6];" (assignment_expression "uVar4 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "param_1[6] = param_1[7];" (assignment_expression "param_1[6] = param_1[7]" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[4];" (assignment_expression "uVar5 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "param_1[4] = param_1[5];" (assignment_expression "param_1[4] = param_1[5]" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = param_1[3];" (assignment_expression "param_1[2] = param_1[3]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "param_1[3] = uVar5;" (assignment_expression "param_1[3] = uVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = uVar4;" (assignment_expression "param_1[5] = uVar4" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[7] = param_1[8];" (assignment_expression "param_1[7] = param_1[8]" (subscript_expression "param_1[7]" identifier [ number_literal ]) = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "param_1[8] = param_1[9];" (assignment_expression "param_1[8] = param_1[9]" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "param_1[9] = param_1[10];" (assignment_expression "param_1[9] = param_1[10]" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "param_1[10] = param_1[0xb];" (assignment_expression "param_1[10] = param_1[0xb]" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xb] = param_1[0xc];" (assignment_expression "param_1[0xb] = param_1[0xc]" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = param_1[0xd];" (assignment_expression "param_1[0xc] = param_1[0xd]" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xd] = param_1[0xe];" (assignment_expression "param_1[0xd] = param_1[0xe]" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xe] = param_1[0xf];" (assignment_expression "param_1[0xe] = param_1[0xf]" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[0x10];" (assignment_expression "uVar4 = param_1[0x10]" identifier = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;" (assignment_expression "param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = (binary_expression "uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3" (binary_expression "uVar2 ^ param_1[0xf] ^ uVar1 << 8" (binary_expression "uVar2 ^ param_1[0xf]" identifier ^ (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ^ (binary_expression "uVar1 << 8" identifier << number_literal)) ^ identifier)) ;) (expression_statement "param_1[0xf] = uVar4;" (assignment_expression "param_1[0xf] = uVar4" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ])) ^ (binary_expression IDENT << LIT)) ^ IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_0018b210(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  uVar1 = *param_1;\n  uVar2 = param_1[4];\n  *param_1 = param_1[1];\n  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);\n  param_1[1] = param_1[2];\n  uVar4 = param_1[6];\n  param_1[6] = param_1[7];\n  uVar5 = param_1[4];\n  param_1[4] = param_1[5];\n  param_1[2] = param_1[3];\n  param_1[3] = uVar5;\n  param_1[5] = uVar4;\n  param_1[7] = param_1[8];\n  param_1[8] = param_1[9];\n  param_1[9] = param_1[10];\n  param_1[10] = param_1[0xb];\n  param_1[0xb] = param_1[0xc];\n  param_1[0xc] = param_1[0xd];\n  param_1[0xd] = param_1[0xe];\n  param_1[0xe] = param_1[0xf];\n  uVar4 = param_1[0x10];\n  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;\n  param_1[0xf] = uVar4;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0018b210(uint *param_1)" (identifier "FUN_0018b210") (parameter_list "(uint *param_1)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  uVar1 = *param_1;\n  uVar2 = param_1[4];\n  *param_1 = param_1[1];\n  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);\n  param_1[1] = param_1[2];\n  uVar4 = param_1[6];\n  param_1[6] = param_1[7];\n  uVar5 = param_1[4];\n  param_1[4] = param_1[5];\n  param_1[2] = param_1[3];\n  param_1[3] = uVar5;\n  param_1[5] = uVar4;\n  param_1[7] = param_1[8];\n  param_1[8] = param_1[9];\n  param_1[9] = param_1[10];\n  param_1[10] = param_1[0xb];\n  param_1[0xb] = param_1[0xc];\n  param_1[0xc] = param_1[0xd];\n  param_1[0xd] = param_1[0xe];\n  param_1[0xe] = param_1[0xf];\n  uVar4 = param_1[0x10];\n  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;\n  param_1[0xf] = uVar4;\n  return;\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 "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar2 = param_1[4];" (assignment_expression "uVar2 = param_1[4]" (identifier "uVar2") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*param_1 = param_1[1];" (assignment_expression "*param_1 = param_1[1]" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);" (assignment_expression "uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4" (pointer_expression "&DAT_001c7720" (& "&") (identifier "DAT_001c7720")) (+ "+") (binary_expression "(ulong)(uVar1 >> 0x18) * 4" (call_expression "(ulong)(uVar1 >> 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar1 >> 0x18)" (( "(") (binary_expression "uVar1 >> 0x18" (identifier "uVar1") (>> ">>") (number_literal "0x18")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "param_1[1] = param_1[2];" (assignment_expression "param_1[1] = param_1[2]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar4 = param_1[6];" (assignment_expression "uVar4 = param_1[6]" (identifier "uVar4") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "param_1[6] = param_1[7];" (assignment_expression "param_1[6] = param_1[7]" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar5 = param_1[4];" (assignment_expression "uVar5 = param_1[4]" (identifier "uVar5") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "param_1[4] = param_1[5];" (assignment_expression "param_1[4] = param_1[5]" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "param_1[2] = param_1[3];" (assignment_expression "param_1[2] = param_1[3]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "param_1[3] = uVar5;" (assignment_expression "param_1[3] = uVar5" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "param_1[5] = uVar4;" (assignment_expression "param_1[5] = uVar4" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "param_1[7] = param_1[8];" (assignment_expression "param_1[7] = param_1[8]" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "param_1[8] = param_1[9];" (assignment_expression "param_1[8] = param_1[9]" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "param_1[9] = param_1[10];" (assignment_expression "param_1[9] = param_1[10]" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "param_1[10] = param_1[0xb];" (assignment_expression "param_1[10] = param_1[0xb]" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "param_1[0xb] = param_1[0xc];" (assignment_expression "param_1[0xb] = param_1[0xc]" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "param_1[0xc] = param_1[0xd];" (assignment_expression "param_1[0xc] = param_1[0xd]" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "param_1[0xd] = param_1[0xe];" (assignment_expression "param_1[0xd] = param_1[0xe]" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "param_1[0xe] = param_1[0xf];" (assignment_expression "param_1[0xe] = param_1[0xf]" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "uVar4 = param_1[0x10];" (assignment_expression "uVar4 = param_1[0x10]" (identifier "uVar4") (= "=") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;" (assignment_expression "param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (binary_expression "uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3" (binary_expression "uVar2 ^ param_1[0xf] ^ uVar1 << 8" (binary_expression "uVar2 ^ param_1[0xf]" (identifier "uVar2") (^ "^") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (^ "^") (binary_expression "uVar1 << 8" (identifier "uVar1") (<< "<<") (number_literal "8"))) (^ "^") (identifier "uVar3"))) (; ";")) (expression_statement "param_1[0xf] = uVar4;" (assignment_expression "param_1[0xf] = uVar4" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

void function_1(type_1 *R)

{
  type_2 var_1;
  type_2 var_2;
  type_2 var_3;
  type_1 uVar4;
  type_1 uVar5;
  
  var_1 = *R;
  var_2 = R[4];
  *R = R[1];
  var_3 = Multab[var_1 >> 0x18];
  R[1] = R[2];
  uVar4 = R[6];
  R[6] = R[7];
  uVar5 = R[4];
  R[4] = R[5];
  R[2] = R[3];
  R[3] = uVar5;
  R[5] = uVar4;
  R[7] = R[8];
  R[8] = R[9];
  R[9] = R[10];
  R[10] = R[0xb];
  R[0xb] = R[0xc];
  R[0xc] = R[0xd];
  R[0xd] = R[0xe];
  R[0xe] = R[0xf];
  uVar4 = R[0x10];
  R[0x10] = var_2 ^ R[0xf] ^ var_1 << 8 ^ var_3;
  R[0xf] = uVar4;
  return;
}


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

void MASKED(uint *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  
  uVar1 = *param_1;
  uVar2 = param_1[4];
  *param_1 = param_1[1];
  uVar3 = *(uint *)(&DAT_001c7720 + (ulong)(uVar1 >> 0x18) * 4);
  param_1[1] = param_1[2];
  uVar4 = param_1[6];
  param_1[6] = param_1[7];
  uVar5 = param_1[4];
  param_1[4] = param_1[5];
  param_1[2] = param_1[3];
  param_1[3] = uVar5;
  param_1[5] = uVar4;
  param_1[7] = param_1[8];
  param_1[8] = param_1[9];
  param_1[9] = param_1[10];
  param_1[10] = param_1[0xb];
  param_1[0xb] = param_1[0xc];
  param_1[0xc] = param_1[0xd];
  param_1[0xd] = param_1[0xe];
  param_1[0xe] = param_1[0xf];
  uVar4 = param_1[0x10];
  param_1[0x10] = uVar2 ^ param_1[0xf] ^ uVar1 << 8 ^ uVar3;
  param_1[0xf] = uVar4;
  return;
}

