
bfd_boolean stab_function_parameter(void *p,char *name,debug_parm_kind kind,bfd_vma val)

{
  uint uVar1;
  char cVar2;
  int type;
  bfd_boolean bVar3;
  char *__s;
  size_t sVar4;
  size_t sVar5;
  char *__s_00;
  stab_write_handle *info;
  
  __s = stab_pop_type((stab_write_handle *)((long)p + 0x60));
  uVar1 = kind - DEBUG_PARM_STACK;
  if (uVar1 < 4) {
    type = *(int *)(CSWTCH_28 + (ulong)uVar1 * 4);
    cVar2 = *(char *)((long)&CSWTCH_29 + (ulong)uVar1);
    sVar4 = strlen(name);
    sVar5 = strlen(__s);
    __s_00 = (char *)xmalloc(sVar4 + 3 + sVar5);
    sprintf(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s);
    free(__s);
    bVar3 = stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00);
    if (bVar3 != 0) {
      free(__s_00);
      bVar3 = 1;
    }
    return bVar3;
  }
                    /* WARNING: Subroutine does not return */
  abort();
}



undefined8 FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)

{
  char cVar1;
  undefined4 uVar2;
  char *__s;
  size_t sVar3;
  size_t sVar4;
  char *__s_00;
  undefined8 uVar5;
  uint uVar6;
  
  __s = (char *)FUN_00118930(param_1 + 0x60);
  uVar6 = param_3 - 1;
  if (uVar6 < 4) {
    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);
    cVar1 = (&DAT_00124300)[uVar6];
    sVar3 = strlen(param_2);
    sVar4 = strlen(__s);
    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);
    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);
    free(__s);
    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);
    if ((int)uVar5 != 0) {
      free(__s_00);
      uVar5 = 1;
    }
    return uVar5;
  }
                    /* WARNING: Subroutine does not return */
  abort();
}


PUSH R15
MOV R15,RCX
PUSH R14
MOV R14,RSI
PUSH R13
MOV R13,RDI
ADD RDI,0x60
PUSH R12
PUSH RBP
MOV EBP,EDX
PUSH RBX
SUB RSP,0x18
CALL 0x00118930
LEA EDX,[RBP + -0x1]
CMP EDX,0x3
JA 0x00104968
MOV RBX,RAX
LEA RAX,[0x124310]
MOV RDI,R14
MOV EAX,dword ptr [RAX + RDX*0x4]
MOV dword ptr [RSP + 0xc],EAX
LEA RAX,[0x124300]
MOVZX EBP,byte ptr [RAX + RDX*0x1]
CALL 0x00104260
MOV RDI,RBX
MOV R12,RAX
CALL 0x00104260
LEA RDI,[R12 + RAX*0x1 + 0x3]
CALL 0x00104370
MOVSX ECX,BPL
MOV R8,RBX
MOV RDX,R14
LEA RSI,[0x123fba]
MOV RDI,RAX
MOV R12,RAX
XOR EAX,EAX
CALL 0x00104820
MOV RDI,RBX
CALL 0x00104920
MOV ESI,dword ptr [RSP + 0xc]
XOR EDX,EDX
MOV R8,R12
MOV RCX,R15
MOV RDI,R13
CALL 0x00118330
TEST EAX,EAX
JZ 0x00119182
MOV RDI,R12
CALL 0x00104920
MOV EAX,0x1
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "undefined8 FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  char *__s;\n  size_t sVar3;\n  size_t sVar4;\n  char *__s_00;\n  undefined8 uVar5;\n  uint uVar6;\n  \n  __s = (char *)FUN_00118930(param_1 + 0x60);\n  uVar6 = param_3 - 1;\n  if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  abort();\n}\n\n" (function_definition "undefined8 FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  char *__s;\n  size_t sVar3;\n  size_t sVar4;\n  char *__s_00;\n  undefined8 uVar5;\n  uint uVar6;\n  \n  __s = (char *)FUN_00118930(param_1 + 0x60);\n  uVar6 = param_3 - 1;\n  if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  abort();\n}" type_identifier (function_declarator "FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,char *param_2,int param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  char *__s;\n  size_t sVar3;\n  size_t sVar4;\n  char *__s_00;\n  undefined8 uVar5;\n  uint uVar6;\n  \n  __s = (char *)FUN_00118930(param_1 + 0x60);\n  uVar6 = param_3 - 1;\n  if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  abort();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "__s = (char *)FUN_00118930(param_1 + 0x60);" (assignment_expression "__s = (char *)FUN_00118930(param_1 + 0x60)" identifier = (cast_expression "(char *)FUN_00118930(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00118930(param_1 + 0x60)" identifier (argument_list "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = param_3 - 1;" (assignment_expression "uVar6 = param_3 - 1" identifier = (binary_expression "param_3 - 1" identifier - number_literal)) ;) (if_statement "if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }" if (parenthesized_expression "(uVar6 < 4)" ( (binary_expression "uVar6 < 4" identifier < number_literal) )) (compound_statement "{\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }" { (expression_statement "uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);" (assignment_expression "uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" identifier = (pointer_expression "*(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" * (cast_expression "(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00124310 + (ulong)uVar6 * 4)" ( (binary_expression "&DAT_00124310 + (ulong)uVar6 * 4" (pointer_expression "&DAT_00124310" & identifier) + (binary_expression "(ulong)uVar6 * 4" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "cVar1 = (&DAT_00124300)[uVar6];" (assignment_expression "cVar1 = (&DAT_00124300)[uVar6]" identifier = (subscript_expression "(&DAT_00124300)[uVar6]" (parenthesized_expression "(&DAT_00124300)" ( (pointer_expression "&DAT_00124300" & identifier) )) [ identifier ])) ;) (expression_statement "sVar3 = strlen(param_2);" (assignment_expression "sVar3 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "sVar4 = strlen(__s);" (assignment_expression "sVar4 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);" (assignment_expression "__s_00 = (char *)xmalloc(sVar3 + 3 + sVar4)" identifier = (cast_expression "(char *)xmalloc(sVar3 + 3 + sVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar3 + 3 + sVar4)" identifier (argument_list "(sVar3 + 3 + sVar4)" ( (binary_expression "sVar3 + 3 + sVar4" (binary_expression "sVar3 + 3" identifier + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);" (call_expression "sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s)" identifier (argument_list "(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s)" ( identifier , (string_literal ""%s:%c%s"" " string_content ") , identifier , (cast_expression "(ulong)(uint)(int)cVar1" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)(int)cVar1" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int)cVar1" ( (type_descriptor "int" primitive_type) ) identifier))) , identifier ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);" (assignment_expression "uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00)" identifier = (call_expression "FUN_00118330(param_1,uVar2,0,param_4,__s_00)" identifier (argument_list "(param_1,uVar2,0,param_4,__s_00)" ( identifier , identifier , number_literal , identifier , identifier )))) ;) (if_statement "if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }" if (parenthesized_expression "((int)uVar5 != 0)" ( (binary_expression "(int)uVar5 != 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n      free(__s_00);\n      uVar5 = 1;\n    }" { (expression_statement "free(__s_00);" (call_expression "free(__s_00)" identifier (argument_list "(__s_00)" ( identifier ))) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (return_statement "return uVar5;" return identifier ;) })) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "bfd_boolean stab_function_parameter(void *p,char *name,debug_parm_kind kind,bfd_vma val)\n\n{\n  uint uVar1;\n  char cVar2;\n  int type;\n  bfd_boolean bVar3;\n  char *__s;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_00;\n  stab_write_handle *info;\n  \n  __s = stab_pop_type((stab_write_handle *)((long)p + 0x60));\n  uVar1 = kind - DEBUG_PARM_STACK;\n  if (uVar1 < 4) {\n    type = *(int *)(CSWTCH_28 + (ulong)uVar1 * 4);\n    cVar2 = *(char *)((long)&CSWTCH_29 + (ulong)uVar1);\n    sVar4 = strlen(name);\n    sVar5 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar4 + 3 + sVar5);\n    sprintf(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s);\n    free(__s);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  abort();\n}\n\n" (function_definition "bfd_boolean stab_function_parameter(void *p,char *name,debug_parm_kind kind,bfd_vma val)\n\n{\n  uint uVar1;\n  char cVar2;\n  int type;\n  bfd_boolean bVar3;\n  char *__s;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_00;\n  stab_write_handle *info;\n  \n  __s = stab_pop_type((stab_write_handle *)((long)p + 0x60));\n  uVar1 = kind - DEBUG_PARM_STACK;\n  if (uVar1 < 4) {\n    type = *(int *)(CSWTCH_28 + (ulong)uVar1 * 4);\n    cVar2 = *(char *)((long)&CSWTCH_29 + (ulong)uVar1);\n    sVar4 = strlen(name);\n    sVar5 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar4 + 3 + sVar5);\n    sprintf(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s);\n    free(__s);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  abort();\n}" type_identifier (function_declarator "stab_function_parameter(void *p,char *name,debug_parm_kind kind,bfd_vma val)" identifier (parameter_list "(void *p,char *name,debug_parm_kind kind,bfd_vma val)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "debug_parm_kind kind" type_identifier identifier) , (parameter_declaration "bfd_vma val" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  int type;\n  bfd_boolean bVar3;\n  char *__s;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_00;\n  stab_write_handle *info;\n  \n  __s = stab_pop_type((stab_write_handle *)((long)p + 0x60));\n  uVar1 = kind - DEBUG_PARM_STACK;\n  if (uVar1 < 4) {\n    type = *(int *)(CSWTCH_28 + (ulong)uVar1 * 4);\n    cVar2 = *(char *)((long)&CSWTCH_29 + (ulong)uVar1);\n    sVar4 = strlen(name);\n    sVar5 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar4 + 3 + sVar5);\n    sprintf(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s);\n    free(__s);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  abort();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int type;" primitive_type identifier ;) (declaration "bfd_boolean bVar3;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "stab_write_handle *info;" type_identifier (pointer_declarator "*info" * identifier) ;) (expression_statement "__s = stab_pop_type((stab_write_handle *)((long)p + 0x60));" (assignment_expression "__s = stab_pop_type((stab_write_handle *)((long)p + 0x60))" identifier = (call_expression "stab_pop_type((stab_write_handle *)((long)p + 0x60))" identifier (argument_list "((stab_write_handle *)((long)p + 0x60))" ( (cast_expression "(stab_write_handle *)((long)p + 0x60)" ( (type_descriptor "stab_write_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 0x60)" ( (binary_expression "(long)p + 0x60" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) )))) ;) (expression_statement "uVar1 = kind - DEBUG_PARM_STACK;" (assignment_expression "uVar1 = kind - DEBUG_PARM_STACK" identifier = (binary_expression "kind - DEBUG_PARM_STACK" identifier - identifier)) ;) (if_statement "if (uVar1 < 4) {\n    type = *(int *)(CSWTCH_28 + (ulong)uVar1 * 4);\n    cVar2 = *(char *)((long)&CSWTCH_29 + (ulong)uVar1);\n    sVar4 = strlen(name);\n    sVar5 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar4 + 3 + sVar5);\n    sprintf(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s);\n    free(__s);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }" if (parenthesized_expression "(uVar1 < 4)" ( (binary_expression "uVar1 < 4" identifier < number_literal) )) (compound_statement "{\n    type = *(int *)(CSWTCH_28 + (ulong)uVar1 * 4);\n    cVar2 = *(char *)((long)&CSWTCH_29 + (ulong)uVar1);\n    sVar4 = strlen(name);\n    sVar5 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar4 + 3 + sVar5);\n    sprintf(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s);\n    free(__s);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }" { (expression_statement "type = *(int *)(CSWTCH_28 + (ulong)uVar1 * 4);" (assignment_expression "type = *(int *)(CSWTCH_28 + (ulong)uVar1 * 4)" identifier = (pointer_expression "*(int *)(CSWTCH_28 + (ulong)uVar1 * 4)" * (cast_expression "(int *)(CSWTCH_28 + (ulong)uVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_28 + (ulong)uVar1 * 4)" ( (binary_expression "CSWTCH_28 + (ulong)uVar1 * 4" identifier + (binary_expression "(ulong)uVar1 * 4" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "cVar2 = *(char *)((long)&CSWTCH_29 + (ulong)uVar1);" (assignment_expression "cVar2 = *(char *)((long)&CSWTCH_29 + (ulong)uVar1)" identifier = (pointer_expression "*(char *)((long)&CSWTCH_29 + (ulong)uVar1)" * (cast_expression "(char *)((long)&CSWTCH_29 + (ulong)uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&CSWTCH_29 + (ulong)uVar1)" ( (binary_expression "(long)&CSWTCH_29 + (ulong)uVar1" (cast_expression "(long)&CSWTCH_29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&CSWTCH_29" & identifier)) + (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ))))) ;) (expression_statement "sVar4 = strlen(name);" (assignment_expression "sVar4 = strlen(name)" identifier = (call_expression "strlen(name)" identifier (argument_list "(name)" ( identifier )))) ;) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__s_00 = (char *)xmalloc(sVar4 + 3 + sVar5);" (assignment_expression "__s_00 = (char *)xmalloc(sVar4 + 3 + sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 3 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 3 + sVar5)" identifier (argument_list "(sVar4 + 3 + sVar5)" ( (binary_expression "sVar4 + 3 + sVar5" (binary_expression "sVar4 + 3" identifier + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s);" (call_expression "sprintf(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s)" identifier (argument_list "(__s_00,"%s:%c%s",name,(ulong)(uint)(int)cVar2,__s)" ( identifier , (string_literal ""%s:%c%s"" " string_content ") , identifier , (cast_expression "(ulong)(uint)(int)cVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)(int)cVar2" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int)cVar2" ( (type_descriptor "int" primitive_type) ) identifier))) , identifier ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "bVar3 = stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00);" (assignment_expression "bVar3 = stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00)" identifier = (call_expression "stab_write_symbol((stab_write_handle *)p,type,0,val,__s_00)" identifier (argument_list "((stab_write_handle *)p,type,0,val,__s_00)" ( (cast_expression "(stab_write_handle *)p" ( (type_descriptor "stab_write_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      free(__s_00);\n      bVar3 = 1;\n    }" { (expression_statement "free(__s_00);" (call_expression "free(__s_00)" identifier (argument_list "(__s_00)" ( identifier ))) ;) (expression_statement "bVar3 = 1;" (assignment_expression "bVar3 = 1" identifier = number_literal) ;) })) (return_statement "return bVar3;" return identifier ;) })) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined8 FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  char *__s;\n  size_t sVar3;\n  size_t sVar4;\n  char *__s_00;\n  undefined8 uVar5;\n  uint uVar6;\n  \n  __s = (char *)FUN_00118930(param_1 + 0x60);\n  uVar6 = param_3 - 1;\n  if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }\n                    \n  abort();\n}\n\n" (function_definition "undefined8 FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  char *__s;\n  size_t sVar3;\n  size_t sVar4;\n  char *__s_00;\n  undefined8 uVar5;\n  uint uVar6;\n  \n  __s = (char *)FUN_00118930(param_1 + 0x60);\n  uVar6 = param_3 - 1;\n  if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }\n                    \n  abort();\n}" type_identifier (function_declarator "FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,char *param_2,int param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  char *__s;\n  size_t sVar3;\n  size_t sVar4;\n  char *__s_00;\n  undefined8 uVar5;\n  uint uVar6;\n  \n  __s = (char *)FUN_00118930(param_1 + 0x60);\n  uVar6 = param_3 - 1;\n  if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }\n                    \n  abort();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "__s = (char *)FUN_00118930(param_1 + 0x60);" (assignment_expression "__s = (char *)FUN_00118930(param_1 + 0x60)" identifier = (cast_expression "(char *)FUN_00118930(param_1 + 0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00118930(param_1 + 0x60)" identifier (argument_list "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = param_3 - 1;" (assignment_expression "uVar6 = param_3 - 1" identifier = (binary_expression "param_3 - 1" identifier - number_literal)) ;) (if_statement "if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }" if (parenthesized_expression "(uVar6 < 4)" ( (binary_expression "uVar6 < 4" identifier < number_literal) )) (compound_statement "{\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }" { (expression_statement "uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);" (assignment_expression "uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" identifier = (pointer_expression "*(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" * (cast_expression "(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00124310 + (ulong)uVar6 * 4)" ( (binary_expression "&DAT_00124310 + (ulong)uVar6 * 4" (pointer_expression "&DAT_00124310" & identifier) + (binary_expression "(ulong)uVar6 * 4" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "cVar1 = (&DAT_00124300)[uVar6];" (assignment_expression "cVar1 = (&DAT_00124300)[uVar6]" identifier = (subscript_expression "(&DAT_00124300)[uVar6]" (parenthesized_expression "(&DAT_00124300)" ( (pointer_expression "&DAT_00124300" & identifier) )) [ identifier ])) ;) (expression_statement "sVar3 = strlen(param_2);" (assignment_expression "sVar3 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "sVar4 = strlen(__s);" (assignment_expression "sVar4 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);" (assignment_expression "__s_00 = (char *)xmalloc(sVar3 + 3 + sVar4)" identifier = (cast_expression "(char *)xmalloc(sVar3 + 3 + sVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar3 + 3 + sVar4)" identifier (argument_list "(sVar3 + 3 + sVar4)" ( (binary_expression "sVar3 + 3 + sVar4" (binary_expression "sVar3 + 3" identifier + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);" (call_expression "sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s)" identifier (argument_list "(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s)" ( identifier , (string_literal ""%s:%c%s"" " string_content ") , identifier , (cast_expression "(ulong)(uint)(int)cVar1" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)(int)cVar1" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int)cVar1" ( (type_descriptor "int" primitive_type) ) identifier))) , identifier ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);" (assignment_expression "uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00)" identifier = (call_expression "FUN_00118330(param_1,uVar2,0,param_4,__s_00)" identifier (argument_list "(param_1,uVar2,0,param_4,__s_00)" ( identifier , identifier , number_literal , identifier , identifier )))) ;) (if_statement "if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }" if (parenthesized_expression "((int)uVar5 != 0)" ( (binary_expression "(int)uVar5 != 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n      free(__s_00);\n      uVar5 = 1;\n    }" { (expression_statement "free(__s_00);" (call_expression "free(__s_00)" identifier (argument_list "(__s_00)" ( identifier ))) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (return_statement "return uVar5;" return identifier ;) })) (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined8 FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  char *__s;\n  size_t sVar3;\n  size_t sVar4;\n  char *__s_00;\n  undefined8 uVar5;\n  uint uVar6;\n  \n  __s = (char *)FUN_00118930(param_1 + 0x60);\n  uVar6 = param_3 - 1;\n  if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }\n                    \n  abort();\n}" (type_identifier "undefined8") (function_declarator "FUN_001190d0(long param_1,char *param_2,int param_3,undefined8 param_4)" (identifier "FUN_001190d0") (parameter_list "(long param_1,char *param_2,int param_3,undefined8 param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  char *__s;\n  size_t sVar3;\n  size_t sVar4;\n  char *__s_00;\n  undefined8 uVar5;\n  uint uVar6;\n  \n  __s = (char *)FUN_00118930(param_1 + 0x60);\n  uVar6 = param_3 - 1;\n  if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }\n                    \n  abort();\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "char *__s_00;" (primitive_type "char") (pointer_declarator "*__s_00" (* "*") (identifier "__s_00")) (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (expression_statement "__s = (char *)FUN_00118930(param_1 + 0x60);" (assignment_expression "__s = (char *)FUN_00118930(param_1 + 0x60)" (identifier "__s") (= "=") (cast_expression "(char *)FUN_00118930(param_1 + 0x60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00118930(param_1 + 0x60)" (identifier "FUN_00118930") (argument_list "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "uVar6 = param_3 - 1;" (assignment_expression "uVar6 = param_3 - 1" (identifier "uVar6") (= "=") (binary_expression "param_3 - 1" (identifier "param_3") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar6 < 4) {\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }" (if "if") (parenthesized_expression "(uVar6 < 4)" (( "(") (binary_expression "uVar6 < 4" (identifier "uVar6") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);\n    cVar1 = (&DAT_00124300)[uVar6];\n    sVar3 = strlen(param_2);\n    sVar4 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);\n    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);\n    free(__s);\n    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);\n    if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }\n    return uVar5;\n  }" ({ "{") (expression_statement "uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);" (assignment_expression "uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" (* "*") (cast_expression "(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00124310 + (ulong)uVar6 * 4)" (( "(") (binary_expression "&DAT_00124310 + (ulong)uVar6 * 4" (pointer_expression "&DAT_00124310" (& "&") (identifier "DAT_00124310")) (+ "+") (binary_expression "(ulong)uVar6 * 4" (cast_expression "(ulong)uVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar6")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "cVar1 = (&DAT_00124300)[uVar6];" (assignment_expression "cVar1 = (&DAT_00124300)[uVar6]" (identifier "cVar1") (= "=") (subscript_expression "(&DAT_00124300)[uVar6]" (parenthesized_expression "(&DAT_00124300)" (( "(") (pointer_expression "&DAT_00124300" (& "&") (identifier "DAT_00124300")) () ")")) ([ "[") (identifier "uVar6") (] "]"))) (; ";")) (expression_statement "sVar3 = strlen(param_2);" (assignment_expression "sVar3 = strlen(param_2)" (identifier "sVar3") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "sVar4 = strlen(__s);" (assignment_expression "sVar4 = strlen(__s)" (identifier "sVar4") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "__s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);" (assignment_expression "__s_00 = (char *)xmalloc(sVar3 + 3 + sVar4)" (identifier "__s_00") (= "=") (cast_expression "(char *)xmalloc(sVar3 + 3 + sVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar3 + 3 + sVar4)" (identifier "xmalloc") (argument_list "(sVar3 + 3 + sVar4)" (( "(") (binary_expression "sVar3 + 3 + sVar4" (binary_expression "sVar3 + 3" (identifier "sVar3") (+ "+") (number_literal "3")) (+ "+") (identifier "sVar4")) () ")"))))) (; ";")) (expression_statement "sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);" (call_expression "sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s)" (identifier "sprintf") (argument_list "(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s)" (( "(") (identifier "__s_00") (, ",") (string_literal ""%s:%c%s"" (" """) (string_content "%s:%c%s") (" """)) (, ",") (identifier "param_2") (, ",") (cast_expression "(ulong)(uint)(int)cVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(uint)(int)cVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(int)cVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar1")))) (, ",") (identifier "__s") () ")"))) (; ";")) (expression_statement "free(__s);" (call_expression "free(__s)" (identifier "free") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (expression_statement "uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);" (assignment_expression "uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00)" (identifier "uVar5") (= "=") (call_expression "FUN_00118330(param_1,uVar2,0,param_4,__s_00)" (identifier "FUN_00118330") (argument_list "(param_1,uVar2,0,param_4,__s_00)" (( "(") (identifier "param_1") (, ",") (identifier "uVar2") (, ",") (number_literal "0") (, ",") (identifier "param_4") (, ",") (identifier "__s_00") () ")")))) (; ";")) (if_statement "if ((int)uVar5 != 0) {\n      free(__s_00);\n      uVar5 = 1;\n    }" (if "if") (parenthesized_expression "((int)uVar5 != 0)" (( "(") (binary_expression "(int)uVar5 != 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      free(__s_00);\n      uVar5 = 1;\n    }" ({ "{") (expression_statement "free(__s_00);" (call_expression "free(__s_00)" (identifier "free") (argument_list "(__s_00)" (( "(") (identifier "__s_00") () ")"))) (; ";")) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (} "}"))) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

type_1 function_1(void *p,char *name,type_2 var_2,type_3 val)

{
  type_4 var_4;
  char cVar2;
  int type;
  type_1 var_13;
  char *__s;
  size_t var_8;
  size_t var_9;
  char *__s_00;
  type_5 *info;
  
  __s = var_1((type_5 *)((long)p + 0x60));
  var_4 = var_2 - var_3;
  if (var_4 < 4) {
    type = *(int *)(var_5 + (type_6)var_4 * 4);
    cVar2 = *(char *)((long)&CSWTCH_29 + (type_6)var_4);
    var_8 = var_6(name);
    var_9 = var_6(__s);
    __s_00 = (char *)var_7(var_8 + 3 + var_9);
    var_10(__s_00,"%s:%c%s",name,(type_6)(type_4)(int)cVar2,__s);
    var_11(__s);
    var_13 = var_12((type_5 *)p,type,0,val,__s_00);
    if (var_13 != 0) {
      var_11(__s_00);
      var_13 = 1;
    }
    return var_13;
  }
                    /* WARNING: Subroutine does not return */
  var_14();
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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 (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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 (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

undefined8 MASKED(long param_1,char *param_2,int param_3,undefined8 param_4)

{
  char cVar1;
  undefined4 uVar2;
  char *__s;
  size_t sVar3;
  size_t sVar4;
  char *__s_00;
  undefined8 uVar5;
  uint uVar6;
  
  __s = (char *)FUN_00118930(param_1 + 0x60);
  uVar6 = param_3 - 1;
  if (uVar6 < 4) {
    uVar2 = *(undefined4 *)(&DAT_00124310 + (ulong)uVar6 * 4);
    cVar1 = (&DAT_00124300)[uVar6];
    sVar3 = strlen(param_2);
    sVar4 = strlen(__s);
    __s_00 = (char *)xmalloc(sVar3 + 3 + sVar4);
    sprintf(__s_00,"%s:%c%s",param_2,(ulong)(uint)(int)cVar1,__s);
    free(__s);
    uVar5 = FUN_00118330(param_1,uVar2,0,param_4,__s_00);
    if ((int)uVar5 != 0) {
      free(__s_00);
      uVar5 = 1;
    }
    return uVar5;
  }
                    /* WARNING: Subroutine does not return */
  abort();
}

