
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */

int d_type(int param_1)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  char *pcVar4;
  uint uVar5;
  int local_28 [2];
  
  pcVar4 = *(char **)(param_1 + 0xc);
  iVar1 = (int)*pcVar4;
  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {
    if (iVar1 != 0x44) {
      uVar5 = iVar1 - 0x30U & 0xff;
      if (0x4a < uVar5) {
        return 0;
      }
                    /* WARNING: Could not emulate address calculation at 0x003dca4c */
                    /* WARNING: Treating indirect jump as call */
      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.
                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();
      return iVar1;
    }
    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {
      *(char **)(param_1 + 0xc) = pcVar4 + 1;
      if (pcVar4[1] == '\0') {
        return 0;
      }
      *(char **)(param_1 + 0xc) = pcVar4 + 2;
      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;
      if (0x30 < uVar5) {
        return 0;
      }
                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */
                    /* WARNING: Treating indirect jump as call */
      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.
                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();
      return iVar1;
    }
  }
  piVar2 = (int *)d_cv_qualifiers(param_1,local_28,0);
  if (piVar2 != (int *)0x0) {
    if (**(char **)(param_1 + 0xc) == 'F') {
      piVar3 = (int *)d_function_type(param_1);
      *piVar2 = (int)piVar3;
    }
    else {
      piVar3 = (int *)d_type();
      *piVar2 = (int)piVar3;
    }
    if (piVar3 != (int *)0x0) {
      if (*piVar3 - 0x1fU < 2) {
        iVar1 = piVar3[2];
        piVar3[2] = local_28[0];
        local_28[0] = *piVar2;
        *piVar2 = iVar1;
      }
      if (local_28[0] != 0) {
        iVar1 = *(int *)(param_1 + 0x20);
        if (iVar1 < *(int *)(param_1 + 0x24)) {
          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];
          *(int *)(param_1 + 0x20) = iVar1 + 1;
          return local_28[0];
        }
      }
    }
  }
  return 0;
}



int FUN_003dc9d0(int param_1)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  char *pcVar4;
  uint uVar5;
  int local_28 [2];
  
  pcVar4 = *(char **)(param_1 + 0xc);
  iVar1 = (int)*pcVar4;
  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {
    if (iVar1 != 0x44) {
      uVar5 = iVar1 - 0x30U & 0xff;
      if (0x4a < uVar5) {
        return 0;
      }
                    /* WARNING: Could not emulate address calculation at 0x003dca4c */
                    /* WARNING: Treating indirect jump as call */
      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +
                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();
      return iVar1;
    }
    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {
      *(char **)(param_1 + 0xc) = pcVar4 + 1;
      if (pcVar4[1] == '\0') {
        return 0;
      }
      *(char **)(param_1 + 0xc) = pcVar4 + 2;
      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;
      if (0x30 < uVar5) {
        return 0;
      }
                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */
                    /* WARNING: Treating indirect jump as call */
      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +
                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();
      return iVar1;
    }
  }
  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);
  if (piVar2 != (int *)0x0) {
    if (**(char **)(param_1 + 0xc) == 'F') {
      piVar3 = (int *)FUN_003dde58(param_1);
      *piVar2 = (int)piVar3;
    }
    else {
      piVar3 = (int *)FUN_003dc9d0();
      *piVar2 = (int)piVar3;
    }
    if (piVar3 != (int *)0x0) {
      if (*piVar3 - 0x1fU < 2) {
        iVar1 = piVar3[2];
        piVar3[2] = local_28[0];
        local_28[0] = *piVar2;
        *piVar2 = iVar1;
      }
      if (local_28[0] != 0) {
        iVar1 = *(int *)(param_1 + 0x20);
        if (iVar1 < *(int *)(param_1 + 0x24)) {
          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];
          *(int *)(param_1 + 0x20) = iVar1 + 1;
          return local_28[0];
        }
      }
    }
  }
  return 0;
}


lui gp,0xf
addiu gp,gp,-0x3790
addu gp,gp,t9
addiu sp,sp,-0x40
sw s0,0x20(sp)
or s0,a0,zero
sw gp,0x10(sp)
li a0,0x72
sw ra,0x3c(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
lw v1,0xc(s0)
lb v0,0x0(v1)
beq v0,a0,0x003dca60
_li a0,0x56
beq v0,a0,0x003dca60
_li a0,0x4b
beq v0,a0,0x003dca60
_li a0,0x44
beq v0,a0,0x003dcbf4
_addiu a0,v0,-0x30
andi a0,a0,0xff
sltiu a1,a0,0x4b
beq a1,zero,0x003dcbac
_lw a1,-0x7f64(gp)
sll a0,a0,0x2
addiu a1,a1,-0xf0
addu a0,a1,a0
lw a0,0x0(a0)
addu a0,a0,gp
jr a0
_nop
lw t9,-0x398c(gp)
or a2,zero,zero
addiu a1,sp,0x18
addiu t9,t9,-0x25c8
bal 0x003dda38
_or a0,s0,zero
lw gp,0x10(sp)
beq v0,zero,0x003dcbac
_or s2,v0,zero
lw v1,0xc(s0)
li v0,0x46
lb v1,0x0(v1)
beq v1,v0,0x003dcbdc
_or a0,s0,zero
lw t9,-0x398c(gp)
addiu t9,t9,-0x3630
bal 0x003dc9d0
_nop
sw v0,0x0(s2)
beq v0,zero,0x003dcbac
_nop
lw v1,0x0(v0)
addiu v1,v1,-0x1f
sltiu v1,v1,0x2
beq v1,zero,0x003dcae0
_lw s1,0x18(sp)
lw v1,0x8(v0)
sw s1,0x8(v0)
lw v0,0x0(s2)
sw v0,0x18(sp)
sw v1,0x0(s2)
lw s1,0x18(sp)
beq s1,zero,0x003dcbac
_nop
lw v0,0x20(s0)
lw v1,0x24(s0)
slt v1,v0,v1
beq v1,zero,0x003dcbac
_sll a0,v0,0x2
lw v1,0x1c(s0)
lw ra,0x3c(sp)
addiu v0,v0,0x1
lw s6,0x38(sp)
addu v1,v1,a0
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
sw s1,0x0(v1)
sw v0,0x20(s0)
or v0,s1,zero
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x398c(gp)
li v0,0x1
lw s1,0x30(s0)
or a0,s0,zero
addiu t9,t9,-0x4b60
bal 0x003db4a0
_sw v0,0x30(s0)
or a3,zero,zero
lw gp,0x10(sp)
li a1,0x42
sw s1,0x30(s0)
or a2,v0,zero
lw t9,-0x398c(gp)
addiu t9,t9,-0x5cd0
bal 0x003da330
_or a0,s0,zero
or s1,v0,zero
beq v0,zero,0x003dcbac
_sw v0,0x18(sp)
lw v0,0xc(s0)
lb v1,0x0(v0)
beq v1,zero,0x003dcbac
_addiu a0,v0,0x1
li v1,0x45
sw a0,0xc(s0)
lb v0,0x0(v0)
beq v0,v1,0x003dccf0
_nop
or s1,zero,zero
lw ra,0x3c(sp)
or v0,s1,zero
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x398c(gp)
addiu t9,t9,-0x21a8
bal 0x003dde58
_nop
b 0x003dcaac
_sw v0,0x0(s2)
lb v0,0x1(v1)
li a0,-0x21
li a1,0x4f
and a0,v0,a0
beq a0,a1,0x003dca60
_addiu v0,v0,-0x77
andi v0,v0,0xff
sltiu v0,v0,0x2
bne v0,zero,0x003dca60
_addiu v0,v1,0x1
sw v0,0xc(s0)
lb v0,0x1(v1)
beq v0,zero,0x003dcbac
_addiu v0,v1,0x2
sw v0,0xc(s0)
lbu v0,0x1(v1)
addiu v0,v0,-0x46
andi v0,v0,0xff
sltiu a0,v0,0x31
beq a0,zero,0x003dcbac
_lw a0,-0x7f64(gp)
sll v0,v0,0x2
addiu a0,a0,0x3c
addu v0,a0,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
addiu v0,v0,-0x61
lw a1,0x14(s0)
lw a2,0x18(s0)
sll a0,v0,0x2
addu v0,a0,v0
slt a2,a1,a2
sll a0,v0,0x2
lw v0,-0x7fcc(gp)
addiu v0,v0,0x7c38
beq a2,zero,0x003dd698
_addu v0,v0,a0
lw s1,0x10(s0)
sll a3,a1,0x4
lw a2,0x4(v0)
addiu a1,a1,0x1
lw a0,0x2c(s0)
addiu v1,v1,0x1
addu s1,s1,a3
addu a0,a0,a2
sw zero,0x4(s1)
sw a1,0x14(s0)
li a1,0x27
sw v0,0x8(s1)
sw a1,0x0(s1)
sw a0,0x2c(s0)
b 0x003dcbb0
_sw v1,0xc(s0)
lw t9,-0x398c(gp)
addiu t9,t9,-0x3dac
bal 0x003dc254
_or a0,s0,zero
or s1,v0,zero
sw v0,0x18(sp)
beq s1,zero,0x003dcbac
_nop
lw v0,0x20(s0)
lw v1,0x24(s0)
slt v1,v0,v1
beq v1,zero,0x003dcbac
_sll a0,v0,0x2
lw v1,0x1c(s0)
lw ra,0x3c(sp)
addiu v0,v0,0x1
lw s6,0x38(sp)
addu v1,v1,a0
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
sw s1,0x0(v1)
sw v0,0x20(s0)
lw s1,0x18(sp)
lw s0,0x20(sp)
or v0,s1,zero
lw s1,0x24(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x3630
bal 0x003dc9d0
_sw v1,0xc(s0)
or a3,zero,zero
lw gp,0x10(sp)
li a1,0x25
or a2,v0,zero
lw t9,-0x398c(gp)
addiu t9,t9,-0x5cd0
bal 0x003da330
_or a0,s0,zero
or s1,v0,zero
b 0x003dcce8
_sw v0,0x18(sp)
lw t9,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x5750
bal 0x003da8b0
_sw v1,0xc(s0)
or a3,zero,zero
lw gp,0x10(sp)
li a1,0x28
b 0x003dcd70
_or a2,v0,zero
lw t9,-0x398c(gp)
addiu t9,t9,-0x21a8
bal 0x003dde58
_or a0,s0,zero
or s1,v0,zero
b 0x003dcce8
_sw v0,0x18(sp)
lw t9,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x3630
bal 0x003dc9d0
_sw v1,0xc(s0)
or a3,zero,zero
lw gp,0x10(sp)
li a1,0x26
b 0x003dcd70
_or a2,v0,zero
lw t9,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x3630
bal 0x003dc9d0
_sw v1,0xc(s0)
or a3,zero,zero
lw gp,0x10(sp)
li a1,0x24
b 0x003dcd70
_or a2,v0,zero
lw t9,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x3630
bal 0x003dc9d0
_sw v1,0xc(s0)
or a3,zero,zero
lw gp,0x10(sp)
li a1,0x22
b 0x003dcd70
_or a2,v0,zero
lw t9,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x3630
bal 0x003dc9d0
_sw v1,0xc(s0)
or a3,zero,zero
lw gp,0x10(sp)
li a1,0x23
b 0x003dcd70
_or a2,v0,zero
lb a0,0x1(v1)
andi v0,a0,0xff
addiu v1,v0,-0x30
sltiu v1,v1,0xa
bne v1,zero,0x003dceb0
_li v1,0x5f
beq a0,v1,0x003dceb0
_addiu v0,v0,-0x41
sltiu v0,v0,0x1a
beq v0,zero,0x003dd5a0
_lw t9,-0x398c(gp)
lw t9,-0x398c(gp)
or a1,zero,zero
addiu t9,t9,-0x5480
bal 0x003dab80
_or a0,s0,zero
li a0,0x49
lw v1,0xc(s0)
or s1,v0,zero
lw gp,0x10(sp)
sw v0,0x18(sp)
lb v0,0x0(v1)
bne v0,a0,0x003dcbb4
_lw ra,0x3c(sp)
lw t9,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x3ffc
bal 0x003dc004
_sw v1,0xc(s0)
li a1,0x4
lw gp,0x10(sp)
or a2,s1,zero
b 0x003dcd70
_or a3,v0,zero
lw t9,-0x398c(gp)
addiu t9,t9,-0x57f0
bal 0x003da810
_or a0,s0,zero
li v1,0x49
lw s2,0xc(s0)
lw gp,0x10(sp)
sw v0,0x18(sp)
lb s3,0x0(s2)
bne s3,v1,0x003dcce8
_or s1,v0,zero
lw v0,0x34(s0)
bne v0,zero,0x003dd5d0
_lw t9,-0x398c(gp)
beq s1,zero,0x003dcbac
_nop
lw v0,0x20(s0)
lw v1,0x24(s0)
slt v1,v0,v1
beq v1,zero,0x003dcbac
_sll a0,v0,0x2
lw v1,0x1c(s0)
addiu v0,v0,0x1
addu v1,v1,a0
sw s1,0x0(v1)
sw v0,0x20(s0)
lbu v0,0x0(s2)
addiu v0,v0,-0x49
sltiu v0,v0,0x2
beq v0,zero,0x003dd618
_addiu t9,t9,-0x3ffc
addiu s2,s2,0x1
or a0,s0,zero
bal 0x003dc004
_sw s2,0xc(s0)
li a1,0x4
lw gp,0x10(sp)
or a3,v0,zero
b 0x003dcd70
_or a2,s1,zero
lw t9,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x5750
bal 0x003da8b0
_sw v1,0xc(s0)
li a0,0x49
lw v1,0xc(s0)
or s1,v0,zero
lw gp,0x10(sp)
sw v0,0x18(sp)
lb v0,0x0(v1)
beq v0,a0,0x003dd524
_lw t9,-0x398c(gp)
lw s1,-0x398c(gp)
addiu s1,s1,-0x5cd0
lw t9,-0x398c(gp)
addiu t9,t9,-0x3630
bal 0x003dc9d0
_or a0,s0,zero
li a1,0x21
lw a3,0x18(sp)
or t9,s1,zero
or a2,v0,zero
bal 0x003da330
_or a0,s0,zero
or s1,v0,zero
b 0x003dcce8
_sw v0,0x18(sp)
lw s1,-0x398c(gp)
addiu v1,v1,0x1
or a0,s0,zero
addiu s1,s1,-0x3630
or t9,s1,zero
bal 0x003dc9d0
_sw v1,0xc(s0)
beq v0,zero,0x003dcbac
_or s2,v0,zero
or t9,s1,zero
bal 0x003dc9d0
_or a0,s0,zero
lw gp,0x10(sp)
beq v0,zero,0x003dcbac
_or a3,v0,zero
li a1,0x2b
b 0x003dcd70
_or a2,s2,zero
addiu a1,v1,0x1
li a0,0x5f
sw a1,0xc(s0)
lb v0,0x1(v1)
beq v0,a0,0x003dd51c
_addiu v0,v0,-0x30
andi v0,v0,0xff
sltiu v0,v0,0xa
beq v0,zero,0x003dd568
_or a0,a1,zero
b 0x003dd0a4
_addiu v1,a0,0x1
or a0,v1,zero
addiu v1,a0,0x1
sw v1,0xc(s0)
lbu v0,0x1(a0)
addiu v0,v0,-0x30
sltiu v0,v0,0xa
bne v0,zero,0x003dd09c
_nop
lw v0,0x14(s0)
lw a2,0x18(s0)
slt a2,v0,a2
beq a2,zero,0x003dcbac
_subu a3,v1,a1
lw s1,0x10(s0)
sll a2,v0,0x4
addiu v0,v0,0x1
addu s1,s1,a2
sw zero,0x4(s1)
beq a3,zero,0x003dcbac
_sw v0,0x14(s0)
sw zero,0x4(s1)
sw zero,0x0(s1)
sw a1,0x8(s1)
sw a3,0xc(s1)
lb a0,0x1(a0)
li v0,0x5f
bne a0,v0,0x003dcbac
_or a1,v1,zero
lw t9,-0x398c(gp)
addiu a1,a1,0x1
or a0,s0,zero
addiu t9,t9,-0x3630
bal 0x003dc9d0
_sw a1,0xc(s0)
li a1,0x2a
lw gp,0x10(sp)
or a3,v0,zero
b 0x003dcd70
_or a2,s1,zero
lb a0,0x2(v1)
li v0,0x5f
beq a0,v0,0x003dd664
_lw t9,-0x398c(gp)
addiu t9,t9,-0x58fc
bal 0x003da704
_or a0,s0,zero
lw gp,0x10(sp)
or s1,v0,zero
beq s1,zero,0x003dcbac
_li v1,0x5f
lw v0,0xc(s0)
lb a0,0x0(v0)
bne a0,v1,0x003dcbac
_lw t9,-0x398c(gp)
addiu v0,v0,0x1
or a0,s0,zero
addiu t9,t9,-0x3630
bal 0x003dc9d0
_sw v0,0xc(s0)
li a1,0x2d
lw gp,0x10(sp)
b 0x003dd130
_or a3,v0,zero
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dd698
_sll a0,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
lw v1,0x2c(s0)
addu s1,s1,a0
addiu v1,v1,0x8
sw zero,0x4(s1)
sw v0,0x14(s0)
li v0,0x27
sw v0,0x0(s1)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x7e90
sw v0,0x8(s1)
b 0x003dcbb0
_sw v1,0x2c(s0)
lw t9,-0x398c(gp)
addiu t9,t9,-0x3630
bal 0x003dc9d0
_or a0,s0,zero
or a3,zero,zero
lw gp,0x10(sp)
li a1,0x4a
b 0x003dcd70
_or a2,v0,zero
lw v0,0x14(s0)
lw a0,0x18(s0)
slt a0,v0,a0
beq a0,zero,0x003dd6a4
_sll a1,v0,0x4
lw a0,0x10(s0)
addiu v0,v0,0x1
addu a0,a0,a1
sw a0,0x18(sp)
sw zero,0x4(a0)
sw v0,0x14(s0)
li v0,0x2c
sw v0,0x0(a0)
lbu v0,0x2(v1)
addiu v0,v0,-0x30
sltiu v0,v0,0xa
beq v0,zero,0x003dd264
_sh v0,0xc(a0)
lw t9,-0x398c(gp)
addiu t9,t9,-0x59dc
bal 0x003da624
_addiu a0,s0,0xc
lw gp,0x10(sp)
lw t9,-0x398c(gp)
or a0,s0,zero
addiu t9,t9,-0x3630
bal 0x003dc9d0
_lw s1,0x18(sp)
lw gp,0x10(sp)
sw v0,0x8(s1)
lw v0,0x18(sp)
lw v0,0x8(v0)
beq v0,zero,0x003dcbac
_lw t9,-0x398c(gp)
addiu t9,t9,-0x59dc
bal 0x003da624
_addiu a0,s0,0xc
lw v1,0xc(s0)
lb v0,0x0(v1)
beq v0,zero,0x003dd2b8
_nop
addiu v0,v1,0x1
sw v0,0xc(s0)
lb v0,0x0(v1)
lw s1,0x18(sp)
xori v0,v0,0x73
sltiu v0,v0,0x1
b 0x003dcbb0
_sh v0,0xe(s1)
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dd698
_sll a0,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
lw v1,0x2c(s0)
addu s1,s1,a0
addiu v1,v1,0x11
sw zero,0x4(s1)
sw v0,0x14(s0)
li v0,0x27
sw v0,0x0(s1)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x7eb8
sw v0,0x8(s1)
b 0x003dcbb0
_sw v1,0x2c(s0)
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dd698
_sll a0,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
lw v1,0x2c(s0)
addu s1,s1,a0
addiu v1,v1,0x8
sw zero,0x4(s1)
sw v0,0x14(s0)
li v0,0x27
sw v0,0x0(s1)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x7ea4
sw v0,0x8(s1)
b 0x003dcbb0
_sw v1,0x2c(s0)
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dd698
_sll a0,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
lw v1,0x2c(s0)
addu s1,s1,a0
addiu v1,v1,0x4
sw zero,0x4(s1)
sw v0,0x14(s0)
li v0,0x27
sw v0,0x0(s1)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x7e7c
sw v0,0x8(s1)
b 0x003dcbb0
_sw v1,0x2c(s0)
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dd698
_sll a0,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
lw v1,0x2c(s0)
addu s1,s1,a0
addiu v1,v1,0x9
sw zero,0x4(s1)
sw v0,0x14(s0)
li v0,0x27
sw v0,0x0(s1)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x7e40
sw v0,0x8(s1)
b 0x003dcbb0
_sw v1,0x2c(s0)
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dd698
_sll a0,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
lw v1,0x2c(s0)
addu s1,s1,a0
addiu v1,v1,0xa
sw zero,0x4(s1)
sw v0,0x14(s0)
li v0,0x27
sw v0,0x0(s1)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x7e68
sw v0,0x8(s1)
b 0x003dcbb0
_sw v1,0x2c(s0)
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dd698
_sll a0,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
lw v1,0x2c(s0)
addu s1,s1,a0
addiu v1,v1,0x9
sw zero,0x4(s1)
sw v0,0x14(s0)
li v0,0x27
sw v0,0x0(s1)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x7e54
sw v0,0x8(s1)
b 0x003dcbb0
_sw v1,0x2c(s0)
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dcbac
_sll v1,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
sw v0,0x14(s0)
addu s1,s1,v1
lw v0,-0x7f64(gp)
sw zero,0x4(s1)
addiu v0,v0,-0x57d0
sw zero,0x0(s1)
sw v0,0x8(s1)
li v0,0xe
b 0x003dcbb0
_sw v0,0xc(s1)
lw v0,0x14(s0)
lw v1,0x18(s0)
slt v1,v0,v1
beq v1,zero,0x003dcbac
_sll v1,v0,0x4
lw s1,0x10(s0)
addiu v0,v0,0x1
sw v0,0x14(s0)
addu s1,s1,v1
lw v0,-0x7f64(gp)
sw zero,0x4(s1)
addiu v0,v0,-0x6cf8
sw zero,0x0(s1)
sw v0,0x8(s1)
li v0,0x4
b 0x003dcbb0
_sw v0,0xc(s1)
b 0x003dd10c
_or s1,zero,zero
addiu v1,v1,0x1
or a0,s0,zero
addiu t9,t9,-0x3ffc
bal 0x003dc004
_sw v1,0xc(s0)
or a2,s1,zero
lw gp,0x10(sp)
li a1,0x4
or a3,v0,zero
lw s1,-0x398c(gp)
addiu s1,s1,-0x5cd0
or t9,s1,zero
bal 0x003da330
_or a0,s0,zero
lw gp,0x10(sp)
b 0x003dcff0
_sw v0,0x18(sp)
lw t9,-0x398c(gp)
li v0,0x1
lw s2,0x30(s0)
or a0,s0,zero
addiu t9,t9,-0x4b60
bal 0x003db4a0
_sw v0,0x30(s0)
lw gp,0x10(sp)
or s1,v0,zero
beq v0,zero,0x003dcbac
_sw s2,0x30(s0)
lw v1,0xc(s0)
b 0x003dd100
_lb a0,0x0(v1)
addiu t9,t9,-0x3dac
bal 0x003dc254
_or a0,s0,zero
or s1,v0,zero
beq v0,zero,0x003dcbac
_sw v0,0x18(sp)
lw v1,0x0(v0)
li v0,0x18
bne v1,v0,0x003dccf0
_lw ra,0x3c(sp)
b 0x003dcbb8
_or v0,s1,zero
addiu v0,s2,0x1
or a0,s0,zero
lw s6,0x14(s0)
lw s5,0x20(s0)
addiu t9,t9,-0x3ffc
lw s4,0x2c(s0)
bal 0x003dc004
_sw v0,0xc(s0)
lw v1,0xc(s0)
lb v1,0x0(v1)
beq v1,s3,0x003dd624
_lw gp,0x10(sp)
lw s1,0x18(sp)
sw s2,0xc(s0)
sw s6,0x14(s0)
sw s5,0x20(s0)
b 0x003dcce8
_sw s4,0x2c(s0)
or a3,zero,zero
b 0x003dcfa8
_li a1,0x4
lw a2,0x18(sp)
beq a2,zero,0x003dcbb0
_or s1,zero,zero
lw v1,0x20(s0)
lw a0,0x24(s0)
slt a0,v1,a0
beq a0,zero,0x003dcbb0
_sll a3,v1,0x2
lw a0,0x1c(s0)
addiu v1,v1,0x1
li a1,0x4
addu a0,a0,a3
or a3,v0,zero
sw a2,0x0(a0)
b 0x003dcd70
_sw v1,0x20(s0)
lw t9,-0x398c(gp)
addiu v1,v1,0x3
li v0,0x1
lw s2,0x30(s0)
sw v1,0xc(s0)
or a0,s0,zero
addiu t9,t9,-0x4b60
bal 0x003db4a0
_sw v0,0x30(s0)
lw gp,0x10(sp)
or s1,v0,zero
b 0x003dd15c
_sw s2,0x30(s0)
sw zero,0x18(sp)
lw v0,0x8(zero)
teq zero,zero
sw zero,0x0(zero)
teq zero,zero
(translation_unit "int FUN_003dc9d0(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int FUN_003dc9d0(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}" primitive_type (function_declarator "FUN_003dc9d0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int local_28 [2];" primitive_type (array_declarator "local_28 [2]" identifier [ number_literal ]) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = (int)*pcVar4;" (assignment_expression "iVar1 = (int)*pcVar4" identifier = (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier))) ;) (if_statement "if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }" if (parenthesized_expression "(((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b))" ( (binary_expression "((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)" (parenthesized_expression "((iVar1 != 0x72) && (iVar1 != 0x56))" ( (binary_expression "(iVar1 != 0x72) && (iVar1 != 0x56)" (parenthesized_expression "(iVar1 != 0x72)" ( (binary_expression "iVar1 != 0x72" identifier != number_literal) )) && (parenthesized_expression "(iVar1 != 0x56)" ( (binary_expression "iVar1 != 0x56" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar1 != 0x4b)" ( (binary_expression "iVar1 != 0x4b" identifier != number_literal) ))) )) (compound_statement "{\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }" { (if_statement "if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }" if (parenthesized_expression "(iVar1 != 0x44)" ( (binary_expression "iVar1 != 0x44" identifier != number_literal) )) (compound_statement "{\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }" { (expression_statement "uVar5 = iVar1 - 0x30U & 0xff;" (assignment_expression "uVar5 = iVar1 - 0x30U & 0xff" identifier = (binary_expression "iVar1 - 0x30U & 0xff" (binary_expression "iVar1 - 0x30U" identifier - number_literal) & number_literal)) ;) (if_statement "if (0x4a < uVar5) {\n        return 0;\n      }" if (parenthesized_expression "(0x4a < uVar5)" ( (binary_expression "0x4a < uVar5" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) comment comment (expression_statement "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();" (assignment_expression "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))()" identifier = (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210" (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" identifier + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" ( (binary_expression "PTR_UINT_004c12dc + uVar5 * 4 + -0xf0" (binary_expression "PTR_UINT_004c12dc + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })) (if_statement "if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }" if (parenthesized_expression "((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff)))" ( (binary_expression "(((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))" (parenthesized_expression "(((int)pcVar4[1] & 0xffffffdfU) != 0x4f)" ( (binary_expression "((int)pcVar4[1] & 0xffffffdfU) != 0x4f" (parenthesized_expression "((int)pcVar4[1] & 0xffffffdfU)" ( (binary_expression "(int)pcVar4[1] & 0xffffffdfU" (cast_expression "(int)pcVar4[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) & number_literal) )) != number_literal) )) && (parenthesized_expression "(1 < ((int)pcVar4[1] - 0x77U & 0xff))" ( (binary_expression "1 < ((int)pcVar4[1] - 0x77U & 0xff)" number_literal < (parenthesized_expression "((int)pcVar4[1] - 0x77U & 0xff)" ( (binary_expression "(int)pcVar4[1] - 0x77U & 0xff" (binary_expression "(int)pcVar4[1] - 0x77U" (cast_expression "(int)pcVar4[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) - number_literal) & number_literal) ))) ))) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar4 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar4 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar4[1] == '\0') {\n        return 0;\n      }" if (parenthesized_expression "(pcVar4[1] == '\0')" ( (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar4 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar4 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar4 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;" (assignment_expression "uVar5 = (byte)pcVar4[1] - 0x46 & 0xff" identifier = (binary_expression "(byte)pcVar4[1] - 0x46 & 0xff" (binary_expression "(byte)pcVar4[1] - 0x46" (cast_expression "(byte)pcVar4[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) - number_literal) & number_literal)) ;) (if_statement "if (0x30 < uVar5) {\n        return 0;\n      }" if (parenthesized_expression "(0x30 < uVar5)" ( (binary_expression "0x30 < uVar5" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) comment comment (expression_statement "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();" (assignment_expression "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))()" identifier = (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210" (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" identifier + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" ( (binary_expression "PTR_UINT_004c12dc + uVar5 * 4 + 0x3c" (binary_expression "PTR_UINT_004c12dc + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })) })) (expression_statement "piVar2 = (int *)FUN_003dda38(param_1,local_28,0);" (assignment_expression "piVar2 = (int *)FUN_003dda38(param_1,local_28,0)" identifier = (cast_expression "(int *)FUN_003dda38(param_1,local_28,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003dda38(param_1,local_28,0)" identifier (argument_list "(param_1,local_28,0)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }" { (if_statement "if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == 'F')" ( (binary_expression "**(char **)(param_1 + 0xc) == 'F'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'F'" ' character ')) )) (compound_statement "{\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }" { (expression_statement "piVar3 = (int *)FUN_003dde58(param_1);" (assignment_expression "piVar3 = (int *)FUN_003dde58(param_1)" identifier = (cast_expression "(int *)FUN_003dde58(param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003dde58(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "*piVar2 = (int)piVar3;" (assignment_expression "*piVar2 = (int)piVar3" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" else (compound_statement "{\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" { (expression_statement "piVar3 = (int *)FUN_003dc9d0();" (assignment_expression "piVar3 = (int *)FUN_003dc9d0()" identifier = (cast_expression "(int *)FUN_003dc9d0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003dc9d0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar2 = (int)piVar3;" (assignment_expression "*piVar2 = (int)piVar3" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (if_statement "if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }" if (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }" { (if_statement "if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }" if (parenthesized_expression "(*piVar3 - 0x1fU < 2)" ( (binary_expression "*piVar3 - 0x1fU < 2" (binary_expression "*piVar3 - 0x1fU" (pointer_expression "*piVar3" * identifier) - number_literal) < number_literal) )) (compound_statement "{\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }" { (expression_statement "iVar1 = piVar3[2];" (assignment_expression "iVar1 = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "piVar3[2] = local_28[0];" (assignment_expression "piVar3[2] = local_28[0]" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (subscript_expression "local_28[0]" identifier [ number_literal ])) ;) (expression_statement "local_28[0] = *piVar2;" (assignment_expression "local_28[0] = *piVar2" (subscript_expression "local_28[0]" identifier [ number_literal ]) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" * identifier) = identifier) ;) })) (if_statement "if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }" if (parenthesized_expression "(local_28[0] != 0)" ( (binary_expression "local_28[0] != 0" (subscript_expression "local_28[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x20)" identifier = (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }" if (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x24))" ( (binary_expression "iVar1 < *(int *)(param_1 + 0x24)" identifier < (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }" { (expression_statement "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];" (assignment_expression "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0]" (pointer_expression "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1c) + iVar1 * 4)" ( (binary_expression "*(int *)(param_1 + 0x1c) + iVar1 * 4" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar1 * 4" identifier * number_literal)) )))) = (subscript_expression "local_28[0]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(param_1 + 0x20) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x20) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (return_statement "return local_28[0];" return (subscript_expression "local_28[0]" identifier [ number_literal ]) ;) })) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n\nint d_type(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)d_cv_qualifiers(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)d_function_type(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)d_type();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" comment comment comment comment comment comment (function_definition "int d_type(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)d_cv_qualifiers(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)d_function_type(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)d_type();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}" primitive_type (function_declarator "d_type(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)d_cv_qualifiers(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)d_function_type(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)d_type();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int local_28 [2];" primitive_type (array_declarator "local_28 [2]" identifier [ number_literal ]) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = (int)*pcVar4;" (assignment_expression "iVar1 = (int)*pcVar4" identifier = (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier))) ;) (if_statement "if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();\n      return iVar1;\n    }\n  }" if (parenthesized_expression "(((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b))" ( (binary_expression "((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)" (parenthesized_expression "((iVar1 != 0x72) && (iVar1 != 0x56))" ( (binary_expression "(iVar1 != 0x72) && (iVar1 != 0x56)" (parenthesized_expression "(iVar1 != 0x72)" ( (binary_expression "iVar1 != 0x72" identifier != number_literal) )) && (parenthesized_expression "(iVar1 != 0x56)" ( (binary_expression "iVar1 != 0x56" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar1 != 0x4b)" ( (binary_expression "iVar1 != 0x4b" identifier != number_literal) ))) )) (compound_statement "{\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();\n      return iVar1;\n    }\n  }" { (if_statement "if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();\n      return iVar1;\n    }" if (parenthesized_expression "(iVar1 != 0x44)" ( (binary_expression "iVar1 != 0x44" identifier != number_literal) )) (compound_statement "{\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dca4c */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();\n      return iVar1;\n    }" { (expression_statement "uVar5 = iVar1 - 0x30U & 0xff;" (assignment_expression "uVar5 = iVar1 - 0x30U & 0xff" identifier = (binary_expression "iVar1 - 0x30U & 0xff" (binary_expression "iVar1 - 0x30U" identifier - number_literal) & number_literal)) ;) (if_statement "if (0x4a < uVar5) {\n        return 0;\n      }" if (parenthesized_expression "(0x4a < uVar5)" ( (binary_expression "0x4a < uVar5" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) comment comment (expression_statement "iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))();" (assignment_expression "iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))()" identifier = (call_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))()" (parenthesized_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)))" ( (pointer_expression "*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0))" * (cast_expression "(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0))" ( (ERROR "&gold::Position_dependent_options::" (pointer_expression "&gold" & identifier) : : identifier : :) (binary_expression "default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" (field_expression "default_options_.relax_.\n                          user_set_via_option" (field_expression "default_options_.relax_" identifier . field_identifier) . field_identifier) + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" ( (binary_expression "PTR_UINT_004c12dc + uVar5 * 4 + -0xf0" (binary_expression "PTR_UINT_004c12dc + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })) (if_statement "if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();\n      return iVar1;\n    }" if (parenthesized_expression "((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff)))" ( (binary_expression "(((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))" (parenthesized_expression "(((int)pcVar4[1] & 0xffffffdfU) != 0x4f)" ( (binary_expression "((int)pcVar4[1] & 0xffffffdfU) != 0x4f" (parenthesized_expression "((int)pcVar4[1] & 0xffffffdfU)" ( (binary_expression "(int)pcVar4[1] & 0xffffffdfU" (cast_expression "(int)pcVar4[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) & number_literal) )) != number_literal) )) && (parenthesized_expression "(1 < ((int)pcVar4[1] - 0x77U & 0xff))" ( (binary_expression "1 < ((int)pcVar4[1] - 0x77U & 0xff)" number_literal < (parenthesized_expression "((int)pcVar4[1] - 0x77U & 0xff)" ( (binary_expression "(int)pcVar4[1] - 0x77U & 0xff" (binary_expression "(int)pcVar4[1] - 0x77U" (cast_expression "(int)pcVar4[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) - number_literal) & number_literal) ))) ))) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();\n      return iVar1;\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar4 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar4 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar4[1] == '\0') {\n        return 0;\n      }" if (parenthesized_expression "(pcVar4[1] == '\0')" ( (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar4 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar4 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar4 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;" (assignment_expression "uVar5 = (byte)pcVar4[1] - 0x46 & 0xff" identifier = (binary_expression "(byte)pcVar4[1] - 0x46 & 0xff" (binary_expression "(byte)pcVar4[1] - 0x46" (cast_expression "(byte)pcVar4[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) - number_literal) & number_literal)) ;) (if_statement "if (0x30 < uVar5) {\n        return 0;\n      }" if (parenthesized_expression "(0x30 < uVar5)" ( (binary_expression "0x30 < uVar5" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) comment comment (expression_statement "iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))();" (assignment_expression "iVar1 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))()" identifier = (call_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))()" (parenthesized_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)))" ( (pointer_expression "*(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c))" * (cast_expression "(code *)(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&gold::Position_dependent_options::default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c))" ( (ERROR "&gold::Position_dependent_options::" (pointer_expression "&gold" & identifier) : : identifier : :) (binary_expression "default_options_.relax_.\n                          user_set_via_option + *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" (field_expression "default_options_.relax_.\n                          user_set_via_option" (field_expression "default_options_.relax_" identifier . field_identifier) . field_identifier) + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" ( (binary_expression "PTR_UINT_004c12dc + uVar5 * 4 + 0x3c" (binary_expression "PTR_UINT_004c12dc + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })) })) (expression_statement "piVar2 = (int *)d_cv_qualifiers(param_1,local_28,0);" (assignment_expression "piVar2 = (int *)d_cv_qualifiers(param_1,local_28,0)" identifier = (cast_expression "(int *)d_cv_qualifiers(param_1,local_28,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "d_cv_qualifiers(param_1,local_28,0)" identifier (argument_list "(param_1,local_28,0)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)d_function_type(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)d_type();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)d_function_type(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)d_type();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }" { (if_statement "if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)d_function_type(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)d_type();\n      *piVar2 = (int)piVar3;\n    }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == 'F')" ( (binary_expression "**(char **)(param_1 + 0xc) == 'F'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'F'" ' character ')) )) (compound_statement "{\n      piVar3 = (int *)d_function_type(param_1);\n      *piVar2 = (int)piVar3;\n    }" { (expression_statement "piVar3 = (int *)d_function_type(param_1);" (assignment_expression "piVar3 = (int *)d_function_type(param_1)" identifier = (cast_expression "(int *)d_function_type(param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "d_function_type(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "*piVar2 = (int)piVar3;" (assignment_expression "*piVar2 = (int)piVar3" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      piVar3 = (int *)d_type();\n      *piVar2 = (int)piVar3;\n    }" else (compound_statement "{\n      piVar3 = (int *)d_type();\n      *piVar2 = (int)piVar3;\n    }" { (expression_statement "piVar3 = (int *)d_type();" (assignment_expression "piVar3 = (int *)d_type()" identifier = (cast_expression "(int *)d_type()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "d_type()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar2 = (int)piVar3;" (assignment_expression "*piVar2 = (int)piVar3" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (if_statement "if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }" if (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }" { (if_statement "if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }" if (parenthesized_expression "(*piVar3 - 0x1fU < 2)" ( (binary_expression "*piVar3 - 0x1fU < 2" (binary_expression "*piVar3 - 0x1fU" (pointer_expression "*piVar3" * identifier) - number_literal) < number_literal) )) (compound_statement "{\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }" { (expression_statement "iVar1 = piVar3[2];" (assignment_expression "iVar1 = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "piVar3[2] = local_28[0];" (assignment_expression "piVar3[2] = local_28[0]" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (subscript_expression "local_28[0]" identifier [ number_literal ])) ;) (expression_statement "local_28[0] = *piVar2;" (assignment_expression "local_28[0] = *piVar2" (subscript_expression "local_28[0]" identifier [ number_literal ]) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" * identifier) = identifier) ;) })) (if_statement "if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }" if (parenthesized_expression "(local_28[0] != 0)" ( (binary_expression "local_28[0] != 0" (subscript_expression "local_28[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x20)" identifier = (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }" if (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x24))" ( (binary_expression "iVar1 < *(int *)(param_1 + 0x24)" identifier < (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }" { (expression_statement "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];" (assignment_expression "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0]" (pointer_expression "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1c) + iVar1 * 4)" ( (binary_expression "*(int *)(param_1 + 0x1c) + iVar1 * 4" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar1 * 4" identifier * number_literal)) )))) = (subscript_expression "local_28[0]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(param_1 + 0x20) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x20) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (return_statement "return local_28[0];" return (subscript_expression "local_28[0]" identifier [ number_literal ]) ;) })) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int FUN_003dc9d0(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int FUN_003dc9d0(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}" primitive_type (function_declarator "FUN_003dc9d0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int local_28 [2];" primitive_type (array_declarator "local_28 [2]" identifier [ number_literal ]) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = (int)*pcVar4;" (assignment_expression "iVar1 = (int)*pcVar4" identifier = (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier))) ;) (if_statement "if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }" if (parenthesized_expression "(((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b))" ( (binary_expression "((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)" (parenthesized_expression "((iVar1 != 0x72) && (iVar1 != 0x56))" ( (binary_expression "(iVar1 != 0x72) && (iVar1 != 0x56)" (parenthesized_expression "(iVar1 != 0x72)" ( (binary_expression "iVar1 != 0x72" identifier != number_literal) )) && (parenthesized_expression "(iVar1 != 0x56)" ( (binary_expression "iVar1 != 0x56" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar1 != 0x4b)" ( (binary_expression "iVar1 != 0x4b" identifier != number_literal) ))) )) (compound_statement "{\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }" { (if_statement "if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }" if (parenthesized_expression "(iVar1 != 0x44)" ( (binary_expression "iVar1 != 0x44" identifier != number_literal) )) (compound_statement "{\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }" { (expression_statement "uVar5 = iVar1 - 0x30U & 0xff;" (assignment_expression "uVar5 = iVar1 - 0x30U & 0xff" identifier = (binary_expression "iVar1 - 0x30U & 0xff" (binary_expression "iVar1 - 0x30U" identifier - number_literal) & number_literal)) ;) (if_statement "if (0x4a < uVar5) {\n        return 0;\n      }" if (parenthesized_expression "(0x4a < uVar5)" ( (binary_expression "0x4a < uVar5" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();" (assignment_expression "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))()" identifier = (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210" (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" identifier + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" ( (binary_expression "PTR_UINT_004c12dc + uVar5 * 4 + -0xf0" (binary_expression "PTR_UINT_004c12dc + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })) (if_statement "if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }" if (parenthesized_expression "((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff)))" ( (binary_expression "(((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))" (parenthesized_expression "(((int)pcVar4[1] & 0xffffffdfU) != 0x4f)" ( (binary_expression "((int)pcVar4[1] & 0xffffffdfU) != 0x4f" (parenthesized_expression "((int)pcVar4[1] & 0xffffffdfU)" ( (binary_expression "(int)pcVar4[1] & 0xffffffdfU" (cast_expression "(int)pcVar4[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) & number_literal) )) != number_literal) )) && (parenthesized_expression "(1 < ((int)pcVar4[1] - 0x77U & 0xff))" ( (binary_expression "1 < ((int)pcVar4[1] - 0x77U & 0xff)" number_literal < (parenthesized_expression "((int)pcVar4[1] - 0x77U & 0xff)" ( (binary_expression "(int)pcVar4[1] - 0x77U & 0xff" (binary_expression "(int)pcVar4[1] - 0x77U" (cast_expression "(int)pcVar4[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) - number_literal) & number_literal) ))) ))) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar4 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar4 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar4[1] == '\0') {\n        return 0;\n      }" if (parenthesized_expression "(pcVar4[1] == '\0')" ( (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar4 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar4 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar4 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;" (assignment_expression "uVar5 = (byte)pcVar4[1] - 0x46 & 0xff" identifier = (binary_expression "(byte)pcVar4[1] - 0x46 & 0xff" (binary_expression "(byte)pcVar4[1] - 0x46" (cast_expression "(byte)pcVar4[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])) - number_literal) & number_literal)) ;) (if_statement "if (0x30 < uVar5) {\n        return 0;\n      }" if (parenthesized_expression "(0x30 < uVar5)" ( (binary_expression "0x30 < uVar5" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();" (assignment_expression "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))()" identifier = (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210" (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" identifier + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" ( (binary_expression "PTR_UINT_004c12dc + uVar5 * 4 + 0x3c" (binary_expression "PTR_UINT_004c12dc + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })) })) (expression_statement "piVar2 = (int *)FUN_003dda38(param_1,local_28,0);" (assignment_expression "piVar2 = (int *)FUN_003dda38(param_1,local_28,0)" identifier = (cast_expression "(int *)FUN_003dda38(param_1,local_28,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003dda38(param_1,local_28,0)" identifier (argument_list "(param_1,local_28,0)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }" { (if_statement "if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == 'F')" ( (binary_expression "**(char **)(param_1 + 0xc) == 'F'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'F'" ' character ')) )) (compound_statement "{\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }" { (expression_statement "piVar3 = (int *)FUN_003dde58(param_1);" (assignment_expression "piVar3 = (int *)FUN_003dde58(param_1)" identifier = (cast_expression "(int *)FUN_003dde58(param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003dde58(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "*piVar2 = (int)piVar3;" (assignment_expression "*piVar2 = (int)piVar3" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" else (compound_statement "{\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" { (expression_statement "piVar3 = (int *)FUN_003dc9d0();" (assignment_expression "piVar3 = (int *)FUN_003dc9d0()" identifier = (cast_expression "(int *)FUN_003dc9d0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003dc9d0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar2 = (int)piVar3;" (assignment_expression "*piVar2 = (int)piVar3" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (if_statement "if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }" if (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }" { (if_statement "if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }" if (parenthesized_expression "(*piVar3 - 0x1fU < 2)" ( (binary_expression "*piVar3 - 0x1fU < 2" (binary_expression "*piVar3 - 0x1fU" (pointer_expression "*piVar3" * identifier) - number_literal) < number_literal) )) (compound_statement "{\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }" { (expression_statement "iVar1 = piVar3[2];" (assignment_expression "iVar1 = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "piVar3[2] = local_28[0];" (assignment_expression "piVar3[2] = local_28[0]" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (subscript_expression "local_28[0]" identifier [ number_literal ])) ;) (expression_statement "local_28[0] = *piVar2;" (assignment_expression "local_28[0] = *piVar2" (subscript_expression "local_28[0]" identifier [ number_literal ]) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" * identifier) = identifier) ;) })) (if_statement "if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }" if (parenthesized_expression "(local_28[0] != 0)" ( (binary_expression "local_28[0] != 0" (subscript_expression "local_28[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x20)" identifier = (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }" if (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x24))" ( (binary_expression "iVar1 < *(int *)(param_1 + 0x24)" identifier < (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }" { (expression_statement "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];" (assignment_expression "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0]" (pointer_expression "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1c) + iVar1 * 4)" ( (binary_expression "*(int *)(param_1 + 0x1c) + iVar1 * 4" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar1 * 4" identifier * number_literal)) )))) = (subscript_expression "local_28[0]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(param_1 + 0x20) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x20) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (return_statement "return local_28[0];" return (subscript_expression "local_28[0]" identifier [ number_literal ]) ;) })) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (ERROR IDENT : : IDENT : :) (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) + LIT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - LIT) & LIT) ))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (ERROR IDENT : : IDENT : :) (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) + LIT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != 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 < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (return_statement return (subscript_expression IDENT [ LIT ]) ;) })) })) })) })) (return_statement return LIT ;) })))
(function_definition "int FUN_003dc9d0(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}" (primitive_type "int") (function_declarator "FUN_003dc9d0(int param_1)" (identifier "FUN_003dc9d0") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  char *pcVar4;\n  uint uVar5;\n  int local_28 [2];\n  \n  pcVar4 = *(char **)(param_1 + 0xc);\n  iVar1 = (int)*pcVar4;\n  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }\n  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);\n  if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int local_28 [2];" (primitive_type "int") (array_declarator "local_28 [2]" (identifier "local_28") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "pcVar4 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0xc)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar1 = (int)*pcVar4;" (assignment_expression "iVar1 = (int)*pcVar4" (identifier "iVar1") (= "=") (cast_expression "(int)*pcVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")))) (; ";")) (if_statement "if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }" (if "if") (parenthesized_expression "(((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b))" (( "(") (binary_expression "((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)" (parenthesized_expression "((iVar1 != 0x72) && (iVar1 != 0x56))" (( "(") (binary_expression "(iVar1 != 0x72) && (iVar1 != 0x56)" (parenthesized_expression "(iVar1 != 0x72)" (( "(") (binary_expression "iVar1 != 0x72" (identifier "iVar1") (!= "!=") (number_literal "0x72")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 != 0x56)" (( "(") (binary_expression "iVar1 != 0x56" (identifier "iVar1") (!= "!=") (number_literal "0x56")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 != 0x4b)" (( "(") (binary_expression "iVar1 != 0x4b" (identifier "iVar1") (!= "!=") (number_literal "0x4b")) () ")"))) () ")")) (compound_statement "{\n    if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }\n    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }\n  }" ({ "{") (if_statement "if (iVar1 != 0x44) {\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }" (if "if") (parenthesized_expression "(iVar1 != 0x44)" (( "(") (binary_expression "iVar1 != 0x44" (identifier "iVar1") (!= "!=") (number_literal "0x44")) () ")")) (compound_statement "{\n      uVar5 = iVar1 - 0x30U & 0xff;\n      if (0x4a < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();\n      return iVar1;\n    }" ({ "{") (expression_statement "uVar5 = iVar1 - 0x30U & 0xff;" (assignment_expression "uVar5 = iVar1 - 0x30U & 0xff" (identifier "uVar5") (= "=") (binary_expression "iVar1 - 0x30U & 0xff" (binary_expression "iVar1 - 0x30U" (identifier "iVar1") (- "-") (number_literal "0x30U")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (0x4a < uVar5) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(0x4a < uVar5)" (( "(") (binary_expression "0x4a < uVar5" (number_literal "0x4a") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();" (assignment_expression "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))()" (identifier "iVar1") (= "=") (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))" (( "(") (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" (* "*") (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210)" (( "(") (ERROR "gold::Position_dependent_options::" (identifier "gold") (: ":") (: ":") (identifier "Position_dependent_options") (: ":") (: ":")) (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210" (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" (identifier "default_options_") (+ "+") (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" (* "*") (cast_expression "(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0)" (( "(") (binary_expression "PTR_UINT_004c12dc + uVar5 * 4 + -0xf0" (binary_expression "PTR_UINT_004c12dc + uVar5 * 4" (identifier "PTR_UINT_004c12dc") (+ "+") (binary_expression "uVar5 * 4" (identifier "uVar5") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0xf0")) () ")"))))) (+ "+") (number_literal "0x3210")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}"))) (if_statement "if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }" (if "if") (parenthesized_expression "((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff)))" (( "(") (binary_expression "(((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))" (parenthesized_expression "(((int)pcVar4[1] & 0xffffffdfU) != 0x4f)" (( "(") (binary_expression "((int)pcVar4[1] & 0xffffffdfU) != 0x4f" (parenthesized_expression "((int)pcVar4[1] & 0xffffffdfU)" (( "(") (binary_expression "(int)pcVar4[1] & 0xffffffdfU" (cast_expression "(int)pcVar4[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]"))) (& "&") (number_literal "0xffffffdfU")) () ")")) (!= "!=") (number_literal "0x4f")) () ")")) (&& "&&") (parenthesized_expression "(1 < ((int)pcVar4[1] - 0x77U & 0xff))" (( "(") (binary_expression "1 < ((int)pcVar4[1] - 0x77U & 0xff)" (number_literal "1") (< "<") (parenthesized_expression "((int)pcVar4[1] - 0x77U & 0xff)" (( "(") (binary_expression "(int)pcVar4[1] - 0x77U & 0xff" (binary_expression "(int)pcVar4[1] - 0x77U" (cast_expression "(int)pcVar4[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]"))) (- "-") (number_literal "0x77U")) (& "&") (number_literal "0xff")) () ")"))) () ")"))) () ")")) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar4 + 1;\n      if (pcVar4[1] == '\0') {\n        return 0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar4 + 2;\n      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;\n      if (0x30 < uVar5) {\n        return 0;\n      }\n                    \n                    \n      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();\n      return iVar1;\n    }" ({ "{") (expression_statement "*(char **)(param_1 + 0xc) = pcVar4 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar4 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pcVar4[1] == '\0') {\n        return 0;\n      }" (if "if") (parenthesized_expression "(pcVar4[1] == '\0')" (( "(") (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(char **)(param_1 + 0xc) = pcVar4 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar4 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar4 + 2" (identifier "pcVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;" (assignment_expression "uVar5 = (byte)pcVar4[1] - 0x46 & 0xff" (identifier "uVar5") (= "=") (binary_expression "(byte)pcVar4[1] - 0x46 & 0xff" (binary_expression "(byte)pcVar4[1] - 0x46" (cast_expression "(byte)pcVar4[1]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]"))) (- "-") (number_literal "0x46")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (0x30 < uVar5) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(0x30 < uVar5)" (( "(") (binary_expression "0x30 < uVar5" (number_literal "0x30") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();" (assignment_expression "iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))()" (identifier "iVar1") (= "=") (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))" (( "(") (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" (* "*") (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210)" (( "(") (ERROR "gold::Position_dependent_options::" (identifier "gold") (: ":") (: ":") (identifier "Position_dependent_options") (: ":") (: ":")) (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210" (binary_expression "default_options_ +\n                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" (identifier "default_options_") (+ "+") (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" (* "*") (cast_expression "(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c)" (( "(") (binary_expression "PTR_UINT_004c12dc + uVar5 * 4 + 0x3c" (binary_expression "PTR_UINT_004c12dc + uVar5 * 4" (identifier "PTR_UINT_004c12dc") (+ "+") (binary_expression "uVar5 * 4" (identifier "uVar5") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x3c")) () ")"))))) (+ "+") (number_literal "0x3210")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar2 = (int *)FUN_003dda38(param_1,local_28,0);" (assignment_expression "piVar2 = (int *)FUN_003dda38(param_1,local_28,0)" (identifier "piVar2") (= "=") (cast_expression "(int *)FUN_003dda38(param_1,local_28,0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003dda38(param_1,local_28,0)" (identifier "FUN_003dda38") (argument_list "(param_1,local_28,0)" (( "(") (identifier "param_1") (, ",") (identifier "local_28") (, ",") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (piVar2 != (int *)0x0) {\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(piVar2 != (int *)0x0)" (( "(") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }\n    if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if (**(char **)(param_1 + 0xc) == 'F') {\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }\n    else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" (if "if") (parenthesized_expression "(**(char **)(param_1 + 0xc) == 'F')" (( "(") (binary_expression "**(char **)(param_1 + 0xc) == 'F'" (pointer_expression "**(char **)(param_1 + 0xc)" (* "*") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (== "==") (char_literal "'F'" (' "'") (character "F") (' "'"))) () ")")) (compound_statement "{\n      piVar3 = (int *)FUN_003dde58(param_1);\n      *piVar2 = (int)piVar3;\n    }" ({ "{") (expression_statement "piVar3 = (int *)FUN_003dde58(param_1);" (assignment_expression "piVar3 = (int *)FUN_003dde58(param_1)" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_003dde58(param_1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003dde58(param_1)" (identifier "FUN_003dde58") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (expression_statement "*piVar2 = (int)piVar3;" (assignment_expression "*piVar2 = (int)piVar3" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) (; ";")) (} "}")) (else_clause "else {\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" (else "else") (compound_statement "{\n      piVar3 = (int *)FUN_003dc9d0();\n      *piVar2 = (int)piVar3;\n    }" ({ "{") (expression_statement "piVar3 = (int *)FUN_003dc9d0();" (assignment_expression "piVar3 = (int *)FUN_003dc9d0()" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_003dc9d0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003dc9d0()" (identifier "FUN_003dc9d0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar2 = (int)piVar3;" (assignment_expression "*piVar2 = (int)piVar3" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) (; ";")) (} "}")))) (if_statement "if (piVar3 != (int *)0x0) {\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }" (if "if") (parenthesized_expression "(piVar3 != (int *)0x0)" (( "(") (binary_expression "piVar3 != (int *)0x0" (identifier "piVar3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }\n      if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }\n    }" ({ "{") (if_statement "if (*piVar3 - 0x1fU < 2) {\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }" (if "if") (parenthesized_expression "(*piVar3 - 0x1fU < 2)" (( "(") (binary_expression "*piVar3 - 0x1fU < 2" (binary_expression "*piVar3 - 0x1fU" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (- "-") (number_literal "0x1fU")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        iVar1 = piVar3[2];\n        piVar3[2] = local_28[0];\n        local_28[0] = *piVar2;\n        *piVar2 = iVar1;\n      }" ({ "{") (expression_statement "iVar1 = piVar3[2];" (assignment_expression "iVar1 = piVar3[2]" (identifier "iVar1") (= "=") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar3[2] = local_28[0];" (assignment_expression "piVar3[2] = local_28[0]" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "local_28[0]" (identifier "local_28") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "local_28[0] = *piVar2;" (assignment_expression "local_28[0] = *piVar2" (subscript_expression "local_28[0]" (identifier "local_28") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (if_statement "if (local_28[0] != 0) {\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }" (if "if") (parenthesized_expression "(local_28[0] != 0)" (( "(") (binary_expression "local_28[0] != 0" (subscript_expression "local_28[0]" (identifier "local_28") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar1 = *(int *)(param_1 + 0x20);\n        if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }\n      }" ({ "{") (expression_statement "iVar1 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x20)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (iVar1 < *(int *)(param_1 + 0x24)) {\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }" (if "if") (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x24))" (( "(") (binary_expression "iVar1 < *(int *)(param_1 + 0x24)" (identifier "iVar1") (< "<") (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (compound_statement "{\n          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];\n          *(int *)(param_1 + 0x20) = iVar1 + 1;\n          return local_28[0];\n        }" ({ "{") (expression_statement "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];" (assignment_expression "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0]" (pointer_expression "*(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x1c) + iVar1 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x1c) + iVar1 * 4" (pointer_expression "*(int *)(param_1 + 0x1c)" (* "*") (cast_expression "(int *)(param_1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (binary_expression "iVar1 * 4" (identifier "iVar1") (* "*") (number_literal "4"))) () ")")))) (= "=") (subscript_expression "local_28[0]" (identifier "local_28") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x20) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x20) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return local_28[0];" (return "return") (subscript_expression "local_28[0]" (identifier "local_28") ([ "[") (number_literal "0") (] "]")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (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 (binary_expression left: (identifier) right: (number_literal))))) right: (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: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (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 (ERROR (identifier) (identifier)) (binary_expression left: (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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal)))))) arguments: (argument_list)))) (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (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 (ERROR (identifier) (identifier)) (binary_expression left: (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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal)))))) arguments: (argument_list)))) (return_statement (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (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))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (return_statement (subscript_expression argument: (identifier) index: (number_literal))))))))))) (return_statement (number_literal)))))

int MASKED(int param_1)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  char *pcVar4;
  uint uVar5;
  int local_28 [2];
  
  pcVar4 = *(char **)(param_1 + 0xc);
  iVar1 = (int)*pcVar4;
  if (((iVar1 != 0x72) && (iVar1 != 0x56)) && (iVar1 != 0x4b)) {
    if (iVar1 != 0x44) {
      uVar5 = iVar1 - 0x30U & 0xff;
      if (0x4a < uVar5) {
        return 0;
      }
                    /* WARNING: Could not emulate address calculation at 0x003dca4c */
                    /* WARNING: Treating indirect jump as call */
      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +
                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + -0xf0) + 0x3210))();
      return iVar1;
    }
    if ((((int)pcVar4[1] & 0xffffffdfU) != 0x4f) && (1 < ((int)pcVar4[1] - 0x77U & 0xff))) {
      *(char **)(param_1 + 0xc) = pcVar4 + 1;
      if (pcVar4[1] == '\0') {
        return 0;
      }
      *(char **)(param_1 + 0xc) = pcVar4 + 2;
      uVar5 = (byte)pcVar4[1] - 0x46 & 0xff;
      if (0x30 < uVar5) {
        return 0;
      }
                    /* WARNING: Could not emulate address calculation at 0x003dcc50 */
                    /* WARNING: Treating indirect jump as call */
      iVar1 = (*(code *)(gold::Position_dependent_options::default_options_ +
                        *(int *)(PTR_UINT_004c12dc + uVar5 * 4 + 0x3c) + 0x3210))();
      return iVar1;
    }
  }
  piVar2 = (int *)FUN_003dda38(param_1,local_28,0);
  if (piVar2 != (int *)0x0) {
    if (**(char **)(param_1 + 0xc) == 'F') {
      piVar3 = (int *)FUN_003dde58(param_1);
      *piVar2 = (int)piVar3;
    }
    else {
      piVar3 = (int *)MASKED();
      *piVar2 = (int)piVar3;
    }
    if (piVar3 != (int *)0x0) {
      if (*piVar3 - 0x1fU < 2) {
        iVar1 = piVar3[2];
        piVar3[2] = local_28[0];
        local_28[0] = *piVar2;
        *piVar2 = iVar1;
      }
      if (local_28[0] != 0) {
        iVar1 = *(int *)(param_1 + 0x20);
        if (iVar1 < *(int *)(param_1 + 0x24)) {
          *(int *)(*(int *)(param_1 + 0x1c) + iVar1 * 4) = local_28[0];
          *(int *)(param_1 + 0x20) = iVar1 + 1;
          return local_28[0];
        }
      }
    }
  }
  return 0;
}

