
void des3_encrypt_pubkey_ossh(uchar *key,uchar *iv,uchar *blk,int len)

{
  long lVar1;
  long in_FS_OFFSET;
  DESContext ourkeys [3];
  
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  des_key_setup((uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8,
                (uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7] | (uint)key[6] << 8,
                ourkeys);
  des_key_setup((uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb] | (uint)key[10] << 8,
                (uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf] |
                (uint)key[0xe] << 8,ourkeys + 1);
  des_key_setup((uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13] |
                (uint)key[0x12] << 8,
                (uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17] |
                (uint)key[0x16] << 8,ourkeys + 2);
  ourkeys[0].iv0 = (uint)*iv << 0x18 | (uint)iv[1] << 0x10 | (uint)iv[3] | (uint)iv[2] << 8;
  ourkeys[0].iv1 = (uint)iv[4] << 0x18 | (uint)iv[5] << 0x10 | (uint)iv[7] | (uint)iv[6] << 8;
  des_cbc3_encrypt(blk,len,ourkeys);
  smemclr(ourkeys,0x198);
  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



void FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)

{
  long in_FS_OFFSET;
  undefined1 auStack_1d8 [128];
  uint local_158;
  uint local_154;
  undefined1 local_150 [136];
  undefined1 local_c8 [136];
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |
               (uint)param_1[2] << 8,
               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |
               (uint)param_1[6] << 8,auStack_1d8);
  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |
               (uint)param_1[10] << 8,
               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |
               (uint)param_1[0xe] << 8,local_150);
  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |
               (uint)param_1[0x12] << 8,
               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |
               (uint)param_1[0x16] << 8,local_c8);
  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |
              (uint)param_2[2] << 8;
  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |
              (uint)param_2[6] << 8;
  FUN_00136dde(param_3,param_4,auStack_1d8);
  FUN_0010f4fd(auStack_1d8,0x198);
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x1a8
MOV RBX,RDI
MOV R15,RSI
MOV R13,RDX
MOV R14D,ECX
MOV R12D,0x28
MOV RAX,qword ptr FS:[R12]
MOV qword ptr [RSP + 0x198],RAX
XOR EAX,EAX
MOV RBP,RSP
MOVZX ESI,byte ptr [RDI + 0x4]
SHL ESI,0x18
MOVZX EAX,byte ptr [RDI + 0x5]
SHL EAX,0x10
OR ESI,EAX
MOVZX EAX,byte ptr [RDI + 0x7]
OR ESI,EAX
MOVZX EAX,byte ptr [RDI + 0x6]
SHL EAX,0x8
OR ESI,EAX
MOVZX EDI,byte ptr [RDI]
SHL EDI,0x18
MOVZX EAX,byte ptr [RBX + 0x1]
SHL EAX,0x10
OR EDI,EAX
MOVZX EAX,byte ptr [RBX + 0x3]
OR EDI,EAX
MOVZX EAX,byte ptr [RBX + 0x2]
SHL EAX,0x8
OR EDI,EAX
MOV RDX,RBP
CALL 0x00135030
LEA RDX,[RBP + 0x88]
MOVZX ESI,byte ptr [RBX + 0xc]
SHL ESI,0x18
MOVZX EAX,byte ptr [RBX + 0xd]
SHL EAX,0x10
OR ESI,EAX
MOVZX EAX,byte ptr [RBX + 0xf]
OR ESI,EAX
MOVZX EAX,byte ptr [RBX + 0xe]
SHL EAX,0x8
OR ESI,EAX
MOVZX EDI,byte ptr [RBX + 0x8]
SHL EDI,0x18
MOVZX EAX,byte ptr [RBX + 0x9]
SHL EAX,0x10
OR EDI,EAX
MOVZX EAX,byte ptr [RBX + 0xb]
OR EDI,EAX
MOVZX EAX,byte ptr [RBX + 0xa]
SHL EAX,0x8
OR EDI,EAX
CALL 0x00135030
LEA RDX,[RBP + 0x110]
MOVZX ESI,byte ptr [RBX + 0x14]
SHL ESI,0x18
MOVZX EAX,byte ptr [RBX + 0x15]
SHL EAX,0x10
OR ESI,EAX
MOVZX EAX,byte ptr [RBX + 0x17]
OR ESI,EAX
MOVZX EAX,byte ptr [RBX + 0x16]
SHL EAX,0x8
OR ESI,EAX
MOVZX EDI,byte ptr [RBX + 0x10]
SHL EDI,0x18
MOVZX EAX,byte ptr [RBX + 0x11]
SHL EAX,0x10
OR EDI,EAX
MOVZX EAX,byte ptr [RBX + 0x13]
OR EDI,EAX
MOVZX EAX,byte ptr [RBX + 0x12]
SHL EAX,0x8
OR EDI,EAX
CALL 0x00135030
MOVZX EAX,byte ptr [R15]
SHL EAX,0x18
MOVZX EDX,byte ptr [R15 + 0x1]
SHL EDX,0x10
OR EAX,EDX
MOVZX EDX,byte ptr [R15 + 0x3]
OR EAX,EDX
MOVZX EDX,byte ptr [R15 + 0x2]
SHL EDX,0x8
OR EAX,EDX
MOV dword ptr [RSP + 0x80],EAX
MOVZX EAX,byte ptr [R15 + 0x4]
SHL EAX,0x18
MOVZX EDX,byte ptr [R15 + 0x5]
SHL EDX,0x10
OR EAX,EDX
MOVZX EDX,byte ptr [R15 + 0x7]
OR EAX,EDX
MOVZX EDX,byte ptr [R15 + 0x6]
SHL EDX,0x8
OR EAX,EDX
MOV dword ptr [RSP + 0x84],EAX
MOV RDX,RBP
MOV ESI,R14D
MOV RDI,R13
CALL 0x00136dde
MOV ESI,0x198
MOV RDI,RBP
CALL 0x0010f4fd
MOV RAX,qword ptr [RSP + 0x198]
XOR RAX,qword ptr FS:[R12]
JNZ 0x0013770e
ADD RSP,0x1a8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x00108280
(translation_unit "void FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [128];\n  uint local_158;\n  uint local_154;\n  undefined1 local_150 [136];\n  undefined1 local_c8 [136];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);\n  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);\n  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);\n  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;\n  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;\n  FUN_00136dde(param_3,param_4,auStack_1d8);\n  FUN_0010f4fd(auStack_1d8,0x198);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "void FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [128];\n  uint local_158;\n  uint local_154;\n  undefined1 local_150 [136];\n  undefined1 local_c8 [136];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);\n  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);\n  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);\n  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;\n  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;\n  FUN_00136dde(param_3,param_4,auStack_1d8);\n  FUN_0010f4fd(auStack_1d8,0x198);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)" identifier (parameter_list "(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [128];\n  uint local_158;\n  uint local_154;\n  undefined1 local_150 [136];\n  undefined1 local_c8 [136];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);\n  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);\n  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);\n  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;\n  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;\n  FUN_00136dde(param_3,param_4,auStack_1d8);\n  FUN_0010f4fd(auStack_1d8,0x198);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_1d8 [128];" type_identifier (array_declarator "auStack_1d8 [128]" identifier [ number_literal ]) ;) (declaration "uint local_158;" type_identifier identifier ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "undefined1 local_150 [136];" type_identifier (array_declarator "local_150 [136]" identifier [ number_literal ]) ;) (declaration "undefined1 local_c8 [136];" type_identifier (array_declarator "local_c8 [136]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);" (call_expression "FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8)" identifier (argument_list "((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8)" ( (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8" (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3]" (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10" (binary_expression "(uint)*param_1 << 0x18" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)param_1[1] << 0x10" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[2] << 8" (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8" (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7]" (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10" (binary_expression "(uint)param_1[4] << 0x18" (cast_expression "(uint)param_1[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[5] << 0x10" (cast_expression "(uint)param_1[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[5]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[6] << 8" (cast_expression "(uint)param_1[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) << number_literal)) , identifier ))) ;) (expression_statement "FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);" (call_expression "FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150)" identifier (argument_list "((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150)" ( (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8" (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb]" (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10" (binary_expression "(uint)param_1[8] << 0x18" (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[9] << 0x10" (cast_expression "(uint)param_1[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[9]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[10] << 8" (cast_expression "(uint)param_1[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8" (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf]" (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10" (binary_expression "(uint)param_1[0xc] << 0x18" (cast_expression "(uint)param_1[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[0xd] << 0x10" (cast_expression "(uint)param_1[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xd]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[0xf]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[0xe] << 8" (cast_expression "(uint)param_1[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ])) << number_literal)) , identifier ))) ;) (expression_statement "FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);" (call_expression "FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8)" identifier (argument_list "((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8)" ( (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8" (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13]" (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10" (binary_expression "(uint)param_1[0x10] << 0x18" (cast_expression "(uint)param_1[0x10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x10]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[0x11] << 0x10" (cast_expression "(uint)param_1[0x11]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x13]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[0x12] << 8" (cast_expression "(uint)param_1[0x12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x12]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8" (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17]" (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10" (binary_expression "(uint)param_1[0x14] << 0x18" (cast_expression "(uint)param_1[0x14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x14]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[0x15] << 0x10" (cast_expression "(uint)param_1[0x15]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x15]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[0x17]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x17]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[0x16] << 8" (cast_expression "(uint)param_1[0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x16]" identifier [ number_literal ])) << number_literal)) , identifier ))) ;) (expression_statement "local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;" (assignment_expression "local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8" identifier = (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8" (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3]" (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10" (binary_expression "(uint)*param_2 << 0x18" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)param_2[1] << 0x10" (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_2[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) | (binary_expression "(uint)param_2[2] << 8" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;" (assignment_expression "local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8" identifier = (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8" (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7]" (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10" (binary_expression "(uint)param_2[4] << 0x18" (cast_expression "(uint)param_2[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[4]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_2[5] << 0x10" (cast_expression "(uint)param_2[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[5]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_2[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[7]" identifier [ number_literal ]))) | (binary_expression "(uint)param_2[6] << 8" (cast_expression "(uint)param_2[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[6]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "FUN_00136dde(param_3,param_4,auStack_1d8);" (call_expression "FUN_00136dde(param_3,param_4,auStack_1d8)" identifier (argument_list "(param_3,param_4,auStack_1d8)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0010f4fd(auStack_1d8,0x198);" (call_expression "FUN_0010f4fd(auStack_1d8,0x198)" identifier (argument_list "(auStack_1d8,0x198)" ( identifier , number_literal ))) ;) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void des3_encrypt_pubkey_ossh(uchar *key,uchar *iv,uchar *blk,int len)\n\n{\n  long lVar1;\n  long in_FS_OFFSET;\n  DESContext ourkeys [3];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  des_key_setup((uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8,\n                (uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7] | (uint)key[6] << 8,\n                ourkeys);\n  des_key_setup((uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb] | (uint)key[10] << 8,\n                (uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf] |\n                (uint)key[0xe] << 8,ourkeys + 1);\n  des_key_setup((uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13] |\n                (uint)key[0x12] << 8,\n                (uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17] |\n                (uint)key[0x16] << 8,ourkeys + 2);\n  ourkeys[0].iv0 = (uint)*iv << 0x18 | (uint)iv[1] << 0x10 | (uint)iv[3] | (uint)iv[2] << 8;\n  ourkeys[0].iv1 = (uint)iv[4] << 0x18 | (uint)iv[5] << 0x10 | (uint)iv[7] | (uint)iv[6] << 8;\n  des_cbc3_encrypt(blk,len,ourkeys);\n  smemclr(ourkeys,0x198);\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "void des3_encrypt_pubkey_ossh(uchar *key,uchar *iv,uchar *blk,int len)\n\n{\n  long lVar1;\n  long in_FS_OFFSET;\n  DESContext ourkeys [3];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  des_key_setup((uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8,\n                (uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7] | (uint)key[6] << 8,\n                ourkeys);\n  des_key_setup((uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb] | (uint)key[10] << 8,\n                (uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf] |\n                (uint)key[0xe] << 8,ourkeys + 1);\n  des_key_setup((uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13] |\n                (uint)key[0x12] << 8,\n                (uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17] |\n                (uint)key[0x16] << 8,ourkeys + 2);\n  ourkeys[0].iv0 = (uint)*iv << 0x18 | (uint)iv[1] << 0x10 | (uint)iv[3] | (uint)iv[2] << 8;\n  ourkeys[0].iv1 = (uint)iv[4] << 0x18 | (uint)iv[5] << 0x10 | (uint)iv[7] | (uint)iv[6] << 8;\n  des_cbc3_encrypt(blk,len,ourkeys);\n  smemclr(ourkeys,0x198);\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "des3_encrypt_pubkey_ossh(uchar *key,uchar *iv,uchar *blk,int len)" identifier (parameter_list "(uchar *key,uchar *iv,uchar *blk,int len)" ( (parameter_declaration "uchar *key" type_identifier (pointer_declarator "*key" * identifier)) , (parameter_declaration "uchar *iv" type_identifier (pointer_declarator "*iv" * identifier)) , (parameter_declaration "uchar *blk" type_identifier (pointer_declarator "*blk" * identifier)) , (parameter_declaration "int len" primitive_type identifier) ))) (compound_statement "{\n  long lVar1;\n  long in_FS_OFFSET;\n  DESContext ourkeys [3];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  des_key_setup((uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8,\n                (uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7] | (uint)key[6] << 8,\n                ourkeys);\n  des_key_setup((uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb] | (uint)key[10] << 8,\n                (uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf] |\n                (uint)key[0xe] << 8,ourkeys + 1);\n  des_key_setup((uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13] |\n                (uint)key[0x12] << 8,\n                (uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17] |\n                (uint)key[0x16] << 8,ourkeys + 2);\n  ourkeys[0].iv0 = (uint)*iv << 0x18 | (uint)iv[1] << 0x10 | (uint)iv[3] | (uint)iv[2] << 8;\n  ourkeys[0].iv1 = (uint)iv[4] << 0x18 | (uint)iv[5] << 0x10 | (uint)iv[7] | (uint)iv[6] << 8;\n  des_cbc3_encrypt(blk,len,ourkeys);\n  smemclr(ourkeys,0x198);\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "DESContext ourkeys [3];" type_identifier (array_declarator "ourkeys [3]" identifier [ number_literal ]) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "des_key_setup((uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8,\n                (uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7] | (uint)key[6] << 8,\n                ourkeys);" (call_expression "des_key_setup((uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8,\n                (uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7] | (uint)key[6] << 8,\n                ourkeys)" identifier (argument_list "((uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8,\n                (uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7] | (uint)key[6] << 8,\n                ourkeys)" ( (binary_expression "(uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8" (binary_expression "(uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3]" (binary_expression "(uint)*key << 0x18 | (uint)key[1] << 0x10" (binary_expression "(uint)*key << 0x18" (binary_expression "(uint)*key" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)key[1] << 0x10" (cast_expression "(uint)key[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)key[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[3]" identifier [ number_literal ]))) | (binary_expression "(uint)key[2] << 8" (cast_expression "(uint)key[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[2]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7] | (uint)key[6] << 8" (binary_expression "(uint)key[4] << 0x18 | (uint)key[5] << 0x10 | (uint)key[7]" (binary_expression "(uint)key[4] << 0x18 | (uint)key[5] << 0x10" (binary_expression "(uint)key[4] << 0x18" (cast_expression "(uint)key[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[4]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)key[5] << 0x10" (cast_expression "(uint)key[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[5]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)key[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[7]" identifier [ number_literal ]))) | (binary_expression "(uint)key[6] << 8" (cast_expression "(uint)key[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[6]" identifier [ number_literal ])) << number_literal)) , identifier ))) ;) (expression_statement "des_key_setup((uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb] | (uint)key[10] << 8,\n                (uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf] |\n                (uint)key[0xe] << 8,ourkeys + 1);" (call_expression "des_key_setup((uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb] | (uint)key[10] << 8,\n                (uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf] |\n                (uint)key[0xe] << 8,ourkeys + 1)" identifier (argument_list "((uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb] | (uint)key[10] << 8,\n                (uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf] |\n                (uint)key[0xe] << 8,ourkeys + 1)" ( (binary_expression "(uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb] | (uint)key[10] << 8" (binary_expression "(uint)key[8] << 0x18 | (uint)key[9] << 0x10 | (uint)key[0xb]" (binary_expression "(uint)key[8] << 0x18 | (uint)key[9] << 0x10" (binary_expression "(uint)key[8] << 0x18" (cast_expression "(uint)key[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[8]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)key[9] << 0x10" (cast_expression "(uint)key[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[9]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)key[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0xb]" identifier [ number_literal ]))) | (binary_expression "(uint)key[10] << 8" (cast_expression "(uint)key[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[10]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf] |\n                (uint)key[0xe] << 8" (binary_expression "(uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10 | (uint)key[0xf]" (binary_expression "(uint)key[0xc] << 0x18 | (uint)key[0xd] << 0x10" (binary_expression "(uint)key[0xc] << 0x18" (cast_expression "(uint)key[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0xc]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)key[0xd] << 0x10" (cast_expression "(uint)key[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0xd]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)key[0xf]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0xf]" identifier [ number_literal ]))) | (binary_expression "(uint)key[0xe] << 8" (cast_expression "(uint)key[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0xe]" identifier [ number_literal ])) << number_literal)) , (binary_expression "ourkeys + 1" identifier + number_literal) ))) ;) (expression_statement "des_key_setup((uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13] |\n                (uint)key[0x12] << 8,\n                (uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17] |\n                (uint)key[0x16] << 8,ourkeys + 2);" (call_expression "des_key_setup((uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13] |\n                (uint)key[0x12] << 8,\n                (uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17] |\n                (uint)key[0x16] << 8,ourkeys + 2)" identifier (argument_list "((uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13] |\n                (uint)key[0x12] << 8,\n                (uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17] |\n                (uint)key[0x16] << 8,ourkeys + 2)" ( (binary_expression "(uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13] |\n                (uint)key[0x12] << 8" (binary_expression "(uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10 | (uint)key[0x13]" (binary_expression "(uint)key[0x10] << 0x18 | (uint)key[0x11] << 0x10" (binary_expression "(uint)key[0x10] << 0x18" (cast_expression "(uint)key[0x10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0x10]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)key[0x11] << 0x10" (cast_expression "(uint)key[0x11]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0x11]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)key[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0x13]" identifier [ number_literal ]))) | (binary_expression "(uint)key[0x12] << 8" (cast_expression "(uint)key[0x12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0x12]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17] |\n                (uint)key[0x16] << 8" (binary_expression "(uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10 | (uint)key[0x17]" (binary_expression "(uint)key[0x14] << 0x18 | (uint)key[0x15] << 0x10" (binary_expression "(uint)key[0x14] << 0x18" (cast_expression "(uint)key[0x14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0x14]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)key[0x15] << 0x10" (cast_expression "(uint)key[0x15]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0x15]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)key[0x17]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0x17]" identifier [ number_literal ]))) | (binary_expression "(uint)key[0x16] << 8" (cast_expression "(uint)key[0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[0x16]" identifier [ number_literal ])) << number_literal)) , (binary_expression "ourkeys + 2" identifier + number_literal) ))) ;) (expression_statement "ourkeys[0].iv0 = (uint)*iv << 0x18 | (uint)iv[1] << 0x10 | (uint)iv[3] | (uint)iv[2] << 8;" (assignment_expression "ourkeys[0].iv0 = (uint)*iv << 0x18 | (uint)iv[1] << 0x10 | (uint)iv[3] | (uint)iv[2] << 8" (field_expression "ourkeys[0].iv0" (subscript_expression "ourkeys[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "(uint)*iv << 0x18 | (uint)iv[1] << 0x10 | (uint)iv[3] | (uint)iv[2] << 8" (binary_expression "(uint)*iv << 0x18 | (uint)iv[1] << 0x10 | (uint)iv[3]" (binary_expression "(uint)*iv << 0x18 | (uint)iv[1] << 0x10" (binary_expression "(uint)*iv << 0x18" (binary_expression "(uint)*iv" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)iv[1] << 0x10" (cast_expression "(uint)iv[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "iv[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)iv[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "iv[3]" identifier [ number_literal ]))) | (binary_expression "(uint)iv[2] << 8" (cast_expression "(uint)iv[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "iv[2]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "ourkeys[0].iv1 = (uint)iv[4] << 0x18 | (uint)iv[5] << 0x10 | (uint)iv[7] | (uint)iv[6] << 8;" (assignment_expression "ourkeys[0].iv1 = (uint)iv[4] << 0x18 | (uint)iv[5] << 0x10 | (uint)iv[7] | (uint)iv[6] << 8" (field_expression "ourkeys[0].iv1" (subscript_expression "ourkeys[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "(uint)iv[4] << 0x18 | (uint)iv[5] << 0x10 | (uint)iv[7] | (uint)iv[6] << 8" (binary_expression "(uint)iv[4] << 0x18 | (uint)iv[5] << 0x10 | (uint)iv[7]" (binary_expression "(uint)iv[4] << 0x18 | (uint)iv[5] << 0x10" (binary_expression "(uint)iv[4] << 0x18" (cast_expression "(uint)iv[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "iv[4]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)iv[5] << 0x10" (cast_expression "(uint)iv[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "iv[5]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)iv[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "iv[7]" identifier [ number_literal ]))) | (binary_expression "(uint)iv[6] << 8" (cast_expression "(uint)iv[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "iv[6]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "des_cbc3_encrypt(blk,len,ourkeys);" (call_expression "des_cbc3_encrypt(blk,len,ourkeys)" identifier (argument_list "(blk,len,ourkeys)" ( identifier , identifier , identifier ))) ;) (expression_statement "smemclr(ourkeys,0x198);" (call_expression "smemclr(ourkeys,0x198)" identifier (argument_list "(ourkeys,0x198)" ( identifier , number_literal ))) ;) (if_statement "if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(lVar1 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [128];\n  uint local_158;\n  uint local_154;\n  undefined1 local_150 [136];\n  undefined1 local_c8 [136];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);\n  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);\n  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);\n  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;\n  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;\n  FUN_00136dde(param_3,param_4,auStack_1d8);\n  FUN_0010f4fd(auStack_1d8,0x198);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "void FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [128];\n  uint local_158;\n  uint local_154;\n  undefined1 local_150 [136];\n  undefined1 local_c8 [136];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);\n  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);\n  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);\n  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;\n  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;\n  FUN_00136dde(param_3,param_4,auStack_1d8);\n  FUN_0010f4fd(auStack_1d8,0x198);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)" identifier (parameter_list "(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [128];\n  uint local_158;\n  uint local_154;\n  undefined1 local_150 [136];\n  undefined1 local_c8 [136];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);\n  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);\n  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);\n  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;\n  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;\n  FUN_00136dde(param_3,param_4,auStack_1d8);\n  FUN_0010f4fd(auStack_1d8,0x198);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_1d8 [128];" type_identifier (array_declarator "auStack_1d8 [128]" identifier [ number_literal ]) ;) (declaration "uint local_158;" type_identifier identifier ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "undefined1 local_150 [136];" type_identifier (array_declarator "local_150 [136]" identifier [ number_literal ]) ;) (declaration "undefined1 local_c8 [136];" type_identifier (array_declarator "local_c8 [136]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);" (call_expression "FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8)" identifier (argument_list "((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8)" ( (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8" (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3]" (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10" (binary_expression "(uint)*param_1 << 0x18" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)param_1[1] << 0x10" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[2] << 8" (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8" (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7]" (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10" (binary_expression "(uint)param_1[4] << 0x18" (cast_expression "(uint)param_1[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[5] << 0x10" (cast_expression "(uint)param_1[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[5]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[6] << 8" (cast_expression "(uint)param_1[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) << number_literal)) , identifier ))) ;) (expression_statement "FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);" (call_expression "FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150)" identifier (argument_list "((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150)" ( (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8" (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb]" (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10" (binary_expression "(uint)param_1[8] << 0x18" (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[9] << 0x10" (cast_expression "(uint)param_1[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[9]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[10] << 8" (cast_expression "(uint)param_1[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8" (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf]" (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10" (binary_expression "(uint)param_1[0xc] << 0x18" (cast_expression "(uint)param_1[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[0xd] << 0x10" (cast_expression "(uint)param_1[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xd]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[0xf]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[0xe] << 8" (cast_expression "(uint)param_1[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ])) << number_literal)) , identifier ))) ;) (expression_statement "FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);" (call_expression "FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8)" identifier (argument_list "((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8)" ( (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8" (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13]" (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10" (binary_expression "(uint)param_1[0x10] << 0x18" (cast_expression "(uint)param_1[0x10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x10]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[0x11] << 0x10" (cast_expression "(uint)param_1[0x11]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x13]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[0x12] << 8" (cast_expression "(uint)param_1[0x12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x12]" identifier [ number_literal ])) << number_literal)) , (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8" (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17]" (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10" (binary_expression "(uint)param_1[0x14] << 0x18" (cast_expression "(uint)param_1[0x14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x14]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_1[0x15] << 0x10" (cast_expression "(uint)param_1[0x15]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x15]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_1[0x17]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x17]" identifier [ number_literal ]))) | (binary_expression "(uint)param_1[0x16] << 8" (cast_expression "(uint)param_1[0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x16]" identifier [ number_literal ])) << number_literal)) , identifier ))) ;) (expression_statement "local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;" (assignment_expression "local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8" identifier = (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8" (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3]" (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10" (binary_expression "(uint)*param_2 << 0x18" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)param_2[1] << 0x10" (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_2[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) | (binary_expression "(uint)param_2[2] << 8" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;" (assignment_expression "local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8" identifier = (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8" (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7]" (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10" (binary_expression "(uint)param_2[4] << 0x18" (cast_expression "(uint)param_2[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[4]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)param_2[5] << 0x10" (cast_expression "(uint)param_2[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[5]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_2[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[7]" identifier [ number_literal ]))) | (binary_expression "(uint)param_2[6] << 8" (cast_expression "(uint)param_2[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[6]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "FUN_00136dde(param_3,param_4,auStack_1d8);" (call_expression "FUN_00136dde(param_3,param_4,auStack_1d8)" identifier (argument_list "(param_3,param_4,auStack_1d8)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0010f4fd(auStack_1d8,0x198);" (call_expression "FUN_0010f4fd(auStack_1d8,0x198)" identifier (argument_list "(auStack_1d8,0x198)" ( identifier , number_literal ))) ;) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (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)) , (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << 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)) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << 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)) , (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << 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)) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << 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)) , (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << 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)) , IDENT ))) ;) (expression_statement (assignment_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 (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << 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 (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [128];\n  uint local_158;\n  uint local_154;\n  undefined1 local_150 [136];\n  undefined1 local_c8 [136];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);\n  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);\n  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);\n  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;\n  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;\n  FUN_00136dde(param_3,param_4,auStack_1d8);\n  FUN_0010f4fd(auStack_1d8,0x198);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" (primitive_type "void") (function_declarator "FUN_00137571(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)" (identifier "FUN_00137571") (parameter_list "(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [128];\n  uint local_158;\n  uint local_154;\n  undefined1 local_150 [136];\n  undefined1 local_c8 [136];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);\n  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);\n  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);\n  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;\n  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;\n  FUN_00136dde(param_3,param_4,auStack_1d8);\n  FUN_0010f4fd(auStack_1d8,0x198);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined1 auStack_1d8 [128];" (type_identifier "undefined1") (array_declarator "auStack_1d8 [128]" (identifier "auStack_1d8") ([ "[") (number_literal "128") (] "]")) (; ";")) (declaration "uint local_158;" (type_identifier "uint") (identifier "local_158") (; ";")) (declaration "uint local_154;" (type_identifier "uint") (identifier "local_154") (; ";")) (declaration "undefined1 local_150 [136];" (type_identifier "undefined1") (array_declarator "local_150 [136]" (identifier "local_150") ([ "[") (number_literal "136") (] "]")) (; ";")) (declaration "undefined1 local_c8 [136];" (type_identifier "undefined1") (array_declarator "local_c8 [136]" (identifier "local_c8") ([ "[") (number_literal "136") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8);" (call_expression "FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8)" (identifier "FUN_00135030") (argument_list "((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8,\n               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8,auStack_1d8)" (( "(") (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |\n               (uint)param_1[2] << 8" (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3]" (binary_expression "(uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10" (binary_expression "(uint)*param_1 << 0x18" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_1[1] << 0x10" (cast_expression "(uint)param_1[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_1[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (| "|") (binary_expression "(uint)param_1[2] << 8" (cast_expression "(uint)param_1[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (<< "<<") (number_literal "8"))) (, ",") (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |\n               (uint)param_1[6] << 8" (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7]" (binary_expression "(uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10" (binary_expression "(uint)param_1[4] << 0x18" (cast_expression "(uint)param_1[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_1[5] << 0x10" (cast_expression "(uint)param_1[5]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_1[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (| "|") (binary_expression "(uint)param_1[6] << 8" (cast_expression "(uint)param_1[6]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (<< "<<") (number_literal "8"))) (, ",") (identifier "auStack_1d8") () ")"))) (; ";")) (expression_statement "FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150);" (call_expression "FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150)" (identifier "FUN_00135030") (argument_list "((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8,\n               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8,local_150)" (( "(") (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |\n               (uint)param_1[10] << 8" (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb]" (binary_expression "(uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10" (binary_expression "(uint)param_1[8] << 0x18" (cast_expression "(uint)param_1[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_1[9] << 0x10" (cast_expression "(uint)param_1[9]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_1[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (| "|") (binary_expression "(uint)param_1[10] << 8" (cast_expression "(uint)param_1[10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (<< "<<") (number_literal "8"))) (, ",") (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |\n               (uint)param_1[0xe] << 8" (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf]" (binary_expression "(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10" (binary_expression "(uint)param_1[0xc] << 0x18" (cast_expression "(uint)param_1[0xc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_1[0xd] << 0x10" (cast_expression "(uint)param_1[0xd]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_1[0xf]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")))) (| "|") (binary_expression "(uint)param_1[0xe] << 8" (cast_expression "(uint)param_1[0xe]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (<< "<<") (number_literal "8"))) (, ",") (identifier "local_150") () ")"))) (; ";")) (expression_statement "FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8);" (call_expression "FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8)" (identifier "FUN_00135030") (argument_list "((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8,\n               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8,local_c8)" (( "(") (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |\n               (uint)param_1[0x12] << 8" (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13]" (binary_expression "(uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10" (binary_expression "(uint)param_1[0x10] << 0x18" (cast_expression "(uint)param_1[0x10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_1[0x11] << 0x10" (cast_expression "(uint)param_1[0x11]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_1[0x13]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x13]" (identifier "param_1") ([ "[") (number_literal "0x13") (] "]")))) (| "|") (binary_expression "(uint)param_1[0x12] << 8" (cast_expression "(uint)param_1[0x12]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]"))) (<< "<<") (number_literal "8"))) (, ",") (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |\n               (uint)param_1[0x16] << 8" (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17]" (binary_expression "(uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10" (binary_expression "(uint)param_1[0x14] << 0x18" (cast_expression "(uint)param_1[0x14]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_1[0x15] << 0x10" (cast_expression "(uint)param_1[0x15]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_1[0x17]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")))) (| "|") (binary_expression "(uint)param_1[0x16] << 8" (cast_expression "(uint)param_1[0x16]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]"))) (<< "<<") (number_literal "8"))) (, ",") (identifier "local_c8") () ")"))) (; ";")) (expression_statement "local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8;" (assignment_expression "local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8" (identifier "local_158") (= "=") (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |\n              (uint)param_2[2] << 8" (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3]" (binary_expression "(uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10" (binary_expression "(uint)*param_2 << 0x18" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_2")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_2[1] << 0x10" (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_2[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) (| "|") (binary_expression "(uint)param_2[2] << 8" (cast_expression "(uint)param_2[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8;" (assignment_expression "local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8" (identifier "local_154") (= "=") (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |\n              (uint)param_2[6] << 8" (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7]" (binary_expression "(uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10" (binary_expression "(uint)param_2[4] << 0x18" (cast_expression "(uint)param_2[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_2[5] << 0x10" (cast_expression "(uint)param_2[5]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_2[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")))) (| "|") (binary_expression "(uint)param_2[6] << 8" (cast_expression "(uint)param_2[6]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "FUN_00136dde(param_3,param_4,auStack_1d8);" (call_expression "FUN_00136dde(param_3,param_4,auStack_1d8)" (identifier "FUN_00136dde") (argument_list "(param_3,param_4,auStack_1d8)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "auStack_1d8") () ")"))) (; ";")) (expression_statement "FUN_0010f4fd(auStack_1d8,0x198);" (call_expression "FUN_0010f4fd(auStack_1d8,0x198)" (identifier "FUN_0010f4fd") (argument_list "(auStack_1d8,0x198)" (( "(") (identifier "auStack_1d8") (, ",") (number_literal "0x198") () ")"))) (; ";")) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

void function_1(type_1 *var_3,type_1 *var_5,type_1 *blk,int len)

{
  long var_8;
  long var_1;
  type_2 var_4 [3];
  
  var_8 = *(long *)(var_1 + 0x28);
  var_2((type_3)*var_3 << 0x18 | (type_3)var_3[1] << 0x10 | (type_3)var_3[3] | (type_3)var_3[2] << 8,
                (type_3)var_3[4] << 0x18 | (type_3)var_3[5] << 0x10 | (type_3)var_3[7] | (type_3)var_3[6] << 8,
                var_4);
  var_2((type_3)var_3[8] << 0x18 | (type_3)var_3[9] << 0x10 | (type_3)var_3[0xb] | (type_3)var_3[10] << 8,
                (type_3)var_3[0xc] << 0x18 | (type_3)var_3[0xd] << 0x10 | (type_3)var_3[0xf] |
                (type_3)var_3[0xe] << 8,var_4 + 1);
  var_2((type_3)var_3[0x10] << 0x18 | (type_3)var_3[0x11] << 0x10 | (type_3)var_3[0x13] |
                (type_3)var_3[0x12] << 8,
                (type_3)var_3[0x14] << 0x18 | (type_3)var_3[0x15] << 0x10 | (type_3)var_3[0x17] |
                (type_3)var_3[0x16] << 8,var_4 + 2);
  var_4[0].iv0 = (type_3)*var_5 << 0x18 | (type_3)var_5[1] << 0x10 | (type_3)var_5[3] | (type_3)var_5[2] << 8;
  var_4[0].iv1 = (type_3)var_5[4] << 0x18 | (type_3)var_5[5] << 0x10 | (type_3)var_5[7] | (type_3)var_5[6] << 8;
  var_6(blk,len,var_4);
  var_7(var_4,0x198);
  if (var_8 == *(long *)(var_1 + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_9();
}


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

void MASKED(byte *param_1,byte *param_2,undefined8 param_3,undefined4 param_4)

{
  long in_FS_OFFSET;
  undefined1 auStack_1d8 [128];
  uint local_158;
  uint local_154;
  undefined1 local_150 [136];
  undefined1 local_c8 [136];
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  FUN_00135030((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[3] |
               (uint)param_1[2] << 8,
               (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[7] |
               (uint)param_1[6] << 8,auStack_1d8);
  FUN_00135030((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[0xb] |
               (uint)param_1[10] << 8,
               (uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10 | (uint)param_1[0xf] |
               (uint)param_1[0xe] << 8,local_150);
  FUN_00135030((uint)param_1[0x10] << 0x18 | (uint)param_1[0x11] << 0x10 | (uint)param_1[0x13] |
               (uint)param_1[0x12] << 8,
               (uint)param_1[0x14] << 0x18 | (uint)param_1[0x15] << 0x10 | (uint)param_1[0x17] |
               (uint)param_1[0x16] << 8,local_c8);
  local_158 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[3] |
              (uint)param_2[2] << 8;
  local_154 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[7] |
              (uint)param_2[6] << 8;
  FUN_00136dde(param_3,param_4,auStack_1d8);
  FUN_0010f4fd(auStack_1d8,0x198);
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

