
size_t bb_mbstowcs(wchar_t *dest,char *src,size_t n)

{
  byte bVar1;
  size_t sVar2;
  int iVar3;
  uint extraout_v1;
  uint uVar4;
  byte *pbVar5;
  size_t in_t5;
  int *piVar6;
  int in_t7;
  wchar_t *in_t8;
  wchar_t wc;
  int iStack_c;
  
  piVar6 = (int *)PTR___stack_chk_guard_0012b14c;
  iStack_c = *(int *)PTR___stack_chk_guard_0012b14c;
  if (*PTR_unicode_status_0012a88c == '\x02') {
    if (n != 0) {
      in_t8 = &wc;
      in_t7 = -1;
      in_t5 = n;
      goto LAB_000f9cd0;
    }
  }
  else {
    sVar2 = n;
    pbVar5 = (byte *)src;
    if (n != 0) {
      do {
        src = (char *)(pbVar5 + 1);
        bVar1 = *pbVar5;
        if ((uint *)dest != (uint *)0x0) {
          *dest = (uint)bVar1;
          dest = (wchar_t *)((uint *)dest + 1);
        }
        if (bVar1 == 0) {
          n = n - sVar2;
          goto LAB_000f9c98;
        }
        sVar2 = sVar2 - 1;
        pbVar5 = (byte *)src;
      } while (sVar2 != 0);
      iVar3 = *piVar6;
      sVar2 = n;
      goto joined_r0x000f9d7c;
    }
  }
LAB_000f9c98:
  iVar3 = *piVar6;
  sVar2 = n;
joined_r0x000f9d7c:
  n = sVar2;
  if (iStack_c != iVar3) {
LAB_000f9d00:
    do {
      (*(code *)PTR___stack_chk_fail_0012b0c8)();
      uVar4 = extraout_v1;
      do {
        if ((uint *)dest != (uint *)0x0) {
          *dest = uVar4;
          dest = (wchar_t *)((uint *)dest + 1);
        }
        if (uVar4 == 0) {
          n = n - in_t5;
          iVar3 = *piVar6;
joined_r0x000f9d2c:
          if (iStack_c == iVar3) {
            return n;
          }
          goto LAB_000f9d00;
        }
        in_t5 = in_t5 - 1;
        if (in_t5 == 0) {
          iVar3 = *piVar6;
          goto joined_r0x000f9d2c;
        }
LAB_000f9cd0:
        src = mbstowc_internal(in_t8,src);
        uVar4 = wc;
      } while (wc != in_t7);
      n = 0xffffffff;
      sVar2 = 0xffffffff;
    } while (iStack_c != *piVar6);
  }
  return sVar2;
}



int FUN_000f9c30(uint *param_1,byte *param_2,int param_3)

{
  byte bVar1;
  int iVar2;
  uint extraout_v1;
  uint uVar3;
  int iVar4;
  int in_t5;
  int *piVar5;
  uint in_t7;
  uint *in_t8;
  uint local_10;
  int local_c;
  
  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;
  local_c = *(int *)PTR___stack_chk_guard_0012b14c;
  if (*PTR_DAT_0012a88c == '\x02') {
    if (param_3 != 0) {
      in_t8 = &local_10;
      in_t7 = 0xffffffff;
      in_t5 = param_3;
      goto LAB_000f9cd0;
    }
  }
  else {
    iVar4 = param_3;
    if (param_3 != 0) {
      do {
        bVar1 = *param_2;
        if (param_1 != (uint *)0x0) {
          *param_1 = (uint)bVar1;
          param_1 = param_1 + 1;
        }
        if (bVar1 == 0) {
          param_3 = param_3 - iVar4;
          goto LAB_000f9c98;
        }
        iVar4 = iVar4 + -1;
        param_2 = param_2 + 1;
      } while (iVar4 != 0);
      iVar2 = *piVar5;
      iVar4 = param_3;
      goto joined_r0x000f9d7c;
    }
  }
LAB_000f9c98:
  iVar2 = *piVar5;
  iVar4 = param_3;
joined_r0x000f9d7c:
  param_3 = iVar4;
  if (local_c != iVar2) {
LAB_000f9d00:
    do {
      (*(code *)PTR___stack_chk_fail_0012b0c8)();
      uVar3 = extraout_v1;
      do {
        if (param_1 != (uint *)0x0) {
          *param_1 = uVar3;
          param_1 = param_1 + 1;
        }
        if (uVar3 == 0) {
          param_3 = param_3 - in_t5;
          iVar4 = *piVar5;
joined_r0x000f9d2c:
          if (local_c == iVar4) {
            return param_3;
          }
          goto LAB_000f9d00;
        }
        in_t5 = in_t5 + -1;
        if (in_t5 == 0) {
          iVar4 = *piVar5;
          goto joined_r0x000f9d2c;
        }
LAB_000f9cd0:
        FUN_000f952c(in_t8);
        uVar3 = local_10;
      } while (local_10 != in_t7);
      param_3 = -1;
      iVar4 = -1;
    } while (local_c != *piVar5);
  }
  return iVar4;
}


lui gp,0x4
addiu gp,gp,-0x7ae0
addu gp,gp,t9
addiu sp,sp,-0x28
lw t6,-0x7004(gp)
lw v1,-0x78c4(gp)
or t4,a0,zero
li v0,0x2
sw gp,0x10(sp)
or t3,a2,zero
sw ra,0x24(sp)
lw a0,0x0(t6)
lbu v1,0x0(v1)
sw a0,0x1c(sp)
beq v1,v0,0x000f9cb8
_nop
beq a2,zero,0x000f9c98
_or v0,a2,zero
addiu a1,a1,0x1
beq t4,zero,0x000f9c8c
_lbu v1,-0x1(a1)
sw v1,0x0(t4)
addiu t4,t4,0x4
bne v1,zero,0x000f9d64
_nop
subu t3,t3,v0
lw a0,0x1c(sp)
or v0,t3,zero
lw v1,0x0(t6)
bne a0,v1,0x000f9d00
_lw t9,-0x7088(gp)
lw ra,0x24(sp)
jr ra
_addiu sp,sp,0x28
beq a2,zero,0x000f9c98
_lw t9,-0x7fc4(gp)
addiu t8,sp,0x18
li t7,-0x1
or t5,t3,zero
addiu t9,t9,-0x6ad4
bal 0x000f952c
_or a0,t8,zero
lw v1,0x18(sp)
or a1,v0,zero
bne v1,t7,0x000f9d08
_lw gp,0x10(sp)
lw a0,0x1c(sp)
li t3,-0x1
lw v1,0x0(t6)
beq a0,v1,0x000f9cac
_or v0,t3,zero
lw t9,-0x7088(gp)
jalr t9
_nop
beq t4,zero,0x000f9d18
_nop
sw v1,0x0(t4)
addiu t4,t4,0x4
bne v1,zero,0x000f9d3c
_nop
lw a0,0x1c(sp)
subu t3,t3,t5
lw v1,0x0(t6)
beq a0,v1,0x000f9cac
_or v0,t3,zero
b 0x000f9d00
_lw t9,-0x7088(gp)
addiu t5,t5,-0x1
bne t5,zero,0x000f9cd0
_nop
lw a0,0x1c(sp)
or v0,t3,zero
lw v1,0x0(t6)
beq a0,v1,0x000f9cac
_lw t9,-0x7088(gp)
b 0x000f9d00
_nop
addiu v0,v0,-0x1
bne v0,zero,0x000f9c78
_nop
lw a0,0x1c(sp)
or v0,t3,zero
lw v1,0x0(t6)
beq a0,v1,0x000f9cac
_lw t9,-0x7088(gp)
b 0x000f9d00
_nop
(translation_unit "int FUN_000f9c30(uint *param_1,byte *param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint extraout_v1;\n  uint uVar3;\n  int iVar4;\n  int in_t5;\n  int *piVar5;\n  uint in_t7;\n  uint *in_t8;\n  uint local_10;\n  int local_c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  local_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar2 = *piVar5;\n  iVar4 = param_3;\njoined_r0x000f9d7c:\n  param_3 = iVar4;\n  if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }\n  return iVar4;\n}\n\n" (function_definition "int FUN_000f9c30(uint *param_1,byte *param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint extraout_v1;\n  uint uVar3;\n  int iVar4;\n  int in_t5;\n  int *piVar5;\n  uint in_t7;\n  uint *in_t8;\n  uint local_10;\n  int local_c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  local_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar2 = *piVar5;\n  iVar4 = param_3;\njoined_r0x000f9d7c:\n  param_3 = iVar4;\n  if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }\n  return iVar4;\n}" primitive_type (function_declarator "FUN_000f9c30(uint *param_1,byte *param_2,int param_3)" identifier (parameter_list "(uint *param_1,byte *param_2,int param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint extraout_v1;\n  uint uVar3;\n  int iVar4;\n  int in_t5;\n  int *piVar5;\n  uint in_t7;\n  uint *in_t8;\n  uint local_10;\n  int local_c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  local_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar2 = *piVar5;\n  iVar4 = param_3;\njoined_r0x000f9d7c:\n  param_3 = iVar4;\n  if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }\n  return iVar4;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_t5;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint in_t7;" type_identifier identifier ;) (declaration "uint *in_t8;" type_identifier (pointer_declarator "*in_t8" * identifier) ;) (declaration "uint local_10;" type_identifier identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "piVar5 = (int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "piVar5 = (int *)PTR___stack_chk_guard_0012b14c" identifier = (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" if (parenthesized_expression "(*PTR_DAT_0012a88c == '\x02')" ( (binary_expression "*PTR_DAT_0012a88c == '\x02'" (pointer_expression "*PTR_DAT_0012a88c" * identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }" { (if_statement "if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }" { (expression_statement "in_t8 = &local_10;" (assignment_expression "in_t8 = &local_10" identifier = (pointer_expression "&local_10" & identifier)) ;) (expression_statement "in_t7 = 0xffffffff;" (assignment_expression "in_t7 = 0xffffffff" identifier = number_literal) ;) (expression_statement "in_t5 = param_3;" (assignment_expression "in_t5 = param_3" identifier = identifier) ;) (goto_statement "goto LAB_000f9cd0;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" else (compound_statement "{\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" { (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" identifier = identifier) ;) (if_statement "if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }" { (do_statement "do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);" do (compound_statement "{\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }" if (parenthesized_expression "(param_1 != (uint *)0x0)" ( (binary_expression "param_1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }" { (expression_statement "*param_1 = (uint)bVar1;" (assignment_expression "*param_1 = (uint)bVar1" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (if_statement "if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }" { (expression_statement "param_3 = param_3 - iVar4;" (assignment_expression "param_3 = param_3 - iVar4" identifier = (binary_expression "param_3 - iVar4" identifier - identifier)) ;) (goto_statement "goto LAB_000f9c98;" goto statement_identifier ;) })) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" identifier = identifier) ;) (goto_statement "goto joined_r0x000f9d7c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000f9c98:\n  iVar2 = *piVar5;" statement_identifier : (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;)) (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" identifier = identifier) ;) (labeled_statement "joined_r0x000f9d7c:\n  param_3 = iVar4;" statement_identifier : (expression_statement "param_3 = iVar4;" (assignment_expression "param_3 = iVar4" identifier = identifier) ;)) (if_statement "if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }" if (parenthesized_expression "(local_c != iVar2)" ( (binary_expression "local_c != iVar2" identifier != identifier) )) (compound_statement "{\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }" { (labeled_statement "LAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);" statement_identifier : (do_statement "do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);" do (compound_statement "{\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar3 = extraout_v1;" (assignment_expression "uVar3 = extraout_v1" identifier = identifier) ;) (do_statement "do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);" do (compound_statement "{\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      }" { (if_statement "if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }" if (parenthesized_expression "(param_1 != (uint *)0x0)" ( (binary_expression "param_1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }" { (expression_statement "*param_1 = uVar3;" (assignment_expression "*param_1 = uVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (if_statement "if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }" { (expression_statement "param_3 = param_3 - in_t5;" (assignment_expression "param_3 = param_3 - in_t5" identifier = (binary_expression "param_3 - in_t5" identifier - identifier)) ;) (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (labeled_statement "joined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }" statement_identifier : (if_statement "if (local_c == iVar4) {\n            return param_3;\n          }" if (parenthesized_expression "(local_c == iVar4)" ( (binary_expression "local_c == iVar4" identifier == identifier) )) (compound_statement "{\n            return param_3;\n          }" { (return_statement "return param_3;" return identifier ;) }))) (goto_statement "goto LAB_000f9d00;" goto statement_identifier ;) })) (expression_statement "in_t5 = in_t5 + -1;" (assignment_expression "in_t5 = in_t5 + -1" identifier = (binary_expression "in_t5 + -1" identifier + number_literal)) ;) (if_statement "if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }" if (parenthesized_expression "(in_t5 == 0)" ( (binary_expression "in_t5 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }" { (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (goto_statement "goto joined_r0x000f9d2c;" goto statement_identifier ;) })) (labeled_statement "LAB_000f9cd0:\n        FUN_000f952c(in_t8);" statement_identifier : (expression_statement "FUN_000f952c(in_t8);" (call_expression "FUN_000f952c(in_t8)" identifier (argument_list "(in_t8)" ( identifier ))) ;)) (expression_statement "uVar3 = local_10;" (assignment_expression "uVar3 = local_10" identifier = identifier) ;) }) while (parenthesized_expression "(local_10 != in_t7)" ( (binary_expression "local_10 != in_t7" identifier != identifier) )) ;) (expression_statement "param_3 = -1;" (assignment_expression "param_3 = -1" identifier = number_literal) ;) (expression_statement "iVar4 = -1;" (assignment_expression "iVar4 = -1" identifier = number_literal) ;) }) while (parenthesized_expression "(local_c != *piVar5)" ( (binary_expression "local_c != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) ;)) })) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "size_t bb_mbstowcs(wchar_t *dest,char *src,size_t n)\n\n{\n  byte bVar1;\n  size_t sVar2;\n  int iVar3;\n  uint extraout_v1;\n  uint uVar4;\n  byte *pbVar5;\n  size_t in_t5;\n  int *piVar6;\n  int in_t7;\n  wchar_t *in_t8;\n  wchar_t wc;\n  int iStack_c;\n  \n  piVar6 = (int *)PTR___stack_chk_guard_0012b14c;\n  iStack_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_unicode_status_0012a88c == '\x02') {\n    if (n != 0) {\n      in_t8 = &wc;\n      in_t7 = -1;\n      in_t5 = n;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    sVar2 = n;\n    pbVar5 = (byte *)src;\n    if (n != 0) {\n      do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);\n      iVar3 = *piVar6;\n      sVar2 = n;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar3 = *piVar6;\n  sVar2 = n;\njoined_r0x000f9d7c:\n  n = sVar2;\n  if (iStack_c != iVar3) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar4 = extraout_v1;\n      do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);\n      n = 0xffffffff;\n      sVar2 = 0xffffffff;\n    } while (iStack_c != *piVar6);\n  }\n  return sVar2;\n}\n\n" (function_definition "size_t bb_mbstowcs(wchar_t *dest,char *src,size_t n)\n\n{\n  byte bVar1;\n  size_t sVar2;\n  int iVar3;\n  uint extraout_v1;\n  uint uVar4;\n  byte *pbVar5;\n  size_t in_t5;\n  int *piVar6;\n  int in_t7;\n  wchar_t *in_t8;\n  wchar_t wc;\n  int iStack_c;\n  \n  piVar6 = (int *)PTR___stack_chk_guard_0012b14c;\n  iStack_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_unicode_status_0012a88c == '\x02') {\n    if (n != 0) {\n      in_t8 = &wc;\n      in_t7 = -1;\n      in_t5 = n;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    sVar2 = n;\n    pbVar5 = (byte *)src;\n    if (n != 0) {\n      do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);\n      iVar3 = *piVar6;\n      sVar2 = n;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar3 = *piVar6;\n  sVar2 = n;\njoined_r0x000f9d7c:\n  n = sVar2;\n  if (iStack_c != iVar3) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar4 = extraout_v1;\n      do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);\n      n = 0xffffffff;\n      sVar2 = 0xffffffff;\n    } while (iStack_c != *piVar6);\n  }\n  return sVar2;\n}" primitive_type (function_declarator "bb_mbstowcs(wchar_t *dest,char *src,size_t n)" identifier (parameter_list "(wchar_t *dest,char *src,size_t n)" ( (parameter_declaration "wchar_t *dest" type_identifier (pointer_declarator "*dest" * identifier)) , (parameter_declaration "char *src" primitive_type (pointer_declarator "*src" * identifier)) , (parameter_declaration "size_t n" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  size_t sVar2;\n  int iVar3;\n  uint extraout_v1;\n  uint uVar4;\n  byte *pbVar5;\n  size_t in_t5;\n  int *piVar6;\n  int in_t7;\n  wchar_t *in_t8;\n  wchar_t wc;\n  int iStack_c;\n  \n  piVar6 = (int *)PTR___stack_chk_guard_0012b14c;\n  iStack_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_unicode_status_0012a88c == '\x02') {\n    if (n != 0) {\n      in_t8 = &wc;\n      in_t7 = -1;\n      in_t5 = n;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    sVar2 = n;\n    pbVar5 = (byte *)src;\n    if (n != 0) {\n      do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);\n      iVar3 = *piVar6;\n      sVar2 = n;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar3 = *piVar6;\n  sVar2 = n;\njoined_r0x000f9d7c:\n  n = sVar2;\n  if (iStack_c != iVar3) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar4 = extraout_v1;\n      do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);\n      n = 0xffffffff;\n      sVar2 = 0xffffffff;\n    } while (iStack_c != *piVar6);\n  }\n  return sVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "size_t in_t5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int in_t7;" primitive_type identifier ;) (declaration "wchar_t *in_t8;" type_identifier (pointer_declarator "*in_t8" * identifier) ;) (declaration "wchar_t wc;" type_identifier identifier ;) (declaration "int iStack_c;" primitive_type identifier ;) (expression_statement "piVar6 = (int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "piVar6 = (int *)PTR___stack_chk_guard_0012b14c" identifier = (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iStack_c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "iStack_c = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*PTR_unicode_status_0012a88c == '\x02') {\n    if (n != 0) {\n      in_t8 = &wc;\n      in_t7 = -1;\n      in_t5 = n;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    sVar2 = n;\n    pbVar5 = (byte *)src;\n    if (n != 0) {\n      do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);\n      iVar3 = *piVar6;\n      sVar2 = n;\n      goto joined_r0x000f9d7c;\n    }\n  }" if (parenthesized_expression "(*PTR_unicode_status_0012a88c == '\x02')" ( (binary_expression "*PTR_unicode_status_0012a88c == '\x02'" (pointer_expression "*PTR_unicode_status_0012a88c" * identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    if (n != 0) {\n      in_t8 = &wc;\n      in_t7 = -1;\n      in_t5 = n;\n      goto LAB_000f9cd0;\n    }\n  }" { (if_statement "if (n != 0) {\n      in_t8 = &wc;\n      in_t7 = -1;\n      in_t5 = n;\n      goto LAB_000f9cd0;\n    }" if (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) (compound_statement "{\n      in_t8 = &wc;\n      in_t7 = -1;\n      in_t5 = n;\n      goto LAB_000f9cd0;\n    }" { (expression_statement "in_t8 = &wc;" (assignment_expression "in_t8 = &wc" identifier = (pointer_expression "&wc" & identifier)) ;) (expression_statement "in_t7 = -1;" (assignment_expression "in_t7 = -1" identifier = number_literal) ;) (expression_statement "in_t5 = n;" (assignment_expression "in_t5 = n" identifier = identifier) ;) (goto_statement "goto LAB_000f9cd0;" goto statement_identifier ;) })) }) (else_clause "else {\n    sVar2 = n;\n    pbVar5 = (byte *)src;\n    if (n != 0) {\n      do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);\n      iVar3 = *piVar6;\n      sVar2 = n;\n      goto joined_r0x000f9d7c;\n    }\n  }" else (compound_statement "{\n    sVar2 = n;\n    pbVar5 = (byte *)src;\n    if (n != 0) {\n      do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);\n      iVar3 = *piVar6;\n      sVar2 = n;\n      goto joined_r0x000f9d7c;\n    }\n  }" { (expression_statement "sVar2 = n;" (assignment_expression "sVar2 = n" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)src;" (assignment_expression "pbVar5 = (byte *)src" identifier = (cast_expression "(byte *)src" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (n != 0) {\n      do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);\n      iVar3 = *piVar6;\n      sVar2 = n;\n      goto joined_r0x000f9d7c;\n    }" if (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);\n      iVar3 = *piVar6;\n      sVar2 = n;\n      goto joined_r0x000f9d7c;\n    }" { (do_statement "do {\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      } while (sVar2 != 0);" do (compound_statement "{\n        src = (char *)(pbVar5 + 1);\n        bVar1 = *pbVar5;\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }\n        sVar2 = sVar2 - 1;\n        pbVar5 = (byte *)src;\n      }" { (expression_statement "src = (char *)(pbVar5 + 1);" (assignment_expression "src = (char *)(pbVar5 + 1)" identifier = (cast_expression "(char *)(pbVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 1)" ( (binary_expression "pbVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (if_statement "if ((uint *)dest != (uint *)0x0) {\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }" if (parenthesized_expression "((uint *)dest != (uint *)0x0)" ( (binary_expression "(uint *)dest != (uint *)0x0" (cast_expression "(uint *)dest" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *dest = (uint)bVar1;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }" { (expression_statement "*dest = (uint)bVar1;" (assignment_expression "*dest = (uint)bVar1" (pointer_expression "*dest" * identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "dest = (wchar_t *)((uint *)dest + 1);" (assignment_expression "dest = (wchar_t *)((uint *)dest + 1)" identifier = (cast_expression "(wchar_t *)((uint *)dest + 1)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint *)dest + 1)" ( (binary_expression "(uint *)dest + 1" (cast_expression "(uint *)dest" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) })) (if_statement "if (bVar1 == 0) {\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          n = n - sVar2;\n          goto LAB_000f9c98;\n        }" { (expression_statement "n = n - sVar2;" (assignment_expression "n = n - sVar2" identifier = (binary_expression "n - sVar2" identifier - identifier)) ;) (goto_statement "goto LAB_000f9c98;" goto statement_identifier ;) })) (expression_statement "sVar2 = sVar2 - 1;" (assignment_expression "sVar2 = sVar2 - 1" identifier = (binary_expression "sVar2 - 1" identifier - number_literal)) ;) (expression_statement "pbVar5 = (byte *)src;" (assignment_expression "pbVar5 = (byte *)src" identifier = (cast_expression "(byte *)src" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(sVar2 != 0)" ( (binary_expression "sVar2 != 0" identifier != number_literal) )) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "sVar2 = n;" (assignment_expression "sVar2 = n" identifier = identifier) ;) (goto_statement "goto joined_r0x000f9d7c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000f9c98:\n  iVar3 = *piVar6;" statement_identifier : (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;)) (expression_statement "sVar2 = n;" (assignment_expression "sVar2 = n" identifier = identifier) ;) (labeled_statement "joined_r0x000f9d7c:\n  n = sVar2;" statement_identifier : (expression_statement "n = sVar2;" (assignment_expression "n = sVar2" identifier = identifier) ;)) (if_statement "if (iStack_c != iVar3) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar4 = extraout_v1;\n      do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);\n      n = 0xffffffff;\n      sVar2 = 0xffffffff;\n    } while (iStack_c != *piVar6);\n  }" if (parenthesized_expression "(iStack_c != iVar3)" ( (binary_expression "iStack_c != iVar3" identifier != identifier) )) (compound_statement "{\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar4 = extraout_v1;\n      do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);\n      n = 0xffffffff;\n      sVar2 = 0xffffffff;\n    } while (iStack_c != *piVar6);\n  }" { (labeled_statement "LAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar4 = extraout_v1;\n      do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);\n      n = 0xffffffff;\n      sVar2 = 0xffffffff;\n    } while (iStack_c != *piVar6);" statement_identifier : (do_statement "do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar4 = extraout_v1;\n      do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);\n      n = 0xffffffff;\n      sVar2 = 0xffffffff;\n    } while (iStack_c != *piVar6);" do (compound_statement "{\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar4 = extraout_v1;\n      do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);\n      n = 0xffffffff;\n      sVar2 = 0xffffffff;\n    }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar4 = extraout_v1;" (assignment_expression "uVar4 = extraout_v1" identifier = identifier) ;) (do_statement "do {\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      } while (wc != in_t7);" do (compound_statement "{\n        if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }\n        if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 - 1;\n        if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);\n        uVar4 = wc;\n      }" { (if_statement "if ((uint *)dest != (uint *)0x0) {\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }" if (parenthesized_expression "((uint *)dest != (uint *)0x0)" ( (binary_expression "(uint *)dest != (uint *)0x0" (cast_expression "(uint *)dest" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *dest = uVar4;\n          dest = (wchar_t *)((uint *)dest + 1);\n        }" { (expression_statement "*dest = uVar4;" (assignment_expression "*dest = uVar4" (pointer_expression "*dest" * identifier) = identifier) ;) (expression_statement "dest = (wchar_t *)((uint *)dest + 1);" (assignment_expression "dest = (wchar_t *)((uint *)dest + 1)" identifier = (cast_expression "(wchar_t *)((uint *)dest + 1)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint *)dest + 1)" ( (binary_expression "(uint *)dest + 1" (cast_expression "(uint *)dest" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) })) (if_statement "if (uVar4 == 0) {\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          n = n - in_t5;\n          iVar3 = *piVar6;\njoined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }\n          goto LAB_000f9d00;\n        }" { (expression_statement "n = n - in_t5;" (assignment_expression "n = n - in_t5" identifier = (binary_expression "n - in_t5" identifier - identifier)) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (labeled_statement "joined_r0x000f9d2c:\n          if (iStack_c == iVar3) {\n            return n;\n          }" statement_identifier : (if_statement "if (iStack_c == iVar3) {\n            return n;\n          }" if (parenthesized_expression "(iStack_c == iVar3)" ( (binary_expression "iStack_c == iVar3" identifier == identifier) )) (compound_statement "{\n            return n;\n          }" { (return_statement "return n;" return identifier ;) }))) (goto_statement "goto LAB_000f9d00;" goto statement_identifier ;) })) (expression_statement "in_t5 = in_t5 - 1;" (assignment_expression "in_t5 = in_t5 - 1" identifier = (binary_expression "in_t5 - 1" identifier - number_literal)) ;) (if_statement "if (in_t5 == 0) {\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }" if (parenthesized_expression "(in_t5 == 0)" ( (binary_expression "in_t5 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar3 = *piVar6;\n          goto joined_r0x000f9d2c;\n        }" { (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (goto_statement "goto joined_r0x000f9d2c;" goto statement_identifier ;) })) (labeled_statement "LAB_000f9cd0:\n        src = mbstowc_internal(in_t8,src);" statement_identifier : (expression_statement "src = mbstowc_internal(in_t8,src);" (assignment_expression "src = mbstowc_internal(in_t8,src)" identifier = (call_expression "mbstowc_internal(in_t8,src)" identifier (argument_list "(in_t8,src)" ( identifier , identifier )))) ;)) (expression_statement "uVar4 = wc;" (assignment_expression "uVar4 = wc" identifier = identifier) ;) }) while (parenthesized_expression "(wc != in_t7)" ( (binary_expression "wc != in_t7" identifier != identifier) )) ;) (expression_statement "n = 0xffffffff;" (assignment_expression "n = 0xffffffff" identifier = number_literal) ;) (expression_statement "sVar2 = 0xffffffff;" (assignment_expression "sVar2 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "(iStack_c != *piVar6)" ( (binary_expression "iStack_c != *piVar6" identifier != (pointer_expression "*piVar6" * identifier)) )) ;)) })) (return_statement "return sVar2;" return identifier ;) })))
(translation_unit "int FUN_000f9c30(uint *param_1,byte *param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint extraout_v1;\n  uint uVar3;\n  int iVar4;\n  int in_t5;\n  int *piVar5;\n  uint in_t7;\n  uint *in_t8;\n  uint local_10;\n  int local_c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  local_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar2 = *piVar5;\n  iVar4 = param_3;\njoined_r0x000f9d7c:\n  param_3 = iVar4;\n  if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }\n  return iVar4;\n}\n\n" (function_definition "int FUN_000f9c30(uint *param_1,byte *param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint extraout_v1;\n  uint uVar3;\n  int iVar4;\n  int in_t5;\n  int *piVar5;\n  uint in_t7;\n  uint *in_t8;\n  uint local_10;\n  int local_c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  local_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar2 = *piVar5;\n  iVar4 = param_3;\njoined_r0x000f9d7c:\n  param_3 = iVar4;\n  if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }\n  return iVar4;\n}" primitive_type (function_declarator "FUN_000f9c30(uint *param_1,byte *param_2,int param_3)" identifier (parameter_list "(uint *param_1,byte *param_2,int param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint extraout_v1;\n  uint uVar3;\n  int iVar4;\n  int in_t5;\n  int *piVar5;\n  uint in_t7;\n  uint *in_t8;\n  uint local_10;\n  int local_c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  local_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar2 = *piVar5;\n  iVar4 = param_3;\njoined_r0x000f9d7c:\n  param_3 = iVar4;\n  if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }\n  return iVar4;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_t5;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint in_t7;" type_identifier identifier ;) (declaration "uint *in_t8;" type_identifier (pointer_declarator "*in_t8" * identifier) ;) (declaration "uint local_10;" type_identifier identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "piVar5 = (int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "piVar5 = (int *)PTR___stack_chk_guard_0012b14c" identifier = (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" if (parenthesized_expression "(*PTR_DAT_0012a88c == '\x02')" ( (binary_expression "*PTR_DAT_0012a88c == '\x02'" (pointer_expression "*PTR_DAT_0012a88c" * identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }" { (if_statement "if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }" { (expression_statement "in_t8 = &local_10;" (assignment_expression "in_t8 = &local_10" identifier = (pointer_expression "&local_10" & identifier)) ;) (expression_statement "in_t7 = 0xffffffff;" (assignment_expression "in_t7 = 0xffffffff" identifier = number_literal) ;) (expression_statement "in_t5 = param_3;" (assignment_expression "in_t5 = param_3" identifier = identifier) ;) (goto_statement "goto LAB_000f9cd0;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" else (compound_statement "{\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" { (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" identifier = identifier) ;) (if_statement "if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }" { (do_statement "do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);" do (compound_statement "{\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }" if (parenthesized_expression "(param_1 != (uint *)0x0)" ( (binary_expression "param_1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }" { (expression_statement "*param_1 = (uint)bVar1;" (assignment_expression "*param_1 = (uint)bVar1" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (if_statement "if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }" { (expression_statement "param_3 = param_3 - iVar4;" (assignment_expression "param_3 = param_3 - iVar4" identifier = (binary_expression "param_3 - iVar4" identifier - identifier)) ;) (goto_statement "goto LAB_000f9c98;" goto statement_identifier ;) })) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" identifier = identifier) ;) (goto_statement "goto joined_r0x000f9d7c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000f9c98:\n  iVar2 = *piVar5;" statement_identifier : (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;)) (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" identifier = identifier) ;) (labeled_statement "joined_r0x000f9d7c:\n  param_3 = iVar4;" statement_identifier : (expression_statement "param_3 = iVar4;" (assignment_expression "param_3 = iVar4" identifier = identifier) ;)) (if_statement "if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }" if (parenthesized_expression "(local_c != iVar2)" ( (binary_expression "local_c != iVar2" identifier != identifier) )) (compound_statement "{\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }" { (labeled_statement "LAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);" statement_identifier : (do_statement "do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);" do (compound_statement "{\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar3 = extraout_v1;" (assignment_expression "uVar3 = extraout_v1" identifier = identifier) ;) (do_statement "do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);" do (compound_statement "{\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      }" { (if_statement "if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }" if (parenthesized_expression "(param_1 != (uint *)0x0)" ( (binary_expression "param_1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }" { (expression_statement "*param_1 = uVar3;" (assignment_expression "*param_1 = uVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (if_statement "if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }" { (expression_statement "param_3 = param_3 - in_t5;" (assignment_expression "param_3 = param_3 - in_t5" identifier = (binary_expression "param_3 - in_t5" identifier - identifier)) ;) (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (labeled_statement "joined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }" statement_identifier : (if_statement "if (local_c == iVar4) {\n            return param_3;\n          }" if (parenthesized_expression "(local_c == iVar4)" ( (binary_expression "local_c == iVar4" identifier == identifier) )) (compound_statement "{\n            return param_3;\n          }" { (return_statement "return param_3;" return identifier ;) }))) (goto_statement "goto LAB_000f9d00;" goto statement_identifier ;) })) (expression_statement "in_t5 = in_t5 + -1;" (assignment_expression "in_t5 = in_t5 + -1" identifier = (binary_expression "in_t5 + -1" identifier + number_literal)) ;) (if_statement "if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }" if (parenthesized_expression "(in_t5 == 0)" ( (binary_expression "in_t5 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }" { (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (goto_statement "goto joined_r0x000f9d2c;" goto statement_identifier ;) })) (labeled_statement "LAB_000f9cd0:\n        FUN_000f952c(in_t8);" statement_identifier : (expression_statement "FUN_000f952c(in_t8);" (call_expression "FUN_000f952c(in_t8)" identifier (argument_list "(in_t8)" ( identifier ))) ;)) (expression_statement "uVar3 = local_10;" (assignment_expression "uVar3 = local_10" identifier = identifier) ;) }) while (parenthesized_expression "(local_10 != in_t7)" ( (binary_expression "local_10 != in_t7" identifier != identifier) )) ;) (expression_statement "param_3 = -1;" (assignment_expression "param_3 = -1" identifier = number_literal) ;) (expression_statement "iVar4 = -1;" (assignment_expression "iVar4 = -1" identifier = number_literal) ;) }) while (parenthesized_expression "(local_c != *piVar5)" ( (binary_expression "local_c != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) ;)) })) (return_statement "return iVar4;" return identifier ;) })))
(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) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 - IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (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 - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) }))) (goto_statement goto statement_identifier ;) })) (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 = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) ;)) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_000f9c30(uint *param_1,byte *param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint extraout_v1;\n  uint uVar3;\n  int iVar4;\n  int in_t5;\n  int *piVar5;\n  uint in_t7;\n  uint *in_t8;\n  uint local_10;\n  int local_c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  local_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar2 = *piVar5;\n  iVar4 = param_3;\njoined_r0x000f9d7c:\n  param_3 = iVar4;\n  if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }\n  return iVar4;\n}" (primitive_type "int") (function_declarator "FUN_000f9c30(uint *param_1,byte *param_2,int param_3)" (identifier "FUN_000f9c30") (parameter_list "(uint *param_1,byte *param_2,int param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint extraout_v1;\n  uint uVar3;\n  int iVar4;\n  int in_t5;\n  int *piVar5;\n  uint in_t7;\n  uint *in_t8;\n  uint local_10;\n  int local_c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  local_c = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }\nLAB_000f9c98:\n  iVar2 = *piVar5;\n  iVar4 = param_3;\njoined_r0x000f9d7c:\n  param_3 = iVar4;\n  if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }\n  return iVar4;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint extraout_v1;" (type_identifier "uint") (identifier "extraout_v1") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int in_t5;" (primitive_type "int") (identifier "in_t5") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "uint in_t7;" (type_identifier "uint") (identifier "in_t7") (; ";")) (declaration "uint *in_t8;" (type_identifier "uint") (pointer_declarator "*in_t8" (* "*") (identifier "in_t8")) (; ";")) (declaration "uint local_10;" (type_identifier "uint") (identifier "local_10") (; ";")) (declaration "int local_c;" (primitive_type "int") (identifier "local_c") (; ";")) (expression_statement "piVar5 = (int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "piVar5 = (int *)PTR___stack_chk_guard_0012b14c" (identifier "piVar5") (= "=") (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0012b14c"))) (; ";")) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0012b14c" (identifier "local_c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0012b14c")))) (; ";")) (if_statement "if (*PTR_DAT_0012a88c == '\x02') {\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }\n  else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" (if "if") (parenthesized_expression "(*PTR_DAT_0012a88c == '\x02')" (( "(") (binary_expression "*PTR_DAT_0012a88c == '\x02'" (pointer_expression "*PTR_DAT_0012a88c" (* "*") (identifier "PTR_DAT_0012a88c")) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n    if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }\n  }" ({ "{") (if_statement "if (param_3 != 0) {\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      in_t8 = &local_10;\n      in_t7 = 0xffffffff;\n      in_t5 = param_3;\n      goto LAB_000f9cd0;\n    }" ({ "{") (expression_statement "in_t8 = &local_10;" (assignment_expression "in_t8 = &local_10" (identifier "in_t8") (= "=") (pointer_expression "&local_10" (& "&") (identifier "local_10"))) (; ";")) (expression_statement "in_t7 = 0xffffffff;" (assignment_expression "in_t7 = 0xffffffff" (identifier "in_t7") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "in_t5 = param_3;" (assignment_expression "in_t5 = param_3" (identifier "in_t5") (= "=") (identifier "param_3")) (; ";")) (goto_statement "goto LAB_000f9cd0;" (goto "goto") (statement_identifier "LAB_000f9cd0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" (else "else") (compound_statement "{\n    iVar4 = param_3;\n    if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }\n  }" ({ "{") (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" (identifier "iVar4") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_3 != 0) {\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);\n      iVar2 = *piVar5;\n      iVar4 = param_3;\n      goto joined_r0x000f9d7c;\n    }" ({ "{") (do_statement "do {\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      } while (iVar4 != 0);" (do "do") (compound_statement "{\n        bVar1 = *param_2;\n        if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }\n        if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }\n        iVar4 = iVar4 + -1;\n        param_2 = param_2 + 1;\n      }" ({ "{") (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" (identifier "bVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (param_1 != (uint *)0x0) {\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }" (if "if") (parenthesized_expression "(param_1 != (uint *)0x0)" (( "(") (binary_expression "param_1 != (uint *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *param_1 = (uint)bVar1;\n          param_1 = param_1 + 1;\n        }" ({ "{") (expression_statement "*param_1 = (uint)bVar1;" (assignment_expression "*param_1 = (uint)bVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (bVar1 == 0) {\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }" (if "if") (parenthesized_expression "(bVar1 == 0)" (( "(") (binary_expression "bVar1 == 0" (identifier "bVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          param_3 = param_3 - iVar4;\n          goto LAB_000f9c98;\n        }" ({ "{") (expression_statement "param_3 = param_3 - iVar4;" (assignment_expression "param_3 = param_3 - iVar4" (identifier "param_3") (= "=") (binary_expression "param_3 - iVar4" (identifier "param_3") (- "-") (identifier "iVar4"))) (; ";")) (goto_statement "goto LAB_000f9c98;" (goto "goto") (statement_identifier "LAB_000f9c98") (; ";")) (} "}"))) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" (identifier "iVar2") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" (identifier "iVar4") (= "=") (identifier "param_3")) (; ";")) (goto_statement "goto joined_r0x000f9d7c;" (goto "goto") (statement_identifier "joined_r0x000f9d7c") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000f9c98:\n  iVar2 = *piVar5;" (statement_identifier "LAB_000f9c98") (: ":") (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" (identifier "iVar2") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";"))) (expression_statement "iVar4 = param_3;" (assignment_expression "iVar4 = param_3" (identifier "iVar4") (= "=") (identifier "param_3")) (; ";")) (labeled_statement "joined_r0x000f9d7c:\n  param_3 = iVar4;" (statement_identifier "joined_r0x000f9d7c") (: ":") (expression_statement "param_3 = iVar4;" (assignment_expression "param_3 = iVar4" (identifier "param_3") (= "=") (identifier "iVar4")) (; ";"))) (if_statement "if (local_c != iVar2) {\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }" (if "if") (parenthesized_expression "(local_c != iVar2)" (( "(") (binary_expression "local_c != iVar2" (identifier "local_c") (!= "!=") (identifier "iVar2")) () ")")) (compound_statement "{\nLAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);\n  }" ({ "{") (labeled_statement "LAB_000f9d00:\n    do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);" (statement_identifier "LAB_000f9d00") (: ":") (do_statement "do {\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    } while (local_c != *piVar5);" (do "do") (compound_statement "{\n      (*(code *)PTR___stack_chk_fail_0012b0c8)();\n      uVar3 = extraout_v1;\n      do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);\n      param_3 = -1;\n      iVar4 = -1;\n    }" ({ "{") (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0012b0c8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar3 = extraout_v1;" (assignment_expression "uVar3 = extraout_v1" (identifier "uVar3") (= "=") (identifier "extraout_v1")) (; ";")) (do_statement "do {\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      } while (local_10 != in_t7);" (do "do") (compound_statement "{\n        if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }\n        if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }\n        in_t5 = in_t5 + -1;\n        if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }\nLAB_000f9cd0:\n        FUN_000f952c(in_t8);\n        uVar3 = local_10;\n      }" ({ "{") (if_statement "if (param_1 != (uint *)0x0) {\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }" (if "if") (parenthesized_expression "(param_1 != (uint *)0x0)" (( "(") (binary_expression "param_1 != (uint *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *param_1 = uVar3;\n          param_1 = param_1 + 1;\n        }" ({ "{") (expression_statement "*param_1 = uVar3;" (assignment_expression "*param_1 = uVar3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (uVar3 == 0) {\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          param_3 = param_3 - in_t5;\n          iVar4 = *piVar5;\njoined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }\n          goto LAB_000f9d00;\n        }" ({ "{") (expression_statement "param_3 = param_3 - in_t5;" (assignment_expression "param_3 = param_3 - in_t5" (identifier "param_3") (= "=") (binary_expression "param_3 - in_t5" (identifier "param_3") (- "-") (identifier "in_t5"))) (; ";")) (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" (identifier "iVar4") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (labeled_statement "joined_r0x000f9d2c:\n          if (local_c == iVar4) {\n            return param_3;\n          }" (statement_identifier "joined_r0x000f9d2c") (: ":") (if_statement "if (local_c == iVar4) {\n            return param_3;\n          }" (if "if") (parenthesized_expression "(local_c == iVar4)" (( "(") (binary_expression "local_c == iVar4" (identifier "local_c") (== "==") (identifier "iVar4")) () ")")) (compound_statement "{\n            return param_3;\n          }" ({ "{") (return_statement "return param_3;" (return "return") (identifier "param_3") (; ";")) (} "}")))) (goto_statement "goto LAB_000f9d00;" (goto "goto") (statement_identifier "LAB_000f9d00") (; ";")) (} "}"))) (expression_statement "in_t5 = in_t5 + -1;" (assignment_expression "in_t5 = in_t5 + -1" (identifier "in_t5") (= "=") (binary_expression "in_t5 + -1" (identifier "in_t5") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (in_t5 == 0) {\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }" (if "if") (parenthesized_expression "(in_t5 == 0)" (( "(") (binary_expression "in_t5 == 0" (identifier "in_t5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar4 = *piVar5;\n          goto joined_r0x000f9d2c;\n        }" ({ "{") (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" (identifier "iVar4") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (goto_statement "goto joined_r0x000f9d2c;" (goto "goto") (statement_identifier "joined_r0x000f9d2c") (; ";")) (} "}"))) (labeled_statement "LAB_000f9cd0:\n        FUN_000f952c(in_t8);" (statement_identifier "LAB_000f9cd0") (: ":") (expression_statement "FUN_000f952c(in_t8);" (call_expression "FUN_000f952c(in_t8)" (identifier "FUN_000f952c") (argument_list "(in_t8)" (( "(") (identifier "in_t8") () ")"))) (; ";"))) (expression_statement "uVar3 = local_10;" (assignment_expression "uVar3 = local_10" (identifier "uVar3") (= "=") (identifier "local_10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_10 != in_t7)" (( "(") (binary_expression "local_10 != in_t7" (identifier "local_10") (!= "!=") (identifier "in_t7")) () ")")) (; ";")) (expression_statement "param_3 = -1;" (assignment_expression "param_3 = -1" (identifier "param_3") (= "=") (number_literal "-1")) (; ";")) (expression_statement "iVar4 = -1;" (assignment_expression "iVar4 = -1" (identifier "iVar4") (= "=") (number_literal "-1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_c != *piVar5)" (( "(") (binary_expression "local_c != *piVar5" (identifier "local_c") (!= "!=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (; ";"))) (} "}"))) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}")))

size_t function_1(type_1 *dest,char *src,size_t var_1)

{
  type_2 var_3;
  size_t var_4;
  int var_6;
  type_3 extraout_v1;
  type_3 var_7;
  type_2 *var_2;
  size_t var_8;
  int *piVar6;
  int var_11;
  type_1 *in_t8;
  type_1 var_10;
  int var_5;
  
  piVar6 = (int *)PTR___stack_chk_guard_0012b14c;
  var_5 = *(int *)PTR___stack_chk_guard_0012b14c;
  if (*PTR_unicode_status_0012a88c == '\x02') {
    if (var_1 != 0) {
      in_t8 = &var_10;
      var_11 = -1;
      var_8 = var_1;
      goto LAB_000f9cd0;
    }
  }
  else {
    var_4 = var_1;
    var_2 = (type_2 *)src;
    if (var_1 != 0) {
      do {
        src = (char *)(var_2 + 1);
        var_3 = *var_2;
        if ((type_3 *)dest != (type_3 *)0x0) {
          *dest = (type_3)var_3;
          dest = (type_1 *)((type_3 *)dest + 1);
        }
        if (var_3 == 0) {
          var_1 = var_1 - var_4;
          goto LAB_000f9c98;
        }
        var_4 = var_4 - 1;
        var_2 = (type_2 *)src;
      } while (var_4 != 0);
      var_6 = *piVar6;
      var_4 = var_1;
      goto joined_r0x000f9d7c;
    }
  }
LAB_000f9c98:
  var_6 = *piVar6;
  var_4 = var_1;
joined_r0x000f9d7c:
  var_1 = var_4;
  if (var_5 != var_6) {
LAB_000f9d00:
    do {
      (*(type_4 *)PTR___stack_chk_fail_0012b0c8)();
      var_7 = extraout_v1;
      do {
        if ((type_3 *)dest != (type_3 *)0x0) {
          *dest = var_7;
          dest = (type_1 *)((type_3 *)dest + 1);
        }
        if (var_7 == 0) {
          var_1 = var_1 - var_8;
          var_6 = *piVar6;
joined_r0x000f9d2c:
          if (var_5 == var_6) {
            return var_1;
          }
          goto LAB_000f9d00;
        }
        var_8 = var_8 - 1;
        if (var_8 == 0) {
          var_6 = *piVar6;
          goto joined_r0x000f9d2c;
        }
LAB_000f9cd0:
        src = var_9(in_t8,src);
        var_7 = var_10;
      } while (var_10 != var_11);
      var_1 = 0xffffffff;
      var_4 = 0xffffffff;
    } while (var_5 != *piVar6);
  }
  return var_4;
}


(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: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (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: (identifier)))) (goto_statement label: (statement_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))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier))))) (goto_statement label: (statement_identifier)))) (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: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))))))) (return_statement (identifier)))))

int MASKED(uint *param_1,byte *param_2,int param_3)

{
  byte bVar1;
  int iVar2;
  uint extraout_v1;
  uint uVar3;
  int iVar4;
  int in_t5;
  int *piVar5;
  uint in_t7;
  uint *in_t8;
  uint local_10;
  int local_c;
  
  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;
  local_c = *(int *)PTR___stack_chk_guard_0012b14c;
  if (*PTR_DAT_0012a88c == '\x02') {
    if (param_3 != 0) {
      in_t8 = &local_10;
      in_t7 = 0xffffffff;
      in_t5 = param_3;
      goto LAB_000f9cd0;
    }
  }
  else {
    iVar4 = param_3;
    if (param_3 != 0) {
      do {
        bVar1 = *param_2;
        if (param_1 != (uint *)0x0) {
          *param_1 = (uint)bVar1;
          param_1 = param_1 + 1;
        }
        if (bVar1 == 0) {
          param_3 = param_3 - iVar4;
          goto LAB_000f9c98;
        }
        iVar4 = iVar4 + -1;
        param_2 = param_2 + 1;
      } while (iVar4 != 0);
      iVar2 = *piVar5;
      iVar4 = param_3;
      goto joined_r0x000f9d7c;
    }
  }
LAB_000f9c98:
  iVar2 = *piVar5;
  iVar4 = param_3;
joined_r0x000f9d7c:
  param_3 = iVar4;
  if (local_c != iVar2) {
LAB_000f9d00:
    do {
      (*(code *)PTR___stack_chk_fail_0012b0c8)();
      uVar3 = extraout_v1;
      do {
        if (param_1 != (uint *)0x0) {
          *param_1 = uVar3;
          param_1 = param_1 + 1;
        }
        if (uVar3 == 0) {
          param_3 = param_3 - in_t5;
          iVar4 = *piVar5;
joined_r0x000f9d2c:
          if (local_c == iVar4) {
            return param_3;
          }
          goto LAB_000f9d00;
        }
        in_t5 = in_t5 + -1;
        if (in_t5 == 0) {
          iVar4 = *piVar5;
          goto joined_r0x000f9d2c;
        }
LAB_000f9cd0:
        FUN_000f952c(in_t8);
        uVar3 = local_10;
      } while (local_10 != in_t7);
      param_3 = -1;
      iVar4 = -1;
    } while (local_c != *piVar5);
  }
  return iVar4;
}

