
void _nettle_write_be32(size_t length,uint8_t *dst,uint32_t *src)

{
  uint32_t *puVar1;
  uint32_t uVar2;
  uint uVar3;
  uint8_t *puVar4;
  uint8_t *puVar5;
  uint8_t *puVar6;
  uint uVar7;
  
  uVar7 = length >> 2;
  uVar3 = length & 3;
  if (uVar7 != 0) {
    puVar6 = dst + uVar7 * 4;
    puVar1 = src;
    puVar4 = dst;
    do {
      puVar5 = puVar4 + 4;
      *puVar4 = *(uint8_t *)puVar1;
      puVar4[1] = (uint8_t)*(undefined2 *)puVar1;
      puVar4[2] = (uint8_t)(*puVar1 >> 8);
      puVar4[3] = (uint8_t)*puVar1;
      puVar1 = puVar1 + 1;
      puVar4 = puVar5;
      dst = puVar6;
    } while (puVar5 != puVar6);
  }
  if (uVar3 == 0) {
    return;
  }
  uVar2 = src[uVar7];
  if (uVar3 != 2) {
    if (uVar3 != 3) goto LAB_000294a0;
    dst[2] = (uint8_t)(uVar2 >> 8);
  }
  dst[1] = (uint8_t)(uVar2 >> 0x10);
LAB_000294a0:
  *dst = (uint8_t)(uVar2 >> 0x18);
  return;
}



void FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined1 *puVar3;
  undefined1 *puVar4;
  undefined1 *puVar5;
  uint uVar6;
  
  uVar6 = param_1 >> 2;
  param_1 = param_1 & 3;
  if (uVar6 != 0) {
    puVar5 = param_2 + uVar6 * 4;
    puVar1 = param_3;
    puVar3 = param_2;
    do {
      puVar4 = puVar3 + 4;
      *puVar3 = *(undefined1 *)puVar1;
      puVar3[1] = (char)*(undefined2 *)puVar1;
      puVar3[2] = (char)((uint)*puVar1 >> 8);
      puVar3[3] = (char)*puVar1;
      puVar1 = puVar1 + 1;
      puVar3 = puVar4;
      param_2 = puVar5;
    } while (puVar4 != puVar5);
  }
  if (param_1 == 0) {
    return;
  }
  uVar2 = param_3[uVar6];
  if (param_1 != 2) {
    if (param_1 != 3) goto LAB_000294a0;
    param_2[2] = (char)((uint)uVar2 >> 8);
  }
  param_2[1] = (char)((uint)uVar2 >> 0x10);
LAB_000294a0:
  *param_2 = (char)((uint)uVar2 >> 0x18);
  return;
}


srl t0,a0,0x2
beq t0,zero,0x000294b0
_andi a0,a0,0x3
sll a3,t0,0x2
or v0,a2,zero
addu a3,a1,a3
lbu v1,0x0(v0)
addiu a1,a1,0x4
addiu v0,v0,0x4
sb v1,-0x4(a1)
lhu v1,-0x4(v0)
sb v1,-0x3(a1)
lw v1,-0x4(v0)
srl v1,v1,0x8
sb v1,-0x2(a1)
lw v1,-0x4(v0)
bne a1,a3,0x00029440
_sb v1,-0x1(a1)
beq a0,zero,0x000294a8
_sll t0,t0,0x2
li v1,0x2
addu t0,a2,t0
beq a0,v1,0x00029498
_lw v0,0x0(t0)
li v1,0x3
bne a0,v1,0x000294a0
_srl v1,v0,0x8
sb v1,0x2(a3)
srl v1,v0,0x10
sb v1,0x1(a3)
srl v0,v0,0x18
sb v0,0x0(a3)
jr ra
_nop
b 0x00029470
_or a3,a1,zero
(translation_unit "void FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  \n  uVar6 = param_1 >> 2;\n  param_1 = param_1 & 3;\n  if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }\n  if (param_1 == 0) {\n    return;\n  }\n  uVar2 = param_3[uVar6];\n  if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }\n  param_2[1] = (char)((uint)uVar2 >> 0x10);\nLAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);\n  return;\n}\n\n" (function_definition "void FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  \n  uVar6 = param_1 >> 2;\n  param_1 = param_1 & 3;\n  if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }\n  if (param_1 == 0) {\n    return;\n  }\n  uVar2 = param_3[uVar6];\n  if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }\n  param_2[1] = (char)((uint)uVar2 >> 0x10);\nLAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);\n  return;\n}" primitive_type (function_declarator "FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)" identifier (parameter_list "(uint param_1,undefined1 *param_2,undefined4 *param_3)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  \n  uVar6 = param_1 >> 2;\n  param_1 = param_1 & 3;\n  if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }\n  if (param_1 == 0) {\n    return;\n  }\n  uVar2 = param_3[uVar6];\n  if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }\n  param_2[1] = (char)((uint)uVar2 >> 0x10);\nLAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "uVar6 = param_1 >> 2;" (assignment_expression "uVar6 = param_1 >> 2" identifier = (binary_expression "param_1 >> 2" identifier >> number_literal)) ;) (expression_statement "param_1 = param_1 & 3;" (assignment_expression "param_1 = param_1 & 3" identifier = (binary_expression "param_1 & 3" identifier & number_literal)) ;) (if_statement "if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }" { (expression_statement "puVar5 = param_2 + uVar6 * 4;" (assignment_expression "puVar5 = param_2 + uVar6 * 4" identifier = (binary_expression "param_2 + uVar6 * 4" identifier + (binary_expression "uVar6 * 4" identifier * number_literal))) ;) (expression_statement "puVar1 = param_3;" (assignment_expression "puVar1 = param_3" identifier = identifier) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) (do_statement "do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);" do (compound_statement "{\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    }" { (expression_statement "puVar4 = puVar3 + 4;" (assignment_expression "puVar4 = puVar3 + 4" identifier = (binary_expression "puVar3 + 4" identifier + number_literal)) ;) (expression_statement "*puVar3 = *(undefined1 *)puVar1;" (assignment_expression "*puVar3 = *(undefined1 *)puVar1" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*(undefined1 *)puVar1" * (cast_expression "(undefined1 *)puVar1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar3[1] = (char)*(undefined2 *)puVar1;" (assignment_expression "puVar3[1] = (char)*(undefined2 *)puVar1" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (cast_expression "(char)*(undefined2 *)puVar1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined2 *)puVar1" * (cast_expression "(undefined2 *)puVar1" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "puVar3[2] = (char)((uint)*puVar1 >> 8);" (assignment_expression "puVar3[2] = (char)((uint)*puVar1 >> 8)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = (cast_expression "(char)((uint)*puVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)*puVar1 >> 8)" ( (binary_expression "(uint)*puVar1 >> 8" (binary_expression "(uint)*puVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier) >> number_literal) )))) ;) (expression_statement "puVar3[3] = (char)*puVar1;" (assignment_expression "puVar3[3] = (char)*puVar1" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(char)*puVar1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) (expression_statement "param_2 = puVar5;" (assignment_expression "param_2 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(puVar4 != puVar5)" ( (binary_expression "puVar4 != puVar5" identifier != identifier) )) ;) })) (if_statement "if (param_1 == 0) {\n    return;\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = param_3[uVar6];" (assignment_expression "uVar2 = param_3[uVar6]" identifier = (subscript_expression "param_3[uVar6]" identifier [ identifier ])) ;) (if_statement "if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }" if (parenthesized_expression "(param_1 != 2)" ( (binary_expression "param_1 != 2" identifier != number_literal) )) (compound_statement "{\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }" { (if_statement "if (param_1 != 3) goto LAB_000294a0;" if (parenthesized_expression "(param_1 != 3)" ( (binary_expression "param_1 != 3" identifier != number_literal) )) (goto_statement "goto LAB_000294a0;" goto statement_identifier ;)) (expression_statement "param_2[2] = (char)((uint)uVar2 >> 8);" (assignment_expression "param_2[2] = (char)((uint)uVar2 >> 8)" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(char)((uint)uVar2 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar2 >> 8)" ( (binary_expression "(uint)uVar2 >> 8" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "param_2[1] = (char)((uint)uVar2 >> 0x10);" (assignment_expression "param_2[1] = (char)((uint)uVar2 >> 0x10)" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (cast_expression "(char)((uint)uVar2 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar2 >> 0x10)" ( (binary_expression "(uint)uVar2 >> 0x10" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (labeled_statement "LAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);" statement_identifier : (expression_statement "*param_2 = (char)((uint)uVar2 >> 0x18);" (assignment_expression "*param_2 = (char)((uint)uVar2 >> 0x18)" (pointer_expression "*param_2" * identifier) = (cast_expression "(char)((uint)uVar2 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar2 >> 0x18)" ( (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void _nettle_write_be32(size_t length,uint8_t *dst,uint32_t *src)\n\n{\n  uint32_t *puVar1;\n  uint32_t uVar2;\n  uint uVar3;\n  uint8_t *puVar4;\n  uint8_t *puVar5;\n  uint8_t *puVar6;\n  uint uVar7;\n  \n  uVar7 = length >> 2;\n  uVar3 = length & 3;\n  if (uVar7 != 0) {\n    puVar6 = dst + uVar7 * 4;\n    puVar1 = src;\n    puVar4 = dst;\n    do {\n      puVar5 = puVar4 + 4;\n      *puVar4 = *(uint8_t *)puVar1;\n      puVar4[1] = (uint8_t)*(undefined2 *)puVar1;\n      puVar4[2] = (uint8_t)(*puVar1 >> 8);\n      puVar4[3] = (uint8_t)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar4 = puVar5;\n      dst = puVar6;\n    } while (puVar5 != puVar6);\n  }\n  if (uVar3 == 0) {\n    return;\n  }\n  uVar2 = src[uVar7];\n  if (uVar3 != 2) {\n    if (uVar3 != 3) goto LAB_000294a0;\n    dst[2] = (uint8_t)(uVar2 >> 8);\n  }\n  dst[1] = (uint8_t)(uVar2 >> 0x10);\nLAB_000294a0:\n  *dst = (uint8_t)(uVar2 >> 0x18);\n  return;\n}\n\n" (function_definition "void _nettle_write_be32(size_t length,uint8_t *dst,uint32_t *src)\n\n{\n  uint32_t *puVar1;\n  uint32_t uVar2;\n  uint uVar3;\n  uint8_t *puVar4;\n  uint8_t *puVar5;\n  uint8_t *puVar6;\n  uint uVar7;\n  \n  uVar7 = length >> 2;\n  uVar3 = length & 3;\n  if (uVar7 != 0) {\n    puVar6 = dst + uVar7 * 4;\n    puVar1 = src;\n    puVar4 = dst;\n    do {\n      puVar5 = puVar4 + 4;\n      *puVar4 = *(uint8_t *)puVar1;\n      puVar4[1] = (uint8_t)*(undefined2 *)puVar1;\n      puVar4[2] = (uint8_t)(*puVar1 >> 8);\n      puVar4[3] = (uint8_t)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar4 = puVar5;\n      dst = puVar6;\n    } while (puVar5 != puVar6);\n  }\n  if (uVar3 == 0) {\n    return;\n  }\n  uVar2 = src[uVar7];\n  if (uVar3 != 2) {\n    if (uVar3 != 3) goto LAB_000294a0;\n    dst[2] = (uint8_t)(uVar2 >> 8);\n  }\n  dst[1] = (uint8_t)(uVar2 >> 0x10);\nLAB_000294a0:\n  *dst = (uint8_t)(uVar2 >> 0x18);\n  return;\n}" primitive_type (function_declarator "_nettle_write_be32(size_t length,uint8_t *dst,uint32_t *src)" identifier (parameter_list "(size_t length,uint8_t *dst,uint32_t *src)" ( (parameter_declaration "size_t length" primitive_type identifier) , (parameter_declaration "uint8_t *dst" primitive_type (pointer_declarator "*dst" * identifier)) , (parameter_declaration "uint32_t *src" primitive_type (pointer_declarator "*src" * identifier)) ))) (compound_statement "{\n  uint32_t *puVar1;\n  uint32_t uVar2;\n  uint uVar3;\n  uint8_t *puVar4;\n  uint8_t *puVar5;\n  uint8_t *puVar6;\n  uint uVar7;\n  \n  uVar7 = length >> 2;\n  uVar3 = length & 3;\n  if (uVar7 != 0) {\n    puVar6 = dst + uVar7 * 4;\n    puVar1 = src;\n    puVar4 = dst;\n    do {\n      puVar5 = puVar4 + 4;\n      *puVar4 = *(uint8_t *)puVar1;\n      puVar4[1] = (uint8_t)*(undefined2 *)puVar1;\n      puVar4[2] = (uint8_t)(*puVar1 >> 8);\n      puVar4[3] = (uint8_t)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar4 = puVar5;\n      dst = puVar6;\n    } while (puVar5 != puVar6);\n  }\n  if (uVar3 == 0) {\n    return;\n  }\n  uVar2 = src[uVar7];\n  if (uVar3 != 2) {\n    if (uVar3 != 3) goto LAB_000294a0;\n    dst[2] = (uint8_t)(uVar2 >> 8);\n  }\n  dst[1] = (uint8_t)(uVar2 >> 0x10);\nLAB_000294a0:\n  *dst = (uint8_t)(uVar2 >> 0x18);\n  return;\n}" { (declaration "uint32_t *puVar1;" primitive_type (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint32_t uVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint8_t *puVar4;" primitive_type (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint8_t *puVar5;" primitive_type (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint8_t *puVar6;" primitive_type (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "uVar7 = length >> 2;" (assignment_expression "uVar7 = length >> 2" identifier = (binary_expression "length >> 2" identifier >> number_literal)) ;) (expression_statement "uVar3 = length & 3;" (assignment_expression "uVar3 = length & 3" identifier = (binary_expression "length & 3" identifier & number_literal)) ;) (if_statement "if (uVar7 != 0) {\n    puVar6 = dst + uVar7 * 4;\n    puVar1 = src;\n    puVar4 = dst;\n    do {\n      puVar5 = puVar4 + 4;\n      *puVar4 = *(uint8_t *)puVar1;\n      puVar4[1] = (uint8_t)*(undefined2 *)puVar1;\n      puVar4[2] = (uint8_t)(*puVar1 >> 8);\n      puVar4[3] = (uint8_t)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar4 = puVar5;\n      dst = puVar6;\n    } while (puVar5 != puVar6);\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar6 = dst + uVar7 * 4;\n    puVar1 = src;\n    puVar4 = dst;\n    do {\n      puVar5 = puVar4 + 4;\n      *puVar4 = *(uint8_t *)puVar1;\n      puVar4[1] = (uint8_t)*(undefined2 *)puVar1;\n      puVar4[2] = (uint8_t)(*puVar1 >> 8);\n      puVar4[3] = (uint8_t)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar4 = puVar5;\n      dst = puVar6;\n    } while (puVar5 != puVar6);\n  }" { (expression_statement "puVar6 = dst + uVar7 * 4;" (assignment_expression "puVar6 = dst + uVar7 * 4" identifier = (binary_expression "dst + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal))) ;) (expression_statement "puVar1 = src;" (assignment_expression "puVar1 = src" identifier = identifier) ;) (expression_statement "puVar4 = dst;" (assignment_expression "puVar4 = dst" identifier = identifier) ;) (do_statement "do {\n      puVar5 = puVar4 + 4;\n      *puVar4 = *(uint8_t *)puVar1;\n      puVar4[1] = (uint8_t)*(undefined2 *)puVar1;\n      puVar4[2] = (uint8_t)(*puVar1 >> 8);\n      puVar4[3] = (uint8_t)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar4 = puVar5;\n      dst = puVar6;\n    } while (puVar5 != puVar6);" do (compound_statement "{\n      puVar5 = puVar4 + 4;\n      *puVar4 = *(uint8_t *)puVar1;\n      puVar4[1] = (uint8_t)*(undefined2 *)puVar1;\n      puVar4[2] = (uint8_t)(*puVar1 >> 8);\n      puVar4[3] = (uint8_t)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar4 = puVar5;\n      dst = puVar6;\n    }" { (expression_statement "puVar5 = puVar4 + 4;" (assignment_expression "puVar5 = puVar4 + 4" identifier = (binary_expression "puVar4 + 4" identifier + number_literal)) ;) (expression_statement "*puVar4 = *(uint8_t *)puVar1;" (assignment_expression "*puVar4 = *(uint8_t *)puVar1" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(uint8_t *)puVar1" * (cast_expression "(uint8_t *)puVar1" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar4[1] = (uint8_t)*(undefined2 *)puVar1;" (assignment_expression "puVar4[1] = (uint8_t)*(undefined2 *)puVar1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (cast_expression "(uint8_t)*(undefined2 *)puVar1" ( (type_descriptor "uint8_t" primitive_type) ) (pointer_expression "*(undefined2 *)puVar1" * (cast_expression "(undefined2 *)puVar1" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "puVar4[2] = (uint8_t)(*puVar1 >> 8);" (assignment_expression "puVar4[2] = (uint8_t)(*puVar1 >> 8)" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (cast_expression "(uint8_t)(*puVar1 >> 8)" ( (type_descriptor "uint8_t" primitive_type) ) (parenthesized_expression "(*puVar1 >> 8)" ( (binary_expression "*puVar1 >> 8" (pointer_expression "*puVar1" * identifier) >> number_literal) )))) ;) (expression_statement "puVar4[3] = (uint8_t)*puVar1;" (assignment_expression "puVar4[3] = (uint8_t)*puVar1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (cast_expression "(uint8_t)*puVar1" ( (type_descriptor "uint8_t" primitive_type) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) (expression_statement "dst = puVar6;" (assignment_expression "dst = puVar6" identifier = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar6)" ( (binary_expression "puVar5 != puVar6" identifier != identifier) )) ;) })) (if_statement "if (uVar3 == 0) {\n    return;\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = src[uVar7];" (assignment_expression "uVar2 = src[uVar7]" identifier = (subscript_expression "src[uVar7]" identifier [ identifier ])) ;) (if_statement "if (uVar3 != 2) {\n    if (uVar3 != 3) goto LAB_000294a0;\n    dst[2] = (uint8_t)(uVar2 >> 8);\n  }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n    if (uVar3 != 3) goto LAB_000294a0;\n    dst[2] = (uint8_t)(uVar2 >> 8);\n  }" { (if_statement "if (uVar3 != 3) goto LAB_000294a0;" if (parenthesized_expression "(uVar3 != 3)" ( (binary_expression "uVar3 != 3" identifier != number_literal) )) (goto_statement "goto LAB_000294a0;" goto statement_identifier ;)) (expression_statement "dst[2] = (uint8_t)(uVar2 >> 8);" (assignment_expression "dst[2] = (uint8_t)(uVar2 >> 8)" (subscript_expression "dst[2]" identifier [ number_literal ]) = (cast_expression "(uint8_t)(uVar2 >> 8)" ( (type_descriptor "uint8_t" primitive_type) ) (parenthesized_expression "(uVar2 >> 8)" ( (binary_expression "uVar2 >> 8" identifier >> number_literal) )))) ;) })) (expression_statement "dst[1] = (uint8_t)(uVar2 >> 0x10);" (assignment_expression "dst[1] = (uint8_t)(uVar2 >> 0x10)" (subscript_expression "dst[1]" identifier [ number_literal ]) = (cast_expression "(uint8_t)(uVar2 >> 0x10)" ( (type_descriptor "uint8_t" primitive_type) ) (parenthesized_expression "(uVar2 >> 0x10)" ( (binary_expression "uVar2 >> 0x10" identifier >> number_literal) )))) ;) (labeled_statement "LAB_000294a0:\n  *dst = (uint8_t)(uVar2 >> 0x18);" statement_identifier : (expression_statement "*dst = (uint8_t)(uVar2 >> 0x18);" (assignment_expression "*dst = (uint8_t)(uVar2 >> 0x18)" (pointer_expression "*dst" * identifier) = (cast_expression "(uint8_t)(uVar2 >> 0x18)" ( (type_descriptor "uint8_t" primitive_type) ) (parenthesized_expression "(uVar2 >> 0x18)" ( (binary_expression "uVar2 >> 0x18" identifier >> number_literal) )))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  \n  uVar6 = param_1 >> 2;\n  param_1 = param_1 & 3;\n  if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }\n  if (param_1 == 0) {\n    return;\n  }\n  uVar2 = param_3[uVar6];\n  if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }\n  param_2[1] = (char)((uint)uVar2 >> 0x10);\nLAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);\n  return;\n}\n\n" (function_definition "void FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  \n  uVar6 = param_1 >> 2;\n  param_1 = param_1 & 3;\n  if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }\n  if (param_1 == 0) {\n    return;\n  }\n  uVar2 = param_3[uVar6];\n  if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }\n  param_2[1] = (char)((uint)uVar2 >> 0x10);\nLAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);\n  return;\n}" primitive_type (function_declarator "FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)" identifier (parameter_list "(uint param_1,undefined1 *param_2,undefined4 *param_3)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  \n  uVar6 = param_1 >> 2;\n  param_1 = param_1 & 3;\n  if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }\n  if (param_1 == 0) {\n    return;\n  }\n  uVar2 = param_3[uVar6];\n  if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }\n  param_2[1] = (char)((uint)uVar2 >> 0x10);\nLAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "uVar6 = param_1 >> 2;" (assignment_expression "uVar6 = param_1 >> 2" identifier = (binary_expression "param_1 >> 2" identifier >> number_literal)) ;) (expression_statement "param_1 = param_1 & 3;" (assignment_expression "param_1 = param_1 & 3" identifier = (binary_expression "param_1 & 3" identifier & number_literal)) ;) (if_statement "if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }" { (expression_statement "puVar5 = param_2 + uVar6 * 4;" (assignment_expression "puVar5 = param_2 + uVar6 * 4" identifier = (binary_expression "param_2 + uVar6 * 4" identifier + (binary_expression "uVar6 * 4" identifier * number_literal))) ;) (expression_statement "puVar1 = param_3;" (assignment_expression "puVar1 = param_3" identifier = identifier) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) (do_statement "do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);" do (compound_statement "{\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    }" { (expression_statement "puVar4 = puVar3 + 4;" (assignment_expression "puVar4 = puVar3 + 4" identifier = (binary_expression "puVar3 + 4" identifier + number_literal)) ;) (expression_statement "*puVar3 = *(undefined1 *)puVar1;" (assignment_expression "*puVar3 = *(undefined1 *)puVar1" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*(undefined1 *)puVar1" * (cast_expression "(undefined1 *)puVar1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar3[1] = (char)*(undefined2 *)puVar1;" (assignment_expression "puVar3[1] = (char)*(undefined2 *)puVar1" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (cast_expression "(char)*(undefined2 *)puVar1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined2 *)puVar1" * (cast_expression "(undefined2 *)puVar1" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "puVar3[2] = (char)((uint)*puVar1 >> 8);" (assignment_expression "puVar3[2] = (char)((uint)*puVar1 >> 8)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = (cast_expression "(char)((uint)*puVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)*puVar1 >> 8)" ( (binary_expression "(uint)*puVar1 >> 8" (binary_expression "(uint)*puVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier) >> number_literal) )))) ;) (expression_statement "puVar3[3] = (char)*puVar1;" (assignment_expression "puVar3[3] = (char)*puVar1" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(char)*puVar1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) (expression_statement "param_2 = puVar5;" (assignment_expression "param_2 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(puVar4 != puVar5)" ( (binary_expression "puVar4 != puVar5" identifier != identifier) )) ;) })) (if_statement "if (param_1 == 0) {\n    return;\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = param_3[uVar6];" (assignment_expression "uVar2 = param_3[uVar6]" identifier = (subscript_expression "param_3[uVar6]" identifier [ identifier ])) ;) (if_statement "if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }" if (parenthesized_expression "(param_1 != 2)" ( (binary_expression "param_1 != 2" identifier != number_literal) )) (compound_statement "{\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }" { (if_statement "if (param_1 != 3) goto LAB_000294a0;" if (parenthesized_expression "(param_1 != 3)" ( (binary_expression "param_1 != 3" identifier != number_literal) )) (goto_statement "goto LAB_000294a0;" goto statement_identifier ;)) (expression_statement "param_2[2] = (char)((uint)uVar2 >> 8);" (assignment_expression "param_2[2] = (char)((uint)uVar2 >> 8)" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(char)((uint)uVar2 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar2 >> 8)" ( (binary_expression "(uint)uVar2 >> 8" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "param_2[1] = (char)((uint)uVar2 >> 0x10);" (assignment_expression "param_2[1] = (char)((uint)uVar2 >> 0x10)" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (cast_expression "(char)((uint)uVar2 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar2 >> 0x10)" ( (binary_expression "(uint)uVar2 >> 0x10" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (labeled_statement "LAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);" statement_identifier : (expression_statement "*param_2 = (char)((uint)uVar2 >> 0x18);" (assignment_expression "*param_2 = (char)((uint)uVar2 >> 0x18)" (pointer_expression "*param_2" * identifier) = (cast_expression "(char)((uint)uVar2 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar2 >> 0x18)" ( (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;)) (return_statement return ;) })))
(function_definition "void FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  \n  uVar6 = param_1 >> 2;\n  param_1 = param_1 & 3;\n  if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }\n  if (param_1 == 0) {\n    return;\n  }\n  uVar2 = param_3[uVar6];\n  if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }\n  param_2[1] = (char)((uint)uVar2 >> 0x10);\nLAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00029428(uint param_1,undefined1 *param_2,undefined4 *param_3)" (identifier "FUN_00029428") (parameter_list "(uint param_1,undefined1 *param_2,undefined4 *param_3)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "undefined1 *param_2" (type_identifier "undefined1") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  \n  uVar6 = param_1 >> 2;\n  param_1 = param_1 & 3;\n  if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }\n  if (param_1 == 0) {\n    return;\n  }\n  uVar2 = param_3[uVar6];\n  if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }\n  param_2[1] = (char)((uint)uVar2 >> 0x10);\nLAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (expression_statement "uVar6 = param_1 >> 2;" (assignment_expression "uVar6 = param_1 >> 2" (identifier "uVar6") (= "=") (binary_expression "param_1 >> 2" (identifier "param_1") (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "param_1 = param_1 & 3;" (assignment_expression "param_1 = param_1 & 3" (identifier "param_1") (= "=") (binary_expression "param_1 & 3" (identifier "param_1") (& "&") (number_literal "3"))) (; ";")) (if_statement "if (uVar6 != 0) {\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar5 = param_2 + uVar6 * 4;\n    puVar1 = param_3;\n    puVar3 = param_2;\n    do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);\n  }" ({ "{") (expression_statement "puVar5 = param_2 + uVar6 * 4;" (assignment_expression "puVar5 = param_2 + uVar6 * 4" (identifier "puVar5") (= "=") (binary_expression "param_2 + uVar6 * 4" (identifier "param_2") (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4")))) (; ";")) (expression_statement "puVar1 = param_3;" (assignment_expression "puVar1 = param_3" (identifier "puVar1") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" (identifier "puVar3") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    } while (puVar4 != puVar5);" (do "do") (compound_statement "{\n      puVar4 = puVar3 + 4;\n      *puVar3 = *(undefined1 *)puVar1;\n      puVar3[1] = (char)*(undefined2 *)puVar1;\n      puVar3[2] = (char)((uint)*puVar1 >> 8);\n      puVar3[3] = (char)*puVar1;\n      puVar1 = puVar1 + 1;\n      puVar3 = puVar4;\n      param_2 = puVar5;\n    }" ({ "{") (expression_statement "puVar4 = puVar3 + 4;" (assignment_expression "puVar4 = puVar3 + 4" (identifier "puVar4") (= "=") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*puVar3 = *(undefined1 *)puVar1;" (assignment_expression "*puVar3 = *(undefined1 *)puVar1" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "*(undefined1 *)puVar1" (* "*") (cast_expression "(undefined1 *)puVar1" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) (; ";")) (expression_statement "puVar3[1] = (char)*(undefined2 *)puVar1;" (assignment_expression "puVar3[1] = (char)*(undefined2 *)puVar1" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)*(undefined2 *)puVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(undefined2 *)puVar1" (* "*") (cast_expression "(undefined2 *)puVar1" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))))) (; ";")) (expression_statement "puVar3[2] = (char)((uint)*puVar1 >> 8);" (assignment_expression "puVar3[2] = (char)((uint)*puVar1 >> 8)" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)((uint)*puVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)*puVar1 >> 8)" (( "(") (binary_expression "(uint)*puVar1 >> 8" (binary_expression "(uint)*puVar1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "puVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "puVar3[3] = (char)*puVar1;" (assignment_expression "puVar3[3] = (char)*puVar1" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(char)*puVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" (identifier "puVar3") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "param_2 = puVar5;" (assignment_expression "param_2 = puVar5" (identifier "param_2") (= "=") (identifier "puVar5")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 != puVar5)" (( "(") (binary_expression "puVar4 != puVar5" (identifier "puVar4") (!= "!=") (identifier "puVar5")) () ")")) (; ";")) (} "}"))) (if_statement "if (param_1 == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar2 = param_3[uVar6];" (assignment_expression "uVar2 = param_3[uVar6]" (identifier "uVar2") (= "=") (subscript_expression "param_3[uVar6]" (identifier "param_3") ([ "[") (identifier "uVar6") (] "]"))) (; ";")) (if_statement "if (param_1 != 2) {\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }" (if "if") (parenthesized_expression "(param_1 != 2)" (( "(") (binary_expression "param_1 != 2" (identifier "param_1") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    if (param_1 != 3) goto LAB_000294a0;\n    param_2[2] = (char)((uint)uVar2 >> 8);\n  }" ({ "{") (if_statement "if (param_1 != 3) goto LAB_000294a0;" (if "if") (parenthesized_expression "(param_1 != 3)" (( "(") (binary_expression "param_1 != 3" (identifier "param_1") (!= "!=") (number_literal "3")) () ")")) (goto_statement "goto LAB_000294a0;" (goto "goto") (statement_identifier "LAB_000294a0") (; ";"))) (expression_statement "param_2[2] = (char)((uint)uVar2 >> 8);" (assignment_expression "param_2[2] = (char)((uint)uVar2 >> 8)" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)((uint)uVar2 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar2 >> 8)" (( "(") (binary_expression "(uint)uVar2 >> 8" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_2[1] = (char)((uint)uVar2 >> 0x10);" (assignment_expression "param_2[1] = (char)((uint)uVar2 >> 0x10)" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)((uint)uVar2 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar2 >> 0x10)" (( "(") (binary_expression "(uint)uVar2 >> 0x10" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (labeled_statement "LAB_000294a0:\n  *param_2 = (char)((uint)uVar2 >> 0x18);" (statement_identifier "LAB_000294a0") (: ":") (expression_statement "*param_2 = (char)((uint)uVar2 >> 0x18);" (assignment_expression "*param_2 = (char)((uint)uVar2 >> 0x18)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(char)((uint)uVar2 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar2 >> 0x18)" (( "(") (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(size_t var_1,uint8_t *var_3,uint32_t *src)

{
  uint32_t *var_5;
  uint32_t var_9;
  type_1 var_8;
  uint8_t *var_4;
  uint8_t *var_6;
  uint8_t *var_7;
  type_1 var_2;
  
  var_2 = var_1 >> 2;
  var_8 = var_1 & 3;
  if (var_2 != 0) {
    var_7 = var_3 + var_2 * 4;
    var_5 = src;
    var_4 = var_3;
    do {
      var_6 = var_4 + 4;
      *var_4 = *(uint8_t *)var_5;
      var_4[1] = (uint8_t)*(type_2 *)var_5;
      var_4[2] = (uint8_t)(*var_5 >> 8);
      var_4[3] = (uint8_t)*var_5;
      var_5 = var_5 + 1;
      var_4 = var_6;
      var_3 = var_7;
    } while (var_6 != var_7);
  }
  if (var_8 == 0) {
    return;
  }
  var_9 = src[var_2];
  if (var_8 != 2) {
    if (var_8 != 3) goto LAB_000294a0;
    var_3[2] = (uint8_t)(var_9 >> 8);
  }
  var_3[1] = (uint8_t)(var_9 >> 0x10);
LAB_000294a0:
  *var_3 = (uint8_t)(var_9 >> 0x18);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) (return_statement))))

void MASKED(uint param_1,undefined1 *param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined1 *puVar3;
  undefined1 *puVar4;
  undefined1 *puVar5;
  uint uVar6;
  
  uVar6 = param_1 >> 2;
  param_1 = param_1 & 3;
  if (uVar6 != 0) {
    puVar5 = param_2 + uVar6 * 4;
    puVar1 = param_3;
    puVar3 = param_2;
    do {
      puVar4 = puVar3 + 4;
      *puVar3 = *(undefined1 *)puVar1;
      puVar3[1] = (char)*(undefined2 *)puVar1;
      puVar3[2] = (char)((uint)*puVar1 >> 8);
      puVar3[3] = (char)*puVar1;
      puVar1 = puVar1 + 1;
      puVar3 = puVar4;
      param_2 = puVar5;
    } while (puVar4 != puVar5);
  }
  if (param_1 == 0) {
    return;
  }
  uVar2 = param_3[uVar6];
  if (param_1 != 2) {
    if (param_1 != 3) goto LAB_000294a0;
    param_2[2] = (char)((uint)uVar2 >> 8);
  }
  param_2[1] = (char)((uint)uVar2 >> 0x10);
LAB_000294a0:
  *param_2 = (char)((uint)uVar2 >> 0x18);
  return;
}

