
char * dwarf_vmatoa_1(char *fmtch,dwarf_vma value,uint num_bytes)

{
  dwarf_vmatoa_buf *__s;
  char fmt [32];
  
  __s = dwarf_vmatoa_1::buf + dwarf_vmatoa_1::buf_pos;
  dwarf_vmatoa_1::buf_pos = dwarf_vmatoa_1::buf_pos + 1U & 0xf;
  if (num_bytes == 0) {
    if (fmtch == (char *)0x0) {
      sprintf(fmt,"%%%s","l");
    }
    else {
      sprintf(fmt,"%%%s%s","l",fmtch);
    }
    snprintf(__s->place,0x40,fmt,value);
    return __s->place;
  }
  snprintf(__s->place,0x40,"%16.16lx",value);
  if (8 < num_bytes) {
    num_bytes = 8;
  }
  return __s->place + (num_bytes * -2 + 0x10);
}



char * FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)

{
  char *__s;
  char acStack_38 [32];
  
  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;
  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;
  if (param_3 == 0) {
    if (param_1 == 0) {
      sprintf(acStack_38,"%%%s","l");
    }
    else {
      sprintf(acStack_38,"%%%s%s","l",param_1);
    }
    snprintf(__s,0x40,acStack_38,param_2);
    return __s;
  }
  snprintf(__s,0x40,"%16.16lx",param_2);
  if (8 < param_3) {
    param_3 = 8;
  }
  return __s + (param_3 * -2 + 0x10);
}


PUSH R12
MOV R12,RSI
PUSH RBP
MOV EBP,EDX
LEA RDX,[0x1576e0]
PUSH RBX
SUB RSP,0x20
MOVSXD RBX,dword ptr [0x00157ae0]
MOV RAX,RBX
SHL RBX,0x6
ADD EAX,0x1
ADD RBX,RDX
AND EAX,0xf
MOV dword ptr [0x00157ae0],EAX
TEST EBP,EBP
JNZ 0x0010ec50
MOV RBP,RSP
TEST RDI,RDI
JZ 0x0010ec30
MOV RCX,RDI
LEA RDX,[0x141ba6]
MOV RDI,RBP
XOR EAX,EAX
LEA RSI,[0x141839]
CALL 0x00107760
MOV RCX,R12
MOV RDX,RBP
MOV RDI,RBX
MOV ESI,0x40
XOR EAX,EAX
CALL 0x001072a0
ADD RSP,0x20
MOV RAX,RBX
POP RBX
POP RBP
POP R12
RET
LEA RDX,[0x141ba6]
LEA RSI,[0x141840]
MOV RDI,RBP
XOR EAX,EAX
CALL 0x00107760
JMP 0x0010ec08
MOV RCX,RSI
MOV RDI,RBX
XOR EAX,EAX
MOV ESI,0x40
LEA RDX,[0x141830]
CALL 0x001072a0
CMP EBP,0x8
MOV EAX,0x8
CMOVA EBP,EAX
ADD RSP,0x20
NEG EBP
LEA EAX,[RBP + RBP*0x1 + 0x10]
ADD RBX,RAX
MOV RAX,RBX
POP RBX
POP RBP
POP R12
RET
(translation_unit "char * FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)\n\n{\n  char *__s;\n  char acStack_38 [32];\n  \n  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;\n  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;\n  if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }\n  snprintf(__s,0x40,"%16.16lx",param_2);\n  if (8 < param_3) {\n    param_3 = 8;\n  }\n  return __s + (param_3 * -2 + 0x10);\n}\n\n" (function_definition "char * FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)\n\n{\n  char *__s;\n  char acStack_38 [32];\n  \n  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;\n  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;\n  if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }\n  snprintf(__s,0x40,"%16.16lx",param_2);\n  if (8 < param_3) {\n    param_3 = 8;\n  }\n  return __s + (param_3 * -2 + 0x10);\n}" primitive_type (pointer_declarator "* FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)" * (function_declarator "FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,uint param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  char *__s;\n  char acStack_38 [32];\n  \n  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;\n  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;\n  if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }\n  snprintf(__s,0x40,"%16.16lx",param_2);\n  if (8 < param_3) {\n    param_3 = 8;\n  }\n  return __s + (param_3 * -2 + 0x10);\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char acStack_38 [32];" primitive_type (array_declarator "acStack_38 [32]" identifier [ number_literal ]) ;) (expression_statement "__s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;" (assignment_expression "__s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40" identifier = (binary_expression "&DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40" (pointer_expression "&DAT_001576e0" & identifier) + (binary_expression "(long)(int)DAT_00157ae0 * 0x40" (cast_expression "(long)(int)DAT_00157ae0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)DAT_00157ae0" ( (type_descriptor "int" primitive_type) ) identifier)) * number_literal))) ;) (expression_statement "DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;" (assignment_expression "DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf" identifier = (binary_expression "DAT_00157ae0 + 1 & 0xf" (binary_expression "DAT_00157ae0 + 1" identifier + number_literal) & number_literal)) ;) (if_statement "if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }" { (if_statement "if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n      sprintf(acStack_38,"%%%s","l");\n    }" { (expression_statement "sprintf(acStack_38,"%%%s","l");" (call_expression "sprintf(acStack_38,"%%%s","l")" identifier (argument_list "(acStack_38,"%%%s","l")" ( identifier , (string_literal ""%%%s"" " string_content ") , (string_literal ""l"" " string_content ") ))) ;) }) (else_clause "else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" else (compound_statement "{\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" { (expression_statement "sprintf(acStack_38,"%%%s%s","l",param_1);" (call_expression "sprintf(acStack_38,"%%%s%s","l",param_1)" identifier (argument_list "(acStack_38,"%%%s%s","l",param_1)" ( identifier , (string_literal ""%%%s%s"" " string_content ") , (string_literal ""l"" " string_content ") , identifier ))) ;) }))) (expression_statement "snprintf(__s,0x40,acStack_38,param_2);" (call_expression "snprintf(__s,0x40,acStack_38,param_2)" identifier (argument_list "(__s,0x40,acStack_38,param_2)" ( identifier , number_literal , identifier , identifier ))) ;) (return_statement "return __s;" return identifier ;) })) (expression_statement "snprintf(__s,0x40,"%16.16lx",param_2);" (call_expression "snprintf(__s,0x40,"%16.16lx",param_2)" identifier (argument_list "(__s,0x40,"%16.16lx",param_2)" ( identifier , number_literal , (string_literal ""%16.16lx"" " string_content ") , identifier ))) ;) (if_statement "if (8 < param_3) {\n    param_3 = 8;\n  }" if (parenthesized_expression "(8 < param_3)" ( (binary_expression "8 < param_3" number_literal < identifier) )) (compound_statement "{\n    param_3 = 8;\n  }" { (expression_statement "param_3 = 8;" (assignment_expression "param_3 = 8" identifier = number_literal) ;) })) (return_statement "return __s + (param_3 * -2 + 0x10);" return (binary_expression "__s + (param_3 * -2 + 0x10)" identifier + (parenthesized_expression "(param_3 * -2 + 0x10)" ( (binary_expression "param_3 * -2 + 0x10" (binary_expression "param_3 * -2" identifier * number_literal) + number_literal) ))) ;) })))
(translation_unit "char * dwarf_vmatoa_1(char *fmtch,dwarf_vma value,uint num_bytes)\n\n{\n  dwarf_vmatoa_buf *__s;\n  char fmt [32];\n  \n  __s = dwarf_vmatoa_1::buf + dwarf_vmatoa_1::buf_pos;\n  dwarf_vmatoa_1::buf_pos = dwarf_vmatoa_1::buf_pos + 1U & 0xf;\n  if (num_bytes == 0) {\n    if (fmtch == (char *)0x0) {\n      sprintf(fmt,"%%%s","l");\n    }\n    else {\n      sprintf(fmt,"%%%s%s","l",fmtch);\n    }\n    snprintf(__s->place,0x40,fmt,value);\n    return __s->place;\n  }\n  snprintf(__s->place,0x40,"%16.16lx",value);\n  if (8 < num_bytes) {\n    num_bytes = 8;\n  }\n  return __s->place + (num_bytes * -2 + 0x10);\n}\n\n" (function_definition "char * dwarf_vmatoa_1(char *fmtch,dwarf_vma value,uint num_bytes)\n\n{\n  dwarf_vmatoa_buf *__s;\n  char fmt [32];\n  \n  __s = dwarf_vmatoa_1::buf + dwarf_vmatoa_1::buf_pos;\n  dwarf_vmatoa_1::buf_pos = dwarf_vmatoa_1::buf_pos + 1U & 0xf;\n  if (num_bytes == 0) {\n    if (fmtch == (char *)0x0) {\n      sprintf(fmt,"%%%s","l");\n    }\n    else {\n      sprintf(fmt,"%%%s%s","l",fmtch);\n    }\n    snprintf(__s->place,0x40,fmt,value);\n    return __s->place;\n  }\n  snprintf(__s->place,0x40,"%16.16lx",value);\n  if (8 < num_bytes) {\n    num_bytes = 8;\n  }\n  return __s->place + (num_bytes * -2 + 0x10);\n}" primitive_type (pointer_declarator "* dwarf_vmatoa_1(char *fmtch,dwarf_vma value,uint num_bytes)" * (function_declarator "dwarf_vmatoa_1(char *fmtch,dwarf_vma value,uint num_bytes)" identifier (parameter_list "(char *fmtch,dwarf_vma value,uint num_bytes)" ( (parameter_declaration "char *fmtch" primitive_type (pointer_declarator "*fmtch" * identifier)) , (parameter_declaration "dwarf_vma value" type_identifier identifier) , (parameter_declaration "uint num_bytes" type_identifier identifier) )))) (compound_statement "{\n  dwarf_vmatoa_buf *__s;\n  char fmt [32];\n  \n  __s = dwarf_vmatoa_1::buf + dwarf_vmatoa_1::buf_pos;\n  dwarf_vmatoa_1::buf_pos = dwarf_vmatoa_1::buf_pos + 1U & 0xf;\n  if (num_bytes == 0) {\n    if (fmtch == (char *)0x0) {\n      sprintf(fmt,"%%%s","l");\n    }\n    else {\n      sprintf(fmt,"%%%s%s","l",fmtch);\n    }\n    snprintf(__s->place,0x40,fmt,value);\n    return __s->place;\n  }\n  snprintf(__s->place,0x40,"%16.16lx",value);\n  if (8 < num_bytes) {\n    num_bytes = 8;\n  }\n  return __s->place + (num_bytes * -2 + 0x10);\n}" { (declaration "dwarf_vmatoa_buf *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "char fmt [32];" primitive_type (array_declarator "fmt [32]" identifier [ number_literal ]) ;) (expression_statement "__s = dwarf_vmatoa_1::buf + dwarf_vmatoa_1::buf_pos;" (binary_expression "__s = dwarf_vmatoa_1::buf + dwarf_vmatoa_1" (assignment_expression "__s = dwarf_vmatoa_1" identifier = identifier) (ERROR "::buf" : : identifier) + identifier) (ERROR "::buf_pos" : : identifier) ;) (labeled_statement "dwarf_vmatoa_1::buf_pos = dwarf_vmatoa_1::buf_pos + 1U & 0xf;" statement_identifier (ERROR "::buf_pos = dwarf_vmatoa_1:" : : (assignment_expression "buf_pos = dwarf_vmatoa_1" identifier = identifier) :) : (expression_statement "buf_pos + 1U & 0xf;" (binary_expression "buf_pos + 1U & 0xf" (binary_expression "buf_pos + 1U" identifier + number_literal) & number_literal) ;)) (if_statement "if (num_bytes == 0) {\n    if (fmtch == (char *)0x0) {\n      sprintf(fmt,"%%%s","l");\n    }\n    else {\n      sprintf(fmt,"%%%s%s","l",fmtch);\n    }\n    snprintf(__s->place,0x40,fmt,value);\n    return __s->place;\n  }" if (parenthesized_expression "(num_bytes == 0)" ( (binary_expression "num_bytes == 0" identifier == number_literal) )) (compound_statement "{\n    if (fmtch == (char *)0x0) {\n      sprintf(fmt,"%%%s","l");\n    }\n    else {\n      sprintf(fmt,"%%%s%s","l",fmtch);\n    }\n    snprintf(__s->place,0x40,fmt,value);\n    return __s->place;\n  }" { (if_statement "if (fmtch == (char *)0x0) {\n      sprintf(fmt,"%%%s","l");\n    }\n    else {\n      sprintf(fmt,"%%%s%s","l",fmtch);\n    }" if (parenthesized_expression "(fmtch == (char *)0x0)" ( (binary_expression "fmtch == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sprintf(fmt,"%%%s","l");\n    }" { (expression_statement "sprintf(fmt,"%%%s","l");" (call_expression "sprintf(fmt,"%%%s","l")" identifier (argument_list "(fmt,"%%%s","l")" ( identifier , (string_literal ""%%%s"" " string_content ") , (string_literal ""l"" " string_content ") ))) ;) }) (else_clause "else {\n      sprintf(fmt,"%%%s%s","l",fmtch);\n    }" else (compound_statement "{\n      sprintf(fmt,"%%%s%s","l",fmtch);\n    }" { (expression_statement "sprintf(fmt,"%%%s%s","l",fmtch);" (call_expression "sprintf(fmt,"%%%s%s","l",fmtch)" identifier (argument_list "(fmt,"%%%s%s","l",fmtch)" ( identifier , (string_literal ""%%%s%s"" " string_content ") , (string_literal ""l"" " string_content ") , identifier ))) ;) }))) (expression_statement "snprintf(__s->place,0x40,fmt,value);" (call_expression "snprintf(__s->place,0x40,fmt,value)" identifier (argument_list "(__s->place,0x40,fmt,value)" ( (field_expression "__s->place" identifier -> field_identifier) , number_literal , identifier , identifier ))) ;) (return_statement "return __s->place;" return (field_expression "__s->place" identifier -> field_identifier) ;) })) (expression_statement "snprintf(__s->place,0x40,"%16.16lx",value);" (call_expression "snprintf(__s->place,0x40,"%16.16lx",value)" identifier (argument_list "(__s->place,0x40,"%16.16lx",value)" ( (field_expression "__s->place" identifier -> field_identifier) , number_literal , (string_literal ""%16.16lx"" " string_content ") , identifier ))) ;) (if_statement "if (8 < num_bytes) {\n    num_bytes = 8;\n  }" if (parenthesized_expression "(8 < num_bytes)" ( (binary_expression "8 < num_bytes" number_literal < identifier) )) (compound_statement "{\n    num_bytes = 8;\n  }" { (expression_statement "num_bytes = 8;" (assignment_expression "num_bytes = 8" identifier = number_literal) ;) })) (return_statement "return __s->place + (num_bytes * -2 + 0x10);" return (binary_expression "__s->place + (num_bytes * -2 + 0x10)" (field_expression "__s->place" identifier -> field_identifier) + (parenthesized_expression "(num_bytes * -2 + 0x10)" ( (binary_expression "num_bytes * -2 + 0x10" (binary_expression "num_bytes * -2" identifier * number_literal) + number_literal) ))) ;) })))
(translation_unit "char * FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)\n\n{\n  char *__s;\n  char acStack_38 [32];\n  \n  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;\n  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;\n  if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }\n  snprintf(__s,0x40,"%16.16lx",param_2);\n  if (8 < param_3) {\n    param_3 = 8;\n  }\n  return __s + (param_3 * -2 + 0x10);\n}\n\n" (function_definition "char * FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)\n\n{\n  char *__s;\n  char acStack_38 [32];\n  \n  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;\n  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;\n  if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }\n  snprintf(__s,0x40,"%16.16lx",param_2);\n  if (8 < param_3) {\n    param_3 = 8;\n  }\n  return __s + (param_3 * -2 + 0x10);\n}" primitive_type (pointer_declarator "* FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)" * (function_declarator "FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,uint param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  char *__s;\n  char acStack_38 [32];\n  \n  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;\n  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;\n  if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }\n  snprintf(__s,0x40,"%16.16lx",param_2);\n  if (8 < param_3) {\n    param_3 = 8;\n  }\n  return __s + (param_3 * -2 + 0x10);\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char acStack_38 [32];" primitive_type (array_declarator "acStack_38 [32]" identifier [ number_literal ]) ;) (expression_statement "__s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;" (assignment_expression "__s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40" identifier = (binary_expression "&DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40" (pointer_expression "&DAT_001576e0" & identifier) + (binary_expression "(long)(int)DAT_00157ae0 * 0x40" (cast_expression "(long)(int)DAT_00157ae0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)DAT_00157ae0" ( (type_descriptor "int" primitive_type) ) identifier)) * number_literal))) ;) (expression_statement "DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;" (assignment_expression "DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf" identifier = (binary_expression "DAT_00157ae0 + 1 & 0xf" (binary_expression "DAT_00157ae0 + 1" identifier + number_literal) & number_literal)) ;) (if_statement "if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }" { (if_statement "if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n      sprintf(acStack_38,"%%%s","l");\n    }" { (expression_statement "sprintf(acStack_38,"%%%s","l");" (call_expression "sprintf(acStack_38,"%%%s","l")" identifier (argument_list "(acStack_38,"%%%s","l")" ( identifier , (string_literal ""%%%s"" " string_content ") , (string_literal ""l"" " string_content ") ))) ;) }) (else_clause "else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" else (compound_statement "{\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" { (expression_statement "sprintf(acStack_38,"%%%s%s","l",param_1);" (call_expression "sprintf(acStack_38,"%%%s%s","l",param_1)" identifier (argument_list "(acStack_38,"%%%s%s","l",param_1)" ( identifier , (string_literal ""%%%s%s"" " string_content ") , (string_literal ""l"" " string_content ") , identifier ))) ;) }))) (expression_statement "snprintf(__s,0x40,acStack_38,param_2);" (call_expression "snprintf(__s,0x40,acStack_38,param_2)" identifier (argument_list "(__s,0x40,acStack_38,param_2)" ( identifier , number_literal , identifier , identifier ))) ;) (return_statement "return __s;" return identifier ;) })) (expression_statement "snprintf(__s,0x40,"%16.16lx",param_2);" (call_expression "snprintf(__s,0x40,"%16.16lx",param_2)" identifier (argument_list "(__s,0x40,"%16.16lx",param_2)" ( identifier , number_literal , (string_literal ""%16.16lx"" " string_content ") , identifier ))) ;) (if_statement "if (8 < param_3) {\n    param_3 = 8;\n  }" if (parenthesized_expression "(8 < param_3)" ( (binary_expression "8 < param_3" number_literal < identifier) )) (compound_statement "{\n    param_3 = 8;\n  }" { (expression_statement "param_3 = 8;" (assignment_expression "param_3 = 8" identifier = number_literal) ;) })) (return_statement "return __s + (param_3 * -2 + 0x10);" return (binary_expression "__s + (param_3 * -2 + 0x10)" identifier + (parenthesized_expression "(param_3 * -2 + 0x10)" ( (binary_expression "param_3 * -2 + 0x10" (binary_expression "param_3 * -2" identifier * number_literal) + number_literal) ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + LIT) ))) ;) })))
(function_definition "char * FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)\n\n{\n  char *__s;\n  char acStack_38 [32];\n  \n  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;\n  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;\n  if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }\n  snprintf(__s,0x40,"%16.16lx",param_2);\n  if (8 < param_3) {\n    param_3 = 8;\n  }\n  return __s + (param_3 * -2 + 0x10);\n}" (primitive_type "char") (pointer_declarator "* FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)" (* "*") (function_declarator "FUN_0010ebb0(long param_1,undefined8 param_2,uint param_3)" (identifier "FUN_0010ebb0") (parameter_list "(long param_1,undefined8 param_2,uint param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")")))) (compound_statement "{\n  char *__s;\n  char acStack_38 [32];\n  \n  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;\n  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;\n  if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }\n  snprintf(__s,0x40,"%16.16lx",param_2);\n  if (8 < param_3) {\n    param_3 = 8;\n  }\n  return __s + (param_3 * -2 + 0x10);\n}" ({ "{") (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "char acStack_38 [32];" (primitive_type "char") (array_declarator "acStack_38 [32]" (identifier "acStack_38") ([ "[") (number_literal "32") (] "]")) (; ";")) (expression_statement "__s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;" (assignment_expression "__s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40" (identifier "__s") (= "=") (binary_expression "&DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40" (pointer_expression "&DAT_001576e0" (& "&") (identifier "DAT_001576e0")) (+ "+") (binary_expression "(long)(int)DAT_00157ae0 * 0x40" (cast_expression "(long)(int)DAT_00157ae0" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)DAT_00157ae0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00157ae0"))) (* "*") (number_literal "0x40")))) (; ";")) (expression_statement "DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;" (assignment_expression "DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf" (identifier "DAT_00157ae0") (= "=") (binary_expression "DAT_00157ae0 + 1 & 0xf" (binary_expression "DAT_00157ae0 + 1" (identifier "DAT_00157ae0") (+ "+") (number_literal "1")) (& "&") (number_literal "0xf"))) (; ";")) (if_statement "if (param_3 == 0) {\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }\n    snprintf(__s,0x40,acStack_38,param_2);\n    return __s;\n  }" ({ "{") (if_statement "if (param_1 == 0) {\n      sprintf(acStack_38,"%%%s","l");\n    }\n    else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      sprintf(acStack_38,"%%%s","l");\n    }" ({ "{") (expression_statement "sprintf(acStack_38,"%%%s","l");" (call_expression "sprintf(acStack_38,"%%%s","l")" (identifier "sprintf") (argument_list "(acStack_38,"%%%s","l")" (( "(") (identifier "acStack_38") (, ",") (string_literal ""%%%s"" (" """) (string_content "%%%s") (" """)) (, ",") (string_literal ""l"" (" """) (string_content "l") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" (else "else") (compound_statement "{\n      sprintf(acStack_38,"%%%s%s","l",param_1);\n    }" ({ "{") (expression_statement "sprintf(acStack_38,"%%%s%s","l",param_1);" (call_expression "sprintf(acStack_38,"%%%s%s","l",param_1)" (identifier "sprintf") (argument_list "(acStack_38,"%%%s%s","l",param_1)" (( "(") (identifier "acStack_38") (, ",") (string_literal ""%%%s%s"" (" """) (string_content "%%%s%s") (" """)) (, ",") (string_literal ""l"" (" """) (string_content "l") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}")))) (expression_statement "snprintf(__s,0x40,acStack_38,param_2);" (call_expression "snprintf(__s,0x40,acStack_38,param_2)" (identifier "snprintf") (argument_list "(__s,0x40,acStack_38,param_2)" (( "(") (identifier "__s") (, ",") (number_literal "0x40") (, ",") (identifier "acStack_38") (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return __s;" (return "return") (identifier "__s") (; ";")) (} "}"))) (expression_statement "snprintf(__s,0x40,"%16.16lx",param_2);" (call_expression "snprintf(__s,0x40,"%16.16lx",param_2)" (identifier "snprintf") (argument_list "(__s,0x40,"%16.16lx",param_2)" (( "(") (identifier "__s") (, ",") (number_literal "0x40") (, ",") (string_literal ""%16.16lx"" (" """) (string_content "%16.16lx") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (if_statement "if (8 < param_3) {\n    param_3 = 8;\n  }" (if "if") (parenthesized_expression "(8 < param_3)" (( "(") (binary_expression "8 < param_3" (number_literal "8") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n    param_3 = 8;\n  }" ({ "{") (expression_statement "param_3 = 8;" (assignment_expression "param_3 = 8" (identifier "param_3") (= "=") (number_literal "8")) (; ";")) (} "}"))) (return_statement "return __s + (param_3 * -2 + 0x10);" (return "return") (binary_expression "__s + (param_3 * -2 + 0x10)" (identifier "__s") (+ "+") (parenthesized_expression "(param_3 * -2 + 0x10)" (( "(") (binary_expression "param_3 * -2 + 0x10" (binary_expression "param_3 * -2" (identifier "param_3") (* "*") (number_literal "-2")) (+ "+") (number_literal "0x10")) () ")"))) (; ";")) (} "}")))

char * function_1(char *var_3,type_1 value,type_2 var_2)

{
  type_3 *__s;
  char fmt [32];
  
  __s = function_1::buf + function_1::var_1;
  dwarf_vmatoa_1::var_1 = function_1::var_1 + 1U & 0xf;
  if (var_2 == 0) {
    if (var_3 == (char *)0x0) {
      var_4(fmt,"%%%s","l");
    }
    else {
      var_4(fmt,"%%%s%s","l",var_3);
    }
    var_5(__s->place,0x40,fmt,value);
    return __s->place;
  }
  var_5(__s->place,0x40,"%16.16lx",value);
  if (8 < var_2) {
    var_2 = 8;
  }
  return __s->place + (var_2 * -2 + 0x10);
}


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

char * MASKED(long param_1,undefined8 param_2,uint param_3)

{
  char *__s;
  char acStack_38 [32];
  
  __s = &DAT_001576e0 + (long)(int)DAT_00157ae0 * 0x40;
  DAT_00157ae0 = DAT_00157ae0 + 1 & 0xf;
  if (param_3 == 0) {
    if (param_1 == 0) {
      sprintf(acStack_38,"%%%s","l");
    }
    else {
      sprintf(acStack_38,"%%%s%s","l",param_1);
    }
    snprintf(__s,0x40,acStack_38,param_2);
    return __s;
  }
  snprintf(__s,0x40,"%16.16lx",param_2);
  if (8 < param_3) {
    param_3 = 8;
  }
  return __s + (param_3 * -2 + 0x10);
}

