
void cmd_putstr(char *s)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  int in_a1;
  char *pcVar4;
  int iVar5;
  LWCHAR unaff_s1;
  undefined *unaff_s2;
  undefined *unaff_s3;
  int *piVar6;
  LWCHAR ch1;
  char *pcVar7;
  undefined *puVar8;
  code *pcVar9;
  char *pcStack_68;
  int iStack_64;
  char *pcStack_5c;
  LWCHAR LStack_58;
  undefined *puStack_54;
  undefined *puStack_50;
  code *pcStack_4c;
  char *ns;
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_0004f374;
  local_2c = *(int *)PTR___stack_chk_guard_0004f374;
  iVar3 = (*(code *)PTR_strlen_0004f30c)();
  puVar1 = PTR_utf_mode_0004ede8;
  puVar8 = PTR_CHAR_ARRAY_0004ebf8;
  pcVar7 = s + iVar3;
  if (*s != '\0') {
    ch1 = 0;
    do {
      ns = s;
      unaff_s1 = step_char(&ns,1,pcVar7);
      pcVar4 = s;
      if (s < ns) {
        do {
          s = pcVar4 + 1;
          putchr((int)*pcVar4);
          pcVar4 = s;
        } while (s < ns);
      }
      if (*(int *)puVar1 == 0) {
LAB_0001bdf0:
        iVar3 = 1;
      }
      else {
        iVar3 = is_composing_char(unaff_s1);
        if (iVar3 == 0) {
          iVar3 = is_combining_char(ch1,unaff_s1);
          if (iVar3 == 0) {
            iVar3 = is_wide_char(unaff_s1);
            if (iVar3 == 0) goto LAB_0001bdf0;
            iVar3 = 2;
            goto LAB_0001bdf4;
          }
        }
        iVar3 = 0;
      }
LAB_0001bdf4:
      in_a1 = (int)*s;
      *(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;
      *(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;
      unaff_s2 = puVar8;
      unaff_s3 = puVar8;
      ch1 = unaff_s1;
    } while (in_a1 != 0);
  }
  if (local_2c == *(int *)puVar2) {
    return;
  }
  pcVar9 = len_cmdbuf;
  puVar8 = PTR___stack_chk_fail_0004f354;
  (*(code *)PTR___stack_chk_fail_0004f354)();
  piVar6 = *(int **)(puVar8 + 0x334c8);
  iVar5 = *(int *)(puVar8 + 0x32d4c);
  pcVar7 = (char *)(iVar5 + -0x448);
  iStack_64 = *piVar6;
  pcStack_68 = pcVar7;
  pcStack_5c = s;
  LStack_58 = unaff_s1;
  puStack_54 = unaff_s2;
  puStack_50 = unaff_s3;
  pcStack_4c = pcVar9;
  iVar3 = (**(code **)(puVar8 + 0x33460))(pcVar7);
  if (*(char *)(iVar5 + -0x448) != '\0') {
    do {
      in_a1 = 1;
      step_char(&pcStack_68,1,pcVar7 + iVar3);
    } while (*pcStack_68 != '\0');
  }
  if (iStack_64 == *piVar6) {
    return;
  }
  pcVar9 = *(code **)(puVar8 + 0x334a8);
  (*pcVar9)();
  *(int *)(*(int *)(pcVar9 + 0x32c84) + -0x47c) = iStack_64;
  *(int *)(*(int *)(pcVar9 + 0x32c84) + -0x480) = in_a1;
  if (iStack_64 != 0) {
    *(int *)(iStack_64 + 8) = iStack_64;
  }
  return;
}



int cmd_putstr(char *param_1,int param_2)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  char *pcVar4;
  int iVar5;
  int iVar6;
  undefined4 unaff_s1;
  undefined *unaff_s2;
  undefined *unaff_s3;
  int *piVar7;
  undefined4 uVar8;
  char *pcVar9;
  undefined *puVar10;
  code *pcVar11;
  char *pcStack_68;
  int iStack_64;
  char *pcStack_5c;
  undefined4 uStack_58;
  undefined *puStack_54;
  undefined *puStack_50;
  code *pcStack_4c;
  char *local_30;
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_0004f374;
  local_2c = *(int *)PTR___stack_chk_guard_0004f374;
  iVar3 = (*(code *)PTR_strlen_0004f30c)();
  puVar1 = PTR_utf_mode_0004ede8;
  puVar10 = PTR_DAT_0004ebf8;
  pcVar9 = param_1 + iVar3;
  if (*param_1 != '\0') {
    uVar8 = 0;
    do {
      local_30 = param_1;
      unaff_s1 = step_char(&local_30,1,pcVar9);
      pcVar4 = param_1;
      if (param_1 < local_30) {
        do {
          param_1 = pcVar4 + 1;
          putchr((int)*pcVar4);
          pcVar4 = param_1;
        } while (param_1 < local_30);
      }
      if (*(int *)puVar1 == 0) {
LAB_0001bdf0:
        iVar3 = 1;
      }
      else {
        iVar3 = is_composing_char(unaff_s1);
        if (iVar3 == 0) {
          iVar3 = is_combining_char(uVar8,unaff_s1);
          if (iVar3 == 0) {
            iVar3 = is_wide_char(unaff_s1);
            if (iVar3 == 0) goto LAB_0001bdf0;
            iVar3 = 2;
            goto LAB_0001bdf4;
          }
        }
        iVar3 = 0;
      }
LAB_0001bdf4:
      param_2 = (int)*param_1;
      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;
      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;
      unaff_s2 = puVar10;
      unaff_s3 = puVar10;
      uVar8 = unaff_s1;
    } while (param_2 != 0);
  }
  if (local_2c == *(int *)puVar2) {
    return *(int *)puVar2;
  }
  pcVar11 = len_cmdbuf;
  puVar10 = PTR___stack_chk_fail_0004f354;
  (*(code *)PTR___stack_chk_fail_0004f354)();
  piVar7 = *(int **)(puVar10 + 0x334c8);
  iVar5 = *(int *)(puVar10 + 0x32d4c);
  pcVar9 = (char *)(iVar5 + -0x448);
  iStack_64 = *piVar7;
  pcStack_68 = pcVar9;
  pcStack_5c = param_1;
  uStack_58 = unaff_s1;
  puStack_54 = unaff_s2;
  puStack_50 = unaff_s3;
  pcStack_4c = pcVar11;
  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);
  iVar6 = 0;
  if (*(char *)(iVar5 + -0x448) != '\0') {
    do {
      param_2 = 1;
      step_char(&pcStack_68,1,pcVar9 + iVar3);
      iVar6 = iVar6 + 1;
    } while (*pcStack_68 != '\0');
  }
  if (iStack_64 == *piVar7) {
    return iVar6;
  }
  pcVar11 = *(code **)(puVar10 + 0x334a8);
  (*pcVar11)();
  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;
  iVar3 = *(int *)(pcVar11 + 0x32c84);
  *(int *)(iVar3 + -0x480) = param_2;
  if (iStack_64 != 0) {
    *(int *)(iStack_64 + 8) = iStack_64;
  }
  return iVar3;
}


lui gp,0x4
addiu gp,gp,-0x514c
addu gp,gp,t9
addiu sp,sp,-0x48
lw t9,-0x78c4(gp)
sw s7,0x3c(sp)
lw s7,-0x785c(gp)
sw s0,0x20(sp)
or s0,a0,zero
sw gp,0x10(sp)
sw s5,0x34(sp)
sw ra,0x44(sp)
sw s8,0x40(sp)
sw s6,0x38(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
lw v0,0x0(s7)
sw v0,0x1c(sp)
jalr t9
_nop
lb v1,0x0(s0)
addu s5,s0,v0
beq v1,zero,0x0001be18
_lw gp,0x10(sp)
lw s6,-0x7de8(gp)
or s4,zero,zero
lw s3,-0x7fd8(gp)
addiu s8,sp,0x18
lw s2,-0x7fd8(gp)
lw t9,-0x7db0(gp)
li a1,0x1
or a2,s5,zero
sw s0,0x18(sp)
bal 0x0001a114
_or a0,s8,zero
or s1,v0,zero
lw v0,0x18(sp)
sltu v0,s0,v0
beq v0,zero,0x0001bde4
_lw gp,0x10(sp)
addiu s0,s0,0x1
lw t9,-0x7ee0(gp)
bal 0x0002e338
_lb a0,-0x1(s0)
lw v0,0x18(sp)
sltu v0,s0,v0
bne v0,zero,0x0001bdc4
_lw gp,0x10(sp)
lw v0,0x0(s6)
bne v0,zero,0x0001be54
_lw t9,-0x7db8(gp)
li a0,0x1
lw v1,-0x44c(s3)
or s4,s1,zero
lw v0,-0x450(s2)
lb a1,0x0(s0)
addu v1,v1,a0
addu v0,v0,a0
sw v1,-0x44c(s3)
bne a1,zero,0x0001bd98
_sw v0,-0x450(s2)
lw v1,0x1c(sp)
lw v0,0x0(s7)
bne v1,v0,0x0001bea0
_lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
bal 0x0001a270
_or a0,s1,zero
beq v0,zero,0x0001be6c
_lw gp,0x10(sp)
b 0x0001bdf4
_or a0,zero,zero
lw t9,-0x7dac(gp)
or a1,s1,zero
bal 0x0001a614
_or a0,s4,zero
bne v0,zero,0x0001be64
_lw gp,0x10(sp)
lw t9,-0x7da8(gp)
bal 0x0001a584
_or a0,s1,zero
beq v0,zero,0x0001bdf0
_lw gp,0x10(sp)
b 0x0001bdf4
_li a0,0x2
lw t9,-0x787c(gp)
jalr t9
_nop
(translation_unit "int cmd_putstr(char *param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar7;\n  undefined4 uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  undefined4 uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar10 = PTR_DAT_0004ebf8;\n  pcVar9 = param_1 + iVar3;\n  if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }\n  pcVar11 = len_cmdbuf;\n  puVar10 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar7 = *(int **)(puVar10 + 0x334c8);\n  iVar5 = *(int *)(puVar10 + 0x32d4c);\n  pcVar9 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar7;\n  pcStack_68 = pcVar9;\n  pcStack_5c = param_1;\n  uStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar11;\n  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);\n  iVar6 = 0;\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar7) {\n    return iVar6;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x334a8);\n  (*pcVar11)();\n  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;\n  iVar3 = *(int *)(pcVar11 + 0x32c84);\n  *(int *)(iVar3 + -0x480) = param_2;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return iVar3;\n}\n\n" (function_definition "int cmd_putstr(char *param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar7;\n  undefined4 uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  undefined4 uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar10 = PTR_DAT_0004ebf8;\n  pcVar9 = param_1 + iVar3;\n  if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }\n  pcVar11 = len_cmdbuf;\n  puVar10 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar7 = *(int **)(puVar10 + 0x334c8);\n  iVar5 = *(int *)(puVar10 + 0x32d4c);\n  pcVar9 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar7;\n  pcStack_68 = pcVar9;\n  pcStack_5c = param_1;\n  uStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar11;\n  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);\n  iVar6 = 0;\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar7) {\n    return iVar6;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x334a8);\n  (*pcVar11)();\n  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;\n  iVar3 = *(int *)(pcVar11 + 0x32c84);\n  *(int *)(iVar3 + -0x480) = param_2;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return iVar3;\n}" primitive_type (function_declarator "cmd_putstr(char *param_1,int param_2)" identifier (parameter_list "(char *param_1,int param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar7;\n  undefined4 uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  undefined4 uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar10 = PTR_DAT_0004ebf8;\n  pcVar9 = param_1 + iVar3;\n  if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }\n  pcVar11 = len_cmdbuf;\n  puVar10 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar7 = *(int **)(puVar10 + 0x334c8);\n  iVar5 = *(int *)(puVar10 + 0x32d4c);\n  pcVar9 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar7;\n  pcStack_68 = pcVar9;\n  pcStack_5c = param_1;\n  uStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar11;\n  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);\n  iVar6 = 0;\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar7) {\n    return iVar6;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x334a8);\n  (*pcVar11)();\n  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;\n  iVar3 = *(int *)(pcVar11 + 0x32c84);\n  *(int *)(iVar3 + -0x480) = param_2;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 unaff_s1;" type_identifier identifier ;) (declaration "undefined *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "char *pcStack_68;" primitive_type (pointer_declarator "*pcStack_68" * identifier) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "char *pcStack_5c;" primitive_type (pointer_declarator "*pcStack_5c" * identifier) ;) (declaration "undefined4 uStack_58;" type_identifier identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "code *pcStack_4c;" type_identifier (pointer_declarator "*pcStack_4c" * identifier) ;) (declaration "char *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0004f374;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0004f374" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0004f374;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0004f374" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0004f374" * (cast_expression "(int *)PTR___stack_chk_guard_0004f374" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0004f30c)();" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0004f30c)()" identifier = (call_expression "(*(code *)PTR_strlen_0004f30c)()" (parenthesized_expression "(*(code *)PTR_strlen_0004f30c)" ( (pointer_expression "*(code *)PTR_strlen_0004f30c" * (cast_expression "(code *)PTR_strlen_0004f30c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "puVar1 = PTR_utf_mode_0004ede8;" (assignment_expression "puVar1 = PTR_utf_mode_0004ede8" identifier = identifier) ;) (expression_statement "puVar10 = PTR_DAT_0004ebf8;" (assignment_expression "puVar10 = PTR_DAT_0004ebf8" identifier = identifier) ;) (expression_statement "pcVar9 = param_1 + iVar3;" (assignment_expression "pcVar9 = param_1 + iVar3" identifier = (binary_expression "param_1 + iVar3" identifier + identifier)) ;) (if_statement "if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }" if (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);" do (compound_statement "{\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    }" { (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" identifier = identifier) ;) (expression_statement "unaff_s1 = step_char(&local_30,1,pcVar9);" (assignment_expression "unaff_s1 = step_char(&local_30,1,pcVar9)" identifier = (call_expression "step_char(&local_30,1,pcVar9)" identifier (argument_list "(&local_30,1,pcVar9)" ( (pointer_expression "&local_30" & identifier) , number_literal , identifier )))) ;) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" identifier = identifier) ;) (if_statement "if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }" if (parenthesized_expression "(param_1 < local_30)" ( (binary_expression "param_1 < local_30" identifier < identifier) )) (compound_statement "{\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }" { (do_statement "do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);" do (compound_statement "{\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        }" { (expression_statement "param_1 = pcVar4 + 1;" (assignment_expression "param_1 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "putchr((int)*pcVar4);" (call_expression "putchr((int)*pcVar4)" identifier (argument_list "((int)*pcVar4)" ( (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier)) ))) ;) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" identifier = identifier) ;) }) while (parenthesized_expression "(param_1 < local_30)" ( (binary_expression "param_1 < local_30" identifier < identifier) )) ;) })) (if_statement "if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" if (parenthesized_expression "(*(int *)puVar1 == 0)" ( (binary_expression "*(int *)puVar1 == 0" (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) (compound_statement "{\nLAB_0001bdf0:\n        iVar3 = 1;\n      }" { (labeled_statement "LAB_0001bdf0:\n        iVar3 = 1;" statement_identifier : (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" else (compound_statement "{\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" { (expression_statement "iVar3 = is_composing_char(unaff_s1);" (assignment_expression "iVar3 = is_composing_char(unaff_s1)" identifier = (call_expression "is_composing_char(unaff_s1)" identifier (argument_list "(unaff_s1)" ( identifier )))) ;) (if_statement "if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }" { (expression_statement "iVar3 = is_combining_char(uVar8,unaff_s1);" (assignment_expression "iVar3 = is_combining_char(uVar8,unaff_s1)" identifier = (call_expression "is_combining_char(uVar8,unaff_s1)" identifier (argument_list "(uVar8,unaff_s1)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }" { (expression_statement "iVar3 = is_wide_char(unaff_s1);" (assignment_expression "iVar3 = is_wide_char(unaff_s1)" identifier = (call_expression "is_wide_char(unaff_s1)" identifier (argument_list "(unaff_s1)" ( identifier )))) ;) (if_statement "if (iVar3 == 0) goto LAB_0001bdf0;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001bdf0;" goto statement_identifier ;)) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0001bdf4;" goto statement_identifier ;) })) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0001bdf4:\n      param_2 = (int)*param_1;" statement_identifier : (expression_statement "param_2 = (int)*param_1;" (assignment_expression "param_2 = (int)*param_1" identifier = (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier))) ;)) (expression_statement "*(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;" (assignment_expression "*(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x44c)" * (cast_expression "(int *)(puVar10 + -0x44c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x44c)" ( (binary_expression "puVar10 + -0x44c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar10 + -0x44c) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x44c)" * (cast_expression "(int *)(puVar10 + -0x44c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x44c)" ( (binary_expression "puVar10 + -0x44c" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;" (assignment_expression "*(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x450)" * (cast_expression "(int *)(puVar10 + -0x450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x450)" ( (binary_expression "puVar10 + -0x450" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar10 + -0x450) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x450)" * (cast_expression "(int *)(puVar10 + -0x450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x450)" ( (binary_expression "puVar10 + -0x450" identifier + number_literal) )))) + identifier)) ;) (expression_statement "unaff_s2 = puVar10;" (assignment_expression "unaff_s2 = puVar10" identifier = identifier) ;) (expression_statement "unaff_s3 = puVar10;" (assignment_expression "unaff_s3 = puVar10" identifier = identifier) ;) (expression_statement "uVar8 = unaff_s1;" (assignment_expression "uVar8 = unaff_s1" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) ;) })) (if_statement "if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar2;\n  }" { (return_statement "return *(int *)puVar2;" return (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "pcVar11 = len_cmdbuf;" (assignment_expression "pcVar11 = len_cmdbuf" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_0004f354;" (assignment_expression "puVar10 = PTR___stack_chk_fail_0004f354" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0004f354)();" (call_expression "(*(code *)PTR___stack_chk_fail_0004f354)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0004f354)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0004f354" * (cast_expression "(code *)PTR___stack_chk_fail_0004f354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(puVar10 + 0x334c8);" (assignment_expression "piVar7 = *(int **)(puVar10 + 0x334c8)" identifier = (pointer_expression "*(int **)(puVar10 + 0x334c8)" * (cast_expression "(int **)(puVar10 + 0x334c8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x334c8)" ( (binary_expression "puVar10 + 0x334c8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puVar10 + 0x32d4c);" (assignment_expression "iVar5 = *(int *)(puVar10 + 0x32d4c)" identifier = (pointer_expression "*(int *)(puVar10 + 0x32d4c)" * (cast_expression "(int *)(puVar10 + 0x32d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x32d4c)" ( (binary_expression "puVar10 + 0x32d4c" identifier + number_literal) ))))) ;) (expression_statement "pcVar9 = (char *)(iVar5 + -0x448);" (assignment_expression "pcVar9 = (char *)(iVar5 + -0x448)" identifier = (cast_expression "(char *)(iVar5 + -0x448)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x448)" ( (binary_expression "iVar5 + -0x448" identifier + number_literal) )))) ;) (expression_statement "iStack_64 = *piVar7;" (assignment_expression "iStack_64 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "pcStack_68 = pcVar9;" (assignment_expression "pcStack_68 = pcVar9" identifier = identifier) ;) (expression_statement "pcStack_5c = param_1;" (assignment_expression "pcStack_5c = param_1" identifier = identifier) ;) (expression_statement "uStack_58 = unaff_s1;" (assignment_expression "uStack_58 = unaff_s1" identifier = identifier) ;) (expression_statement "puStack_54 = unaff_s2;" (assignment_expression "puStack_54 = unaff_s2" identifier = identifier) ;) (expression_statement "puStack_50 = unaff_s3;" (assignment_expression "puStack_50 = unaff_s3" identifier = identifier) ;) (expression_statement "pcStack_4c = pcVar11;" (assignment_expression "pcStack_4c = pcVar11" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);" (assignment_expression "iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9)" identifier = (call_expression "(**(code **)(puVar10 + 0x33460))(pcVar9)" (parenthesized_expression "(**(code **)(puVar10 + 0x33460))" ( (pointer_expression "**(code **)(puVar10 + 0x33460)" * (pointer_expression "*(code **)(puVar10 + 0x33460)" * (cast_expression "(code **)(puVar10 + 0x33460)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x33460)" ( (binary_expression "puVar10 + 0x33460" identifier + number_literal) ))))) )) (argument_list "(pcVar9)" ( identifier )))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }" if (parenthesized_expression "(*(char *)(iVar5 + -0x448) != '\0')" ( (binary_expression "*(char *)(iVar5 + -0x448) != '\0'" (pointer_expression "*(char *)(iVar5 + -0x448)" * (cast_expression "(char *)(iVar5 + -0x448)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x448)" ( (binary_expression "iVar5 + -0x448" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }" { (do_statement "do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');" do (compound_statement "{\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    }" { (expression_statement "param_2 = 1;" (assignment_expression "param_2 = 1" identifier = number_literal) ;) (expression_statement "step_char(&pcStack_68,1,pcVar9 + iVar3);" (call_expression "step_char(&pcStack_68,1,pcVar9 + iVar3)" identifier (argument_list "(&pcStack_68,1,pcVar9 + iVar3)" ( (pointer_expression "&pcStack_68" & identifier) , number_literal , (binary_expression "pcVar9 + iVar3" identifier + identifier) ))) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcStack_68 != '\0')" ( (binary_expression "*pcStack_68 != '\0'" (pointer_expression "*pcStack_68" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (iStack_64 == *piVar7) {\n    return iVar6;\n  }" if (parenthesized_expression "(iStack_64 == *piVar7)" ( (binary_expression "iStack_64 == *piVar7" identifier == (pointer_expression "*piVar7" * identifier)) )) (compound_statement "{\n    return iVar6;\n  }" { (return_statement "return iVar6;" return identifier ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x334a8);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x334a8)" identifier = (pointer_expression "*(code **)(puVar10 + 0x334a8)" * (cast_expression "(code **)(puVar10 + 0x334a8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x334a8)" ( (binary_expression "puVar10 + 0x334a8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;" (assignment_expression "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64" (pointer_expression "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c)" * (cast_expression "(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar11 + 0x32c84) + -0x47c)" ( (binary_expression "*(int *)(pcVar11 + 0x32c84) + -0x47c" (pointer_expression "*(int *)(pcVar11 + 0x32c84)" * (cast_expression "(int *)(pcVar11 + 0x32c84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x32c84)" ( (binary_expression "pcVar11 + 0x32c84" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(pcVar11 + 0x32c84);" (assignment_expression "iVar3 = *(int *)(pcVar11 + 0x32c84)" identifier = (pointer_expression "*(int *)(pcVar11 + 0x32c84)" * (cast_expression "(int *)(pcVar11 + 0x32c84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x32c84)" ( (binary_expression "pcVar11 + 0x32c84" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar3 + -0x480) = param_2;" (assignment_expression "*(int *)(iVar3 + -0x480) = param_2" (pointer_expression "*(int *)(iVar3 + -0x480)" * (cast_expression "(int *)(iVar3 + -0x480)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -0x480)" ( (binary_expression "iVar3 + -0x480" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }" if (parenthesized_expression "(iStack_64 != 0)" ( (binary_expression "iStack_64 != 0" identifier != number_literal) )) (compound_statement "{\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }" { (expression_statement "*(int *)(iStack_64 + 8) = iStack_64;" (assignment_expression "*(int *)(iStack_64 + 8) = iStack_64" (pointer_expression "*(int *)(iStack_64 + 8)" * (cast_expression "(int *)(iStack_64 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_64 + 8)" ( (binary_expression "iStack_64 + 8" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "void cmd_putstr(char *s)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int in_a1;\n  char *pcVar4;\n  int iVar5;\n  LWCHAR unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar6;\n  LWCHAR ch1;\n  char *pcVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  LWCHAR LStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *ns;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar8 = PTR_CHAR_ARRAY_0004ebf8;\n  pcVar7 = s + iVar3;\n  if (*s != '\0') {\n    ch1 = 0;\n    do {\n      ns = s;\n      unaff_s1 = step_char(&ns,1,pcVar7);\n      pcVar4 = s;\n      if (s < ns) {\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      in_a1 = (int)*s;\n      *(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;\n      *(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;\n      unaff_s2 = puVar8;\n      unaff_s3 = puVar8;\n      ch1 = unaff_s1;\n    } while (in_a1 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  pcVar9 = len_cmdbuf;\n  puVar8 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar6 = *(int **)(puVar8 + 0x334c8);\n  iVar5 = *(int *)(puVar8 + 0x32d4c);\n  pcVar7 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar6;\n  pcStack_68 = pcVar7;\n  pcStack_5c = s;\n  LStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x33460))(pcVar7);\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      in_a1 = 1;\n      step_char(&pcStack_68,1,pcVar7 + iVar3);\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar6) {\n    return;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x334a8);\n  (*pcVar9)();\n  *(int *)(*(int *)(pcVar9 + 0x32c84) + -0x47c) = iStack_64;\n  *(int *)(*(int *)(pcVar9 + 0x32c84) + -0x480) = in_a1;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return;\n}\n\n" (function_definition "void cmd_putstr(char *s)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int in_a1;\n  char *pcVar4;\n  int iVar5;\n  LWCHAR unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar6;\n  LWCHAR ch1;\n  char *pcVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  LWCHAR LStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *ns;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar8 = PTR_CHAR_ARRAY_0004ebf8;\n  pcVar7 = s + iVar3;\n  if (*s != '\0') {\n    ch1 = 0;\n    do {\n      ns = s;\n      unaff_s1 = step_char(&ns,1,pcVar7);\n      pcVar4 = s;\n      if (s < ns) {\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      in_a1 = (int)*s;\n      *(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;\n      *(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;\n      unaff_s2 = puVar8;\n      unaff_s3 = puVar8;\n      ch1 = unaff_s1;\n    } while (in_a1 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  pcVar9 = len_cmdbuf;\n  puVar8 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar6 = *(int **)(puVar8 + 0x334c8);\n  iVar5 = *(int *)(puVar8 + 0x32d4c);\n  pcVar7 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar6;\n  pcStack_68 = pcVar7;\n  pcStack_5c = s;\n  LStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x33460))(pcVar7);\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      in_a1 = 1;\n      step_char(&pcStack_68,1,pcVar7 + iVar3);\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar6) {\n    return;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x334a8);\n  (*pcVar9)();\n  *(int *)(*(int *)(pcVar9 + 0x32c84) + -0x47c) = iStack_64;\n  *(int *)(*(int *)(pcVar9 + 0x32c84) + -0x480) = in_a1;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return;\n}" primitive_type (function_declarator "cmd_putstr(char *s)" identifier (parameter_list "(char *s)" ( (parameter_declaration "char *s" primitive_type (pointer_declarator "*s" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int in_a1;\n  char *pcVar4;\n  int iVar5;\n  LWCHAR unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar6;\n  LWCHAR ch1;\n  char *pcVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  LWCHAR LStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *ns;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar8 = PTR_CHAR_ARRAY_0004ebf8;\n  pcVar7 = s + iVar3;\n  if (*s != '\0') {\n    ch1 = 0;\n    do {\n      ns = s;\n      unaff_s1 = step_char(&ns,1,pcVar7);\n      pcVar4 = s;\n      if (s < ns) {\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      in_a1 = (int)*s;\n      *(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;\n      *(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;\n      unaff_s2 = puVar8;\n      unaff_s3 = puVar8;\n      ch1 = unaff_s1;\n    } while (in_a1 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  pcVar9 = len_cmdbuf;\n  puVar8 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar6 = *(int **)(puVar8 + 0x334c8);\n  iVar5 = *(int *)(puVar8 + 0x32d4c);\n  pcVar7 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar6;\n  pcStack_68 = pcVar7;\n  pcStack_5c = s;\n  LStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x33460))(pcVar7);\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      in_a1 = 1;\n      step_char(&pcStack_68,1,pcVar7 + iVar3);\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar6) {\n    return;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x334a8);\n  (*pcVar9)();\n  *(int *)(*(int *)(pcVar9 + 0x32c84) + -0x47c) = iStack_64;\n  *(int *)(*(int *)(pcVar9 + 0x32c84) + -0x480) = in_a1;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int in_a1;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "LWCHAR unaff_s1;" type_identifier identifier ;) (declaration "undefined *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "LWCHAR ch1;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char *pcStack_68;" primitive_type (pointer_declarator "*pcStack_68" * identifier) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "char *pcStack_5c;" primitive_type (pointer_declarator "*pcStack_5c" * identifier) ;) (declaration "LWCHAR LStack_58;" type_identifier identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "code *pcStack_4c;" type_identifier (pointer_declarator "*pcStack_4c" * identifier) ;) (declaration "char *ns;" primitive_type (pointer_declarator "*ns" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0004f374;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0004f374" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0004f374;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0004f374" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0004f374" * (cast_expression "(int *)PTR___stack_chk_guard_0004f374" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0004f30c)();" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0004f30c)()" identifier = (call_expression "(*(code *)PTR_strlen_0004f30c)()" (parenthesized_expression "(*(code *)PTR_strlen_0004f30c)" ( (pointer_expression "*(code *)PTR_strlen_0004f30c" * (cast_expression "(code *)PTR_strlen_0004f30c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "puVar1 = PTR_utf_mode_0004ede8;" (assignment_expression "puVar1 = PTR_utf_mode_0004ede8" identifier = identifier) ;) (expression_statement "puVar8 = PTR_CHAR_ARRAY_0004ebf8;" (assignment_expression "puVar8 = PTR_CHAR_ARRAY_0004ebf8" identifier = identifier) ;) (expression_statement "pcVar7 = s + iVar3;" (assignment_expression "pcVar7 = s + iVar3" identifier = (binary_expression "s + iVar3" identifier + identifier)) ;) (if_statement "if (*s != '\0') {\n    ch1 = 0;\n    do {\n      ns = s;\n      unaff_s1 = step_char(&ns,1,pcVar7);\n      pcVar4 = s;\n      if (s < ns) {\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      in_a1 = (int)*s;\n      *(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;\n      *(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;\n      unaff_s2 = puVar8;\n      unaff_s3 = puVar8;\n      ch1 = unaff_s1;\n    } while (in_a1 != 0);\n  }" if (parenthesized_expression "(*s != '\0')" ( (binary_expression "*s != '\0'" (pointer_expression "*s" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    ch1 = 0;\n    do {\n      ns = s;\n      unaff_s1 = step_char(&ns,1,pcVar7);\n      pcVar4 = s;\n      if (s < ns) {\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      in_a1 = (int)*s;\n      *(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;\n      *(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;\n      unaff_s2 = puVar8;\n      unaff_s3 = puVar8;\n      ch1 = unaff_s1;\n    } while (in_a1 != 0);\n  }" { (expression_statement "ch1 = 0;" (assignment_expression "ch1 = 0" identifier = number_literal) ;) (do_statement "do {\n      ns = s;\n      unaff_s1 = step_char(&ns,1,pcVar7);\n      pcVar4 = s;\n      if (s < ns) {\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      in_a1 = (int)*s;\n      *(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;\n      *(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;\n      unaff_s2 = puVar8;\n      unaff_s3 = puVar8;\n      ch1 = unaff_s1;\n    } while (in_a1 != 0);" do (compound_statement "{\n      ns = s;\n      unaff_s1 = step_char(&ns,1,pcVar7);\n      pcVar4 = s;\n      if (s < ns) {\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      in_a1 = (int)*s;\n      *(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;\n      *(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;\n      unaff_s2 = puVar8;\n      unaff_s3 = puVar8;\n      ch1 = unaff_s1;\n    }" { (expression_statement "ns = s;" (assignment_expression "ns = s" identifier = identifier) ;) (expression_statement "unaff_s1 = step_char(&ns,1,pcVar7);" (assignment_expression "unaff_s1 = step_char(&ns,1,pcVar7)" identifier = (call_expression "step_char(&ns,1,pcVar7)" identifier (argument_list "(&ns,1,pcVar7)" ( (pointer_expression "&ns" & identifier) , number_literal , identifier )))) ;) (expression_statement "pcVar4 = s;" (assignment_expression "pcVar4 = s" identifier = identifier) ;) (if_statement "if (s < ns) {\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }" if (parenthesized_expression "(s < ns)" ( (binary_expression "s < ns" identifier < identifier) )) (compound_statement "{\n        do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);\n      }" { (do_statement "do {\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        } while (s < ns);" do (compound_statement "{\n          s = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = s;\n        }" { (expression_statement "s = pcVar4 + 1;" (assignment_expression "s = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "putchr((int)*pcVar4);" (call_expression "putchr((int)*pcVar4)" identifier (argument_list "((int)*pcVar4)" ( (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier)) ))) ;) (expression_statement "pcVar4 = s;" (assignment_expression "pcVar4 = s" identifier = identifier) ;) }) while (parenthesized_expression "(s < ns)" ( (binary_expression "s < ns" identifier < identifier) )) ;) })) (if_statement "if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" if (parenthesized_expression "(*(int *)puVar1 == 0)" ( (binary_expression "*(int *)puVar1 == 0" (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) (compound_statement "{\nLAB_0001bdf0:\n        iVar3 = 1;\n      }" { (labeled_statement "LAB_0001bdf0:\n        iVar3 = 1;" statement_identifier : (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" else (compound_statement "{\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" { (expression_statement "iVar3 = is_composing_char(unaff_s1);" (assignment_expression "iVar3 = is_composing_char(unaff_s1)" identifier = (call_expression "is_composing_char(unaff_s1)" identifier (argument_list "(unaff_s1)" ( identifier )))) ;) (if_statement "if (iVar3 == 0) {\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar3 = is_combining_char(ch1,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }" { (expression_statement "iVar3 = is_combining_char(ch1,unaff_s1);" (assignment_expression "iVar3 = is_combining_char(ch1,unaff_s1)" identifier = (call_expression "is_combining_char(ch1,unaff_s1)" identifier (argument_list "(ch1,unaff_s1)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }" { (expression_statement "iVar3 = is_wide_char(unaff_s1);" (assignment_expression "iVar3 = is_wide_char(unaff_s1)" identifier = (call_expression "is_wide_char(unaff_s1)" identifier (argument_list "(unaff_s1)" ( identifier )))) ;) (if_statement "if (iVar3 == 0) goto LAB_0001bdf0;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001bdf0;" goto statement_identifier ;)) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0001bdf4;" goto statement_identifier ;) })) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0001bdf4:\n      in_a1 = (int)*s;" statement_identifier : (expression_statement "in_a1 = (int)*s;" (assignment_expression "in_a1 = (int)*s" identifier = (cast_expression "(int)*s" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*s" * identifier))) ;)) (expression_statement "*(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3;" (assignment_expression "*(int *)(puVar8 + -0x44c) = *(int *)(puVar8 + -0x44c) + iVar3" (pointer_expression "*(int *)(puVar8 + -0x44c)" * (cast_expression "(int *)(puVar8 + -0x44c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x44c)" ( (binary_expression "puVar8 + -0x44c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar8 + -0x44c) + iVar3" (pointer_expression "*(int *)(puVar8 + -0x44c)" * (cast_expression "(int *)(puVar8 + -0x44c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x44c)" ( (binary_expression "puVar8 + -0x44c" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3;" (assignment_expression "*(int *)(puVar8 + -0x450) = *(int *)(puVar8 + -0x450) + iVar3" (pointer_expression "*(int *)(puVar8 + -0x450)" * (cast_expression "(int *)(puVar8 + -0x450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x450)" ( (binary_expression "puVar8 + -0x450" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar8 + -0x450) + iVar3" (pointer_expression "*(int *)(puVar8 + -0x450)" * (cast_expression "(int *)(puVar8 + -0x450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x450)" ( (binary_expression "puVar8 + -0x450" identifier + number_literal) )))) + identifier)) ;) (expression_statement "unaff_s2 = puVar8;" (assignment_expression "unaff_s2 = puVar8" identifier = identifier) ;) (expression_statement "unaff_s3 = puVar8;" (assignment_expression "unaff_s3 = puVar8" identifier = identifier) ;) (expression_statement "ch1 = unaff_s1;" (assignment_expression "ch1 = unaff_s1" identifier = identifier) ;) }) while (parenthesized_expression "(in_a1 != 0)" ( (binary_expression "in_a1 != 0" identifier != number_literal) )) ;) })) (if_statement "if (local_2c == *(int *)puVar2) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar9 = len_cmdbuf;" (assignment_expression "pcVar9 = len_cmdbuf" identifier = identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_0004f354;" (assignment_expression "puVar8 = PTR___stack_chk_fail_0004f354" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0004f354)();" (call_expression "(*(code *)PTR___stack_chk_fail_0004f354)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0004f354)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0004f354" * (cast_expression "(code *)PTR___stack_chk_fail_0004f354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar6 = *(int **)(puVar8 + 0x334c8);" (assignment_expression "piVar6 = *(int **)(puVar8 + 0x334c8)" identifier = (pointer_expression "*(int **)(puVar8 + 0x334c8)" * (cast_expression "(int **)(puVar8 + 0x334c8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x334c8)" ( (binary_expression "puVar8 + 0x334c8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puVar8 + 0x32d4c);" (assignment_expression "iVar5 = *(int *)(puVar8 + 0x32d4c)" identifier = (pointer_expression "*(int *)(puVar8 + 0x32d4c)" * (cast_expression "(int *)(puVar8 + 0x32d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x32d4c)" ( (binary_expression "puVar8 + 0x32d4c" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (char *)(iVar5 + -0x448);" (assignment_expression "pcVar7 = (char *)(iVar5 + -0x448)" identifier = (cast_expression "(char *)(iVar5 + -0x448)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x448)" ( (binary_expression "iVar5 + -0x448" identifier + number_literal) )))) ;) (expression_statement "iStack_64 = *piVar6;" (assignment_expression "iStack_64 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "pcStack_68 = pcVar7;" (assignment_expression "pcStack_68 = pcVar7" identifier = identifier) ;) (expression_statement "pcStack_5c = s;" (assignment_expression "pcStack_5c = s" identifier = identifier) ;) (expression_statement "LStack_58 = unaff_s1;" (assignment_expression "LStack_58 = unaff_s1" identifier = identifier) ;) (expression_statement "puStack_54 = unaff_s2;" (assignment_expression "puStack_54 = unaff_s2" identifier = identifier) ;) (expression_statement "puStack_50 = unaff_s3;" (assignment_expression "puStack_50 = unaff_s3" identifier = identifier) ;) (expression_statement "pcStack_4c = pcVar9;" (assignment_expression "pcStack_4c = pcVar9" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar8 + 0x33460))(pcVar7);" (assignment_expression "iVar3 = (**(code **)(puVar8 + 0x33460))(pcVar7)" identifier = (call_expression "(**(code **)(puVar8 + 0x33460))(pcVar7)" (parenthesized_expression "(**(code **)(puVar8 + 0x33460))" ( (pointer_expression "**(code **)(puVar8 + 0x33460)" * (pointer_expression "*(code **)(puVar8 + 0x33460)" * (cast_expression "(code **)(puVar8 + 0x33460)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x33460)" ( (binary_expression "puVar8 + 0x33460" identifier + number_literal) ))))) )) (argument_list "(pcVar7)" ( identifier )))) ;) (if_statement "if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      in_a1 = 1;\n      step_char(&pcStack_68,1,pcVar7 + iVar3);\n    } while (*pcStack_68 != '\0');\n  }" if (parenthesized_expression "(*(char *)(iVar5 + -0x448) != '\0')" ( (binary_expression "*(char *)(iVar5 + -0x448) != '\0'" (pointer_expression "*(char *)(iVar5 + -0x448)" * (cast_expression "(char *)(iVar5 + -0x448)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x448)" ( (binary_expression "iVar5 + -0x448" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    do {\n      in_a1 = 1;\n      step_char(&pcStack_68,1,pcVar7 + iVar3);\n    } while (*pcStack_68 != '\0');\n  }" { (do_statement "do {\n      in_a1 = 1;\n      step_char(&pcStack_68,1,pcVar7 + iVar3);\n    } while (*pcStack_68 != '\0');" do (compound_statement "{\n      in_a1 = 1;\n      step_char(&pcStack_68,1,pcVar7 + iVar3);\n    }" { (expression_statement "in_a1 = 1;" (assignment_expression "in_a1 = 1" identifier = number_literal) ;) (expression_statement "step_char(&pcStack_68,1,pcVar7 + iVar3);" (call_expression "step_char(&pcStack_68,1,pcVar7 + iVar3)" identifier (argument_list "(&pcStack_68,1,pcVar7 + iVar3)" ( (pointer_expression "&pcStack_68" & identifier) , number_literal , (binary_expression "pcVar7 + iVar3" identifier + identifier) ))) ;) }) while (parenthesized_expression "(*pcStack_68 != '\0')" ( (binary_expression "*pcStack_68 != '\0'" (pointer_expression "*pcStack_68" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (iStack_64 == *piVar6) {\n    return;\n  }" if (parenthesized_expression "(iStack_64 == *piVar6)" ( (binary_expression "iStack_64 == *piVar6" identifier == (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar9 = *(code **)(puVar8 + 0x334a8);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x334a8)" identifier = (pointer_expression "*(code **)(puVar8 + 0x334a8)" * (cast_expression "(code **)(puVar8 + 0x334a8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x334a8)" ( (binary_expression "puVar8 + 0x334a8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(int *)(*(int *)(pcVar9 + 0x32c84) + -0x47c) = iStack_64;" (assignment_expression "*(int *)(*(int *)(pcVar9 + 0x32c84) + -0x47c) = iStack_64" (pointer_expression "*(int *)(*(int *)(pcVar9 + 0x32c84) + -0x47c)" * (cast_expression "(int *)(*(int *)(pcVar9 + 0x32c84) + -0x47c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar9 + 0x32c84) + -0x47c)" ( (binary_expression "*(int *)(pcVar9 + 0x32c84) + -0x47c" (pointer_expression "*(int *)(pcVar9 + 0x32c84)" * (cast_expression "(int *)(pcVar9 + 0x32c84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x32c84)" ( (binary_expression "pcVar9 + 0x32c84" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(*(int *)(pcVar9 + 0x32c84) + -0x480) = in_a1;" (assignment_expression "*(int *)(*(int *)(pcVar9 + 0x32c84) + -0x480) = in_a1" (pointer_expression "*(int *)(*(int *)(pcVar9 + 0x32c84) + -0x480)" * (cast_expression "(int *)(*(int *)(pcVar9 + 0x32c84) + -0x480)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar9 + 0x32c84) + -0x480)" ( (binary_expression "*(int *)(pcVar9 + 0x32c84) + -0x480" (pointer_expression "*(int *)(pcVar9 + 0x32c84)" * (cast_expression "(int *)(pcVar9 + 0x32c84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x32c84)" ( (binary_expression "pcVar9 + 0x32c84" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (if_statement "if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }" if (parenthesized_expression "(iStack_64 != 0)" ( (binary_expression "iStack_64 != 0" identifier != number_literal) )) (compound_statement "{\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }" { (expression_statement "*(int *)(iStack_64 + 8) = iStack_64;" (assignment_expression "*(int *)(iStack_64 + 8) = iStack_64" (pointer_expression "*(int *)(iStack_64 + 8)" * (cast_expression "(int *)(iStack_64 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_64 + 8)" ( (binary_expression "iStack_64 + 8" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return;" return ;) })))
(translation_unit "int cmd_putstr(char *param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar7;\n  undefined4 uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  undefined4 uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar10 = PTR_DAT_0004ebf8;\n  pcVar9 = param_1 + iVar3;\n  if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }\n  pcVar11 = len_cmdbuf;\n  puVar10 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar7 = *(int **)(puVar10 + 0x334c8);\n  iVar5 = *(int *)(puVar10 + 0x32d4c);\n  pcVar9 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar7;\n  pcStack_68 = pcVar9;\n  pcStack_5c = param_1;\n  uStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar11;\n  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);\n  iVar6 = 0;\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar7) {\n    return iVar6;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x334a8);\n  (*pcVar11)();\n  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;\n  iVar3 = *(int *)(pcVar11 + 0x32c84);\n  *(int *)(iVar3 + -0x480) = param_2;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return iVar3;\n}\n\n" (function_definition "int cmd_putstr(char *param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar7;\n  undefined4 uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  undefined4 uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar10 = PTR_DAT_0004ebf8;\n  pcVar9 = param_1 + iVar3;\n  if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }\n  pcVar11 = len_cmdbuf;\n  puVar10 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar7 = *(int **)(puVar10 + 0x334c8);\n  iVar5 = *(int *)(puVar10 + 0x32d4c);\n  pcVar9 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar7;\n  pcStack_68 = pcVar9;\n  pcStack_5c = param_1;\n  uStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar11;\n  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);\n  iVar6 = 0;\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar7) {\n    return iVar6;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x334a8);\n  (*pcVar11)();\n  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;\n  iVar3 = *(int *)(pcVar11 + 0x32c84);\n  *(int *)(iVar3 + -0x480) = param_2;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return iVar3;\n}" primitive_type (function_declarator "cmd_putstr(char *param_1,int param_2)" identifier (parameter_list "(char *param_1,int param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar7;\n  undefined4 uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  undefined4 uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar10 = PTR_DAT_0004ebf8;\n  pcVar9 = param_1 + iVar3;\n  if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }\n  pcVar11 = len_cmdbuf;\n  puVar10 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar7 = *(int **)(puVar10 + 0x334c8);\n  iVar5 = *(int *)(puVar10 + 0x32d4c);\n  pcVar9 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar7;\n  pcStack_68 = pcVar9;\n  pcStack_5c = param_1;\n  uStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar11;\n  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);\n  iVar6 = 0;\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar7) {\n    return iVar6;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x334a8);\n  (*pcVar11)();\n  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;\n  iVar3 = *(int *)(pcVar11 + 0x32c84);\n  *(int *)(iVar3 + -0x480) = param_2;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 unaff_s1;" type_identifier identifier ;) (declaration "undefined *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "char *pcStack_68;" primitive_type (pointer_declarator "*pcStack_68" * identifier) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "char *pcStack_5c;" primitive_type (pointer_declarator "*pcStack_5c" * identifier) ;) (declaration "undefined4 uStack_58;" type_identifier identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "code *pcStack_4c;" type_identifier (pointer_declarator "*pcStack_4c" * identifier) ;) (declaration "char *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0004f374;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0004f374" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0004f374;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0004f374" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0004f374" * (cast_expression "(int *)PTR___stack_chk_guard_0004f374" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0004f30c)();" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0004f30c)()" identifier = (call_expression "(*(code *)PTR_strlen_0004f30c)()" (parenthesized_expression "(*(code *)PTR_strlen_0004f30c)" ( (pointer_expression "*(code *)PTR_strlen_0004f30c" * (cast_expression "(code *)PTR_strlen_0004f30c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "puVar1 = PTR_utf_mode_0004ede8;" (assignment_expression "puVar1 = PTR_utf_mode_0004ede8" identifier = identifier) ;) (expression_statement "puVar10 = PTR_DAT_0004ebf8;" (assignment_expression "puVar10 = PTR_DAT_0004ebf8" identifier = identifier) ;) (expression_statement "pcVar9 = param_1 + iVar3;" (assignment_expression "pcVar9 = param_1 + iVar3" identifier = (binary_expression "param_1 + iVar3" identifier + identifier)) ;) (if_statement "if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }" if (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);" do (compound_statement "{\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    }" { (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" identifier = identifier) ;) (expression_statement "unaff_s1 = step_char(&local_30,1,pcVar9);" (assignment_expression "unaff_s1 = step_char(&local_30,1,pcVar9)" identifier = (call_expression "step_char(&local_30,1,pcVar9)" identifier (argument_list "(&local_30,1,pcVar9)" ( (pointer_expression "&local_30" & identifier) , number_literal , identifier )))) ;) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" identifier = identifier) ;) (if_statement "if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }" if (parenthesized_expression "(param_1 < local_30)" ( (binary_expression "param_1 < local_30" identifier < identifier) )) (compound_statement "{\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }" { (do_statement "do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);" do (compound_statement "{\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        }" { (expression_statement "param_1 = pcVar4 + 1;" (assignment_expression "param_1 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "putchr((int)*pcVar4);" (call_expression "putchr((int)*pcVar4)" identifier (argument_list "((int)*pcVar4)" ( (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier)) ))) ;) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" identifier = identifier) ;) }) while (parenthesized_expression "(param_1 < local_30)" ( (binary_expression "param_1 < local_30" identifier < identifier) )) ;) })) (if_statement "if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" if (parenthesized_expression "(*(int *)puVar1 == 0)" ( (binary_expression "*(int *)puVar1 == 0" (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) (compound_statement "{\nLAB_0001bdf0:\n        iVar3 = 1;\n      }" { (labeled_statement "LAB_0001bdf0:\n        iVar3 = 1;" statement_identifier : (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" else (compound_statement "{\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" { (expression_statement "iVar3 = is_composing_char(unaff_s1);" (assignment_expression "iVar3 = is_composing_char(unaff_s1)" identifier = (call_expression "is_composing_char(unaff_s1)" identifier (argument_list "(unaff_s1)" ( identifier )))) ;) (if_statement "if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }" { (expression_statement "iVar3 = is_combining_char(uVar8,unaff_s1);" (assignment_expression "iVar3 = is_combining_char(uVar8,unaff_s1)" identifier = (call_expression "is_combining_char(uVar8,unaff_s1)" identifier (argument_list "(uVar8,unaff_s1)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }" { (expression_statement "iVar3 = is_wide_char(unaff_s1);" (assignment_expression "iVar3 = is_wide_char(unaff_s1)" identifier = (call_expression "is_wide_char(unaff_s1)" identifier (argument_list "(unaff_s1)" ( identifier )))) ;) (if_statement "if (iVar3 == 0) goto LAB_0001bdf0;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001bdf0;" goto statement_identifier ;)) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0001bdf4;" goto statement_identifier ;) })) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0001bdf4:\n      param_2 = (int)*param_1;" statement_identifier : (expression_statement "param_2 = (int)*param_1;" (assignment_expression "param_2 = (int)*param_1" identifier = (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier))) ;)) (expression_statement "*(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;" (assignment_expression "*(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x44c)" * (cast_expression "(int *)(puVar10 + -0x44c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x44c)" ( (binary_expression "puVar10 + -0x44c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar10 + -0x44c) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x44c)" * (cast_expression "(int *)(puVar10 + -0x44c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x44c)" ( (binary_expression "puVar10 + -0x44c" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;" (assignment_expression "*(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x450)" * (cast_expression "(int *)(puVar10 + -0x450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x450)" ( (binary_expression "puVar10 + -0x450" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar10 + -0x450) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x450)" * (cast_expression "(int *)(puVar10 + -0x450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x450)" ( (binary_expression "puVar10 + -0x450" identifier + number_literal) )))) + identifier)) ;) (expression_statement "unaff_s2 = puVar10;" (assignment_expression "unaff_s2 = puVar10" identifier = identifier) ;) (expression_statement "unaff_s3 = puVar10;" (assignment_expression "unaff_s3 = puVar10" identifier = identifier) ;) (expression_statement "uVar8 = unaff_s1;" (assignment_expression "uVar8 = unaff_s1" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) ;) })) (if_statement "if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar2;\n  }" { (return_statement "return *(int *)puVar2;" return (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "pcVar11 = len_cmdbuf;" (assignment_expression "pcVar11 = len_cmdbuf" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_0004f354;" (assignment_expression "puVar10 = PTR___stack_chk_fail_0004f354" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0004f354)();" (call_expression "(*(code *)PTR___stack_chk_fail_0004f354)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0004f354)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0004f354" * (cast_expression "(code *)PTR___stack_chk_fail_0004f354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(puVar10 + 0x334c8);" (assignment_expression "piVar7 = *(int **)(puVar10 + 0x334c8)" identifier = (pointer_expression "*(int **)(puVar10 + 0x334c8)" * (cast_expression "(int **)(puVar10 + 0x334c8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x334c8)" ( (binary_expression "puVar10 + 0x334c8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puVar10 + 0x32d4c);" (assignment_expression "iVar5 = *(int *)(puVar10 + 0x32d4c)" identifier = (pointer_expression "*(int *)(puVar10 + 0x32d4c)" * (cast_expression "(int *)(puVar10 + 0x32d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x32d4c)" ( (binary_expression "puVar10 + 0x32d4c" identifier + number_literal) ))))) ;) (expression_statement "pcVar9 = (char *)(iVar5 + -0x448);" (assignment_expression "pcVar9 = (char *)(iVar5 + -0x448)" identifier = (cast_expression "(char *)(iVar5 + -0x448)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x448)" ( (binary_expression "iVar5 + -0x448" identifier + number_literal) )))) ;) (expression_statement "iStack_64 = *piVar7;" (assignment_expression "iStack_64 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "pcStack_68 = pcVar9;" (assignment_expression "pcStack_68 = pcVar9" identifier = identifier) ;) (expression_statement "pcStack_5c = param_1;" (assignment_expression "pcStack_5c = param_1" identifier = identifier) ;) (expression_statement "uStack_58 = unaff_s1;" (assignment_expression "uStack_58 = unaff_s1" identifier = identifier) ;) (expression_statement "puStack_54 = unaff_s2;" (assignment_expression "puStack_54 = unaff_s2" identifier = identifier) ;) (expression_statement "puStack_50 = unaff_s3;" (assignment_expression "puStack_50 = unaff_s3" identifier = identifier) ;) (expression_statement "pcStack_4c = pcVar11;" (assignment_expression "pcStack_4c = pcVar11" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);" (assignment_expression "iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9)" identifier = (call_expression "(**(code **)(puVar10 + 0x33460))(pcVar9)" (parenthesized_expression "(**(code **)(puVar10 + 0x33460))" ( (pointer_expression "**(code **)(puVar10 + 0x33460)" * (pointer_expression "*(code **)(puVar10 + 0x33460)" * (cast_expression "(code **)(puVar10 + 0x33460)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x33460)" ( (binary_expression "puVar10 + 0x33460" identifier + number_literal) ))))) )) (argument_list "(pcVar9)" ( identifier )))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }" if (parenthesized_expression "(*(char *)(iVar5 + -0x448) != '\0')" ( (binary_expression "*(char *)(iVar5 + -0x448) != '\0'" (pointer_expression "*(char *)(iVar5 + -0x448)" * (cast_expression "(char *)(iVar5 + -0x448)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x448)" ( (binary_expression "iVar5 + -0x448" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }" { (do_statement "do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');" do (compound_statement "{\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    }" { (expression_statement "param_2 = 1;" (assignment_expression "param_2 = 1" identifier = number_literal) ;) (expression_statement "step_char(&pcStack_68,1,pcVar9 + iVar3);" (call_expression "step_char(&pcStack_68,1,pcVar9 + iVar3)" identifier (argument_list "(&pcStack_68,1,pcVar9 + iVar3)" ( (pointer_expression "&pcStack_68" & identifier) , number_literal , (binary_expression "pcVar9 + iVar3" identifier + identifier) ))) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcStack_68 != '\0')" ( (binary_expression "*pcStack_68 != '\0'" (pointer_expression "*pcStack_68" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (iStack_64 == *piVar7) {\n    return iVar6;\n  }" if (parenthesized_expression "(iStack_64 == *piVar7)" ( (binary_expression "iStack_64 == *piVar7" identifier == (pointer_expression "*piVar7" * identifier)) )) (compound_statement "{\n    return iVar6;\n  }" { (return_statement "return iVar6;" return identifier ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x334a8);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x334a8)" identifier = (pointer_expression "*(code **)(puVar10 + 0x334a8)" * (cast_expression "(code **)(puVar10 + 0x334a8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x334a8)" ( (binary_expression "puVar10 + 0x334a8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;" (assignment_expression "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64" (pointer_expression "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c)" * (cast_expression "(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar11 + 0x32c84) + -0x47c)" ( (binary_expression "*(int *)(pcVar11 + 0x32c84) + -0x47c" (pointer_expression "*(int *)(pcVar11 + 0x32c84)" * (cast_expression "(int *)(pcVar11 + 0x32c84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x32c84)" ( (binary_expression "pcVar11 + 0x32c84" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(pcVar11 + 0x32c84);" (assignment_expression "iVar3 = *(int *)(pcVar11 + 0x32c84)" identifier = (pointer_expression "*(int *)(pcVar11 + 0x32c84)" * (cast_expression "(int *)(pcVar11 + 0x32c84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x32c84)" ( (binary_expression "pcVar11 + 0x32c84" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar3 + -0x480) = param_2;" (assignment_expression "*(int *)(iVar3 + -0x480) = param_2" (pointer_expression "*(int *)(iVar3 + -0x480)" * (cast_expression "(int *)(iVar3 + -0x480)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -0x480)" ( (binary_expression "iVar3 + -0x480" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }" if (parenthesized_expression "(iStack_64 != 0)" ( (binary_expression "iStack_64 != 0" identifier != number_literal) )) (compound_statement "{\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }" { (expression_statement "*(int *)(iStack_64 + 8) = iStack_64;" (assignment_expression "*(int *)(iStack_64 + 8) = iStack_64" (pointer_expression "*(int *)(iStack_64 + 8)" * (cast_expression "(int *)(iStack_64 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_64 + 8)" ( (binary_expression "iStack_64 + 8" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (return_statement return IDENT ;) })))
(function_definition "int cmd_putstr(char *param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar7;\n  undefined4 uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  undefined4 uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar10 = PTR_DAT_0004ebf8;\n  pcVar9 = param_1 + iVar3;\n  if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }\n  pcVar11 = len_cmdbuf;\n  puVar10 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar7 = *(int **)(puVar10 + 0x334c8);\n  iVar5 = *(int *)(puVar10 + 0x32d4c);\n  pcVar9 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar7;\n  pcStack_68 = pcVar9;\n  pcStack_5c = param_1;\n  uStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar11;\n  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);\n  iVar6 = 0;\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar7) {\n    return iVar6;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x334a8);\n  (*pcVar11)();\n  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;\n  iVar3 = *(int *)(pcVar11 + 0x32c84);\n  *(int *)(iVar3 + -0x480) = param_2;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "cmd_putstr(char *param_1,int param_2)" (identifier "cmd_putstr") (parameter_list "(char *param_1,int param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 unaff_s1;\n  undefined *unaff_s2;\n  undefined *unaff_s3;\n  int *piVar7;\n  undefined4 uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  char *pcStack_68;\n  int iStack_64;\n  char *pcStack_5c;\n  undefined4 uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  char *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_0004f374;\n  local_2c = *(int *)PTR___stack_chk_guard_0004f374;\n  iVar3 = (*(code *)PTR_strlen_0004f30c)();\n  puVar1 = PTR_utf_mode_0004ede8;\n  puVar10 = PTR_DAT_0004ebf8;\n  pcVar9 = param_1 + iVar3;\n  if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }\n  if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }\n  pcVar11 = len_cmdbuf;\n  puVar10 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  piVar7 = *(int **)(puVar10 + 0x334c8);\n  iVar5 = *(int *)(puVar10 + 0x32d4c);\n  pcVar9 = (char *)(iVar5 + -0x448);\n  iStack_64 = *piVar7;\n  pcStack_68 = pcVar9;\n  pcStack_5c = param_1;\n  uStack_58 = unaff_s1;\n  puStack_54 = unaff_s2;\n  puStack_50 = unaff_s3;\n  pcStack_4c = pcVar11;\n  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);\n  iVar6 = 0;\n  if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }\n  if (iStack_64 == *piVar7) {\n    return iVar6;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x334a8);\n  (*pcVar11)();\n  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;\n  iVar3 = *(int *)(pcVar11 + 0x32c84);\n  *(int *)(iVar3 + -0x480) = param_2;\n  if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }\n  return iVar3;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 unaff_s1;" (type_identifier "undefined4") (identifier "unaff_s1") (; ";")) (declaration "undefined *unaff_s2;" (type_identifier "undefined") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "undefined *unaff_s3;" (type_identifier "undefined") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "code *pcVar11;" (type_identifier "code") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "char *pcStack_68;" (primitive_type "char") (pointer_declarator "*pcStack_68" (* "*") (identifier "pcStack_68")) (; ";")) (declaration "int iStack_64;" (primitive_type "int") (identifier "iStack_64") (; ";")) (declaration "char *pcStack_5c;" (primitive_type "char") (pointer_declarator "*pcStack_5c" (* "*") (identifier "pcStack_5c")) (; ";")) (declaration "undefined4 uStack_58;" (type_identifier "undefined4") (identifier "uStack_58") (; ";")) (declaration "undefined *puStack_54;" (type_identifier "undefined") (pointer_declarator "*puStack_54" (* "*") (identifier "puStack_54")) (; ";")) (declaration "undefined *puStack_50;" (type_identifier "undefined") (pointer_declarator "*puStack_50" (* "*") (identifier "puStack_50")) (; ";")) (declaration "code *pcStack_4c;" (type_identifier "code") (pointer_declarator "*pcStack_4c" (* "*") (identifier "pcStack_4c")) (; ";")) (declaration "char *local_30;" (primitive_type "char") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_0004f374;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0004f374" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_0004f374")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0004f374;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0004f374" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0004f374" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0004f374" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0004f374")))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strlen_0004f30c)();" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0004f30c)()" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_0004f30c)()" (parenthesized_expression "(*(code *)PTR_strlen_0004f30c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0004f30c" (* "*") (cast_expression "(code *)PTR_strlen_0004f30c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0004f30c"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar1 = PTR_utf_mode_0004ede8;" (assignment_expression "puVar1 = PTR_utf_mode_0004ede8" (identifier "puVar1") (= "=") (identifier "PTR_utf_mode_0004ede8")) (; ";")) (expression_statement "puVar10 = PTR_DAT_0004ebf8;" (assignment_expression "puVar10 = PTR_DAT_0004ebf8" (identifier "puVar10") (= "=") (identifier "PTR_DAT_0004ebf8")) (; ";")) (expression_statement "pcVar9 = param_1 + iVar3;" (assignment_expression "pcVar9 = param_1 + iVar3" (identifier "pcVar9") (= "=") (binary_expression "param_1 + iVar3" (identifier "param_1") (+ "+") (identifier "iVar3"))) (; ";")) (if_statement "if (*param_1 != '\0') {\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }" (if "if") (parenthesized_expression "(*param_1 != '\0')" (( "(") (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar8 = 0;\n    do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);\n  }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    } while (param_2 != 0);" (do "do") (compound_statement "{\n      local_30 = param_1;\n      unaff_s1 = step_char(&local_30,1,pcVar9);\n      pcVar4 = param_1;\n      if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }\n      if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }\nLAB_0001bdf4:\n      param_2 = (int)*param_1;\n      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;\n      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;\n      unaff_s2 = puVar10;\n      unaff_s3 = puVar10;\n      uVar8 = unaff_s1;\n    }" ({ "{") (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" (identifier "local_30") (= "=") (identifier "param_1")) (; ";")) (expression_statement "unaff_s1 = step_char(&local_30,1,pcVar9);" (assignment_expression "unaff_s1 = step_char(&local_30,1,pcVar9)" (identifier "unaff_s1") (= "=") (call_expression "step_char(&local_30,1,pcVar9)" (identifier "step_char") (argument_list "(&local_30,1,pcVar9)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "1") (, ",") (identifier "pcVar9") () ")")))) (; ";")) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" (identifier "pcVar4") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_1 < local_30) {\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }" (if "if") (parenthesized_expression "(param_1 < local_30)" (( "(") (binary_expression "param_1 < local_30" (identifier "param_1") (< "<") (identifier "local_30")) () ")")) (compound_statement "{\n        do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);\n      }" ({ "{") (do_statement "do {\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        } while (param_1 < local_30);" (do "do") (compound_statement "{\n          param_1 = pcVar4 + 1;\n          putchr((int)*pcVar4);\n          pcVar4 = param_1;\n        }" ({ "{") (expression_statement "param_1 = pcVar4 + 1;" (assignment_expression "param_1 = pcVar4 + 1" (identifier "param_1") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "putchr((int)*pcVar4);" (call_expression "putchr((int)*pcVar4)" (identifier "putchr") (argument_list "((int)*pcVar4)" (( "(") (cast_expression "(int)*pcVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) () ")"))) (; ";")) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" (identifier "pcVar4") (= "=") (identifier "param_1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_1 < local_30)" (( "(") (binary_expression "param_1 < local_30" (identifier "param_1") (< "<") (identifier "local_30")) () ")")) (; ";")) (} "}"))) (if_statement "if (*(int *)puVar1 == 0) {\nLAB_0001bdf0:\n        iVar3 = 1;\n      }\n      else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" (if "if") (parenthesized_expression "(*(int *)puVar1 == 0)" (( "(") (binary_expression "*(int *)puVar1 == 0" (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0001bdf0:\n        iVar3 = 1;\n      }" ({ "{") (labeled_statement "LAB_0001bdf0:\n        iVar3 = 1;" (statement_identifier "LAB_0001bdf0") (: ":") (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" (else "else") (compound_statement "{\n        iVar3 = is_composing_char(unaff_s1);\n        if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }\n        iVar3 = 0;\n      }" ({ "{") (expression_statement "iVar3 = is_composing_char(unaff_s1);" (assignment_expression "iVar3 = is_composing_char(unaff_s1)" (identifier "iVar3") (= "=") (call_expression "is_composing_char(unaff_s1)" (identifier "is_composing_char") (argument_list "(unaff_s1)" (( "(") (identifier "unaff_s1") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar3 = is_combining_char(uVar8,unaff_s1);\n          if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }\n        }" ({ "{") (expression_statement "iVar3 = is_combining_char(uVar8,unaff_s1);" (assignment_expression "iVar3 = is_combining_char(uVar8,unaff_s1)" (identifier "iVar3") (= "=") (call_expression "is_combining_char(uVar8,unaff_s1)" (identifier "is_combining_char") (argument_list "(uVar8,unaff_s1)" (( "(") (identifier "uVar8") (, ",") (identifier "unaff_s1") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar3 = is_wide_char(unaff_s1);\n            if (iVar3 == 0) goto LAB_0001bdf0;\n            iVar3 = 2;\n            goto LAB_0001bdf4;\n          }" ({ "{") (expression_statement "iVar3 = is_wide_char(unaff_s1);" (assignment_expression "iVar3 = is_wide_char(unaff_s1)" (identifier "iVar3") (= "=") (call_expression "is_wide_char(unaff_s1)" (identifier "is_wide_char") (argument_list "(unaff_s1)" (( "(") (identifier "unaff_s1") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) goto LAB_0001bdf0;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001bdf0;" (goto "goto") (statement_identifier "LAB_0001bdf0") (; ";"))) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" (identifier "iVar3") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_0001bdf4;" (goto "goto") (statement_identifier "LAB_0001bdf4") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_0001bdf4:\n      param_2 = (int)*param_1;" (statement_identifier "LAB_0001bdf4") (: ":") (expression_statement "param_2 = (int)*param_1;" (assignment_expression "param_2 = (int)*param_1" (identifier "param_2") (= "=") (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";"))) (expression_statement "*(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;" (assignment_expression "*(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x44c)" (* "*") (cast_expression "(int *)(puVar10 + -0x44c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x44c)" (( "(") (binary_expression "puVar10 + -0x44c" (identifier "puVar10") (+ "+") (number_literal "-0x44c")) () ")")))) (= "=") (binary_expression "*(int *)(puVar10 + -0x44c) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x44c)" (* "*") (cast_expression "(int *)(puVar10 + -0x44c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x44c)" (( "(") (binary_expression "puVar10 + -0x44c" (identifier "puVar10") (+ "+") (number_literal "-0x44c")) () ")")))) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "*(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;" (assignment_expression "*(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x450)" (* "*") (cast_expression "(int *)(puVar10 + -0x450)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x450)" (( "(") (binary_expression "puVar10 + -0x450" (identifier "puVar10") (+ "+") (number_literal "-0x450")) () ")")))) (= "=") (binary_expression "*(int *)(puVar10 + -0x450) + iVar3" (pointer_expression "*(int *)(puVar10 + -0x450)" (* "*") (cast_expression "(int *)(puVar10 + -0x450)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x450)" (( "(") (binary_expression "puVar10 + -0x450" (identifier "puVar10") (+ "+") (number_literal "-0x450")) () ")")))) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "unaff_s2 = puVar10;" (assignment_expression "unaff_s2 = puVar10" (identifier "unaff_s2") (= "=") (identifier "puVar10")) (; ";")) (expression_statement "unaff_s3 = puVar10;" (assignment_expression "unaff_s3 = puVar10" (identifier "unaff_s3") (= "=") (identifier "puVar10")) (; ";")) (expression_statement "uVar8 = unaff_s1;" (assignment_expression "uVar8 = unaff_s1" (identifier "uVar8") (= "=") (identifier "unaff_s1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if (local_2c == *(int *)puVar2) {\n    return *(int *)puVar2;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar2)" (( "(") (binary_expression "local_2c == *(int *)puVar2" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    return *(int *)puVar2;\n  }" ({ "{") (return_statement "return *(int *)puVar2;" (return "return") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (; ";")) (} "}"))) (expression_statement "pcVar11 = len_cmdbuf;" (assignment_expression "pcVar11 = len_cmdbuf" (identifier "pcVar11") (= "=") (identifier "len_cmdbuf")) (; ";")) (expression_statement "puVar10 = PTR___stack_chk_fail_0004f354;" (assignment_expression "puVar10 = PTR___stack_chk_fail_0004f354" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_fail_0004f354")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0004f354)();" (call_expression "(*(code *)PTR___stack_chk_fail_0004f354)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0004f354)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0004f354" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0004f354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0004f354"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar7 = *(int **)(puVar10 + 0x334c8);" (assignment_expression "piVar7 = *(int **)(puVar10 + 0x334c8)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(puVar10 + 0x334c8)" (* "*") (cast_expression "(int **)(puVar10 + 0x334c8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x334c8)" (( "(") (binary_expression "puVar10 + 0x334c8" (identifier "puVar10") (+ "+") (number_literal "0x334c8")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(puVar10 + 0x32d4c);" (assignment_expression "iVar5 = *(int *)(puVar10 + 0x32d4c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(puVar10 + 0x32d4c)" (* "*") (cast_expression "(int *)(puVar10 + 0x32d4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x32d4c)" (( "(") (binary_expression "puVar10 + 0x32d4c" (identifier "puVar10") (+ "+") (number_literal "0x32d4c")) () ")"))))) (; ";")) (expression_statement "pcVar9 = (char *)(iVar5 + -0x448);" (assignment_expression "pcVar9 = (char *)(iVar5 + -0x448)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(iVar5 + -0x448)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + -0x448)" (( "(") (binary_expression "iVar5 + -0x448" (identifier "iVar5") (+ "+") (number_literal "-0x448")) () ")")))) (; ";")) (expression_statement "iStack_64 = *piVar7;" (assignment_expression "iStack_64 = *piVar7" (identifier "iStack_64") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "pcStack_68 = pcVar9;" (assignment_expression "pcStack_68 = pcVar9" (identifier "pcStack_68") (= "=") (identifier "pcVar9")) (; ";")) (expression_statement "pcStack_5c = param_1;" (assignment_expression "pcStack_5c = param_1" (identifier "pcStack_5c") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uStack_58 = unaff_s1;" (assignment_expression "uStack_58 = unaff_s1" (identifier "uStack_58") (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "puStack_54 = unaff_s2;" (assignment_expression "puStack_54 = unaff_s2" (identifier "puStack_54") (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "puStack_50 = unaff_s3;" (assignment_expression "puStack_50 = unaff_s3" (identifier "puStack_50") (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "pcStack_4c = pcVar11;" (assignment_expression "pcStack_4c = pcVar11" (identifier "pcStack_4c") (= "=") (identifier "pcVar11")) (; ";")) (expression_statement "iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);" (assignment_expression "iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puVar10 + 0x33460))(pcVar9)" (parenthesized_expression "(**(code **)(puVar10 + 0x33460))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x33460)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x33460)" (* "*") (cast_expression "(code **)(puVar10 + 0x33460)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x33460)" (( "(") (binary_expression "puVar10 + 0x33460" (identifier "puVar10") (+ "+") (number_literal "0x33460")) () ")"))))) () ")")) (argument_list "(pcVar9)" (( "(") (identifier "pcVar9") () ")")))) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(iVar5 + -0x448) != '\0') {\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar5 + -0x448) != '\0')" (( "(") (binary_expression "*(char *)(iVar5 + -0x448) != '\0'" (pointer_expression "*(char *)(iVar5 + -0x448)" (* "*") (cast_expression "(char *)(iVar5 + -0x448)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + -0x448)" (( "(") (binary_expression "iVar5 + -0x448" (identifier "iVar5") (+ "+") (number_literal "-0x448")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');\n  }" ({ "{") (do_statement "do {\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    } while (*pcStack_68 != '\0');" (do "do") (compound_statement "{\n      param_2 = 1;\n      step_char(&pcStack_68,1,pcVar9 + iVar3);\n      iVar6 = iVar6 + 1;\n    }" ({ "{") (expression_statement "param_2 = 1;" (assignment_expression "param_2 = 1" (identifier "param_2") (= "=") (number_literal "1")) (; ";")) (expression_statement "step_char(&pcStack_68,1,pcVar9 + iVar3);" (call_expression "step_char(&pcStack_68,1,pcVar9 + iVar3)" (identifier "step_char") (argument_list "(&pcStack_68,1,pcVar9 + iVar3)" (( "(") (pointer_expression "&pcStack_68" (& "&") (identifier "pcStack_68")) (, ",") (number_literal "1") (, ",") (binary_expression "pcVar9 + iVar3" (identifier "pcVar9") (+ "+") (identifier "iVar3")) () ")"))) (; ";")) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pcStack_68 != '\0')" (( "(") (binary_expression "*pcStack_68 != '\0'" (pointer_expression "*pcStack_68" (* "*") (identifier "pcStack_68")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (if_statement "if (iStack_64 == *piVar7) {\n    return iVar6;\n  }" (if "if") (parenthesized_expression "(iStack_64 == *piVar7)" (( "(") (binary_expression "iStack_64 == *piVar7" (identifier "iStack_64") (== "==") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) () ")")) (compound_statement "{\n    return iVar6;\n  }" ({ "{") (return_statement "return iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}"))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x334a8);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x334a8)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x334a8)" (* "*") (cast_expression "(code **)(puVar10 + 0x334a8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x334a8)" (( "(") (binary_expression "puVar10 + 0x334a8" (identifier "puVar10") (+ "+") (number_literal "0x334a8")) () ")"))))) (; ";")) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;" (assignment_expression "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64" (pointer_expression "*(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c)" (* "*") (cast_expression "(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar11 + 0x32c84) + -0x47c)" (( "(") (binary_expression "*(int *)(pcVar11 + 0x32c84) + -0x47c" (pointer_expression "*(int *)(pcVar11 + 0x32c84)" (* "*") (cast_expression "(int *)(pcVar11 + 0x32c84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x32c84)" (( "(") (binary_expression "pcVar11 + 0x32c84" (identifier "pcVar11") (+ "+") (number_literal "0x32c84")) () ")")))) (+ "+") (number_literal "-0x47c")) () ")")))) (= "=") (identifier "iStack_64")) (; ";")) (expression_statement "iVar3 = *(int *)(pcVar11 + 0x32c84);" (assignment_expression "iVar3 = *(int *)(pcVar11 + 0x32c84)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(pcVar11 + 0x32c84)" (* "*") (cast_expression "(int *)(pcVar11 + 0x32c84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x32c84)" (( "(") (binary_expression "pcVar11 + 0x32c84" (identifier "pcVar11") (+ "+") (number_literal "0x32c84")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar3 + -0x480) = param_2;" (assignment_expression "*(int *)(iVar3 + -0x480) = param_2" (pointer_expression "*(int *)(iVar3 + -0x480)" (* "*") (cast_expression "(int *)(iVar3 + -0x480)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + -0x480)" (( "(") (binary_expression "iVar3 + -0x480" (identifier "iVar3") (+ "+") (number_literal "-0x480")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (if_statement "if (iStack_64 != 0) {\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }" (if "if") (parenthesized_expression "(iStack_64 != 0)" (( "(") (binary_expression "iStack_64 != 0" (identifier "iStack_64") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)(iStack_64 + 8) = iStack_64;\n  }" ({ "{") (expression_statement "*(int *)(iStack_64 + 8) = iStack_64;" (assignment_expression "*(int *)(iStack_64 + 8) = iStack_64" (pointer_expression "*(int *)(iStack_64 + 8)" (* "*") (cast_expression "(int *)(iStack_64 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_64 + 8)" (( "(") (binary_expression "iStack_64 + 8" (identifier "iStack_64") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iStack_64")) (; ";")) (} "}"))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (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))))) (expression_statement (assignment_expression left: (identifier) right: (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (return_statement (identifier)))))

int MASKED(char *param_1,int param_2)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  char *pcVar4;
  int iVar5;
  int iVar6;
  undefined4 unaff_s1;
  undefined *unaff_s2;
  undefined *unaff_s3;
  int *piVar7;
  undefined4 uVar8;
  char *pcVar9;
  undefined *puVar10;
  code *pcVar11;
  char *pcStack_68;
  int iStack_64;
  char *pcStack_5c;
  undefined4 uStack_58;
  undefined *puStack_54;
  undefined *puStack_50;
  code *pcStack_4c;
  char *local_30;
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_0004f374;
  local_2c = *(int *)PTR___stack_chk_guard_0004f374;
  iVar3 = (*(code *)PTR_strlen_0004f30c)();
  puVar1 = PTR_utf_mode_0004ede8;
  puVar10 = PTR_DAT_0004ebf8;
  pcVar9 = param_1 + iVar3;
  if (*param_1 != '\0') {
    uVar8 = 0;
    do {
      local_30 = param_1;
      unaff_s1 = step_char(&local_30,1,pcVar9);
      pcVar4 = param_1;
      if (param_1 < local_30) {
        do {
          param_1 = pcVar4 + 1;
          putchr((int)*pcVar4);
          pcVar4 = param_1;
        } while (param_1 < local_30);
      }
      if (*(int *)puVar1 == 0) {
LAB_0001bdf0:
        iVar3 = 1;
      }
      else {
        iVar3 = is_composing_char(unaff_s1);
        if (iVar3 == 0) {
          iVar3 = is_combining_char(uVar8,unaff_s1);
          if (iVar3 == 0) {
            iVar3 = is_wide_char(unaff_s1);
            if (iVar3 == 0) goto LAB_0001bdf0;
            iVar3 = 2;
            goto LAB_0001bdf4;
          }
        }
        iVar3 = 0;
      }
LAB_0001bdf4:
      param_2 = (int)*param_1;
      *(int *)(puVar10 + -0x44c) = *(int *)(puVar10 + -0x44c) + iVar3;
      *(int *)(puVar10 + -0x450) = *(int *)(puVar10 + -0x450) + iVar3;
      unaff_s2 = puVar10;
      unaff_s3 = puVar10;
      uVar8 = unaff_s1;
    } while (param_2 != 0);
  }
  if (local_2c == *(int *)puVar2) {
    return *(int *)puVar2;
  }
  pcVar11 = len_cmdbuf;
  puVar10 = PTR___stack_chk_fail_0004f354;
  (*(code *)PTR___stack_chk_fail_0004f354)();
  piVar7 = *(int **)(puVar10 + 0x334c8);
  iVar5 = *(int *)(puVar10 + 0x32d4c);
  pcVar9 = (char *)(iVar5 + -0x448);
  iStack_64 = *piVar7;
  pcStack_68 = pcVar9;
  pcStack_5c = param_1;
  uStack_58 = unaff_s1;
  puStack_54 = unaff_s2;
  puStack_50 = unaff_s3;
  pcStack_4c = pcVar11;
  iVar3 = (**(code **)(puVar10 + 0x33460))(pcVar9);
  iVar6 = 0;
  if (*(char *)(iVar5 + -0x448) != '\0') {
    do {
      param_2 = 1;
      step_char(&pcStack_68,1,pcVar9 + iVar3);
      iVar6 = iVar6 + 1;
    } while (*pcStack_68 != '\0');
  }
  if (iStack_64 == *piVar7) {
    return iVar6;
  }
  pcVar11 = *(code **)(puVar10 + 0x334a8);
  (*pcVar11)();
  *(int *)(*(int *)(pcVar11 + 0x32c84) + -0x47c) = iStack_64;
  iVar3 = *(int *)(pcVar11 + 0x32c84);
  *(int *)(iVar3 + -0x480) = param_2;
  if (iStack_64 != 0) {
    *(int *)(iStack_64 + 8) = iStack_64;
  }
  return iVar3;
}

