
/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */

MHD_Result MHD_post_process(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  int iVar6;
  MHD_Result MVar7;
  int iVar8;
  RN_State RVar9;
  char cVar10;
  char *pcVar11;
  uint uVar12;
  MHD_PostProcessor *unaff_s3;
  size_t unaff_s5;
  uint unaff_s6;
  uint uVar13;
  size_t sVar14;
  MHD_PostProcessor *unaff_s8;
  size_t ioff;
  
  puVar5 = PTR___stack_chk_guard_0003d244;
  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;
  MVar7 = MHD_YES;
  if (post_data_len == 0) goto LAB_00022c84;
  pcVar11 = post_data;
  unaff_s8 = pp;
  if (pp != (MHD_PostProcessor *)0x0) {
    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21);
    unaff_s5 = post_data_len;
    if (iVar8 != 0) {
      MVar7 = post_process_urlencoded(pp,post_data,post_data_len);
      goto LAB_00022c84;
    }
    pcVar11 = pp->encoding;
    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13);
    puVar3 = PTR_DAT_0003d02c;
    if (iVar8 != 0) {
      unaff_s3 = pp + 1;
      sVar14 = pp->buffer_pos;
      bVar2 = true;
      unaff_s6 = 0;
      ioff = 0;
      bVar1 = post_data_len != 0;
LAB_00022bc0:
      puVar4 = PTR_DAT_0003d02c;
      uVar13 = unaff_s6;
      if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {
        do {
          pcVar11 = post_data + uVar13;
          uVar12 = pp->buffer_size - sVar14;
          if (post_data_len - uVar13 <= uVar12) {
            uVar12 = post_data_len - uVar13;
          }
          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);
          unaff_s6 = uVar13 + uVar12;
          sVar14 = uVar12 + pp->buffer_pos;
          pp->buffer_pos = sVar14;
          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {
switchD_00022dfc_caseD_1:
            pp->state = PP_Error;
            MVar7 = MHD_NO;
            post_data = pcVar11;
            goto LAB_00022c84;
          }
          RVar9 = pp->skip_rn;
          if (RVar9 == RN_Full) {
            cVar10 = *(char *)&pp[1].connection;
            if (cVar10 == '\r') {
LAB_00022da8:
              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {
                ioff = ioff + 1;
                pp->skip_rn = RN_OptN;
              }
              else {
                ioff = ioff + 2;
                pp->skip_rn = RN_Inactive;
              }
            }
            else {
LAB_00022d7c:
              if (cVar10 != '\n') {
                pp->skip_rn = RN_Inactive;
                MVar7 = MHD_NO;
                pp->state = PP_Error;
                post_data = (char *)ioff;
                goto LAB_00022c84;
              }
LAB_00022d84:
              pp->skip_rn = RN_Inactive;
              ioff = ioff + 1;
            }
          }
          else if (RVar9 < RN_Dash) {
            if (RVar9 == RN_OptN) {
              cVar10 = *(char *)&pp[1].connection;
              if (cVar10 != '\n') goto LAB_00022d60;
              goto LAB_00022d84;
            }
LAB_00022ddc:
            if (pp->state < 0x10) {
                    /* WARNING: Could not emulate address calculation at 0x00022df0 */
                    /* WARNING: Treating indirect jump as call */
              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();
              return MVar7;
            }
            (**(code **)PTR_mhd_panic_0003d03c)
                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);
            sVar14 = pp->buffer_pos;
          }
          else if (RVar9 == RN_Dash) {
            cVar10 = *(char *)&pp[1].connection;
LAB_00022d60:
            if (cVar10 != '-') {
              pp->skip_rn = RN_Full;
              if (cVar10 == '\r') goto LAB_00022da8;
              goto LAB_00022d7c;
            }
            pp->skip_rn = RN_Dash2;
            ioff = ioff + 1;
          }
          else {
            if (RVar9 != RN_Dash2) goto LAB_00022ddc;
            pcVar11 = (char *)ioff;
            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;
            pp->skip_rn = RN_Full;
            ioff = ioff + 1;
            pp->state = pp->dash_state;
          }
          bVar2 = false;
          bVar1 = unaff_s6 < post_data_len;
          if (ioff == 0) goto LAB_00022bc0;
          sVar14 = sVar14 - ioff;
          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);
          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);
          ioff = 0;
          pp->buffer_pos = sVar14;
          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;
          bVar2 = true;
          uVar13 = unaff_s6;
        } while( true );
      }
      MVar7 = MHD_YES;
      post_data = (char *)ioff;
      if (ioff != 0) goto LAB_00023014;
      goto LAB_00022c84;
    }
  }
  post_data = pcVar11;
  MVar7 = MHD_NO;
LAB_00022c84:
  while (iVar6 != *(int *)puVar5) {
    (*(code *)PTR___stack_chk_fail_0003d21c)();
    sVar14 = unaff_s8->buffer_pos;
    bVar1 = unaff_s6 < unaff_s5;
    post_data_len = unaff_s5;
    pp = unaff_s8;
LAB_00023014:
    pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);
    (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data);
    pp->buffer_pos = sVar14 - (int)post_data;
    if (bVar1) {
      pp->state = PP_Error;
      MVar7 = MHD_NO;
      post_data = pcVar11;
      unaff_s5 = post_data_len;
      unaff_s8 = pp;
    }
    else {
LAB_00022d14:
      MVar7 = MHD_YES;
      post_data = pcVar11;
      unaff_s5 = post_data_len;
      unaff_s8 = pp;
    }
  }
  return MVar7;
}



undefined4 MHD_post_process(int param_1,int param_2,uint param_3)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  char cVar11;
  uint uVar12;
  int unaff_s3;
  uint unaff_s5;
  uint unaff_s6;
  uint uVar13;
  int unaff_s8;
  int local_30;
  
  puVar5 = PTR___stack_chk_guard_0003d244;
  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;
  uVar7 = 1;
  if (param_3 == 0) goto LAB_00022c84;
  iVar8 = param_2;
  unaff_s8 = param_1;
  if (param_1 != 0) {
    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);
    unaff_s5 = param_3;
    if (iVar8 != 0) {
      uVar7 = FUN_000219d4(param_1,param_2,param_3);
      goto LAB_00022c84;
    }
    iVar8 = *(int *)(param_1 + 0xc);
    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);
    puVar3 = PTR_DAT_0003d02c;
    if (iVar9 != 0) {
      unaff_s3 = param_1 + 0x60;
      uVar13 = *(uint *)(param_1 + 0x30);
      bVar2 = true;
      unaff_s6 = 0;
      local_30 = 0;
      bVar1 = param_3 != 0;
LAB_00022bc0:
      puVar4 = PTR_DAT_0003d02c;
      uVar10 = unaff_s6;
      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {
        do {
          iVar8 = param_2 + uVar10;
          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;
          if (param_3 - uVar10 <= uVar12) {
            uVar12 = param_3 - uVar10;
          }
          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);
          unaff_s6 = uVar10 + uVar12;
          uVar13 = uVar12 + *(int *)(param_1 + 0x30);
          *(uint *)(param_1 + 0x30) = uVar13;
          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {
switchD_00022dfc_caseD_1:
            *(undefined4 *)(param_1 + 0x4c) = 0;
            uVar7 = 0;
            param_2 = iVar8;
            goto LAB_00022c84;
          }
          uVar10 = *(uint *)(param_1 + 0x50);
          if (uVar10 == 2) {
            cVar11 = *(char *)(param_1 + 0x60);
            if (cVar11 == '\r') {
LAB_00022da8:
              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {
                local_30 = local_30 + 1;
                *(undefined4 *)(param_1 + 0x50) = 1;
              }
              else {
                local_30 = local_30 + 2;
                *(undefined4 *)(param_1 + 0x50) = 0;
              }
            }
            else {
LAB_00022d7c:
              if (cVar11 != '\n') {
                *(undefined4 *)(param_1 + 0x50) = 0;
                uVar7 = 0;
                *(undefined4 *)(param_1 + 0x4c) = 0;
                param_2 = local_30;
                goto LAB_00022c84;
              }
LAB_00022d84:
              *(undefined4 *)(param_1 + 0x50) = 0;
              local_30 = local_30 + 1;
            }
          }
          else if (uVar10 < 3) {
            if (uVar10 == 1) {
              cVar11 = *(char *)(param_1 + 0x60);
              if (cVar11 != '\n') goto LAB_00022d60;
              goto LAB_00022d84;
            }
LAB_00022ddc:
            if (*(uint *)(param_1 + 0x4c) < 0x10) {
                    /* WARNING: Could not emulate address calculation at 0x00022df0 */
                    /* WARNING: Treating indirect jump as call */
              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)
                                ))();
              return uVar7;
            }
            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);
            uVar13 = *(uint *)(param_1 + 0x30);
          }
          else if (uVar10 == 3) {
            cVar11 = *(char *)(param_1 + 0x60);
LAB_00022d60:
            if (cVar11 != '-') {
              *(undefined4 *)(param_1 + 0x50) = 2;
              if (cVar11 == '\r') goto LAB_00022da8;
              goto LAB_00022d7c;
            }
            *(undefined4 *)(param_1 + 0x50) = 4;
            local_30 = local_30 + 1;
          }
          else {
            if (uVar10 != 4) goto LAB_00022ddc;
            iVar8 = local_30;
            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;
            *(undefined4 *)(param_1 + 0x50) = 2;
            local_30 = local_30 + 1;
            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);
          }
          bVar2 = false;
          bVar1 = unaff_s6 < param_3;
          if (local_30 == 0) goto LAB_00022bc0;
          uVar13 = uVar13 - local_30;
          iVar8 = unaff_s3 + local_30;
          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);
          local_30 = 0;
          *(uint *)(param_1 + 0x30) = uVar13;
          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;
          bVar2 = true;
          uVar10 = unaff_s6;
        } while( true );
      }
      uVar7 = 1;
      param_2 = local_30;
      if (local_30 != 0) goto LAB_00023014;
      goto LAB_00022c84;
    }
  }
  param_2 = iVar8;
  uVar7 = 0;
LAB_00022c84:
  while (iVar6 != *(int *)puVar5) {
    (*(code *)PTR___stack_chk_fail_0003d21c)();
    uVar13 = *(uint *)(unaff_s8 + 0x30);
    bVar1 = unaff_s6 < unaff_s5;
    param_3 = unaff_s5;
    param_1 = unaff_s8;
LAB_00023014:
    iVar8 = unaff_s3 + param_2;
    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);
    *(uint *)(param_1 + 0x30) = uVar13 - param_2;
    if (bVar1) {
      *(undefined4 *)(param_1 + 0x4c) = 0;
      uVar7 = 0;
      param_2 = iVar8;
      unaff_s5 = param_3;
      unaff_s8 = param_1;
    }
    else {
LAB_00022d14:
      uVar7 = 1;
      param_2 = iVar8;
      unaff_s5 = param_3;
      unaff_s8 = param_1;
    }
  }
  return uVar7;
}


lui gp,0x2
addiu gp,gp,0x251c
addu gp,gp,t9
addiu sp,sp,-0x68
sw s0,0x40(sp)
sw gp,0x18(sp)
sw ra,0x64(sp)
sw s8,0x60(sp)
sw s7,0x5c(sp)
sw s6,0x58(sp)
sw s5,0x54(sp)
sw s4,0x50(sp)
sw s3,0x4c(sp)
sw s2,0x48(sp)
sw s1,0x44(sp)
lw s0,-0x7dbc(gp)
lw v0,0x0(s0)
sw v0,0x3c(sp)
beq a2,zero,0x00022c84
_li v0,0x1
beq a0,zero,0x00022c80
_or s8,a0,zero
or s1,a1,zero
lw a1,0xc(a0)
lw a0,-0x7fd4(gp)
or s5,a2,zero
lw t9,-0x7f60(gp)
li a2,0x21
bal 0x0001f1b8
_addiu a0,a0,-0x3c40
bne v0,zero,0x00022d1c
_lw gp,0x18(sp)
lw a0,-0x7fd4(gp)
li a2,0x13
lw t9,-0x7f60(gp)
lw a1,0xc(s8)
bal 0x0001f1b8
_addiu a0,a0,-0x3c1c
beq v0,zero,0x00022c80
_lw gp,0x18(sp)
lw v0,-0x7fd4(gp)
addiu s3,s8,0x60
lw s7,0x30(s8)
li s4,0x1
or s6,zero,zero
sw zero,0x38(sp)
addiu v0,v0,-0x3b10
sw v0,0x2c(sp)
lw v0,-0x7fac(gp)
addiu v0,v0,0x1f88
sw v0,0x30(sp)
lw v0,-0x7fac(gp)
addiu v0,v0,0x21e8
sw v0,0x34(sp)
sltu s2,s6,s5
bne s2,zero,0x00022bd8
_lw v0,-0x7fd4(gp)
beq s7,zero,0x0002311c
_lw a1,0x38(sp)
beq s4,zero,0x0002311c
_nop
sw s6,0x20(sp)
sw v0,0x28(sp)
lw v0,-0x7fac(gp)
sw v0,0x24(sp)
lw t0,0x2c(s8)
subu v0,s5,s6
lw t9,-0x7db8(gp)
addu a1,s1,s6
addu a0,s3,s7
subu a3,t0,s7
sltu t0,a3,v0
movz a3,v0,t0
or a2,a3,zero
jalr t9
_or s2,a3,zero
lw a3,0x30(s8)
addu s6,s6,s2
lw gp,0x18(sp)
addu s7,s2,a3
bne s2,zero,0x00022c40
_sw s7,0x30(s8)
bne s4,zero,0x00022c40
_lw v0,0x20(sp)
sltu s2,v0,s5
bne s2,zero,0x00022c74
_nop
lw v0,0x50(s8)
li a0,0x2
beq v0,a0,0x00022d98
_sltiu a1,v0,0x3
bne a1,zero,0x00022d48
_li a1,0x3
beq v0,a1,0x00022e04
_li a1,0x4
bne v0,a1,0x00022ddc
_li v0,0x2d
lb a1,0x60(s8)
beq a1,v0,0x00022cc0
_lw a1,0x38(sp)
sw zero,0x4c(s8)
b 0x00022c84
_or v0,zero,zero
or v0,zero,zero
lw a0,0x3c(sp)
lw v1,0x0(s0)
bne a0,v1,0x000231d4
_lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
or s4,zero,zero
lw v0,0x54(s8)
sw a0,0x50(s8)
addiu a1,a1,0x1
sw v0,0x4c(s8)
sw a1,0x38(sp)
beq a1,zero,0x00022bc0
_sltu s2,s6,s5
subu s7,s7,a1
lw t9,-0x7dac(gp)
addu a1,s3,a1
or a2,s7,zero
jalr t9
_or a0,s3,zero
sltu v0,s6,s5
lw gp,0x18(sp)
sw zero,0x38(sp)
bne v0,zero,0x00022d3c
_sw s7,0x30(s8)
bne s7,zero,0x00022d3c
_nop
b 0x00022c84
_li v0,0x1
lw t9,-0x7fac(gp)
or a2,s5,zero
or a1,s1,zero
addiu t9,t9,0x19d4
bal 0x000219d4
_or a0,s8,zero
b 0x00022c84
_lw gp,0x18(sp)
li s4,0x1
b 0x00022be8
_sw s6,0x20(sp)
li a0,0x1
bne v0,a0,0x00022ddc
_li a0,0xa
lb v0,0x60(s8)
beq v0,a0,0x00022d84
_lw a1,0x38(sp)
li a0,0x2d
beq v0,a0,0x00022e0c
_li a0,0x2
sw a0,0x50(s8)
li a0,0xd
beq v0,a0,0x00022da8
_li a0,0xa
bne v0,a0,0x000231c4
_lw a1,0x38(sp)
or s4,zero,zero
sw zero,0x50(s8)
addiu a1,a1,0x1
b 0x00022cd8
_sw a1,0x38(sp)
lb v0,0x60(s8)
li a0,0xd
bne v0,a0,0x00022d7c
_li a0,0xa
sltiu v0,s7,0x2
bne v0,zero,0x00022dc4
_lw a1,0x38(sp)
lb a0,0x61(s8)
li v0,0xa
beq a0,v0,0x00022e28
_nop
addiu a1,a1,0x1
li v0,0x1
or s4,zero,zero
sw a1,0x38(sp)
b 0x00022cd8
_sw v0,0x50(s8)
lw v0,0x4c(s8)
sltiu a0,v0,0x10
beq a0,zero,0x000230e4
_lw v1,0x2c(sp)
sll v0,v0,0x2
addu v0,v1,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
b 0x00022d60
_lb v0,0x60(s8)
lw a1,0x38(sp)
li v0,0x4
or s4,zero,zero
sw v0,0x50(s8)
addiu a1,a1,0x1
b 0x00022cd8
_sw a1,0x38(sp)
addiu a1,a1,0x2
sw zero,0x50(s8)
or s4,zero,zero
b 0x00022cd8
_sw a1,0x38(sp)
lw t9,0x30(sp)
or a0,s8,zero
jalr t9
_li s4,0x1
li v0,0xd
lw gp,0x18(sp)
lw a1,0x38(sp)
lw s7,0x30(s8)
b 0x00022cd8
_sw v0,0x4c(s8)
li v0,0x3
lw a3,0x44(s8)
lw a2,0x14(s8)
addiu a1,sp,0x38
sw v0,0x14(sp)
li v0,0xf
lw t9,0x34(sp)
or a0,s8,zero
jalr t9
_sw v0,0x10(sp)
bne v0,zero,0x00022ea0
_lw gp,0x18(sp)
lw v0,0x4c(s8)
beq v0,zero,0x00022c84
_or v0,zero,zero
lw a1,0x38(sp)
or s4,zero,zero
b 0x00022cd8
_lw s7,0x30(s8)
or v1,zero,zero
or v0,zero,zero
li a2,0xe
sw v1,0x3c(s8)
addiu a1,sp,0x38
sw v0,0x38(s8)
lw v0,0x24(sp)
addiu t9,v0,0x2680
bal 0x00022680
_or a0,s8,zero
beq v0,zero,0x00022ffc
_lw gp,0x18(sp)
lw a1,0x38(sp)
li s4,0x1
b 0x00022cd8
_lw s7,0x30(s8)
lw v0,0x18(s8)
beq v0,zero,0x00022f04
_sw zero,0x58(s8)
li v0,0x1
sw v0,0x58(s8)
lw v0,0x1c(s8)
beq v0,zero,0x00022f1c
_nop
lw v0,0x58(s8)
ori v0,v0,0x2
sw v0,0x58(s8)
lw v0,0x20(s8)
beq v0,zero,0x00022f34
_nop
lw v0,0x58(s8)
ori v0,v0,0x4
sw v0,0x58(s8)
lw v0,0x24(s8)
beq v0,zero,0x00022f50
_li v0,0xd
lw v0,0x58(s8)
ori v0,v0,0x8
sw v0,0x58(s8)
li v0,0xd
lw a1,0x38(sp)
li s4,0x1
b 0x00022cd8
_sw v0,0x4c(s8)
lw t9,0x30(sp)
or a0,s8,zero
jalr t9
_sw zero,0x58(s8)
lw a0,0x14(s8)
beq a0,zero,0x00022f90
_lw gp,0x18(sp)
lw t9,-0x7db0(gp)
jalr t9
_nop
lw gp,0x18(sp)
sw zero,0x14(s8)
li v0,0x7
lw a1,0x38(sp)
lw s7,0x30(s8)
li s4,0x1
b 0x00022cd8
_sw v0,0x4c(s8)
li v0,0x1
lw a3,0x40(s8)
lw a2,0x10(s8)
addiu a1,sp,0x38
sw v0,0x14(sp)
b 0x00022e7c
_li v0,0xa
lw a1,0x14(s8)
beq a1,zero,0x00022c74
_addiu a3,sp,0x38
li v0,0x3
lw a2,0x44(s8)
sw v0,0x14(sp)
li v0,0xc
lw t9,-0x7fac(gp)
or a0,s8,zero
addiu t9,t9,0x207c
bal 0x0002207c
_sw v0,0x10(sp)
bne v0,zero,0x00022ea0
_lw gp,0x18(sp)
lw v0,0x4c(s8)
beq v0,zero,0x00022c80
_lw a1,0x38(sp)
bne a1,zero,0x000231e0
_nop
sltu s2,s6,s5
beq s2,zero,0x00022d14
_nop
sw zero,0x4c(s8)
b 0x00022c84
_or v0,zero,zero
lw a0,0x1c(s8)
beq a0,zero,0x00023050
_li a2,0xf
lw a1,-0x7fd4(gp)
lw t9,-0x7f60(gp)
bal 0x0001f1b8
_addiu a1,a1,-0x3bfc
bne v0,zero,0x00023148
_lw gp,0x18(sp)
lw s7,0x30(s8)
or v0,zero,zero
lw a1,0x38(sp)
or v1,zero,zero
sw v0,0x38(s8)
li v0,0x9
sw v1,0x3c(s8)
li s4,0x1
b 0x00022cd8
_sw v0,0x4c(s8)
li v0,0x1
lw a2,0x40(s8)
lw a1,0x10(s8)
addiu a3,sp,0x38
sw v0,0x14(sp)
b 0x00022fe0
_li v0,0x7
lw t9,-0x7fac(gp)
li v0,0x1
lw a1,0x10(s8)
addiu a3,sp,0x38
lw a2,0x40(s8)
or a0,s8,zero
sw v0,0x14(sp)
li v0,0x7
addiu t9,t9,0x207c
sw v0,0x10(sp)
bal 0x0002207c
_or s4,zero,zero
lw gp,0x18(sp)
lw a1,0x38(sp)
b 0x00022cd8
_lw s7,0x30(s8)
li v0,0x1
li a2,0x8
addiu a1,sp,0x38
b 0x00022ec8
_sb v0,0x48(s8)
lw v0,0x28(sp)
or a3,zero,zero
li a2,0x53a
addiu a1,v0,-0x3cbc
lw v0,-0x7fc8(gp)
lw a0,0x0(v0)
lw v0,-0x7fc4(gp)
lw t9,0x0(v0)
jalr t9
_or s4,zero,zero
lw gp,0x18(sp)
lw a1,0x38(sp)
b 0x00022cd8
_lw s7,0x30(s8)
beq a1,zero,0x00022c84
_li v0,0x1
subu s7,s7,a1
lw t9,-0x7dac(gp)
addu a1,s3,a1
or a2,s7,zero
jalr t9
_or a0,s3,zero
lw gp,0x18(sp)
b 0x00023014
_sw s7,0x30(s8)
lw a1,-0x7fd4(gp)
lw s2,0x1c(s8)
lw t9,-0x7d88(gp)
addiu a1,a1,-0x3c08
jalr t9
_or a0,s2,zero
lw gp,0x18(sp)
beq v0,zero,0x00022c74
_sw v0,0x14(s8)
lw t9,-0x7db4(gp)
jalr t9
_addiu a0,v0,0x9
lw gp,0x18(sp)
beq v0,zero,0x00022c74
_sw v0,0x14(s8)
lw t9,-0x7db0(gp)
or a0,s2,zero
jalr t9
_li s4,0x1
lw gp,0x18(sp)
lw a0,0x14(s8)
lw t9,-0x7e48(gp)
jalr t9
_sw zero,0x1c(s8)
lw gp,0x18(sp)
lw a1,0x38(sp)
lw s7,0x30(s8)
sw v0,0x44(s8)
li v0,0xb
b 0x00022cd8
_sw v0,0x4c(s8)
sw zero,0x50(s8)
or v0,zero,zero
b 0x00022c84
_sw zero,0x4c(s8)
lw t9,-0x7de4(gp)
jalr t9
_nop
lw s7,0x30(s8)
b 0x00023124
_sltu s2,s6,s5
(translation_unit "undefined4 MHD_post_process(int param_1,int param_2,uint param_3)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  char cVar11;\n  uint uVar12;\n  int unaff_s3;\n  uint unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  int unaff_s8;\n  int local_30;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  uVar7 = 1;\n  if (param_3 == 0) goto LAB_00022c84;\n  iVar8 = param_2;\n  unaff_s8 = param_1;\n  if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  param_2 = iVar8;\n  uVar7 = 0;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }\n  return uVar7;\n}\n\n" (function_definition "undefined4 MHD_post_process(int param_1,int param_2,uint param_3)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  char cVar11;\n  uint uVar12;\n  int unaff_s3;\n  uint unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  int unaff_s8;\n  int local_30;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  uVar7 = 1;\n  if (param_3 == 0) goto LAB_00022c84;\n  iVar8 = param_2;\n  unaff_s8 = param_1;\n  if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  param_2 = iVar8;\n  uVar7 = 0;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }\n  return uVar7;\n}" type_identifier (function_declarator "MHD_post_process(int param_1,int param_2,uint param_3)" identifier (parameter_list "(int param_1,int param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  char cVar11;\n  uint uVar12;\n  int unaff_s3;\n  uint unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  int unaff_s8;\n  int local_30;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  uVar7 = 1;\n  if (param_3 == 0) goto LAB_00022c84;\n  iVar8 = param_2;\n  unaff_s8 = param_1;\n  if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  param_2 = iVar8;\n  uVar7 = 0;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }\n  return uVar7;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "char cVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int unaff_s3;" primitive_type identifier ;) (declaration "uint unaff_s5;" type_identifier identifier ;) (declaration "uint unaff_s6;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int unaff_s8;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_0003d244;" (assignment_expression "puVar5 = PTR___stack_chk_guard_0003d244" identifier = identifier) ;) (expression_statement "iVar6 = *(int *)PTR___stack_chk_guard_0003d244;" (assignment_expression "iVar6 = *(int *)PTR___stack_chk_guard_0003d244" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003d244" * (cast_expression "(int *)PTR___stack_chk_guard_0003d244" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (if_statement "if (param_3 == 0) goto LAB_00022c84;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;)) (expression_statement "iVar8 = param_2;" (assignment_expression "iVar8 = param_2" identifier = identifier) ;) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" identifier = identifier) ;) (if_statement "if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }" { (expression_statement "iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);" (assignment_expression "iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" identifier = (call_expression "FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" identifier (argument_list "(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" ( (binary_expression "PTR_DAT_0003d02c + -0x3c40" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }" { (expression_statement "uVar7 = FUN_000219d4(param_1,param_2,param_3);" (assignment_expression "uVar7 = FUN_000219d4(param_1,param_2,param_3)" identifier = (call_expression "FUN_000219d4(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);" (assignment_expression "iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" identifier = (call_expression "FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" identifier (argument_list "(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" ( (binary_expression "PTR_DAT_0003d02c + -0x3c1c" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "puVar3 = PTR_DAT_0003d02c;" (assignment_expression "puVar3 = PTR_DAT_0003d02c" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }" { (expression_statement "unaff_s3 = param_1 + 0x60;" (assignment_expression "unaff_s3 = param_1 + 0x60" identifier = (binary_expression "param_1 + 0x60" identifier + number_literal)) ;) (expression_statement "uVar13 = *(uint *)(param_1 + 0x30);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x30)" identifier = (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "unaff_s6 = 0;" (assignment_expression "unaff_s6 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = param_3 != 0;" (assignment_expression "bVar1 = param_3 != 0" identifier = (binary_expression "param_3 != 0" identifier != number_literal)) ;) (labeled_statement "LAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;" statement_identifier : (expression_statement "puVar4 = PTR_DAT_0003d02c;" (assignment_expression "puVar4 = PTR_DAT_0003d02c" identifier = identifier) ;)) (expression_statement "uVar10 = unaff_s6;" (assignment_expression "uVar10 = unaff_s6" identifier = identifier) ;) (if_statement "if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }" if (parenthesized_expression "((bVar1) || ((uVar13 != 0 && (bVar2))))" ( (binary_expression "(bVar1) || ((uVar13 != 0 && (bVar2)))" (parenthesized_expression "(bVar1)" ( identifier )) || (parenthesized_expression "((uVar13 != 0 && (bVar2)))" ( (parenthesized_expression "(uVar13 != 0 && (bVar2))" ( (binary_expression "uVar13 != 0 && (bVar2)" (binary_expression "uVar13 != 0" identifier != number_literal) && (parenthesized_expression "(bVar2)" ( identifier ))) )) ))) )) (compound_statement "{\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }" { (do_statement "do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );" do (compound_statement "{\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        }" { (expression_statement "iVar8 = param_2 + uVar10;" (assignment_expression "iVar8 = param_2 + uVar10" identifier = (binary_expression "param_2 + uVar10" identifier + identifier)) ;) (expression_statement "uVar12 = *(int *)(param_1 + 0x2c) - uVar13;" (assignment_expression "uVar12 = *(int *)(param_1 + 0x2c) - uVar13" identifier = (binary_expression "*(int *)(param_1 + 0x2c) - uVar13" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) - identifier)) ;) (if_statement "if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }" if (parenthesized_expression "(param_3 - uVar10 <= uVar12)" ( (binary_expression "param_3 - uVar10 <= uVar12" (binary_expression "param_3 - uVar10" identifier - identifier) <= identifier) )) (compound_statement "{\n            uVar12 = param_3 - uVar10;\n          }" { (expression_statement "uVar12 = param_3 - uVar10;" (assignment_expression "uVar12 = param_3 - uVar10" identifier = (binary_expression "param_3 - uVar10" identifier - identifier)) ;) })) (expression_statement "(*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);" (call_expression "(*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12)" (parenthesized_expression "(*(code *)PTR_memcpy_0003d248)" ( (pointer_expression "*(code *)PTR_memcpy_0003d248" * (cast_expression "(code *)PTR_memcpy_0003d248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3 + uVar13,iVar8,uVar12)" ( (binary_expression "unaff_s3 + uVar13" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "unaff_s6 = uVar10 + uVar12;" (assignment_expression "unaff_s6 = uVar10 + uVar12" identifier = (binary_expression "uVar10 + uVar12" identifier + identifier)) ;) (expression_statement "uVar13 = uVar12 + *(int *)(param_1 + 0x30);" (assignment_expression "uVar13 = uVar12 + *(int *)(param_1 + 0x30)" identifier = (binary_expression "uVar12 + *(int *)(param_1 + 0x30)" identifier + (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }" if (parenthesized_expression "(((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3))" ( (binary_expression "((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)" (parenthesized_expression "((uVar12 == 0) && (!bVar2))" ( (binary_expression "(uVar12 == 0) && (!bVar2)" (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) ))) )) && (parenthesized_expression "(uVar10 < param_3)" ( (binary_expression "uVar10 < param_3" identifier < identifier) ))) )) (compound_statement "{\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }" { (labeled_statement "switchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" identifier = identifier) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) (expression_statement "uVar10 = *(uint *)(param_1 + 0x50);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x50)" identifier = (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (if_statement "if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" if (parenthesized_expression "(uVar10 == 2)" ( (binary_expression "uVar10 == 2" identifier == number_literal) )) (compound_statement "{\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }" { (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" identifier = (pointer_expression "*(char *)(param_1 + 0x60)" * (cast_expression "(char *)(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" if (parenthesized_expression "(cVar11 == '\r')" ( (binary_expression "cVar11 == '\r'" identifier == (char_literal "'\r'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }" { (labeled_statement "LAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" statement_identifier : (if_statement "if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" if (parenthesized_expression "((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n'))" ( (binary_expression "(uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')" (parenthesized_expression "(uVar13 < 2)" ( (binary_expression "uVar13 < 2" identifier < number_literal) )) || (parenthesized_expression "(*(char *)(param_1 + 0x61) != '\n')" ( (binary_expression "*(char *)(param_1 + 0x61) != '\n'" (pointer_expression "*(char *)(param_1 + 0x61)" * (cast_expression "(char *)(param_1 + 0x61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x61)" ( (binary_expression "param_1 + 0x61" identifier + number_literal) )))) != (char_literal "'\n'" ' escape_sequence ')) ))) )) (compound_statement "{\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }" { (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" else (compound_statement "{\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" { (expression_statement "local_30 = local_30 + 2;" (assignment_expression "local_30 = local_30 + 2" identifier = (binary_expression "local_30 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) })))) }) (else_clause "else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" else (compound_statement "{\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" { (labeled_statement "LAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" statement_identifier : (if_statement "if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" if (parenthesized_expression "(cVar11 != '\n')" ( (binary_expression "cVar11 != '\n'" identifier != (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" { (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" identifier = identifier) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) }))) (labeled_statement "LAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" else (if_statement "if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" if (parenthesized_expression "(uVar10 < 3)" ( (binary_expression "uVar10 < 3" identifier < number_literal) )) (compound_statement "{\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }" { (if_statement "if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }" if (parenthesized_expression "(uVar10 == 1)" ( (binary_expression "uVar10 == 1" identifier == number_literal) )) (compound_statement "{\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }" { (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" identifier = (pointer_expression "*(char *)(param_1 + 0x60)" * (cast_expression "(char *)(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (cVar11 != '\n') goto LAB_00022d60;" if (parenthesized_expression "(cVar11 != '\n')" ( (binary_expression "cVar11 != '\n'" identifier != (char_literal "'\n'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022d60;" goto statement_identifier ;)) (goto_statement "goto LAB_00022d84;" goto statement_identifier ;) })) (labeled_statement "LAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" statement_identifier : (if_statement "if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" if (parenthesized_expression "(*(uint *)(param_1 + 0x4c) < 0x10)" ( (binary_expression "*(uint *)(param_1 + 0x4c) < 0x10" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" { comment comment (expression_statement "uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();" (assignment_expression "uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" ( (binary_expression "&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" * (cast_expression "(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" ( (binary_expression "puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10" (binary_expression "puVar3 + *(uint *)(param_1 + 0x4c) * 4" identifier + (binary_expression "*(uint *)(param_1 + 0x4c) * 4" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar7;" return identifier ;) }))) (expression_statement "(**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);" (call_expression "(**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0)" (parenthesized_expression "(**(code **)PTR_DAT_0003d03c)" ( (pointer_expression "**(code **)PTR_DAT_0003d03c" * (pointer_expression "*(code **)PTR_DAT_0003d03c" * (cast_expression "(code **)PTR_DAT_0003d03c" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0)" ( (pointer_expression "*(undefined4 *)PTR_DAT_0003d038" * (cast_expression "(undefined4 *)PTR_DAT_0003d038" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "puVar4 + -0x3cbc" identifier + number_literal) , number_literal , number_literal ))) ;) (expression_statement "uVar13 = *(uint *)(param_1 + 0x30);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x30)" identifier = (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) }) (else_clause "else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" else (if_statement "if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" if (parenthesized_expression "(uVar10 == 3)" ( (binary_expression "uVar10 == 3" identifier == number_literal) )) (compound_statement "{\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }" { (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" identifier = (pointer_expression "*(char *)(param_1 + 0x60)" * (cast_expression "(char *)(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" statement_identifier : (if_statement "if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" if (parenthesized_expression "(cVar11 != '-')" ( (binary_expression "cVar11 != '-'" identifier != (char_literal "'-'" ' character ')) )) (compound_statement "{\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" { (expression_statement "*(undefined4 *)(param_1 + 0x50) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (cVar11 == '\r') goto LAB_00022da8;" if (parenthesized_expression "(cVar11 == '\r')" ( (binary_expression "cVar11 == '\r'" identifier == (char_literal "'\r'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022da8;" goto statement_identifier ;)) (goto_statement "goto LAB_00022d7c;" goto statement_identifier ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" else (compound_statement "{\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" { (if_statement "if (uVar10 != 4) goto LAB_00022ddc;" if (parenthesized_expression "(uVar10 != 4)" ( (binary_expression "uVar10 != 4" identifier != number_literal) )) (goto_statement "goto LAB_00022ddc;" goto statement_identifier ;)) (expression_statement "iVar8 = local_30;" (assignment_expression "iVar8 = local_30" identifier = identifier) ;) (if_statement "if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;" if (parenthesized_expression "(*(char *)(param_1 + 0x60) != '-')" ( (binary_expression "*(char *)(param_1 + 0x60) != '-'" (pointer_expression "*(char *)(param_1 + 0x60)" * (cast_expression "(char *)(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) != (char_literal "'-'" ' character ')) )) (goto_statement "goto switchD_00022dfc_caseD_1;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54)" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x54)" * (cast_expression "(undefined4 *)(param_1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) ))))) ;) }))))))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar1 = unaff_s6 < param_3;" (assignment_expression "bVar1 = unaff_s6 < param_3" identifier = (binary_expression "unaff_s6 < param_3" identifier < identifier)) ;) (if_statement "if (local_30 == 0) goto LAB_00022bc0;" if (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022bc0;" goto statement_identifier ;)) (expression_statement "uVar13 = uVar13 - local_30;" (assignment_expression "uVar13 = uVar13 - local_30" identifier = (binary_expression "uVar13 - local_30" identifier - identifier)) ;) (expression_statement "iVar8 = unaff_s3 + local_30;" (assignment_expression "iVar8 = unaff_s3 + local_30" identifier = (binary_expression "unaff_s3 + local_30" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);" (call_expression "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13)" (parenthesized_expression "(*(code *)PTR_memmove_0003d254)" ( (pointer_expression "*(code *)PTR_memmove_0003d254" * (cast_expression "(code *)PTR_memmove_0003d254" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,iVar8,uVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;" if (parenthesized_expression "((param_3 <= unaff_s6) && (uVar13 == 0))" ( (binary_expression "(param_3 <= unaff_s6) && (uVar13 == 0)" (parenthesized_expression "(param_3 <= unaff_s6)" ( (binary_expression "param_3 <= unaff_s6" identifier <= identifier) )) && (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022d14;" goto statement_identifier ;)) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "uVar10 = unaff_s6;" (assignment_expression "uVar10 = unaff_s6" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" identifier = identifier) ;) (if_statement "if (local_30 != 0) goto LAB_00023014;" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00023014;" goto statement_identifier ;)) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) })) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" identifier = identifier) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" statement_identifier : (while_statement "while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" while (parenthesized_expression "(iVar6 != *(int *)puVar5)" ( (binary_expression "iVar6 != *(int *)puVar5" identifier != (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0003d21c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003d21c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003d21c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003d21c" * (cast_expression "(code *)PTR___stack_chk_fail_0003d21c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar13 = *(uint *)(unaff_s8 + 0x30);" (assignment_expression "uVar13 = *(uint *)(unaff_s8 + 0x30)" identifier = (pointer_expression "*(uint *)(unaff_s8 + 0x30)" * (cast_expression "(uint *)(unaff_s8 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s8 + 0x30)" ( (binary_expression "unaff_s8 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "bVar1 = unaff_s6 < unaff_s5;" (assignment_expression "bVar1 = unaff_s6 < unaff_s5" identifier = (binary_expression "unaff_s6 < unaff_s5" identifier < identifier)) ;) (expression_statement "param_3 = unaff_s5;" (assignment_expression "param_3 = unaff_s5" identifier = identifier) ;) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" identifier = identifier) ;) (labeled_statement "LAB_00023014:\n    iVar8 = unaff_s3 + param_2;" statement_identifier : (expression_statement "iVar8 = unaff_s3 + param_2;" (assignment_expression "iVar8 = unaff_s3 + param_2" identifier = (binary_expression "unaff_s3 + param_2" identifier + identifier)) ;)) (expression_statement "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);" (call_expression "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2)" (parenthesized_expression "(*(code *)PTR_memmove_0003d254)" ( (pointer_expression "*(code *)PTR_memmove_0003d254" * (cast_expression "(code *)PTR_memmove_0003d254" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,iVar8,uVar13 - param_2)" ( identifier , identifier , (binary_expression "uVar13 - param_2" identifier - identifier) ))) ;) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13 - param_2;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13 - param_2" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = (binary_expression "uVar13 - param_2" identifier - identifier)) ;) (if_statement "if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" identifier = identifier) ;) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" identifier = identifier) ;) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" identifier = identifier) ;) }) (else_clause "else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" else (compound_statement "{\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" { (labeled_statement "LAB_00022d14:\n      uVar7 = 1;" statement_identifier : (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;)) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" identifier = identifier) ;) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" identifier = identifier) ;) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" identifier = identifier) ;) }))) }))) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */\n\nMHD_Result MHD_post_process(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  MHD_Result MVar7;\n  int iVar8;\n  RN_State RVar9;\n  char cVar10;\n  char *pcVar11;\n  uint uVar12;\n  MHD_PostProcessor *unaff_s3;\n  size_t unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  size_t sVar14;\n  MHD_PostProcessor *unaff_s8;\n  size_t ioff;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  MVar7 = MHD_YES;\n  if (post_data_len == 0) goto LAB_00022c84;\n  pcVar11 = post_data;\n  unaff_s8 = pp;\n  if (pp != (MHD_PostProcessor *)0x0) {\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21);\n    unaff_s5 = post_data_len;\n    if (iVar8 != 0) {\n      MVar7 = post_process_urlencoded(pp,post_data,post_data_len);\n      goto LAB_00022c84;\n    }\n    pcVar11 = pp->encoding;\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar8 != 0) {\n      unaff_s3 = pp + 1;\n      sVar14 = pp->buffer_pos;\n      bVar2 = true;\n      unaff_s6 = 0;\n      ioff = 0;\n      bVar1 = post_data_len != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar13 = unaff_s6;\n      if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }\n      MVar7 = MHD_YES;\n      post_data = (char *)ioff;\n      if (ioff != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  post_data = pcVar11;\n  MVar7 = MHD_NO;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    sVar14 = unaff_s8->buffer_pos;\n    bVar1 = unaff_s6 < unaff_s5;\n    post_data_len = unaff_s5;\n    pp = unaff_s8;\nLAB_00023014:\n    pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data);\n    pp->buffer_pos = sVar14 - (int)post_data;\n    if (bVar1) {\n      pp->state = PP_Error;\n      MVar7 = MHD_NO;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n    else {\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n  }\n  return MVar7;\n}\n\n" comment (function_definition "MHD_Result MHD_post_process(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  MHD_Result MVar7;\n  int iVar8;\n  RN_State RVar9;\n  char cVar10;\n  char *pcVar11;\n  uint uVar12;\n  MHD_PostProcessor *unaff_s3;\n  size_t unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  size_t sVar14;\n  MHD_PostProcessor *unaff_s8;\n  size_t ioff;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  MVar7 = MHD_YES;\n  if (post_data_len == 0) goto LAB_00022c84;\n  pcVar11 = post_data;\n  unaff_s8 = pp;\n  if (pp != (MHD_PostProcessor *)0x0) {\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21);\n    unaff_s5 = post_data_len;\n    if (iVar8 != 0) {\n      MVar7 = post_process_urlencoded(pp,post_data,post_data_len);\n      goto LAB_00022c84;\n    }\n    pcVar11 = pp->encoding;\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar8 != 0) {\n      unaff_s3 = pp + 1;\n      sVar14 = pp->buffer_pos;\n      bVar2 = true;\n      unaff_s6 = 0;\n      ioff = 0;\n      bVar1 = post_data_len != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar13 = unaff_s6;\n      if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }\n      MVar7 = MHD_YES;\n      post_data = (char *)ioff;\n      if (ioff != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  post_data = pcVar11;\n  MVar7 = MHD_NO;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    sVar14 = unaff_s8->buffer_pos;\n    bVar1 = unaff_s6 < unaff_s5;\n    post_data_len = unaff_s5;\n    pp = unaff_s8;\nLAB_00023014:\n    pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data);\n    pp->buffer_pos = sVar14 - (int)post_data;\n    if (bVar1) {\n      pp->state = PP_Error;\n      MVar7 = MHD_NO;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n    else {\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n  }\n  return MVar7;\n}" type_identifier (function_declarator "MHD_post_process(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)" identifier (parameter_list "(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)" ( (parameter_declaration "MHD_PostProcessor *pp" type_identifier (pointer_declarator "*pp" * identifier)) , (parameter_declaration "char *post_data" primitive_type (pointer_declarator "*post_data" * identifier)) , (parameter_declaration "size_t post_data_len" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  MHD_Result MVar7;\n  int iVar8;\n  RN_State RVar9;\n  char cVar10;\n  char *pcVar11;\n  uint uVar12;\n  MHD_PostProcessor *unaff_s3;\n  size_t unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  size_t sVar14;\n  MHD_PostProcessor *unaff_s8;\n  size_t ioff;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  MVar7 = MHD_YES;\n  if (post_data_len == 0) goto LAB_00022c84;\n  pcVar11 = post_data;\n  unaff_s8 = pp;\n  if (pp != (MHD_PostProcessor *)0x0) {\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21);\n    unaff_s5 = post_data_len;\n    if (iVar8 != 0) {\n      MVar7 = post_process_urlencoded(pp,post_data,post_data_len);\n      goto LAB_00022c84;\n    }\n    pcVar11 = pp->encoding;\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar8 != 0) {\n      unaff_s3 = pp + 1;\n      sVar14 = pp->buffer_pos;\n      bVar2 = true;\n      unaff_s6 = 0;\n      ioff = 0;\n      bVar1 = post_data_len != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar13 = unaff_s6;\n      if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }\n      MVar7 = MHD_YES;\n      post_data = (char *)ioff;\n      if (ioff != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  post_data = pcVar11;\n  MVar7 = MHD_NO;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    sVar14 = unaff_s8->buffer_pos;\n    bVar1 = unaff_s6 < unaff_s5;\n    post_data_len = unaff_s5;\n    pp = unaff_s8;\nLAB_00023014:\n    pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data);\n    pp->buffer_pos = sVar14 - (int)post_data;\n    if (bVar1) {\n      pp->state = PP_Error;\n      MVar7 = MHD_NO;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n    else {\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n  }\n  return MVar7;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "MHD_Result MVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "RN_State RVar9;" type_identifier identifier ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "MHD_PostProcessor *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "size_t unaff_s5;" primitive_type identifier ;) (declaration "uint unaff_s6;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "size_t sVar14;" primitive_type identifier ;) (declaration "MHD_PostProcessor *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "size_t ioff;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_0003d244;" (assignment_expression "puVar5 = PTR___stack_chk_guard_0003d244" identifier = identifier) ;) (expression_statement "iVar6 = *(int *)PTR___stack_chk_guard_0003d244;" (assignment_expression "iVar6 = *(int *)PTR___stack_chk_guard_0003d244" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003d244" * (cast_expression "(int *)PTR___stack_chk_guard_0003d244" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "MVar7 = MHD_YES;" (assignment_expression "MVar7 = MHD_YES" identifier = identifier) ;) (if_statement "if (post_data_len == 0) goto LAB_00022c84;" if (parenthesized_expression "(post_data_len == 0)" ( (binary_expression "post_data_len == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;)) (expression_statement "pcVar11 = post_data;" (assignment_expression "pcVar11 = post_data" identifier = identifier) ;) (expression_statement "unaff_s8 = pp;" (assignment_expression "unaff_s8 = pp" identifier = identifier) ;) (if_statement "if (pp != (MHD_PostProcessor *)0x0) {\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21);\n    unaff_s5 = post_data_len;\n    if (iVar8 != 0) {\n      MVar7 = post_process_urlencoded(pp,post_data,post_data_len);\n      goto LAB_00022c84;\n    }\n    pcVar11 = pp->encoding;\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar8 != 0) {\n      unaff_s3 = pp + 1;\n      sVar14 = pp->buffer_pos;\n      bVar2 = true;\n      unaff_s6 = 0;\n      ioff = 0;\n      bVar1 = post_data_len != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar13 = unaff_s6;\n      if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }\n      MVar7 = MHD_YES;\n      post_data = (char *)ioff;\n      if (ioff != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }" if (parenthesized_expression "(pp != (MHD_PostProcessor *)0x0)" ( (binary_expression "pp != (MHD_PostProcessor *)0x0" identifier != (cast_expression "(MHD_PostProcessor *)0x0" ( (type_descriptor "MHD_PostProcessor *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21);\n    unaff_s5 = post_data_len;\n    if (iVar8 != 0) {\n      MVar7 = post_process_urlencoded(pp,post_data,post_data_len);\n      goto LAB_00022c84;\n    }\n    pcVar11 = pp->encoding;\n    iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar8 != 0) {\n      unaff_s3 = pp + 1;\n      sVar14 = pp->buffer_pos;\n      bVar2 = true;\n      unaff_s6 = 0;\n      ioff = 0;\n      bVar1 = post_data_len != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar13 = unaff_s6;\n      if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }\n      MVar7 = MHD_YES;\n      post_data = (char *)ioff;\n      if (ioff != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }" { (expression_statement "iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21);" (assignment_expression "iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21)" identifier = (call_expression "MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21)" identifier (argument_list "(PTR_DAT_0003d02c + -0x3c40,pp->encoding,0x21)" ( (binary_expression "PTR_DAT_0003d02c + -0x3c40" identifier + number_literal) , (field_expression "pp->encoding" identifier -> field_identifier) , number_literal )))) ;) (expression_statement "unaff_s5 = post_data_len;" (assignment_expression "unaff_s5 = post_data_len" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n      MVar7 = post_process_urlencoded(pp,post_data,post_data_len);\n      goto LAB_00022c84;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      MVar7 = post_process_urlencoded(pp,post_data,post_data_len);\n      goto LAB_00022c84;\n    }" { (expression_statement "MVar7 = post_process_urlencoded(pp,post_data,post_data_len);" (assignment_expression "MVar7 = post_process_urlencoded(pp,post_data,post_data_len)" identifier = (call_expression "post_process_urlencoded(pp,post_data,post_data_len)" identifier (argument_list "(pp,post_data,post_data_len)" ( identifier , identifier , identifier )))) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) (expression_statement "pcVar11 = pp->encoding;" (assignment_expression "pcVar11 = pp->encoding" identifier = (field_expression "pp->encoding" identifier -> field_identifier)) ;) (expression_statement "iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13);" (assignment_expression "iVar8 = MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13)" identifier = (call_expression "MHD_str_equal_caseless_n_(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13)" identifier (argument_list "(PTR_DAT_0003d02c + -0x3c1c,pcVar11,0x13)" ( (binary_expression "PTR_DAT_0003d02c + -0x3c1c" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "puVar3 = PTR_DAT_0003d02c;" (assignment_expression "puVar3 = PTR_DAT_0003d02c" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n      unaff_s3 = pp + 1;\n      sVar14 = pp->buffer_pos;\n      bVar2 = true;\n      unaff_s6 = 0;\n      ioff = 0;\n      bVar1 = post_data_len != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar13 = unaff_s6;\n      if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }\n      MVar7 = MHD_YES;\n      post_data = (char *)ioff;\n      if (ioff != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      unaff_s3 = pp + 1;\n      sVar14 = pp->buffer_pos;\n      bVar2 = true;\n      unaff_s6 = 0;\n      ioff = 0;\n      bVar1 = post_data_len != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar13 = unaff_s6;\n      if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }\n      MVar7 = MHD_YES;\n      post_data = (char *)ioff;\n      if (ioff != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }" { (expression_statement "unaff_s3 = pp + 1;" (assignment_expression "unaff_s3 = pp + 1" identifier = (binary_expression "pp + 1" identifier + number_literal)) ;) (expression_statement "sVar14 = pp->buffer_pos;" (assignment_expression "sVar14 = pp->buffer_pos" identifier = (field_expression "pp->buffer_pos" identifier -> field_identifier)) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "unaff_s6 = 0;" (assignment_expression "unaff_s6 = 0" identifier = number_literal) ;) (expression_statement "ioff = 0;" (assignment_expression "ioff = 0" identifier = number_literal) ;) (expression_statement "bVar1 = post_data_len != 0;" (assignment_expression "bVar1 = post_data_len != 0" identifier = (binary_expression "post_data_len != 0" identifier != number_literal)) ;) (labeled_statement "LAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;" statement_identifier : (expression_statement "puVar4 = PTR_DAT_0003d02c;" (assignment_expression "puVar4 = PTR_DAT_0003d02c" identifier = identifier) ;)) (expression_statement "uVar13 = unaff_s6;" (assignment_expression "uVar13 = unaff_s6" identifier = identifier) ;) (if_statement "if ((bVar1) || ((sVar14 != 0 && (bVar2)))) {\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }" if (parenthesized_expression "((bVar1) || ((sVar14 != 0 && (bVar2))))" ( (binary_expression "(bVar1) || ((sVar14 != 0 && (bVar2)))" (parenthesized_expression "(bVar1)" ( identifier )) || (parenthesized_expression "((sVar14 != 0 && (bVar2)))" ( (parenthesized_expression "(sVar14 != 0 && (bVar2))" ( (binary_expression "sVar14 != 0 && (bVar2)" (binary_expression "sVar14 != 0" identifier != number_literal) && (parenthesized_expression "(bVar2)" ( identifier ))) )) ))) )) (compound_statement "{\n        do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );\n      }" { (do_statement "do {\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        } while( true );" do (compound_statement "{\n          pcVar11 = post_data + uVar13;\n          uVar12 = pp->buffer_size - sVar14;\n          if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);\n          unaff_s6 = uVar13 + uVar12;\n          sVar14 = uVar12 + pp->buffer_pos;\n          pp->buffer_pos = sVar14;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }\n          RVar9 = pp->skip_rn;\n          if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < post_data_len;\n          if (ioff == 0) goto LAB_00022bc0;\n          sVar14 = sVar14 - ioff;\n          pcVar11 = unaff_s3->xbuf + (ioff - 0x28);\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);\n          ioff = 0;\n          pp->buffer_pos = sVar14;\n          if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar13 = unaff_s6;\n        }" { (expression_statement "pcVar11 = post_data + uVar13;" (assignment_expression "pcVar11 = post_data + uVar13" identifier = (binary_expression "post_data + uVar13" identifier + identifier)) ;) (expression_statement "uVar12 = pp->buffer_size - sVar14;" (assignment_expression "uVar12 = pp->buffer_size - sVar14" identifier = (binary_expression "pp->buffer_size - sVar14" (field_expression "pp->buffer_size" identifier -> field_identifier) - identifier)) ;) (if_statement "if (post_data_len - uVar13 <= uVar12) {\n            uVar12 = post_data_len - uVar13;\n          }" if (parenthesized_expression "(post_data_len - uVar13 <= uVar12)" ( (binary_expression "post_data_len - uVar13 <= uVar12" (binary_expression "post_data_len - uVar13" identifier - identifier) <= identifier) )) (compound_statement "{\n            uVar12 = post_data_len - uVar13;\n          }" { (expression_statement "uVar12 = post_data_len - uVar13;" (assignment_expression "uVar12 = post_data_len - uVar13" identifier = (binary_expression "post_data_len - uVar13" identifier - identifier)) ;) })) (expression_statement "(*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12);" (call_expression "(*(code *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12)" (parenthesized_expression "(*(code *)PTR_memcpy_0003d248)" ( (pointer_expression "*(code *)PTR_memcpy_0003d248" * (cast_expression "(code *)PTR_memcpy_0003d248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3->xbuf + (sVar14 - 0x28),pcVar11,uVar12)" ( (binary_expression "unaff_s3->xbuf + (sVar14 - 0x28)" (field_expression "unaff_s3->xbuf" identifier -> field_identifier) + (parenthesized_expression "(sVar14 - 0x28)" ( (binary_expression "sVar14 - 0x28" identifier - number_literal) ))) , identifier , identifier ))) ;) (expression_statement "unaff_s6 = uVar13 + uVar12;" (assignment_expression "unaff_s6 = uVar13 + uVar12" identifier = (binary_expression "uVar13 + uVar12" identifier + identifier)) ;) (expression_statement "sVar14 = uVar12 + pp->buffer_pos;" (assignment_expression "sVar14 = uVar12 + pp->buffer_pos" identifier = (binary_expression "uVar12 + pp->buffer_pos" identifier + (field_expression "pp->buffer_pos" identifier -> field_identifier))) ;) (expression_statement "pp->buffer_pos = sVar14;" (assignment_expression "pp->buffer_pos = sVar14" (field_expression "pp->buffer_pos" identifier -> field_identifier) = identifier) ;) (if_statement "if (((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)) {\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }" if (parenthesized_expression "(((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len))" ( (binary_expression "((uVar12 == 0) && (!bVar2)) && (uVar13 < post_data_len)" (parenthesized_expression "((uVar12 == 0) && (!bVar2))" ( (binary_expression "(uVar12 == 0) && (!bVar2)" (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) ))) )) && (parenthesized_expression "(uVar13 < post_data_len)" ( (binary_expression "uVar13 < post_data_len" identifier < identifier) ))) )) (compound_statement "{\nswitchD_00022dfc_caseD_1:\n            pp->state = PP_Error;\n            MVar7 = MHD_NO;\n            post_data = pcVar11;\n            goto LAB_00022c84;\n          }" { (labeled_statement "switchD_00022dfc_caseD_1:\n            pp->state = PP_Error;" statement_identifier : (expression_statement "pp->state = PP_Error;" (assignment_expression "pp->state = PP_Error" (field_expression "pp->state" identifier -> field_identifier) = identifier) ;)) (expression_statement "MVar7 = MHD_NO;" (assignment_expression "MVar7 = MHD_NO" identifier = identifier) ;) (expression_statement "post_data = pcVar11;" (assignment_expression "post_data = pcVar11" identifier = identifier) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) (expression_statement "RVar9 = pp->skip_rn;" (assignment_expression "RVar9 = pp->skip_rn" identifier = (field_expression "pp->skip_rn" identifier -> field_identifier)) ;) (if_statement "if (RVar9 == RN_Full) {\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }\n          else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }" if (parenthesized_expression "(RVar9 == RN_Full)" ( (binary_expression "RVar9 == RN_Full" identifier == identifier) )) (compound_statement "{\n            cVar10 = *(char *)&pp[1].connection;\n            if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }\n          }" { (expression_statement "cVar10 = *(char *)&pp[1].connection;" (assignment_expression "cVar10 = *(char *)&pp[1].connection" identifier = (pointer_expression "*(char *)&pp[1].connection" * (cast_expression "(char *)&pp[1].connection" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pp[1].connection" & (field_expression "pp[1].connection" (subscript_expression "pp[1]" identifier [ number_literal ]) . field_identifier))))) ;) (if_statement "if (cVar10 == '\r') {\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }" if (parenthesized_expression "(cVar10 == '\r')" ( (binary_expression "cVar10 == '\r'" identifier == (char_literal "'\r'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }\n            }" { (labeled_statement "LAB_00022da8:\n              if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }" statement_identifier : (if_statement "if ((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')) {\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }\n              else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }" if (parenthesized_expression "((sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n'))" ( (binary_expression "(sVar14 < 2) || (*(char *)((int)&pp[1].connection + 1) != '\n')" (parenthesized_expression "(sVar14 < 2)" ( (binary_expression "sVar14 < 2" identifier < number_literal) )) || (parenthesized_expression "(*(char *)((int)&pp[1].connection + 1) != '\n')" ( (binary_expression "*(char *)((int)&pp[1].connection + 1) != '\n'" (pointer_expression "*(char *)((int)&pp[1].connection + 1)" * (cast_expression "(char *)((int)&pp[1].connection + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pp[1].connection + 1)" ( (binary_expression "(int)&pp[1].connection + 1" (cast_expression "(int)&pp[1].connection" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pp[1].connection" & (field_expression "pp[1].connection" (subscript_expression "pp[1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) != (char_literal "'\n'" ' escape_sequence ')) ))) )) (compound_statement "{\n                ioff = ioff + 1;\n                pp->skip_rn = RN_OptN;\n              }" { (expression_statement "ioff = ioff + 1;" (assignment_expression "ioff = ioff + 1" identifier = (binary_expression "ioff + 1" identifier + number_literal)) ;) (expression_statement "pp->skip_rn = RN_OptN;" (assignment_expression "pp->skip_rn = RN_OptN" (field_expression "pp->skip_rn" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }" else (compound_statement "{\n                ioff = ioff + 2;\n                pp->skip_rn = RN_Inactive;\n              }" { (expression_statement "ioff = ioff + 2;" (assignment_expression "ioff = ioff + 2" identifier = (binary_expression "ioff + 2" identifier + number_literal)) ;) (expression_statement "pp->skip_rn = RN_Inactive;" (assignment_expression "pp->skip_rn = RN_Inactive" (field_expression "pp->skip_rn" identifier -> field_identifier) = identifier) ;) })))) }) (else_clause "else {\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }" else (compound_statement "{\nLAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              pp->skip_rn = RN_Inactive;\n              ioff = ioff + 1;\n            }" { (labeled_statement "LAB_00022d7c:\n              if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }" statement_identifier : (if_statement "if (cVar10 != '\n') {\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }" if (parenthesized_expression "(cVar10 != '\n')" ( (binary_expression "cVar10 != '\n'" identifier != (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                pp->skip_rn = RN_Inactive;\n                MVar7 = MHD_NO;\n                pp->state = PP_Error;\n                post_data = (char *)ioff;\n                goto LAB_00022c84;\n              }" { (expression_statement "pp->skip_rn = RN_Inactive;" (assignment_expression "pp->skip_rn = RN_Inactive" (field_expression "pp->skip_rn" identifier -> field_identifier) = identifier) ;) (expression_statement "MVar7 = MHD_NO;" (assignment_expression "MVar7 = MHD_NO" identifier = identifier) ;) (expression_statement "pp->state = PP_Error;" (assignment_expression "pp->state = PP_Error" (field_expression "pp->state" identifier -> field_identifier) = identifier) ;) (expression_statement "post_data = (char *)ioff;" (assignment_expression "post_data = (char *)ioff" identifier = (cast_expression "(char *)ioff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) }))) (labeled_statement "LAB_00022d84:\n              pp->skip_rn = RN_Inactive;" statement_identifier : (expression_statement "pp->skip_rn = RN_Inactive;" (assignment_expression "pp->skip_rn = RN_Inactive" (field_expression "pp->skip_rn" identifier -> field_identifier) = identifier) ;)) (expression_statement "ioff = ioff + 1;" (assignment_expression "ioff = ioff + 1" identifier = (binary_expression "ioff + 1" identifier + number_literal)) ;) }))) }) (else_clause "else if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }" else (if_statement "if (RVar9 < RN_Dash) {\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }\n          else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }" if (parenthesized_expression "(RVar9 < RN_Dash)" ( (binary_expression "RVar9 < RN_Dash" identifier < identifier) )) (compound_statement "{\n            if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }\n            (**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            sVar14 = pp->buffer_pos;\n          }" { (if_statement "if (RVar9 == RN_OptN) {\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }" if (parenthesized_expression "(RVar9 == RN_OptN)" ( (binary_expression "RVar9 == RN_OptN" identifier == identifier) )) (compound_statement "{\n              cVar10 = *(char *)&pp[1].connection;\n              if (cVar10 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }" { (expression_statement "cVar10 = *(char *)&pp[1].connection;" (assignment_expression "cVar10 = *(char *)&pp[1].connection" identifier = (pointer_expression "*(char *)&pp[1].connection" * (cast_expression "(char *)&pp[1].connection" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pp[1].connection" & (field_expression "pp[1].connection" (subscript_expression "pp[1]" identifier [ number_literal ]) . field_identifier))))) ;) (if_statement "if (cVar10 != '\n') goto LAB_00022d60;" if (parenthesized_expression "(cVar10 != '\n')" ( (binary_expression "cVar10 != '\n'" identifier != (char_literal "'\n'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022d60;" goto statement_identifier ;)) (goto_statement "goto LAB_00022d84;" goto statement_identifier ;) })) (labeled_statement "LAB_00022ddc:\n            if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }" statement_identifier : (if_statement "if (pp->state < 0x10) {\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }" if (parenthesized_expression "(pp->state < 0x10)" ( (binary_expression "pp->state < 0x10" (field_expression "pp->state" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00022df0 */\n                    /* WARNING: Treating indirect jump as call */\n              MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();\n              return MVar7;\n            }" { comment comment (expression_statement "MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))();" (assignment_expression "MVar7 = (*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10))" * (cast_expression "(code *)(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10))" ( (binary_expression "&_gp + *(int *)(puVar3 + pp->state * 4 + -0x3b10)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(puVar3 + pp->state * 4 + -0x3b10)" * (cast_expression "(int *)(puVar3 + pp->state * 4 + -0x3b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + pp->state * 4 + -0x3b10)" ( (binary_expression "puVar3 + pp->state * 4 + -0x3b10" (binary_expression "puVar3 + pp->state * 4" identifier + (binary_expression "pp->state * 4" (field_expression "pp->state" identifier -> field_identifier) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return MVar7;" return identifier ;) }))) (expression_statement "(**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0);" (call_expression "(**(code **)PTR_mhd_panic_0003d03c)\n                      (*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0)" (parenthesized_expression "(**(code **)PTR_mhd_panic_0003d03c)" ( (pointer_expression "**(code **)PTR_mhd_panic_0003d03c" * (pointer_expression "*(code **)PTR_mhd_panic_0003d03c" * (cast_expression "(code **)PTR_mhd_panic_0003d03c" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)PTR_mhd_panic_cls_0003d038,puVar4 + -0x3cbc,0x53a,0)" ( (pointer_expression "*(undefined4 *)PTR_mhd_panic_cls_0003d038" * (cast_expression "(undefined4 *)PTR_mhd_panic_cls_0003d038" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "puVar4 + -0x3cbc" identifier + number_literal) , number_literal , number_literal ))) ;) (expression_statement "sVar14 = pp->buffer_pos;" (assignment_expression "sVar14 = pp->buffer_pos" identifier = (field_expression "pp->buffer_pos" identifier -> field_identifier)) ;) }) (else_clause "else if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }" else (if_statement "if (RVar9 == RN_Dash) {\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }\n          else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }" if (parenthesized_expression "(RVar9 == RN_Dash)" ( (binary_expression "RVar9 == RN_Dash" identifier == identifier) )) (compound_statement "{\n            cVar10 = *(char *)&pp[1].connection;\nLAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            pp->skip_rn = RN_Dash2;\n            ioff = ioff + 1;\n          }" { (expression_statement "cVar10 = *(char *)&pp[1].connection;" (assignment_expression "cVar10 = *(char *)&pp[1].connection" identifier = (pointer_expression "*(char *)&pp[1].connection" * (cast_expression "(char *)&pp[1].connection" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pp[1].connection" & (field_expression "pp[1].connection" (subscript_expression "pp[1]" identifier [ number_literal ]) . field_identifier))))) ;) (labeled_statement "LAB_00022d60:\n            if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" statement_identifier : (if_statement "if (cVar10 != '-') {\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" if (parenthesized_expression "(cVar10 != '-')" ( (binary_expression "cVar10 != '-'" identifier != (char_literal "'-'" ' character ')) )) (compound_statement "{\n              pp->skip_rn = RN_Full;\n              if (cVar10 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" { (expression_statement "pp->skip_rn = RN_Full;" (assignment_expression "pp->skip_rn = RN_Full" (field_expression "pp->skip_rn" identifier -> field_identifier) = identifier) ;) (if_statement "if (cVar10 == '\r') goto LAB_00022da8;" if (parenthesized_expression "(cVar10 == '\r')" ( (binary_expression "cVar10 == '\r'" identifier == (char_literal "'\r'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022da8;" goto statement_identifier ;)) (goto_statement "goto LAB_00022d7c;" goto statement_identifier ;) }))) (expression_statement "pp->skip_rn = RN_Dash2;" (assignment_expression "pp->skip_rn = RN_Dash2" (field_expression "pp->skip_rn" identifier -> field_identifier) = identifier) ;) (expression_statement "ioff = ioff + 1;" (assignment_expression "ioff = ioff + 1" identifier = (binary_expression "ioff + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }" else (compound_statement "{\n            if (RVar9 != RN_Dash2) goto LAB_00022ddc;\n            pcVar11 = (char *)ioff;\n            if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;\n            pp->skip_rn = RN_Full;\n            ioff = ioff + 1;\n            pp->state = pp->dash_state;\n          }" { (if_statement "if (RVar9 != RN_Dash2) goto LAB_00022ddc;" if (parenthesized_expression "(RVar9 != RN_Dash2)" ( (binary_expression "RVar9 != RN_Dash2" identifier != identifier) )) (goto_statement "goto LAB_00022ddc;" goto statement_identifier ;)) (expression_statement "pcVar11 = (char *)ioff;" (assignment_expression "pcVar11 = (char *)ioff" identifier = (cast_expression "(char *)ioff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*(char *)&pp[1].connection != '-') goto switchD_00022dfc_caseD_1;" if (parenthesized_expression "(*(char *)&pp[1].connection != '-')" ( (binary_expression "*(char *)&pp[1].connection != '-'" (pointer_expression "*(char *)&pp[1].connection" * (cast_expression "(char *)&pp[1].connection" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pp[1].connection" & (field_expression "pp[1].connection" (subscript_expression "pp[1]" identifier [ number_literal ]) . field_identifier)))) != (char_literal "'-'" ' character ')) )) (goto_statement "goto switchD_00022dfc_caseD_1;" goto statement_identifier ;)) (expression_statement "pp->skip_rn = RN_Full;" (assignment_expression "pp->skip_rn = RN_Full" (field_expression "pp->skip_rn" identifier -> field_identifier) = identifier) ;) (expression_statement "ioff = ioff + 1;" (assignment_expression "ioff = ioff + 1" identifier = (binary_expression "ioff + 1" identifier + number_literal)) ;) (expression_statement "pp->state = pp->dash_state;" (assignment_expression "pp->state = pp->dash_state" (field_expression "pp->state" identifier -> field_identifier) = (field_expression "pp->dash_state" identifier -> field_identifier)) ;) }))))))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar1 = unaff_s6 < post_data_len;" (assignment_expression "bVar1 = unaff_s6 < post_data_len" identifier = (binary_expression "unaff_s6 < post_data_len" identifier < identifier)) ;) (if_statement "if (ioff == 0) goto LAB_00022bc0;" if (parenthesized_expression "(ioff == 0)" ( (binary_expression "ioff == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022bc0;" goto statement_identifier ;)) (expression_statement "sVar14 = sVar14 - ioff;" (assignment_expression "sVar14 = sVar14 - ioff" identifier = (binary_expression "sVar14 - ioff" identifier - identifier)) ;) (expression_statement "pcVar11 = unaff_s3->xbuf + (ioff - 0x28);" (assignment_expression "pcVar11 = unaff_s3->xbuf + (ioff - 0x28)" identifier = (binary_expression "unaff_s3->xbuf + (ioff - 0x28)" (field_expression "unaff_s3->xbuf" identifier -> field_identifier) + (parenthesized_expression "(ioff - 0x28)" ( (binary_expression "ioff - 0x28" identifier - number_literal) )))) ;) (expression_statement "(*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14);" (call_expression "(*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14)" (parenthesized_expression "(*(code *)PTR_memmove_0003d254)" ( (pointer_expression "*(code *)PTR_memmove_0003d254" * (cast_expression "(code *)PTR_memmove_0003d254" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,pcVar11,sVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "ioff = 0;" (assignment_expression "ioff = 0" identifier = number_literal) ;) (expression_statement "pp->buffer_pos = sVar14;" (assignment_expression "pp->buffer_pos = sVar14" (field_expression "pp->buffer_pos" identifier -> field_identifier) = identifier) ;) (if_statement "if ((post_data_len <= unaff_s6) && (sVar14 == 0)) goto LAB_00022d14;" if (parenthesized_expression "((post_data_len <= unaff_s6) && (sVar14 == 0))" ( (binary_expression "(post_data_len <= unaff_s6) && (sVar14 == 0)" (parenthesized_expression "(post_data_len <= unaff_s6)" ( (binary_expression "post_data_len <= unaff_s6" identifier <= identifier) )) && (parenthesized_expression "(sVar14 == 0)" ( (binary_expression "sVar14 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022d14;" goto statement_identifier ;)) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "uVar13 = unaff_s6;" (assignment_expression "uVar13 = unaff_s6" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "MVar7 = MHD_YES;" (assignment_expression "MVar7 = MHD_YES" identifier = identifier) ;) (expression_statement "post_data = (char *)ioff;" (assignment_expression "post_data = (char *)ioff" identifier = (cast_expression "(char *)ioff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (ioff != 0) goto LAB_00023014;" if (parenthesized_expression "(ioff != 0)" ( (binary_expression "ioff != 0" identifier != number_literal) )) (goto_statement "goto LAB_00023014;" goto statement_identifier ;)) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) })) (expression_statement "post_data = pcVar11;" (assignment_expression "post_data = pcVar11" identifier = identifier) ;) (expression_statement "MVar7 = MHD_NO;" (assignment_expression "MVar7 = MHD_NO" identifier = identifier) ;) (labeled_statement "LAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    sVar14 = unaff_s8->buffer_pos;\n    bVar1 = unaff_s6 < unaff_s5;\n    post_data_len = unaff_s5;\n    pp = unaff_s8;\nLAB_00023014:\n    pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data);\n    pp->buffer_pos = sVar14 - (int)post_data;\n    if (bVar1) {\n      pp->state = PP_Error;\n      MVar7 = MHD_NO;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n    else {\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n  }" statement_identifier : (while_statement "while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    sVar14 = unaff_s8->buffer_pos;\n    bVar1 = unaff_s6 < unaff_s5;\n    post_data_len = unaff_s5;\n    pp = unaff_s8;\nLAB_00023014:\n    pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data);\n    pp->buffer_pos = sVar14 - (int)post_data;\n    if (bVar1) {\n      pp->state = PP_Error;\n      MVar7 = MHD_NO;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n    else {\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n  }" while (parenthesized_expression "(iVar6 != *(int *)puVar5)" ( (binary_expression "iVar6 != *(int *)puVar5" identifier != (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    sVar14 = unaff_s8->buffer_pos;\n    bVar1 = unaff_s6 < unaff_s5;\n    post_data_len = unaff_s5;\n    pp = unaff_s8;\nLAB_00023014:\n    pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data);\n    pp->buffer_pos = sVar14 - (int)post_data;\n    if (bVar1) {\n      pp->state = PP_Error;\n      MVar7 = MHD_NO;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n    else {\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0003d21c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003d21c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003d21c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003d21c" * (cast_expression "(code *)PTR___stack_chk_fail_0003d21c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "sVar14 = unaff_s8->buffer_pos;" (assignment_expression "sVar14 = unaff_s8->buffer_pos" identifier = (field_expression "unaff_s8->buffer_pos" identifier -> field_identifier)) ;) (expression_statement "bVar1 = unaff_s6 < unaff_s5;" (assignment_expression "bVar1 = unaff_s6 < unaff_s5" identifier = (binary_expression "unaff_s6 < unaff_s5" identifier < identifier)) ;) (expression_statement "post_data_len = unaff_s5;" (assignment_expression "post_data_len = unaff_s5" identifier = identifier) ;) (expression_statement "pp = unaff_s8;" (assignment_expression "pp = unaff_s8" identifier = identifier) ;) (labeled_statement "LAB_00023014:\n    pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);" statement_identifier : (expression_statement "pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28);" (assignment_expression "pcVar11 = post_data + (int)(unaff_s3->xbuf + -0x28)" identifier = (binary_expression "post_data + (int)(unaff_s3->xbuf + -0x28)" identifier + (cast_expression "(int)(unaff_s3->xbuf + -0x28)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s3->xbuf + -0x28)" ( (binary_expression "unaff_s3->xbuf + -0x28" (field_expression "unaff_s3->xbuf" identifier -> field_identifier) + number_literal) ))))) ;)) (expression_statement "(*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data);" (call_expression "(*(code *)PTR_memmove_0003d254)(unaff_s3,pcVar11,sVar14 - (int)post_data)" (parenthesized_expression "(*(code *)PTR_memmove_0003d254)" ( (pointer_expression "*(code *)PTR_memmove_0003d254" * (cast_expression "(code *)PTR_memmove_0003d254" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,pcVar11,sVar14 - (int)post_data)" ( identifier , identifier , (binary_expression "sVar14 - (int)post_data" identifier - (cast_expression "(int)post_data" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "pp->buffer_pos = sVar14 - (int)post_data;" (assignment_expression "pp->buffer_pos = sVar14 - (int)post_data" (field_expression "pp->buffer_pos" identifier -> field_identifier) = (binary_expression "sVar14 - (int)post_data" identifier - (cast_expression "(int)post_data" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (bVar1) {\n      pp->state = PP_Error;\n      MVar7 = MHD_NO;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }\n    else {\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      pp->state = PP_Error;\n      MVar7 = MHD_NO;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }" { (expression_statement "pp->state = PP_Error;" (assignment_expression "pp->state = PP_Error" (field_expression "pp->state" identifier -> field_identifier) = identifier) ;) (expression_statement "MVar7 = MHD_NO;" (assignment_expression "MVar7 = MHD_NO" identifier = identifier) ;) (expression_statement "post_data = pcVar11;" (assignment_expression "post_data = pcVar11" identifier = identifier) ;) (expression_statement "unaff_s5 = post_data_len;" (assignment_expression "unaff_s5 = post_data_len" identifier = identifier) ;) (expression_statement "unaff_s8 = pp;" (assignment_expression "unaff_s8 = pp" identifier = identifier) ;) }) (else_clause "else {\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }" else (compound_statement "{\nLAB_00022d14:\n      MVar7 = MHD_YES;\n      post_data = pcVar11;\n      unaff_s5 = post_data_len;\n      unaff_s8 = pp;\n    }" { (labeled_statement "LAB_00022d14:\n      MVar7 = MHD_YES;" statement_identifier : (expression_statement "MVar7 = MHD_YES;" (assignment_expression "MVar7 = MHD_YES" identifier = identifier) ;)) (expression_statement "post_data = pcVar11;" (assignment_expression "post_data = pcVar11" identifier = identifier) ;) (expression_statement "unaff_s5 = post_data_len;" (assignment_expression "unaff_s5 = post_data_len" identifier = identifier) ;) (expression_statement "unaff_s8 = pp;" (assignment_expression "unaff_s8 = pp" identifier = identifier) ;) }))) }))) (return_statement "return MVar7;" return identifier ;) })))
(translation_unit "undefined4 MHD_post_process(int param_1,int param_2,uint param_3)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  char cVar11;\n  uint uVar12;\n  int unaff_s3;\n  uint unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  int unaff_s8;\n  int local_30;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  uVar7 = 1;\n  if (param_3 == 0) goto LAB_00022c84;\n  iVar8 = param_2;\n  unaff_s8 = param_1;\n  if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  param_2 = iVar8;\n  uVar7 = 0;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }\n  return uVar7;\n}\n\n" (function_definition "undefined4 MHD_post_process(int param_1,int param_2,uint param_3)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  char cVar11;\n  uint uVar12;\n  int unaff_s3;\n  uint unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  int unaff_s8;\n  int local_30;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  uVar7 = 1;\n  if (param_3 == 0) goto LAB_00022c84;\n  iVar8 = param_2;\n  unaff_s8 = param_1;\n  if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  param_2 = iVar8;\n  uVar7 = 0;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }\n  return uVar7;\n}" type_identifier (function_declarator "MHD_post_process(int param_1,int param_2,uint param_3)" identifier (parameter_list "(int param_1,int param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  char cVar11;\n  uint uVar12;\n  int unaff_s3;\n  uint unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  int unaff_s8;\n  int local_30;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  uVar7 = 1;\n  if (param_3 == 0) goto LAB_00022c84;\n  iVar8 = param_2;\n  unaff_s8 = param_1;\n  if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  param_2 = iVar8;\n  uVar7 = 0;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }\n  return uVar7;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "char cVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int unaff_s3;" primitive_type identifier ;) (declaration "uint unaff_s5;" type_identifier identifier ;) (declaration "uint unaff_s6;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int unaff_s8;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_0003d244;" (assignment_expression "puVar5 = PTR___stack_chk_guard_0003d244" identifier = identifier) ;) (expression_statement "iVar6 = *(int *)PTR___stack_chk_guard_0003d244;" (assignment_expression "iVar6 = *(int *)PTR___stack_chk_guard_0003d244" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003d244" * (cast_expression "(int *)PTR___stack_chk_guard_0003d244" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (if_statement "if (param_3 == 0) goto LAB_00022c84;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;)) (expression_statement "iVar8 = param_2;" (assignment_expression "iVar8 = param_2" identifier = identifier) ;) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" identifier = identifier) ;) (if_statement "if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }" { (expression_statement "iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);" (assignment_expression "iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" identifier = (call_expression "FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" identifier (argument_list "(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" ( (binary_expression "PTR_DAT_0003d02c + -0x3c40" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }" { (expression_statement "uVar7 = FUN_000219d4(param_1,param_2,param_3);" (assignment_expression "uVar7 = FUN_000219d4(param_1,param_2,param_3)" identifier = (call_expression "FUN_000219d4(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);" (assignment_expression "iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" identifier = (call_expression "FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" identifier (argument_list "(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" ( (binary_expression "PTR_DAT_0003d02c + -0x3c1c" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "puVar3 = PTR_DAT_0003d02c;" (assignment_expression "puVar3 = PTR_DAT_0003d02c" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }" { (expression_statement "unaff_s3 = param_1 + 0x60;" (assignment_expression "unaff_s3 = param_1 + 0x60" identifier = (binary_expression "param_1 + 0x60" identifier + number_literal)) ;) (expression_statement "uVar13 = *(uint *)(param_1 + 0x30);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x30)" identifier = (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "unaff_s6 = 0;" (assignment_expression "unaff_s6 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = param_3 != 0;" (assignment_expression "bVar1 = param_3 != 0" identifier = (binary_expression "param_3 != 0" identifier != number_literal)) ;) (labeled_statement "LAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;" statement_identifier : (expression_statement "puVar4 = PTR_DAT_0003d02c;" (assignment_expression "puVar4 = PTR_DAT_0003d02c" identifier = identifier) ;)) (expression_statement "uVar10 = unaff_s6;" (assignment_expression "uVar10 = unaff_s6" identifier = identifier) ;) (if_statement "if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }" if (parenthesized_expression "((bVar1) || ((uVar13 != 0 && (bVar2))))" ( (binary_expression "(bVar1) || ((uVar13 != 0 && (bVar2)))" (parenthesized_expression "(bVar1)" ( identifier )) || (parenthesized_expression "((uVar13 != 0 && (bVar2)))" ( (parenthesized_expression "(uVar13 != 0 && (bVar2))" ( (binary_expression "uVar13 != 0 && (bVar2)" (binary_expression "uVar13 != 0" identifier != number_literal) && (parenthesized_expression "(bVar2)" ( identifier ))) )) ))) )) (compound_statement "{\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }" { (do_statement "do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );" do (compound_statement "{\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        }" { (expression_statement "iVar8 = param_2 + uVar10;" (assignment_expression "iVar8 = param_2 + uVar10" identifier = (binary_expression "param_2 + uVar10" identifier + identifier)) ;) (expression_statement "uVar12 = *(int *)(param_1 + 0x2c) - uVar13;" (assignment_expression "uVar12 = *(int *)(param_1 + 0x2c) - uVar13" identifier = (binary_expression "*(int *)(param_1 + 0x2c) - uVar13" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) - identifier)) ;) (if_statement "if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }" if (parenthesized_expression "(param_3 - uVar10 <= uVar12)" ( (binary_expression "param_3 - uVar10 <= uVar12" (binary_expression "param_3 - uVar10" identifier - identifier) <= identifier) )) (compound_statement "{\n            uVar12 = param_3 - uVar10;\n          }" { (expression_statement "uVar12 = param_3 - uVar10;" (assignment_expression "uVar12 = param_3 - uVar10" identifier = (binary_expression "param_3 - uVar10" identifier - identifier)) ;) })) (expression_statement "(*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);" (call_expression "(*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12)" (parenthesized_expression "(*(code *)PTR_memcpy_0003d248)" ( (pointer_expression "*(code *)PTR_memcpy_0003d248" * (cast_expression "(code *)PTR_memcpy_0003d248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3 + uVar13,iVar8,uVar12)" ( (binary_expression "unaff_s3 + uVar13" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "unaff_s6 = uVar10 + uVar12;" (assignment_expression "unaff_s6 = uVar10 + uVar12" identifier = (binary_expression "uVar10 + uVar12" identifier + identifier)) ;) (expression_statement "uVar13 = uVar12 + *(int *)(param_1 + 0x30);" (assignment_expression "uVar13 = uVar12 + *(int *)(param_1 + 0x30)" identifier = (binary_expression "uVar12 + *(int *)(param_1 + 0x30)" identifier + (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }" if (parenthesized_expression "(((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3))" ( (binary_expression "((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)" (parenthesized_expression "((uVar12 == 0) && (!bVar2))" ( (binary_expression "(uVar12 == 0) && (!bVar2)" (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) ))) )) && (parenthesized_expression "(uVar10 < param_3)" ( (binary_expression "uVar10 < param_3" identifier < identifier) ))) )) (compound_statement "{\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }" { (labeled_statement "switchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" identifier = identifier) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) (expression_statement "uVar10 = *(uint *)(param_1 + 0x50);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x50)" identifier = (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (if_statement "if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" if (parenthesized_expression "(uVar10 == 2)" ( (binary_expression "uVar10 == 2" identifier == number_literal) )) (compound_statement "{\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }" { (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" identifier = (pointer_expression "*(char *)(param_1 + 0x60)" * (cast_expression "(char *)(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" if (parenthesized_expression "(cVar11 == '\r')" ( (binary_expression "cVar11 == '\r'" identifier == (char_literal "'\r'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }" { (labeled_statement "LAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" statement_identifier : (if_statement "if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" if (parenthesized_expression "((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n'))" ( (binary_expression "(uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')" (parenthesized_expression "(uVar13 < 2)" ( (binary_expression "uVar13 < 2" identifier < number_literal) )) || (parenthesized_expression "(*(char *)(param_1 + 0x61) != '\n')" ( (binary_expression "*(char *)(param_1 + 0x61) != '\n'" (pointer_expression "*(char *)(param_1 + 0x61)" * (cast_expression "(char *)(param_1 + 0x61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x61)" ( (binary_expression "param_1 + 0x61" identifier + number_literal) )))) != (char_literal "'\n'" ' escape_sequence ')) ))) )) (compound_statement "{\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }" { (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" else (compound_statement "{\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" { (expression_statement "local_30 = local_30 + 2;" (assignment_expression "local_30 = local_30 + 2" identifier = (binary_expression "local_30 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) })))) }) (else_clause "else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" else (compound_statement "{\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" { (labeled_statement "LAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" statement_identifier : (if_statement "if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" if (parenthesized_expression "(cVar11 != '\n')" ( (binary_expression "cVar11 != '\n'" identifier != (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" { (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" identifier = identifier) ;) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) }))) (labeled_statement "LAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" else (if_statement "if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" if (parenthesized_expression "(uVar10 < 3)" ( (binary_expression "uVar10 < 3" identifier < number_literal) )) (compound_statement "{\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }" { (if_statement "if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }" if (parenthesized_expression "(uVar10 == 1)" ( (binary_expression "uVar10 == 1" identifier == number_literal) )) (compound_statement "{\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }" { (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" identifier = (pointer_expression "*(char *)(param_1 + 0x60)" * (cast_expression "(char *)(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (cVar11 != '\n') goto LAB_00022d60;" if (parenthesized_expression "(cVar11 != '\n')" ( (binary_expression "cVar11 != '\n'" identifier != (char_literal "'\n'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022d60;" goto statement_identifier ;)) (goto_statement "goto LAB_00022d84;" goto statement_identifier ;) })) (labeled_statement "LAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" statement_identifier : (if_statement "if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" if (parenthesized_expression "(*(uint *)(param_1 + 0x4c) < 0x10)" ( (binary_expression "*(uint *)(param_1 + 0x4c) < 0x10" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" { (expression_statement "uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();" (assignment_expression "uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" ( (binary_expression "&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" * (cast_expression "(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" ( (binary_expression "puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10" (binary_expression "puVar3 + *(uint *)(param_1 + 0x4c) * 4" identifier + (binary_expression "*(uint *)(param_1 + 0x4c) * 4" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar7;" return identifier ;) }))) (expression_statement "(**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);" (call_expression "(**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0)" (parenthesized_expression "(**(code **)PTR_DAT_0003d03c)" ( (pointer_expression "**(code **)PTR_DAT_0003d03c" * (pointer_expression "*(code **)PTR_DAT_0003d03c" * (cast_expression "(code **)PTR_DAT_0003d03c" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0)" ( (pointer_expression "*(undefined4 *)PTR_DAT_0003d038" * (cast_expression "(undefined4 *)PTR_DAT_0003d038" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "puVar4 + -0x3cbc" identifier + number_literal) , number_literal , number_literal ))) ;) (expression_statement "uVar13 = *(uint *)(param_1 + 0x30);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x30)" identifier = (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) }) (else_clause "else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" else (if_statement "if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" if (parenthesized_expression "(uVar10 == 3)" ( (binary_expression "uVar10 == 3" identifier == number_literal) )) (compound_statement "{\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }" { (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" identifier = (pointer_expression "*(char *)(param_1 + 0x60)" * (cast_expression "(char *)(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" statement_identifier : (if_statement "if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" if (parenthesized_expression "(cVar11 != '-')" ( (binary_expression "cVar11 != '-'" identifier != (char_literal "'-'" ' character ')) )) (compound_statement "{\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" { (expression_statement "*(undefined4 *)(param_1 + 0x50) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (cVar11 == '\r') goto LAB_00022da8;" if (parenthesized_expression "(cVar11 == '\r')" ( (binary_expression "cVar11 == '\r'" identifier == (char_literal "'\r'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022da8;" goto statement_identifier ;)) (goto_statement "goto LAB_00022d7c;" goto statement_identifier ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" else (compound_statement "{\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" { (if_statement "if (uVar10 != 4) goto LAB_00022ddc;" if (parenthesized_expression "(uVar10 != 4)" ( (binary_expression "uVar10 != 4" identifier != number_literal) )) (goto_statement "goto LAB_00022ddc;" goto statement_identifier ;)) (expression_statement "iVar8 = local_30;" (assignment_expression "iVar8 = local_30" identifier = identifier) ;) (if_statement "if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;" if (parenthesized_expression "(*(char *)(param_1 + 0x60) != '-')" ( (binary_expression "*(char *)(param_1 + 0x60) != '-'" (pointer_expression "*(char *)(param_1 + 0x60)" * (cast_expression "(char *)(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) != (char_literal "'-'" ' character ')) )) (goto_statement "goto switchD_00022dfc_caseD_1;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54)" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x54)" * (cast_expression "(undefined4 *)(param_1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) ))))) ;) }))))))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar1 = unaff_s6 < param_3;" (assignment_expression "bVar1 = unaff_s6 < param_3" identifier = (binary_expression "unaff_s6 < param_3" identifier < identifier)) ;) (if_statement "if (local_30 == 0) goto LAB_00022bc0;" if (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022bc0;" goto statement_identifier ;)) (expression_statement "uVar13 = uVar13 - local_30;" (assignment_expression "uVar13 = uVar13 - local_30" identifier = (binary_expression "uVar13 - local_30" identifier - identifier)) ;) (expression_statement "iVar8 = unaff_s3 + local_30;" (assignment_expression "iVar8 = unaff_s3 + local_30" identifier = (binary_expression "unaff_s3 + local_30" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);" (call_expression "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13)" (parenthesized_expression "(*(code *)PTR_memmove_0003d254)" ( (pointer_expression "*(code *)PTR_memmove_0003d254" * (cast_expression "(code *)PTR_memmove_0003d254" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,iVar8,uVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;" if (parenthesized_expression "((param_3 <= unaff_s6) && (uVar13 == 0))" ( (binary_expression "(param_3 <= unaff_s6) && (uVar13 == 0)" (parenthesized_expression "(param_3 <= unaff_s6)" ( (binary_expression "param_3 <= unaff_s6" identifier <= identifier) )) && (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022d14;" goto statement_identifier ;)) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "uVar10 = unaff_s6;" (assignment_expression "uVar10 = unaff_s6" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" identifier = identifier) ;) (if_statement "if (local_30 != 0) goto LAB_00023014;" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00023014;" goto statement_identifier ;)) (goto_statement "goto LAB_00022c84;" goto statement_identifier ;) })) })) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" identifier = identifier) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" statement_identifier : (while_statement "while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" while (parenthesized_expression "(iVar6 != *(int *)puVar5)" ( (binary_expression "iVar6 != *(int *)puVar5" identifier != (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0003d21c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003d21c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003d21c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003d21c" * (cast_expression "(code *)PTR___stack_chk_fail_0003d21c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar13 = *(uint *)(unaff_s8 + 0x30);" (assignment_expression "uVar13 = *(uint *)(unaff_s8 + 0x30)" identifier = (pointer_expression "*(uint *)(unaff_s8 + 0x30)" * (cast_expression "(uint *)(unaff_s8 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s8 + 0x30)" ( (binary_expression "unaff_s8 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "bVar1 = unaff_s6 < unaff_s5;" (assignment_expression "bVar1 = unaff_s6 < unaff_s5" identifier = (binary_expression "unaff_s6 < unaff_s5" identifier < identifier)) ;) (expression_statement "param_3 = unaff_s5;" (assignment_expression "param_3 = unaff_s5" identifier = identifier) ;) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" identifier = identifier) ;) (labeled_statement "LAB_00023014:\n    iVar8 = unaff_s3 + param_2;" statement_identifier : (expression_statement "iVar8 = unaff_s3 + param_2;" (assignment_expression "iVar8 = unaff_s3 + param_2" identifier = (binary_expression "unaff_s3 + param_2" identifier + identifier)) ;)) (expression_statement "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);" (call_expression "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2)" (parenthesized_expression "(*(code *)PTR_memmove_0003d254)" ( (pointer_expression "*(code *)PTR_memmove_0003d254" * (cast_expression "(code *)PTR_memmove_0003d254" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,iVar8,uVar13 - param_2)" ( identifier , identifier , (binary_expression "uVar13 - param_2" identifier - identifier) ))) ;) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13 - param_2;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13 - param_2" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = (binary_expression "uVar13 - param_2" identifier - identifier)) ;) (if_statement "if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" identifier = identifier) ;) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" identifier = identifier) ;) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" identifier = identifier) ;) }) (else_clause "else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" else (compound_statement "{\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" { (labeled_statement "LAB_00022d14:\n      uVar7 = 1;" statement_identifier : (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;)) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" identifier = identifier) ;) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" identifier = identifier) ;) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" identifier = identifier) ;) }))) }))) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) (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 = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( IDENT ))) )) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_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 (binary_expression IDENT - IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (unary_expression ! IDENT) ))) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (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 { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (binary_expression IDENT + LIT) , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))))))) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_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 (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT - IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 MHD_post_process(int param_1,int param_2,uint param_3)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  char cVar11;\n  uint uVar12;\n  int unaff_s3;\n  uint unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  int unaff_s8;\n  int local_30;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  uVar7 = 1;\n  if (param_3 == 0) goto LAB_00022c84;\n  iVar8 = param_2;\n  unaff_s8 = param_1;\n  if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  param_2 = iVar8;\n  uVar7 = 0;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }\n  return uVar7;\n}" (type_identifier "undefined4") (function_declarator "MHD_post_process(int param_1,int param_2,uint param_3)" (identifier "MHD_post_process") (parameter_list "(int param_1,int param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  char cVar11;\n  uint uVar12;\n  int unaff_s3;\n  uint unaff_s5;\n  uint unaff_s6;\n  uint uVar13;\n  int unaff_s8;\n  int local_30;\n  \n  puVar5 = PTR___stack_chk_guard_0003d244;\n  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;\n  uVar7 = 1;\n  if (param_3 == 0) goto LAB_00022c84;\n  iVar8 = param_2;\n  unaff_s8 = param_1;\n  if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }\n  param_2 = iVar8;\n  uVar7 = 0;\nLAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }\n  return uVar7;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "char cVar11;" (primitive_type "char") (identifier "cVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int unaff_s3;" (primitive_type "int") (identifier "unaff_s3") (; ";")) (declaration "uint unaff_s5;" (type_identifier "uint") (identifier "unaff_s5") (; ";")) (declaration "uint unaff_s6;" (type_identifier "uint") (identifier "unaff_s6") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int unaff_s8;" (primitive_type "int") (identifier "unaff_s8") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (expression_statement "puVar5 = PTR___stack_chk_guard_0003d244;" (assignment_expression "puVar5 = PTR___stack_chk_guard_0003d244" (identifier "puVar5") (= "=") (identifier "PTR___stack_chk_guard_0003d244")) (; ";")) (expression_statement "iVar6 = *(int *)PTR___stack_chk_guard_0003d244;" (assignment_expression "iVar6 = *(int *)PTR___stack_chk_guard_0003d244" (identifier "iVar6") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0003d244" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0003d244" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0003d244")))) (; ";")) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (if_statement "if (param_3 == 0) goto LAB_00022c84;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00022c84;" (goto "goto") (statement_identifier "LAB_00022c84") (; ";"))) (expression_statement "iVar8 = param_2;" (assignment_expression "iVar8 = param_2" (identifier "iVar8") (= "=") (identifier "param_2")) (; ";")) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" (identifier "unaff_s8") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_1 != 0) {\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }" (if "if") (parenthesized_expression "(param_1 != 0)" (( "(") (binary_expression "param_1 != 0" (identifier "param_1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);\n    unaff_s5 = param_3;\n    if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }\n    iVar8 = *(int *)(param_1 + 0xc);\n    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);\n    puVar3 = PTR_DAT_0003d02c;\n    if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }\n  }" ({ "{") (expression_statement "iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);" (assignment_expression "iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" (identifier "iVar8") (= "=") (call_expression "FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" (identifier "FUN_0001f1b8") (argument_list "(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21)" (( "(") (binary_expression "PTR_DAT_0003d02c + -0x3c40" (identifier "PTR_DAT_0003d02c") (+ "+") (number_literal "-0x3c40")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (number_literal "0x21") () ")")))) (; ";")) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" (identifier "unaff_s5") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar8 != 0) {\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = FUN_000219d4(param_1,param_2,param_3);\n      goto LAB_00022c84;\n    }" ({ "{") (expression_statement "uVar7 = FUN_000219d4(param_1,param_2,param_3);" (assignment_expression "uVar7 = FUN_000219d4(param_1,param_2,param_3)" (identifier "uVar7") (= "=") (call_expression "FUN_000219d4(param_1,param_2,param_3)" (identifier "FUN_000219d4") (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (goto_statement "goto LAB_00022c84;" (goto "goto") (statement_identifier "LAB_00022c84") (; ";")) (} "}"))) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);" (assignment_expression "iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" (identifier "iVar9") (= "=") (call_expression "FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" (identifier "FUN_0001f1b8") (argument_list "(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13)" (( "(") (binary_expression "PTR_DAT_0003d02c + -0x3c1c" (identifier "PTR_DAT_0003d02c") (+ "+") (number_literal "-0x3c1c")) (, ",") (identifier "iVar8") (, ",") (number_literal "0x13") () ")")))) (; ";")) (expression_statement "puVar3 = PTR_DAT_0003d02c;" (assignment_expression "puVar3 = PTR_DAT_0003d02c" (identifier "puVar3") (= "=") (identifier "PTR_DAT_0003d02c")) (; ";")) (if_statement "if (iVar9 != 0) {\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      unaff_s3 = param_1 + 0x60;\n      uVar13 = *(uint *)(param_1 + 0x30);\n      bVar2 = true;\n      unaff_s6 = 0;\n      local_30 = 0;\n      bVar1 = param_3 != 0;\nLAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;\n      uVar10 = unaff_s6;\n      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }\n      uVar7 = 1;\n      param_2 = local_30;\n      if (local_30 != 0) goto LAB_00023014;\n      goto LAB_00022c84;\n    }" ({ "{") (expression_statement "unaff_s3 = param_1 + 0x60;" (assignment_expression "unaff_s3 = param_1 + 0x60" (identifier "unaff_s3") (= "=") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60"))) (; ";")) (expression_statement "uVar13 = *(uint *)(param_1 + 0x30);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x30)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(param_1 + 0x30)" (* "*") (cast_expression "(uint *)(param_1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "unaff_s6 = 0;" (assignment_expression "unaff_s6 = 0" (identifier "unaff_s6") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar1 = param_3 != 0;" (assignment_expression "bVar1 = param_3 != 0" (identifier "bVar1") (= "=") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0"))) (; ";")) (labeled_statement "LAB_00022bc0:\n      puVar4 = PTR_DAT_0003d02c;" (statement_identifier "LAB_00022bc0") (: ":") (expression_statement "puVar4 = PTR_DAT_0003d02c;" (assignment_expression "puVar4 = PTR_DAT_0003d02c" (identifier "puVar4") (= "=") (identifier "PTR_DAT_0003d02c")) (; ";"))) (expression_statement "uVar10 = unaff_s6;" (assignment_expression "uVar10 = unaff_s6" (identifier "uVar10") (= "=") (identifier "unaff_s6")) (; ";")) (if_statement "if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }" (if "if") (parenthesized_expression "((bVar1) || ((uVar13 != 0 && (bVar2))))" (( "(") (binary_expression "(bVar1) || ((uVar13 != 0 && (bVar2)))" (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (|| "||") (parenthesized_expression "((uVar13 != 0 && (bVar2)))" (( "(") (parenthesized_expression "(uVar13 != 0 && (bVar2))" (( "(") (binary_expression "uVar13 != 0 && (bVar2)" (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );\n      }" ({ "{") (do_statement "do {\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        } while( true );" (do "do") (compound_statement "{\n          iVar8 = param_2 + uVar10;\n          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;\n          if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }\n          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);\n          unaff_s6 = uVar10 + uVar12;\n          uVar13 = uVar12 + *(int *)(param_1 + 0x30);\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }\n          uVar10 = *(uint *)(param_1 + 0x50);\n          if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }\n          bVar2 = false;\n          bVar1 = unaff_s6 < param_3;\n          if (local_30 == 0) goto LAB_00022bc0;\n          uVar13 = uVar13 - local_30;\n          iVar8 = unaff_s3 + local_30;\n          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);\n          local_30 = 0;\n          *(uint *)(param_1 + 0x30) = uVar13;\n          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;\n          bVar2 = true;\n          uVar10 = unaff_s6;\n        }" ({ "{") (expression_statement "iVar8 = param_2 + uVar10;" (assignment_expression "iVar8 = param_2 + uVar10" (identifier "iVar8") (= "=") (binary_expression "param_2 + uVar10" (identifier "param_2") (+ "+") (identifier "uVar10"))) (; ";")) (expression_statement "uVar12 = *(int *)(param_1 + 0x2c) - uVar13;" (assignment_expression "uVar12 = *(int *)(param_1 + 0x2c) - uVar13" (identifier "uVar12") (= "=") (binary_expression "*(int *)(param_1 + 0x2c) - uVar13" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (- "-") (identifier "uVar13"))) (; ";")) (if_statement "if (param_3 - uVar10 <= uVar12) {\n            uVar12 = param_3 - uVar10;\n          }" (if "if") (parenthesized_expression "(param_3 - uVar10 <= uVar12)" (( "(") (binary_expression "param_3 - uVar10 <= uVar12" (binary_expression "param_3 - uVar10" (identifier "param_3") (- "-") (identifier "uVar10")) (<= "<=") (identifier "uVar12")) () ")")) (compound_statement "{\n            uVar12 = param_3 - uVar10;\n          }" ({ "{") (expression_statement "uVar12 = param_3 - uVar10;" (assignment_expression "uVar12 = param_3 - uVar10" (identifier "uVar12") (= "=") (binary_expression "param_3 - uVar10" (identifier "param_3") (- "-") (identifier "uVar10"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);" (call_expression "(*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12)" (parenthesized_expression "(*(code *)PTR_memcpy_0003d248)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0003d248" (* "*") (cast_expression "(code *)PTR_memcpy_0003d248" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0003d248"))) () ")")) (argument_list "(unaff_s3 + uVar13,iVar8,uVar12)" (( "(") (binary_expression "unaff_s3 + uVar13" (identifier "unaff_s3") (+ "+") (identifier "uVar13")) (, ",") (identifier "iVar8") (, ",") (identifier "uVar12") () ")"))) (; ";")) (expression_statement "unaff_s6 = uVar10 + uVar12;" (assignment_expression "unaff_s6 = uVar10 + uVar12" (identifier "unaff_s6") (= "=") (binary_expression "uVar10 + uVar12" (identifier "uVar10") (+ "+") (identifier "uVar12"))) (; ";")) (expression_statement "uVar13 = uVar12 + *(int *)(param_1 + 0x30);" (assignment_expression "uVar13 = uVar12 + *(int *)(param_1 + 0x30)" (identifier "uVar13") (= "=") (binary_expression "uVar12 + *(int *)(param_1 + 0x30)" (identifier "uVar12") (+ "+") (pointer_expression "*(int *)(param_1 + 0x30)" (* "*") (cast_expression "(int *)(param_1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13" (pointer_expression "*(uint *)(param_1 + 0x30)" (* "*") (cast_expression "(uint *)(param_1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (if_statement "if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }" (if "if") (parenthesized_expression "(((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3))" (( "(") (binary_expression "((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)" (parenthesized_expression "((uVar12 == 0) && (!bVar2))" (( "(") (binary_expression "(uVar12 == 0) && (!bVar2)" (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar10 < param_3)" (( "(") (binary_expression "uVar10 < param_3" (identifier "uVar10") (< "<") (identifier "param_3")) () ")"))) () ")")) (compound_statement "{\nswitchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;\n            uVar7 = 0;\n            param_2 = iVar8;\n            goto LAB_00022c84;\n          }" ({ "{") (labeled_statement "switchD_00022dfc_caseD_1:\n            *(undefined4 *)(param_1 + 0x4c) = 0;" (statement_identifier "switchD_00022dfc_caseD_1") (: ":") (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" (identifier "param_2") (= "=") (identifier "iVar8")) (; ";")) (goto_statement "goto LAB_00022c84;" (goto "goto") (statement_identifier "LAB_00022c84") (; ";")) (} "}"))) (expression_statement "uVar10 = *(uint *)(param_1 + 0x50);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x50)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(param_1 + 0x50)" (* "*") (cast_expression "(uint *)(param_1 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (if_statement "if (uVar10 == 2) {\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }\n          else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" (if "if") (parenthesized_expression "(uVar10 == 2)" (( "(") (binary_expression "uVar10 == 2" (identifier "uVar10") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n            cVar11 = *(char *)(param_1 + 0x60);\n            if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }\n          }" ({ "{") (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" (identifier "cVar11") (= "=") (pointer_expression "*(char *)(param_1 + 0x60)" (* "*") (cast_expression "(char *)(param_1 + 0x60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (cVar11 == '\r') {\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }\n            else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" (if "if") (parenthesized_expression "(cVar11 == '\r')" (( "(") (binary_expression "cVar11 == '\r'" (identifier "cVar11") (== "==") (char_literal "'\r'" (' "'") (escape_sequence "\r") (' "'"))) () ")")) (compound_statement "{\nLAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }\n            }" ({ "{") (labeled_statement "LAB_00022da8:\n              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" (statement_identifier "LAB_00022da8") (: ":") (if_statement "if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }\n              else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" (if "if") (parenthesized_expression "((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n'))" (( "(") (binary_expression "(uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')" (parenthesized_expression "(uVar13 < 2)" (( "(") (binary_expression "uVar13 < 2" (identifier "uVar13") (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(param_1 + 0x61) != '\n')" (( "(") (binary_expression "*(char *)(param_1 + 0x61) != '\n'" (pointer_expression "*(char *)(param_1 + 0x61)" (* "*") (cast_expression "(char *)(param_1 + 0x61)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x61)" (( "(") (binary_expression "param_1 + 0x61" (identifier "param_1") (+ "+") (number_literal "0x61")) () ")")))) (!= "!=") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                local_30 = local_30 + 1;\n                *(undefined4 *)(param_1 + 0x50) = 1;\n              }" ({ "{") (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" (identifier "local_30") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" (else "else") (compound_statement "{\n                local_30 = local_30 + 2;\n                *(undefined4 *)(param_1 + 0x50) = 0;\n              }" ({ "{") (expression_statement "local_30 = local_30 + 2;" (assignment_expression "local_30 = local_30 + 2" (identifier "local_30") (= "=") (binary_expression "local_30 + 2" (identifier "local_30") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))))) (} "}")) (else_clause "else {\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" (else "else") (compound_statement "{\nLAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }\nLAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;\n              local_30 = local_30 + 1;\n            }" ({ "{") (labeled_statement "LAB_00022d7c:\n              if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" (statement_identifier "LAB_00022d7c") (: ":") (if_statement "if (cVar11 != '\n') {\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" (if "if") (parenthesized_expression "(cVar11 != '\n')" (( "(") (binary_expression "cVar11 != '\n'" (identifier "cVar11") (!= "!=") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")")) (compound_statement "{\n                *(undefined4 *)(param_1 + 0x50) = 0;\n                uVar7 = 0;\n                *(undefined4 *)(param_1 + 0x4c) = 0;\n                param_2 = local_30;\n                goto LAB_00022c84;\n              }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" (identifier "param_2") (= "=") (identifier "local_30")) (; ";")) (goto_statement "goto LAB_00022c84;" (goto "goto") (statement_identifier "LAB_00022c84") (; ";")) (} "}")))) (labeled_statement "LAB_00022d84:\n              *(undefined4 *)(param_1 + 0x50) = 0;" (statement_identifier "LAB_00022d84") (: ":") (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" (identifier "local_30") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" (else "else") (if_statement "if (uVar10 < 3) {\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }\n          else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" (if "if") (parenthesized_expression "(uVar10 < 3)" (( "(") (binary_expression "uVar10 < 3" (identifier "uVar10") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n            if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }\nLAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }\n            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);\n            uVar13 = *(uint *)(param_1 + 0x30);\n          }" ({ "{") (if_statement "if (uVar10 == 1) {\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }" (if "if") (parenthesized_expression "(uVar10 == 1)" (( "(") (binary_expression "uVar10 == 1" (identifier "uVar10") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              cVar11 = *(char *)(param_1 + 0x60);\n              if (cVar11 != '\n') goto LAB_00022d60;\n              goto LAB_00022d84;\n            }" ({ "{") (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" (identifier "cVar11") (= "=") (pointer_expression "*(char *)(param_1 + 0x60)" (* "*") (cast_expression "(char *)(param_1 + 0x60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (cVar11 != '\n') goto LAB_00022d60;" (if "if") (parenthesized_expression "(cVar11 != '\n')" (( "(") (binary_expression "cVar11 != '\n'" (identifier "cVar11") (!= "!=") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")")) (goto_statement "goto LAB_00022d60;" (goto "goto") (statement_identifier "LAB_00022d60") (; ";"))) (goto_statement "goto LAB_00022d84;" (goto "goto") (statement_identifier "LAB_00022d84") (; ";")) (} "}"))) (labeled_statement "LAB_00022ddc:\n            if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" (statement_identifier "LAB_00022ddc") (: ":") (if_statement "if (*(uint *)(param_1 + 0x4c) < 0x10) {\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x4c) < 0x10)" (( "(") (binary_expression "*(uint *)(param_1 + 0x4c) < 0x10" (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (< "<") (number_literal "0x10")) () ")")) (compound_statement "{\n                    \n                    \n              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();\n              return uVar7;\n            }" ({ "{") (expression_statement "uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))();" (assignment_expression "uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))()" (identifier "uVar7") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                ))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)\n                                )" (( "(") (binary_expression "&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" (* "*") (cast_expression "(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)" (( "(") (binary_expression "puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10" (binary_expression "puVar3 + *(uint *)(param_1 + 0x4c) * 4" (identifier "puVar3") (+ "+") (binary_expression "*(uint *)(param_1 + 0x4c) * 4" (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x3b10")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}")))) (expression_statement "(**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);" (call_expression "(**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0)" (parenthesized_expression "(**(code **)PTR_DAT_0003d03c)" (( "(") (pointer_expression "**(code **)PTR_DAT_0003d03c" (* "*") (pointer_expression "*(code **)PTR_DAT_0003d03c" (* "*") (cast_expression "(code **)PTR_DAT_0003d03c" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_DAT_0003d03c")))) () ")")) (argument_list "(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0)" (( "(") (pointer_expression "*(undefined4 *)PTR_DAT_0003d038" (* "*") (cast_expression "(undefined4 *)PTR_DAT_0003d038" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0003d038"))) (, ",") (binary_expression "puVar4 + -0x3cbc" (identifier "puVar4") (+ "+") (number_literal "-0x3cbc")) (, ",") (number_literal "0x53a") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar13 = *(uint *)(param_1 + 0x30);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x30)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(param_1 + 0x30)" (* "*") (cast_expression "(uint *)(param_1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (} "}")) (else_clause "else if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" (else "else") (if_statement "if (uVar10 == 3) {\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }\n          else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" (if "if") (parenthesized_expression "(uVar10 == 3)" (( "(") (binary_expression "uVar10 == 3" (identifier "uVar10") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n            cVar11 = *(char *)(param_1 + 0x60);\nLAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }\n            *(undefined4 *)(param_1 + 0x50) = 4;\n            local_30 = local_30 + 1;\n          }" ({ "{") (expression_statement "cVar11 = *(char *)(param_1 + 0x60);" (assignment_expression "cVar11 = *(char *)(param_1 + 0x60)" (identifier "cVar11") (= "=") (pointer_expression "*(char *)(param_1 + 0x60)" (* "*") (cast_expression "(char *)(param_1 + 0x60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (labeled_statement "LAB_00022d60:\n            if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" (statement_identifier "LAB_00022d60") (: ":") (if_statement "if (cVar11 != '-') {\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" (if "if") (parenthesized_expression "(cVar11 != '-')" (( "(") (binary_expression "cVar11 != '-'" (identifier "cVar11") (!= "!=") (char_literal "'-'" (' "'") (character "-") (' "'"))) () ")")) (compound_statement "{\n              *(undefined4 *)(param_1 + 0x50) = 2;\n              if (cVar11 == '\r') goto LAB_00022da8;\n              goto LAB_00022d7c;\n            }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x50) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "2")) (; ";")) (if_statement "if (cVar11 == '\r') goto LAB_00022da8;" (if "if") (parenthesized_expression "(cVar11 == '\r')" (( "(") (binary_expression "cVar11 == '\r'" (identifier "cVar11") (== "==") (char_literal "'\r'" (' "'") (escape_sequence "\r") (' "'"))) () ")")) (goto_statement "goto LAB_00022da8;" (goto "goto") (statement_identifier "LAB_00022da8") (; ";"))) (goto_statement "goto LAB_00022d7c;" (goto "goto") (statement_identifier "LAB_00022d7c") (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" (identifier "local_30") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" (else "else") (compound_statement "{\n            if (uVar10 != 4) goto LAB_00022ddc;\n            iVar8 = local_30;\n            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;\n            *(undefined4 *)(param_1 + 0x50) = 2;\n            local_30 = local_30 + 1;\n            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);\n          }" ({ "{") (if_statement "if (uVar10 != 4) goto LAB_00022ddc;" (if "if") (parenthesized_expression "(uVar10 != 4)" (( "(") (binary_expression "uVar10 != 4" (identifier "uVar10") (!= "!=") (number_literal "4")) () ")")) (goto_statement "goto LAB_00022ddc;" (goto "goto") (statement_identifier "LAB_00022ddc") (; ";"))) (expression_statement "iVar8 = local_30;" (assignment_expression "iVar8 = local_30" (identifier "iVar8") (= "=") (identifier "local_30")) (; ";")) (if_statement "if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x60) != '-')" (( "(") (binary_expression "*(char *)(param_1 + 0x60) != '-'" (pointer_expression "*(char *)(param_1 + 0x60)" (* "*") (cast_expression "(char *)(param_1 + 0x60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (!= "!=") (char_literal "'-'" (' "'") (character "-") (' "'"))) () ")")) (goto_statement "goto switchD_00022dfc_caseD_1;" (goto "goto") (statement_identifier "switchD_00022dfc_caseD_1") (; ";"))) (expression_statement "*(undefined4 *)(param_1 + 0x50) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" (identifier "local_30") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54)" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x54)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (} "}")))))))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "bVar1 = unaff_s6 < param_3;" (assignment_expression "bVar1 = unaff_s6 < param_3" (identifier "bVar1") (= "=") (binary_expression "unaff_s6 < param_3" (identifier "unaff_s6") (< "<") (identifier "param_3"))) (; ";")) (if_statement "if (local_30 == 0) goto LAB_00022bc0;" (if "if") (parenthesized_expression "(local_30 == 0)" (( "(") (binary_expression "local_30 == 0" (identifier "local_30") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00022bc0;" (goto "goto") (statement_identifier "LAB_00022bc0") (; ";"))) (expression_statement "uVar13 = uVar13 - local_30;" (assignment_expression "uVar13 = uVar13 - local_30" (identifier "uVar13") (= "=") (binary_expression "uVar13 - local_30" (identifier "uVar13") (- "-") (identifier "local_30"))) (; ";")) (expression_statement "iVar8 = unaff_s3 + local_30;" (assignment_expression "iVar8 = unaff_s3 + local_30" (identifier "iVar8") (= "=") (binary_expression "unaff_s3 + local_30" (identifier "unaff_s3") (+ "+") (identifier "local_30"))) (; ";")) (expression_statement "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);" (call_expression "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13)" (parenthesized_expression "(*(code *)PTR_memmove_0003d254)" (( "(") (pointer_expression "*(code *)PTR_memmove_0003d254" (* "*") (cast_expression "(code *)PTR_memmove_0003d254" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memmove_0003d254"))) () ")")) (argument_list "(unaff_s3,iVar8,uVar13)" (( "(") (identifier "unaff_s3") (, ",") (identifier "iVar8") (, ",") (identifier "uVar13") () ")"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13" (pointer_expression "*(uint *)(param_1 + 0x30)" (* "*") (cast_expression "(uint *)(param_1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (if_statement "if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;" (if "if") (parenthesized_expression "((param_3 <= unaff_s6) && (uVar13 == 0))" (( "(") (binary_expression "(param_3 <= unaff_s6) && (uVar13 == 0)" (parenthesized_expression "(param_3 <= unaff_s6)" (( "(") (binary_expression "param_3 <= unaff_s6" (identifier "param_3") (<= "<=") (identifier "unaff_s6")) () ")")) (&& "&&") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00022d14;" (goto "goto") (statement_identifier "LAB_00022d14") (; ";"))) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "uVar10 = unaff_s6;" (assignment_expression "uVar10 = unaff_s6" (identifier "uVar10") (= "=") (identifier "unaff_s6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" (identifier "param_2") (= "=") (identifier "local_30")) (; ";")) (if_statement "if (local_30 != 0) goto LAB_00023014;" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00023014;" (goto "goto") (statement_identifier "LAB_00023014") (; ";"))) (goto_statement "goto LAB_00022c84;" (goto "goto") (statement_identifier "LAB_00022c84") (; ";")) (} "}"))) (} "}"))) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" (identifier "param_2") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00022c84:\n  while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" (statement_identifier "LAB_00022c84") (: ":") (while_statement "while (iVar6 != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" (while "while") (parenthesized_expression "(iVar6 != *(int *)puVar5)" (( "(") (binary_expression "iVar6 != *(int *)puVar5" (identifier "iVar6") (!= "!=") (pointer_expression "*(int *)puVar5" (* "*") (cast_expression "(int *)puVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5")))) () ")")) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_0003d21c)();\n    uVar13 = *(uint *)(unaff_s8 + 0x30);\n    bVar1 = unaff_s6 < unaff_s5;\n    param_3 = unaff_s5;\n    param_1 = unaff_s8;\nLAB_00023014:\n    iVar8 = unaff_s3 + param_2;\n    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);\n    *(uint *)(param_1 + 0x30) = uVar13 - param_2;\n    if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n  }" ({ "{") (expression_statement "(*(code *)PTR___stack_chk_fail_0003d21c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003d21c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003d21c)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0003d21c" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0003d21c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0003d21c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar13 = *(uint *)(unaff_s8 + 0x30);" (assignment_expression "uVar13 = *(uint *)(unaff_s8 + 0x30)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(unaff_s8 + 0x30)" (* "*") (cast_expression "(uint *)(unaff_s8 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_s8 + 0x30)" (( "(") (binary_expression "unaff_s8 + 0x30" (identifier "unaff_s8") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "bVar1 = unaff_s6 < unaff_s5;" (assignment_expression "bVar1 = unaff_s6 < unaff_s5" (identifier "bVar1") (= "=") (binary_expression "unaff_s6 < unaff_s5" (identifier "unaff_s6") (< "<") (identifier "unaff_s5"))) (; ";")) (expression_statement "param_3 = unaff_s5;" (assignment_expression "param_3 = unaff_s5" (identifier "param_3") (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" (identifier "param_1") (= "=") (identifier "unaff_s8")) (; ";")) (labeled_statement "LAB_00023014:\n    iVar8 = unaff_s3 + param_2;" (statement_identifier "LAB_00023014") (: ":") (expression_statement "iVar8 = unaff_s3 + param_2;" (assignment_expression "iVar8 = unaff_s3 + param_2" (identifier "iVar8") (= "=") (binary_expression "unaff_s3 + param_2" (identifier "unaff_s3") (+ "+") (identifier "param_2"))) (; ";"))) (expression_statement "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);" (call_expression "(*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2)" (parenthesized_expression "(*(code *)PTR_memmove_0003d254)" (( "(") (pointer_expression "*(code *)PTR_memmove_0003d254" (* "*") (cast_expression "(code *)PTR_memmove_0003d254" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memmove_0003d254"))) () ")")) (argument_list "(unaff_s3,iVar8,uVar13 - param_2)" (( "(") (identifier "unaff_s3") (, ",") (identifier "iVar8") (, ",") (binary_expression "uVar13 - param_2" (identifier "uVar13") (- "-") (identifier "param_2")) () ")"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x30) = uVar13 - param_2;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar13 - param_2" (pointer_expression "*(uint *)(param_1 + 0x30)" (* "*") (cast_expression "(uint *)(param_1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "uVar13 - param_2" (identifier "uVar13") (- "-") (identifier "param_2"))) (; ";")) (if_statement "if (bVar1) {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }\n    else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      uVar7 = 0;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" (identifier "param_2") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" (identifier "unaff_s5") (= "=") (identifier "param_3")) (; ";")) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" (identifier "unaff_s8") (= "=") (identifier "param_1")) (; ";")) (} "}")) (else_clause "else {\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" (else "else") (compound_statement "{\nLAB_00022d14:\n      uVar7 = 1;\n      param_2 = iVar8;\n      unaff_s5 = param_3;\n      unaff_s8 = param_1;\n    }" ({ "{") (labeled_statement "LAB_00022d14:\n      uVar7 = 1;" (statement_identifier "LAB_00022d14") (: ":") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";"))) (expression_statement "param_2 = iVar8;" (assignment_expression "param_2 = iVar8" (identifier "param_2") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "unaff_s5 = param_3;" (assignment_expression "unaff_s5 = param_3" (identifier "unaff_s5") (= "=") (identifier "param_3")) (; ";")) (expression_statement "unaff_s8 = param_1;" (assignment_expression "unaff_s8 = param_1" (identifier "unaff_s8") (= "=") (identifier "param_1")) (; ";")) (} "}")))) (} "}")))) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}")))

/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */

type_1 function_1(type_2 *var_2,char *var_8,size_t var_1)

{
  bool bVar1;
  bool bVar2;
  type_3 *var_17;
  type_3 *var_18;
  type_3 *puVar5;
  int var_21;
  type_1 MVar7;
  int var_5;
  type_4 var_11;
  char var_13;
  char *pcVar11;
  type_5 var_10;
  type_2 *unaff_s3;
  size_t var_22;
  type_5 var_20;
  type_5 var_9;
  size_t var_7;
  type_2 *unaff_s8;
  size_t var_14;
  
  puVar5 = PTR___stack_chk_guard_0003d244;
  var_21 = *(int *)PTR___stack_chk_guard_0003d244;
  MVar7 = MHD_YES;
  if (var_1 == 0) goto LAB_00022c84;
  pcVar11 = var_8;
  unaff_s8 = var_2;
  if (var_2 != (type_2 *)0x0) {
    var_5 = var_3(var_4 + -0x3c40,var_2->encoding,0x21);
    var_22 = var_1;
    if (var_5 != 0) {
      MVar7 = var_6(var_2,var_8,var_1);
      goto LAB_00022c84;
    }
    pcVar11 = var_2->encoding;
    var_5 = var_3(var_4 + -0x3c1c,pcVar11,0x13);
    var_17 = var_4;
    if (var_5 != 0) {
      unaff_s3 = var_2 + 1;
      var_7 = var_2->buffer_pos;
      bVar2 = true;
      var_20 = 0;
      var_14 = 0;
      bVar1 = var_1 != 0;
LAB_00022bc0:
      var_18 = var_4;
      var_9 = var_20;
      if ((bVar1) || ((var_7 != 0 && (bVar2)))) {
        do {
          pcVar11 = var_8 + var_9;
          var_10 = var_2->buffer_size - var_7;
          if (var_1 - var_9 <= var_10) {
            var_10 = var_1 - var_9;
          }
          (*(type_6 *)PTR_memcpy_0003d248)(unaff_s3->xbuf + (var_7 - 0x28),pcVar11,var_10);
          var_20 = var_9 + var_10;
          var_7 = var_10 + var_2->buffer_pos;
          var_2->buffer_pos = var_7;
          if (((var_10 == 0) && (!bVar2)) && (var_9 < var_1)) {
switchD_00022dfc_caseD_1:
            var_2->state = PP_Error;
            MVar7 = MHD_NO;
            var_8 = pcVar11;
            goto LAB_00022c84;
          }
          var_11 = var_2->skip_rn;
          if (var_11 == var_12) {
            var_13 = *(char *)&var_2[1].connection;
            if (var_13 == '\r') {
LAB_00022da8:
              if ((var_7 < 2) || (*(char *)((int)&var_2[1].connection + 1) != '\n')) {
                var_14 = var_14 + 1;
                var_2->skip_rn = var_16;
              }
              else {
                var_14 = var_14 + 2;
                var_2->skip_rn = RN_Inactive;
              }
            }
            else {
LAB_00022d7c:
              if (var_13 != '\n') {
                var_2->skip_rn = RN_Inactive;
                MVar7 = MHD_NO;
                var_2->state = PP_Error;
                var_8 = (char *)var_14;
                goto LAB_00022c84;
              }
LAB_00022d84:
              var_2->skip_rn = RN_Inactive;
              var_14 = var_14 + 1;
            }
          }
          else if (var_11 < var_15) {
            if (var_11 == var_16) {
              var_13 = *(char *)&var_2[1].connection;
              if (var_13 != '\n') goto LAB_00022d60;
              goto LAB_00022d84;
            }
LAB_00022ddc:
            if (var_2->state < 0x10) {
                    /* WARNING: Could not emulate address calculation at 0x00022df0 */
                    /* WARNING: Treating indirect jump as call */
              MVar7 = (*(type_6 *)(&_gp + *(int *)(var_17 + var_2->state * 4 + -0x3b10)))();
              return MVar7;
            }
            (**(type_6 **)PTR_mhd_panic_0003d03c)
                      (*(type_7 *)PTR_mhd_panic_cls_0003d038,var_18 + -0x3cbc,0x53a,0);
            var_7 = var_2->buffer_pos;
          }
          else if (var_11 == var_15) {
            var_13 = *(char *)&var_2[1].connection;
LAB_00022d60:
            if (var_13 != '-') {
              var_2->skip_rn = var_12;
              if (var_13 == '\r') goto LAB_00022da8;
              goto LAB_00022d7c;
            }
            var_2->skip_rn = var_19;
            var_14 = var_14 + 1;
          }
          else {
            if (var_11 != var_19) goto LAB_00022ddc;
            pcVar11 = (char *)var_14;
            if (*(char *)&var_2[1].connection != '-') goto switchD_00022dfc_caseD_1;
            var_2->skip_rn = var_12;
            var_14 = var_14 + 1;
            var_2->state = var_2->dash_state;
          }
          bVar2 = false;
          bVar1 = var_20 < var_1;
          if (var_14 == 0) goto LAB_00022bc0;
          var_7 = var_7 - var_14;
          pcVar11 = unaff_s3->xbuf + (var_14 - 0x28);
          (*(type_6 *)PTR_memmove_0003d254)(unaff_s3,pcVar11,var_7);
          var_14 = 0;
          var_2->buffer_pos = var_7;
          if ((var_1 <= var_20) && (var_7 == 0)) goto LAB_00022d14;
          bVar2 = true;
          var_9 = var_20;
        } while( true );
      }
      MVar7 = MHD_YES;
      var_8 = (char *)var_14;
      if (var_14 != 0) goto LAB_00023014;
      goto LAB_00022c84;
    }
  }
  var_8 = pcVar11;
  MVar7 = MHD_NO;
LAB_00022c84:
  while (var_21 != *(int *)puVar5) {
    (*(type_6 *)PTR___stack_chk_fail_0003d21c)();
    var_7 = unaff_s8->buffer_pos;
    bVar1 = var_20 < var_22;
    var_1 = var_22;
    var_2 = unaff_s8;
LAB_00023014:
    pcVar11 = var_8 + (int)(unaff_s3->xbuf + -0x28);
    (*(type_6 *)PTR_memmove_0003d254)(unaff_s3,pcVar11,var_7 - (int)var_8);
    var_2->buffer_pos = var_7 - (int)var_8;
    if (bVar1) {
      var_2->state = PP_Error;
      MVar7 = MHD_NO;
      var_8 = pcVar11;
      var_22 = var_1;
      unaff_s8 = var_2;
    }
    else {
LAB_00022d14:
      MVar7 = MHD_YES;
      var_8 = pcVar11;
      var_22 = var_1;
      unaff_s8 = var_2;
    }
  }
  return MVar7;
}


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

undefined4 MASKED(int param_1,int param_2,uint param_3)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  char cVar11;
  uint uVar12;
  int unaff_s3;
  uint unaff_s5;
  uint unaff_s6;
  uint uVar13;
  int unaff_s8;
  int local_30;
  
  puVar5 = PTR___stack_chk_guard_0003d244;
  iVar6 = *(int *)PTR___stack_chk_guard_0003d244;
  uVar7 = 1;
  if (param_3 == 0) goto LAB_00022c84;
  iVar8 = param_2;
  unaff_s8 = param_1;
  if (param_1 != 0) {
    iVar8 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c40,*(undefined4 *)(param_1 + 0xc),0x21);
    unaff_s5 = param_3;
    if (iVar8 != 0) {
      uVar7 = FUN_000219d4(param_1,param_2,param_3);
      goto LAB_00022c84;
    }
    iVar8 = *(int *)(param_1 + 0xc);
    iVar9 = FUN_0001f1b8(PTR_DAT_0003d02c + -0x3c1c,iVar8,0x13);
    puVar3 = PTR_DAT_0003d02c;
    if (iVar9 != 0) {
      unaff_s3 = param_1 + 0x60;
      uVar13 = *(uint *)(param_1 + 0x30);
      bVar2 = true;
      unaff_s6 = 0;
      local_30 = 0;
      bVar1 = param_3 != 0;
LAB_00022bc0:
      puVar4 = PTR_DAT_0003d02c;
      uVar10 = unaff_s6;
      if ((bVar1) || ((uVar13 != 0 && (bVar2)))) {
        do {
          iVar8 = param_2 + uVar10;
          uVar12 = *(int *)(param_1 + 0x2c) - uVar13;
          if (param_3 - uVar10 <= uVar12) {
            uVar12 = param_3 - uVar10;
          }
          (*(code *)PTR_memcpy_0003d248)(unaff_s3 + uVar13,iVar8,uVar12);
          unaff_s6 = uVar10 + uVar12;
          uVar13 = uVar12 + *(int *)(param_1 + 0x30);
          *(uint *)(param_1 + 0x30) = uVar13;
          if (((uVar12 == 0) && (!bVar2)) && (uVar10 < param_3)) {
switchD_00022dfc_caseD_1:
            *(undefined4 *)(param_1 + 0x4c) = 0;
            uVar7 = 0;
            param_2 = iVar8;
            goto LAB_00022c84;
          }
          uVar10 = *(uint *)(param_1 + 0x50);
          if (uVar10 == 2) {
            cVar11 = *(char *)(param_1 + 0x60);
            if (cVar11 == '\r') {
LAB_00022da8:
              if ((uVar13 < 2) || (*(char *)(param_1 + 0x61) != '\n')) {
                local_30 = local_30 + 1;
                *(undefined4 *)(param_1 + 0x50) = 1;
              }
              else {
                local_30 = local_30 + 2;
                *(undefined4 *)(param_1 + 0x50) = 0;
              }
            }
            else {
LAB_00022d7c:
              if (cVar11 != '\n') {
                *(undefined4 *)(param_1 + 0x50) = 0;
                uVar7 = 0;
                *(undefined4 *)(param_1 + 0x4c) = 0;
                param_2 = local_30;
                goto LAB_00022c84;
              }
LAB_00022d84:
              *(undefined4 *)(param_1 + 0x50) = 0;
              local_30 = local_30 + 1;
            }
          }
          else if (uVar10 < 3) {
            if (uVar10 == 1) {
              cVar11 = *(char *)(param_1 + 0x60);
              if (cVar11 != '\n') goto LAB_00022d60;
              goto LAB_00022d84;
            }
LAB_00022ddc:
            if (*(uint *)(param_1 + 0x4c) < 0x10) {
                    /* WARNING: Could not emulate address calculation at 0x00022df0 */
                    /* WARNING: Treating indirect jump as call */
              uVar7 = (*(code *)(&_gp_1 + *(int *)(puVar3 + *(uint *)(param_1 + 0x4c) * 4 + -0x3b10)
                                ))();
              return uVar7;
            }
            (**(code **)PTR_DAT_0003d03c)(*(undefined4 *)PTR_DAT_0003d038,puVar4 + -0x3cbc,0x53a,0);
            uVar13 = *(uint *)(param_1 + 0x30);
          }
          else if (uVar10 == 3) {
            cVar11 = *(char *)(param_1 + 0x60);
LAB_00022d60:
            if (cVar11 != '-') {
              *(undefined4 *)(param_1 + 0x50) = 2;
              if (cVar11 == '\r') goto LAB_00022da8;
              goto LAB_00022d7c;
            }
            *(undefined4 *)(param_1 + 0x50) = 4;
            local_30 = local_30 + 1;
          }
          else {
            if (uVar10 != 4) goto LAB_00022ddc;
            iVar8 = local_30;
            if (*(char *)(param_1 + 0x60) != '-') goto switchD_00022dfc_caseD_1;
            *(undefined4 *)(param_1 + 0x50) = 2;
            local_30 = local_30 + 1;
            *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x54);
          }
          bVar2 = false;
          bVar1 = unaff_s6 < param_3;
          if (local_30 == 0) goto LAB_00022bc0;
          uVar13 = uVar13 - local_30;
          iVar8 = unaff_s3 + local_30;
          (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13);
          local_30 = 0;
          *(uint *)(param_1 + 0x30) = uVar13;
          if ((param_3 <= unaff_s6) && (uVar13 == 0)) goto LAB_00022d14;
          bVar2 = true;
          uVar10 = unaff_s6;
        } while( true );
      }
      uVar7 = 1;
      param_2 = local_30;
      if (local_30 != 0) goto LAB_00023014;
      goto LAB_00022c84;
    }
  }
  param_2 = iVar8;
  uVar7 = 0;
LAB_00022c84:
  while (iVar6 != *(int *)puVar5) {
    (*(code *)PTR___stack_chk_fail_0003d21c)();
    uVar13 = *(uint *)(unaff_s8 + 0x30);
    bVar1 = unaff_s6 < unaff_s5;
    param_3 = unaff_s5;
    param_1 = unaff_s8;
LAB_00023014:
    iVar8 = unaff_s3 + param_2;
    (*(code *)PTR_memmove_0003d254)(unaff_s3,iVar8,uVar13 - param_2);
    *(uint *)(param_1 + 0x30) = uVar13 - param_2;
    if (bVar1) {
      *(undefined4 *)(param_1 + 0x4c) = 0;
      uVar7 = 0;
      param_2 = iVar8;
      unaff_s5 = param_3;
      unaff_s8 = param_1;
    }
    else {
LAB_00022d14:
      uVar7 = 1;
      param_2 = iVar8;
      unaff_s5 = param_3;
      unaff_s8 = param_1;
    }
  }
  return uVar7;
}

