
/* WARNING: Enum "DT": Some values do not have unique names */
/* __concat_size_t(char*, unsigned int, unsigned int) */

uint __concat_size_t(char *param_1,uint param_2,uint param_3)

{
  bool bVar1;
  undefined1 *puVar2;
  uint __n;
  int unaff_EDI;
  undefined1 auStack_40 [11];
  undefined1 local_35 [13];
  undefined1 *local_28;
  int local_24;
  undefined1 *local_20;
  
  __x86_get_pc_thunk_di();
  local_24 = unaff_EDI + 0xfaee7;
  local_28 = auStack_40;
  local_20 = local_35 + 1;
  puVar2 = local_20;
  do {
    puVar2 = puVar2 + -1;
    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);
    bVar1 = 9 < param_3;
    param_3 = param_3 / 10;
  } while (bVar1);
  __n = (int)local_20 - (int)puVar2;
  if (param_2 < __n) {
    __n = 0xffffffff;
  }
  else {
    memcpy(param_1,local_35 + (1 - __n),__n);
  }
  return __n;
}



uint FUN_00207110(void *param_1,uint param_2,uint param_3)

{
  bool bVar1;
  undefined1 *puVar2;
  uint __n;
  int unaff_EDI;
  undefined1 auStack_40 [11];
  undefined1 local_35 [13];
  undefined1 *local_28;
  int local_24;
  undefined1 *local_20;
  
  FUN_0004fb7e();
  local_24 = unaff_EDI + 0xfaee7;
  local_28 = auStack_40;
  local_20 = local_35 + 1;
  puVar2 = local_20;
  do {
    puVar2 = puVar2 + -1;
    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);
    bVar1 = 9 < param_3;
    param_3 = param_3 / 10;
  } while (bVar1);
  __n = (int)local_20 - (int)puVar2;
  if (param_2 < __n) {
    __n = 0xffffffff;
  }
  else {
    memcpy(param_1,local_35 + (1 - __n),__n);
  }
  return __n;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x0004fb7e
ADD EDI,0xfaee7
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV ECX,dword ptr [EBP + 0x10]
LEA EAX,[ESP + 0xf]
AND EAX,0xfffffff0
MOV dword ptr [EBP + -0x20],EDI
LEA EDI,[EDI + 0xfff3b15d]
MOV dword ptr [EBP + -0x24],EAX
ADD EAX,0xc
MOV dword ptr [EBP + -0x1c],EAX
MOV EBX,EAX
JMP 0x0020714a
MOV ECX,EDX
MOV EAX,ECX
MOV ESI,0xcccccccd
SUB EBX,0x1
MUL ESI
MOV ESI,ECX
SHR EDX,0x3
LEA EAX,[EDX + EDX*0x4]
ADD EAX,EAX
SUB ESI,EAX
MOVZX EAX,byte ptr [EDI + ESI*0x1]
MOV byte ptr [EBX],AL
CMP ECX,0x9
JA 0x00207148
MOV ESI,dword ptr [EBP + -0x1c]
SUB ESI,EBX
CMP ESI,dword ptr [EBP + 0xc]
JA 0x0020719c
MOV EAX,dword ptr [EBP + -0x24]
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x20]
PUSH ESI
SUB EAX,ESI
ADD EAX,0xc
PUSH EAX
PUSH dword ptr [EBP + 0x8]
CALL 0x000265c0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,0xffffffff
JMP 0x00207192
(translation_unit "uint FUN_00207110(void *param_1,uint param_2,uint param_3)\n\n{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  FUN_0004fb7e();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}\n\n" (function_definition "uint FUN_00207110(void *param_1,uint param_2,uint param_3)\n\n{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  FUN_0004fb7e();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}" type_identifier (function_declarator "FUN_00207110(void *param_1,uint param_2,uint param_3)" identifier (parameter_list "(void *param_1,uint param_2,uint param_3)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  FUN_0004fb7e();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint __n;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined1 auStack_40 [11];" type_identifier (array_declarator "auStack_40 [11]" identifier [ number_literal ]) ;) (declaration "undefined1 local_35 [13];" type_identifier (array_declarator "local_35 [13]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined1 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = unaff_EDI + 0xfaee7;" (assignment_expression "local_24 = unaff_EDI + 0xfaee7" identifier = (binary_expression "unaff_EDI + 0xfaee7" identifier + number_literal)) ;) (expression_statement "local_28 = auStack_40;" (assignment_expression "local_28 = auStack_40" identifier = identifier) ;) (expression_statement "local_20 = local_35 + 1;" (assignment_expression "local_20 = local_35 + 1" identifier = (binary_expression "local_35 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = local_20;" (assignment_expression "puVar2 = local_20" identifier = identifier) ;) (do_statement "do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);" do (compound_statement "{\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  }" { (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" identifier = (binary_expression "puVar2 + -1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);" (assignment_expression "*puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" * (cast_expression "(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x36044 + param_3 % 10)" ( (binary_expression "unaff_EDI + 0x36044 + param_3 % 10" (binary_expression "unaff_EDI + 0x36044" identifier + number_literal) + (binary_expression "param_3 % 10" identifier % number_literal)) ))))) ;) (expression_statement "bVar1 = 9 < param_3;" (assignment_expression "bVar1 = 9 < param_3" identifier = (binary_expression "9 < param_3" number_literal < identifier)) ;) (expression_statement "param_3 = param_3 / 10;" (assignment_expression "param_3 = param_3 / 10" identifier = (binary_expression "param_3 / 10" identifier / number_literal)) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;) (expression_statement "__n = (int)local_20 - (int)puVar2;" (assignment_expression "__n = (int)local_20 - (int)puVar2" identifier = (binary_expression "(int)local_20 - (int)puVar2" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" if (parenthesized_expression "(param_2 < __n)" ( (binary_expression "param_2 < __n" identifier < identifier) )) (compound_statement "{\n    __n = 0xffffffff;\n  }" { (expression_statement "__n = 0xffffffff;" (assignment_expression "__n = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" else (compound_statement "{\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" { (expression_statement "memcpy(param_1,local_35 + (1 - __n),__n);" (call_expression "memcpy(param_1,local_35 + (1 - __n),__n)" identifier (argument_list "(param_1,local_35 + (1 - __n),__n)" ( identifier , (binary_expression "local_35 + (1 - __n)" identifier + (parenthesized_expression "(1 - __n)" ( (binary_expression "1 - __n" number_literal - identifier) ))) , identifier ))) ;) }))) (return_statement "return __n;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* __concat_size_t(char*, unsigned int, unsigned int) */\n\nuint __concat_size_t(char *param_1,uint param_2,uint param_3)\n\n{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}\n\n" comment comment (function_definition "uint __concat_size_t(char *param_1,uint param_2,uint param_3)\n\n{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}" type_identifier (function_declarator "__concat_size_t(char *param_1,uint param_2,uint param_3)" identifier (parameter_list "(char *param_1,uint param_2,uint param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint __n;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined1 auStack_40 [11];" type_identifier (array_declarator "auStack_40 [11]" identifier [ number_literal ]) ;) (declaration "undefined1 local_35 [13];" type_identifier (array_declarator "local_35 [13]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined1 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = unaff_EDI + 0xfaee7;" (assignment_expression "local_24 = unaff_EDI + 0xfaee7" identifier = (binary_expression "unaff_EDI + 0xfaee7" identifier + number_literal)) ;) (expression_statement "local_28 = auStack_40;" (assignment_expression "local_28 = auStack_40" identifier = identifier) ;) (expression_statement "local_20 = local_35 + 1;" (assignment_expression "local_20 = local_35 + 1" identifier = (binary_expression "local_35 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = local_20;" (assignment_expression "puVar2 = local_20" identifier = identifier) ;) (do_statement "do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);" do (compound_statement "{\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  }" { (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" identifier = (binary_expression "puVar2 + -1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);" (assignment_expression "*puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" * (cast_expression "(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x36044 + param_3 % 10)" ( (binary_expression "unaff_EDI + 0x36044 + param_3 % 10" (binary_expression "unaff_EDI + 0x36044" identifier + number_literal) + (binary_expression "param_3 % 10" identifier % number_literal)) ))))) ;) (expression_statement "bVar1 = 9 < param_3;" (assignment_expression "bVar1 = 9 < param_3" identifier = (binary_expression "9 < param_3" number_literal < identifier)) ;) (expression_statement "param_3 = param_3 / 10;" (assignment_expression "param_3 = param_3 / 10" identifier = (binary_expression "param_3 / 10" identifier / number_literal)) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;) (expression_statement "__n = (int)local_20 - (int)puVar2;" (assignment_expression "__n = (int)local_20 - (int)puVar2" identifier = (binary_expression "(int)local_20 - (int)puVar2" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" if (parenthesized_expression "(param_2 < __n)" ( (binary_expression "param_2 < __n" identifier < identifier) )) (compound_statement "{\n    __n = 0xffffffff;\n  }" { (expression_statement "__n = 0xffffffff;" (assignment_expression "__n = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" else (compound_statement "{\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" { (expression_statement "memcpy(param_1,local_35 + (1 - __n),__n);" (call_expression "memcpy(param_1,local_35 + (1 - __n),__n)" identifier (argument_list "(param_1,local_35 + (1 - __n),__n)" ( identifier , (binary_expression "local_35 + (1 - __n)" identifier + (parenthesized_expression "(1 - __n)" ( (binary_expression "1 - __n" number_literal - identifier) ))) , identifier ))) ;) }))) (return_statement "return __n;" return identifier ;) })))
(translation_unit "uint FUN_00207110(void *param_1,uint param_2,uint param_3)\n\n{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  FUN_0004fb7e();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}\n\n" (function_definition "uint FUN_00207110(void *param_1,uint param_2,uint param_3)\n\n{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  FUN_0004fb7e();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}" type_identifier (function_declarator "FUN_00207110(void *param_1,uint param_2,uint param_3)" identifier (parameter_list "(void *param_1,uint param_2,uint param_3)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  FUN_0004fb7e();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint __n;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined1 auStack_40 [11];" type_identifier (array_declarator "auStack_40 [11]" identifier [ number_literal ]) ;) (declaration "undefined1 local_35 [13];" type_identifier (array_declarator "local_35 [13]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined1 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = unaff_EDI + 0xfaee7;" (assignment_expression "local_24 = unaff_EDI + 0xfaee7" identifier = (binary_expression "unaff_EDI + 0xfaee7" identifier + number_literal)) ;) (expression_statement "local_28 = auStack_40;" (assignment_expression "local_28 = auStack_40" identifier = identifier) ;) (expression_statement "local_20 = local_35 + 1;" (assignment_expression "local_20 = local_35 + 1" identifier = (binary_expression "local_35 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = local_20;" (assignment_expression "puVar2 = local_20" identifier = identifier) ;) (do_statement "do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);" do (compound_statement "{\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  }" { (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" identifier = (binary_expression "puVar2 + -1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);" (assignment_expression "*puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" * (cast_expression "(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x36044 + param_3 % 10)" ( (binary_expression "unaff_EDI + 0x36044 + param_3 % 10" (binary_expression "unaff_EDI + 0x36044" identifier + number_literal) + (binary_expression "param_3 % 10" identifier % number_literal)) ))))) ;) (expression_statement "bVar1 = 9 < param_3;" (assignment_expression "bVar1 = 9 < param_3" identifier = (binary_expression "9 < param_3" number_literal < identifier)) ;) (expression_statement "param_3 = param_3 / 10;" (assignment_expression "param_3 = param_3 / 10" identifier = (binary_expression "param_3 / 10" identifier / number_literal)) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;) (expression_statement "__n = (int)local_20 - (int)puVar2;" (assignment_expression "__n = (int)local_20 - (int)puVar2" identifier = (binary_expression "(int)local_20 - (int)puVar2" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" if (parenthesized_expression "(param_2 < __n)" ( (binary_expression "param_2 < __n" identifier < identifier) )) (compound_statement "{\n    __n = 0xffffffff;\n  }" { (expression_statement "__n = 0xffffffff;" (assignment_expression "__n = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" else (compound_statement "{\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" { (expression_statement "memcpy(param_1,local_35 + (1 - __n),__n);" (call_expression "memcpy(param_1,local_35 + (1 - __n),__n)" identifier (argument_list "(param_1,local_35 + (1 - __n),__n)" ( identifier , (binary_expression "local_35 + (1 - __n)" identifier + (parenthesized_expression "(1 - __n)" ( (binary_expression "1 - __n" number_literal - identifier) ))) , identifier ))) ;) }))) (return_statement "return __n;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT % LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT - IDENT) ))) , IDENT ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "uint FUN_00207110(void *param_1,uint param_2,uint param_3)\n\n{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  FUN_0004fb7e();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}" (type_identifier "uint") (function_declarator "FUN_00207110(void *param_1,uint param_2,uint param_3)" (identifier "FUN_00207110") (parameter_list "(void *param_1,uint param_2,uint param_3)" (( "(") (parameter_declaration "void *param_1" (primitive_type "void") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined1 *puVar2;\n  uint __n;\n  int unaff_EDI;\n  undefined1 auStack_40 [11];\n  undefined1 local_35 [13];\n  undefined1 *local_28;\n  int local_24;\n  undefined1 *local_20;\n  \n  FUN_0004fb7e();\n  local_24 = unaff_EDI + 0xfaee7;\n  local_28 = auStack_40;\n  local_20 = local_35 + 1;\n  puVar2 = local_20;\n  do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);\n  __n = (int)local_20 - (int)puVar2;\n  if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }\n  return __n;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint __n;" (type_identifier "uint") (identifier "__n") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined1 auStack_40 [11];" (type_identifier "undefined1") (array_declarator "auStack_40 [11]" (identifier "auStack_40") ([ "[") (number_literal "11") (] "]")) (; ";")) (declaration "undefined1 local_35 [13];" (type_identifier "undefined1") (array_declarator "local_35 [13]" (identifier "local_35") ([ "[") (number_literal "13") (] "]")) (; ";")) (declaration "undefined1 *local_28;" (type_identifier "undefined1") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "undefined1 *local_20;" (type_identifier "undefined1") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" (identifier "FUN_0004fb7e") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_24 = unaff_EDI + 0xfaee7;" (assignment_expression "local_24 = unaff_EDI + 0xfaee7" (identifier "local_24") (= "=") (binary_expression "unaff_EDI + 0xfaee7" (identifier "unaff_EDI") (+ "+") (number_literal "0xfaee7"))) (; ";")) (expression_statement "local_28 = auStack_40;" (assignment_expression "local_28 = auStack_40" (identifier "local_28") (= "=") (identifier "auStack_40")) (; ";")) (expression_statement "local_20 = local_35 + 1;" (assignment_expression "local_20 = local_35 + 1" (identifier "local_20") (= "=") (binary_expression "local_35 + 1" (identifier "local_35") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar2 = local_20;" (assignment_expression "puVar2 = local_20" (identifier "puVar2") (= "=") (identifier "local_20")) (; ";")) (do_statement "do {\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  } while (bVar1);" (do "do") (compound_statement "{\n    puVar2 = puVar2 + -1;\n    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);\n    bVar1 = 9 < param_3;\n    param_3 = param_3 / 10;\n  }" ({ "{") (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + -1" (identifier "puVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);" (assignment_expression "*puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "*(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" (* "*") (cast_expression "(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x36044 + param_3 % 10)" (( "(") (binary_expression "unaff_EDI + 0x36044 + param_3 % 10" (binary_expression "unaff_EDI + 0x36044" (identifier "unaff_EDI") (+ "+") (number_literal "0x36044")) (+ "+") (binary_expression "param_3 % 10" (identifier "param_3") (% "%") (number_literal "10"))) () ")"))))) (; ";")) (expression_statement "bVar1 = 9 < param_3;" (assignment_expression "bVar1 = 9 < param_3" (identifier "bVar1") (= "=") (binary_expression "9 < param_3" (number_literal "9") (< "<") (identifier "param_3"))) (; ";")) (expression_statement "param_3 = param_3 / 10;" (assignment_expression "param_3 = param_3 / 10" (identifier "param_3") (= "=") (binary_expression "param_3 / 10" (identifier "param_3") (/ "/") (number_literal "10"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (; ";")) (expression_statement "__n = (int)local_20 - (int)puVar2;" (assignment_expression "__n = (int)local_20 - (int)puVar2" (identifier "__n") (= "=") (binary_expression "(int)local_20 - (int)puVar2" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (- "-") (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")))) (; ";")) (if_statement "if (param_2 < __n) {\n    __n = 0xffffffff;\n  }\n  else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" (if "if") (parenthesized_expression "(param_2 < __n)" (( "(") (binary_expression "param_2 < __n" (identifier "param_2") (< "<") (identifier "__n")) () ")")) (compound_statement "{\n    __n = 0xffffffff;\n  }" ({ "{") (expression_statement "__n = 0xffffffff;" (assignment_expression "__n = 0xffffffff" (identifier "__n") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" (else "else") (compound_statement "{\n    memcpy(param_1,local_35 + (1 - __n),__n);\n  }" ({ "{") (expression_statement "memcpy(param_1,local_35 + (1 - __n),__n);" (call_expression "memcpy(param_1,local_35 + (1 - __n),__n)" (identifier "memcpy") (argument_list "(param_1,local_35 + (1 - __n),__n)" (( "(") (identifier "param_1") (, ",") (binary_expression "local_35 + (1 - __n)" (identifier "local_35") (+ "+") (parenthesized_expression "(1 - __n)" (( "(") (binary_expression "1 - __n" (number_literal "1") (- "-") (identifier "__n")) () ")"))) (, ",") (identifier "__n") () ")"))) (; ";")) (} "}")))) (return_statement "return __n;" (return "return") (identifier "__n") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* __concat_size_t(char*, unsigned int, unsigned int) */

type_1 function_1(char *param_1,type_1 var_6,type_1 var_5)

{
  bool bVar1;
  type_2 *var_4;
  type_1 var_7;
  int var_2;
  type_2 auStack_40 [11];
  type_2 var_3 [13];
  type_2 *local_28;
  int local_24;
  type_2 *local_20;
  
  var_1();
  local_24 = var_2 + 0xfaee7;
  local_28 = auStack_40;
  local_20 = var_3 + 1;
  var_4 = local_20;
  do {
    var_4 = var_4 + -1;
    *var_4 = *(type_2 *)(var_2 + 0x36044 + var_5 % 10);
    bVar1 = 9 < var_5;
    var_5 = var_5 / 10;
  } while (bVar1);
  var_7 = (int)local_20 - (int)var_4;
  if (var_6 < var_7) {
    var_7 = 0xffffffff;
  }
  else {
    var_8(param_1,var_3 + (1 - var_7),var_7);
  }
  return var_7;
}


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

uint MASKED(void *param_1,uint param_2,uint param_3)

{
  bool bVar1;
  undefined1 *puVar2;
  uint __n;
  int unaff_EDI;
  undefined1 auStack_40 [11];
  undefined1 local_35 [13];
  undefined1 *local_28;
  int local_24;
  undefined1 *local_20;
  
  FUN_0004fb7e();
  local_24 = unaff_EDI + 0xfaee7;
  local_28 = auStack_40;
  local_20 = local_35 + 1;
  puVar2 = local_20;
  do {
    puVar2 = puVar2 + -1;
    *puVar2 = *(undefined1 *)(unaff_EDI + 0x36044 + param_3 % 10);
    bVar1 = 9 < param_3;
    param_3 = param_3 / 10;
  } while (bVar1);
  __n = (int)local_20 - (int)puVar2;
  if (param_2 < __n) {
    __n = 0xffffffff;
  }
  else {
    memcpy(param_1,local_35 + (1 - __n),__n);
  }
  return __n;
}

