
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void rl_initialize_funmap(void)

{
  rl_command_func_t *function;
  char *name;
  int iVar1;
  char *pcVar2;
  int unaff_EDI;
  
  __x86_get_pc_thunk_di();
  iVar1 = 0;
  function = (rl_command_func_t *)((int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a);
  name = (char *)(unaff_EDI + 0x3b185);
  pcVar2 = (char *)(unaff_EDI + 0x3b179);
  while( true ) {
    iVar1 = iVar1 + 1;
    rl_add_funmap_entry(name,function);
    if (pcVar2 == (char *)0x0) break;
    function = *(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e);
    name = pcVar2;
    pcVar2 = *(char **)(unaff_EDI + 0x7f442 + iVar1 * 8);
  }
  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;
  *(int *)(unaff_EDI + 0x8d776) = iVar1;
  return;
}



void FUN_000ca220(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int unaff_EDI;
  
  FUN_00042933();
  iVar3 = 0;
  iVar1 = unaff_EDI + 0x12f6a;
  iVar2 = unaff_EDI + 0x3b185;
  iVar4 = unaff_EDI + 0x3b179;
  while( true ) {
    iVar3 = iVar3 + 1;
    rl_add_funmap_entry(iVar2,iVar1);
    if (iVar4 == 0) break;
    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);
    iVar2 = iVar4;
    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);
  }
  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;
  *(int *)(unaff_EDI + 0x8d776) = iVar3;
  return;
}


PUSH EDI
CALL 0x00042933
ADD EDI,0x7fdda
PUSH ESI
PUSH EBX
XOR EBX,EBX
LEA ESI,[EDI + 0xfffbb39f]
LEA ECX,[EDI + 0xfff93190]
LEA EDX,[EDI + 0xfffbb3ab]
JMP 0x000ca25f
LEA EAX,[EBX*0x8 + 0x0]
MOV EDX,ESI
MOV ECX,dword ptr [EAX + EDI*0x1 + 0xfffff664]
MOV ESI,dword ptr [EDI + EAX*0x1 + 0xfffff668]
SUB ESP,0x8
ADD EBX,0x1
PUSH ECX
PUSH EDX
CALL 0x000ca180
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x000ca248
MOV dword ptr [EDI + 0x7c2c],0x1
LEA EAX,[EDI + 0xd99c]
MOV dword ptr [EAX],EBX
POP EBX
POP ESI
POP EDI
RET
(translation_unit "void FUN_000ca220(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int unaff_EDI;\n  \n  FUN_00042933();\n  iVar3 = 0;\n  iVar1 = unaff_EDI + 0x12f6a;\n  iVar2 = unaff_EDI + 0x3b185;\n  iVar4 = unaff_EDI + 0x3b179;\n  while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar3;\n  return;\n}\n\n" (function_definition "void FUN_000ca220(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int unaff_EDI;\n  \n  FUN_00042933();\n  iVar3 = 0;\n  iVar1 = unaff_EDI + 0x12f6a;\n  iVar2 = unaff_EDI + 0x3b185;\n  iVar4 = unaff_EDI + 0x3b179;\n  while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar3;\n  return;\n}" primitive_type (function_declarator "FUN_000ca220(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int unaff_EDI;\n  \n  FUN_00042933();\n  iVar3 = 0;\n  iVar1 = unaff_EDI + 0x12f6a;\n  iVar2 = unaff_EDI + 0x3b185;\n  iVar4 = unaff_EDI + 0x3b179;\n  while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar3;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "FUN_00042933();" (call_expression "FUN_00042933()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = unaff_EDI + 0x12f6a;" (assignment_expression "iVar1 = unaff_EDI + 0x12f6a" identifier = (binary_expression "unaff_EDI + 0x12f6a" identifier + number_literal)) ;) (expression_statement "iVar2 = unaff_EDI + 0x3b185;" (assignment_expression "iVar2 = unaff_EDI + 0x3b185" identifier = (binary_expression "unaff_EDI + 0x3b185" identifier + number_literal)) ;) (expression_statement "iVar4 = unaff_EDI + 0x3b179;" (assignment_expression "iVar4 = unaff_EDI + 0x3b179" identifier = (binary_expression "unaff_EDI + 0x3b179" identifier + number_literal)) ;) (while_statement "while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }" { (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "rl_add_funmap_entry(iVar2,iVar1);" (call_expression "rl_add_funmap_entry(iVar2,iVar1)" identifier (argument_list "(iVar2,iVar1)" ( identifier , identifier ))) ;) (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);" (assignment_expression "iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" identifier = (pointer_expression "*(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" * (cast_expression "(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 * 8 + unaff_EDI + 0x7f43e)" ( (binary_expression "iVar3 * 8 + unaff_EDI + 0x7f43e" (binary_expression "iVar3 * 8 + unaff_EDI" (binary_expression "iVar3 * 8" identifier * number_literal) + identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);" (assignment_expression "iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" identifier = (pointer_expression "*(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" * (cast_expression "(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x7f442 + iVar3 * 8)" ( (binary_expression "unaff_EDI + 0x7f442 + iVar3 * 8" (binary_expression "unaff_EDI + 0x7f442" identifier + number_literal) + (binary_expression "iVar3 * 8" identifier * number_literal)) ))))) ;) })) (expression_statement "*(undefined4 *)(unaff_EDI + 0x87a06) = 1;" (assignment_expression "*(undefined4 *)(unaff_EDI + 0x87a06) = 1" (pointer_expression "*(undefined4 *)(unaff_EDI + 0x87a06)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x87a06)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x87a06)" ( (binary_expression "unaff_EDI + 0x87a06" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(unaff_EDI + 0x8d776) = iVar3;" (assignment_expression "*(int *)(unaff_EDI + 0x8d776) = iVar3" (pointer_expression "*(int *)(unaff_EDI + 0x8d776)" * (cast_expression "(int *)(unaff_EDI + 0x8d776)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x8d776)" ( (binary_expression "unaff_EDI + 0x8d776" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid rl_initialize_funmap(void)\n\n{\n  rl_command_func_t *function;\n  char *name;\n  int iVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  \n  __x86_get_pc_thunk_di();\n  iVar1 = 0;\n  function = (rl_command_func_t *)((int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a);\n  name = (char *)(unaff_EDI + 0x3b185);\n  pcVar2 = (char *)(unaff_EDI + 0x3b179);\n  while( true ) {\n    iVar1 = iVar1 + 1;\n    rl_add_funmap_entry(name,function);\n    if (pcVar2 == (char *)0x0) break;\n    function = *(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e);\n    name = pcVar2;\n    pcVar2 = *(char **)(unaff_EDI + 0x7f442 + iVar1 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar1;\n  return;\n}\n\n" comment (function_definition "void rl_initialize_funmap(void)\n\n{\n  rl_command_func_t *function;\n  char *name;\n  int iVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  \n  __x86_get_pc_thunk_di();\n  iVar1 = 0;\n  function = (rl_command_func_t *)((int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a);\n  name = (char *)(unaff_EDI + 0x3b185);\n  pcVar2 = (char *)(unaff_EDI + 0x3b179);\n  while( true ) {\n    iVar1 = iVar1 + 1;\n    rl_add_funmap_entry(name,function);\n    if (pcVar2 == (char *)0x0) break;\n    function = *(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e);\n    name = pcVar2;\n    pcVar2 = *(char **)(unaff_EDI + 0x7f442 + iVar1 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar1;\n  return;\n}" primitive_type (function_declarator "rl_initialize_funmap(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  rl_command_func_t *function;\n  char *name;\n  int iVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  \n  __x86_get_pc_thunk_di();\n  iVar1 = 0;\n  function = (rl_command_func_t *)((int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a);\n  name = (char *)(unaff_EDI + 0x3b185);\n  pcVar2 = (char *)(unaff_EDI + 0x3b179);\n  while( true ) {\n    iVar1 = iVar1 + 1;\n    rl_add_funmap_entry(name,function);\n    if (pcVar2 == (char *)0x0) break;\n    function = *(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e);\n    name = pcVar2;\n    pcVar2 = *(char **)(unaff_EDI + 0x7f442 + iVar1 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar1;\n  return;\n}" { (declaration "rl_command_func_t *function;" type_identifier (pointer_declarator "*function" * identifier) ;) (declaration "char *name;" primitive_type (pointer_declarator "*name" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "function = (rl_command_func_t *)((int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a);" (assignment_expression "function = (rl_command_func_t *)((int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a)" identifier = (cast_expression "(rl_command_func_t *)((int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a)" ( (type_descriptor "rl_command_func_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a)" ( (binary_expression "(int)DWORD_ARRAY_00012a10 + unaff_EDI + 0x55a" (binary_expression "(int)DWORD_ARRAY_00012a10 + unaff_EDI" (cast_expression "(int)DWORD_ARRAY_00012a10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "name = (char *)(unaff_EDI + 0x3b185);" (assignment_expression "name = (char *)(unaff_EDI + 0x3b185)" identifier = (cast_expression "(char *)(unaff_EDI + 0x3b185)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3b185)" ( (binary_expression "unaff_EDI + 0x3b185" identifier + number_literal) )))) ;) (expression_statement "pcVar2 = (char *)(unaff_EDI + 0x3b179);" (assignment_expression "pcVar2 = (char *)(unaff_EDI + 0x3b179)" identifier = (cast_expression "(char *)(unaff_EDI + 0x3b179)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3b179)" ( (binary_expression "unaff_EDI + 0x3b179" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    iVar1 = iVar1 + 1;\n    rl_add_funmap_entry(name,function);\n    if (pcVar2 == (char *)0x0) break;\n    function = *(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e);\n    name = pcVar2;\n    pcVar2 = *(char **)(unaff_EDI + 0x7f442 + iVar1 * 8);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = iVar1 + 1;\n    rl_add_funmap_entry(name,function);\n    if (pcVar2 == (char *)0x0) break;\n    function = *(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e);\n    name = pcVar2;\n    pcVar2 = *(char **)(unaff_EDI + 0x7f442 + iVar1 * 8);\n  }" { (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "rl_add_funmap_entry(name,function);" (call_expression "rl_add_funmap_entry(name,function)" identifier (argument_list "(name,function)" ( identifier , identifier ))) ;) (if_statement "if (pcVar2 == (char *)0x0) break;" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "function = *(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e);" (assignment_expression "function = *(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e)" identifier = (pointer_expression "*(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e)" * (cast_expression "(rl_command_func_t **)(iVar1 * 8 + unaff_EDI + 0x7f43e)" ( (type_descriptor "rl_command_func_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 * 8 + unaff_EDI + 0x7f43e)" ( (binary_expression "iVar1 * 8 + unaff_EDI + 0x7f43e" (binary_expression "iVar1 * 8 + unaff_EDI" (binary_expression "iVar1 * 8" identifier * number_literal) + identifier) + number_literal) ))))) ;) (expression_statement "name = pcVar2;" (assignment_expression "name = pcVar2" identifier = identifier) ;) (expression_statement "pcVar2 = *(char **)(unaff_EDI + 0x7f442 + iVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(unaff_EDI + 0x7f442 + iVar1 * 8)" identifier = (pointer_expression "*(char **)(unaff_EDI + 0x7f442 + iVar1 * 8)" * (cast_expression "(char **)(unaff_EDI + 0x7f442 + iVar1 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x7f442 + iVar1 * 8)" ( (binary_expression "unaff_EDI + 0x7f442 + iVar1 * 8" (binary_expression "unaff_EDI + 0x7f442" identifier + number_literal) + (binary_expression "iVar1 * 8" identifier * number_literal)) ))))) ;) })) (expression_statement "*(undefined4 *)(unaff_EDI + 0x87a06) = 1;" (assignment_expression "*(undefined4 *)(unaff_EDI + 0x87a06) = 1" (pointer_expression "*(undefined4 *)(unaff_EDI + 0x87a06)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x87a06)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x87a06)" ( (binary_expression "unaff_EDI + 0x87a06" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(unaff_EDI + 0x8d776) = iVar1;" (assignment_expression "*(int *)(unaff_EDI + 0x8d776) = iVar1" (pointer_expression "*(int *)(unaff_EDI + 0x8d776)" * (cast_expression "(int *)(unaff_EDI + 0x8d776)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x8d776)" ( (binary_expression "unaff_EDI + 0x8d776" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000ca220(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int unaff_EDI;\n  \n  FUN_00042933();\n  iVar3 = 0;\n  iVar1 = unaff_EDI + 0x12f6a;\n  iVar2 = unaff_EDI + 0x3b185;\n  iVar4 = unaff_EDI + 0x3b179;\n  while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar3;\n  return;\n}\n\n" (function_definition "void FUN_000ca220(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int unaff_EDI;\n  \n  FUN_00042933();\n  iVar3 = 0;\n  iVar1 = unaff_EDI + 0x12f6a;\n  iVar2 = unaff_EDI + 0x3b185;\n  iVar4 = unaff_EDI + 0x3b179;\n  while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar3;\n  return;\n}" primitive_type (function_declarator "FUN_000ca220(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int unaff_EDI;\n  \n  FUN_00042933();\n  iVar3 = 0;\n  iVar1 = unaff_EDI + 0x12f6a;\n  iVar2 = unaff_EDI + 0x3b185;\n  iVar4 = unaff_EDI + 0x3b179;\n  while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar3;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "FUN_00042933();" (call_expression "FUN_00042933()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = unaff_EDI + 0x12f6a;" (assignment_expression "iVar1 = unaff_EDI + 0x12f6a" identifier = (binary_expression "unaff_EDI + 0x12f6a" identifier + number_literal)) ;) (expression_statement "iVar2 = unaff_EDI + 0x3b185;" (assignment_expression "iVar2 = unaff_EDI + 0x3b185" identifier = (binary_expression "unaff_EDI + 0x3b185" identifier + number_literal)) ;) (expression_statement "iVar4 = unaff_EDI + 0x3b179;" (assignment_expression "iVar4 = unaff_EDI + 0x3b179" identifier = (binary_expression "unaff_EDI + 0x3b179" identifier + number_literal)) ;) (while_statement "while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }" { (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "rl_add_funmap_entry(iVar2,iVar1);" (call_expression "rl_add_funmap_entry(iVar2,iVar1)" identifier (argument_list "(iVar2,iVar1)" ( identifier , identifier ))) ;) (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);" (assignment_expression "iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" identifier = (pointer_expression "*(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" * (cast_expression "(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 * 8 + unaff_EDI + 0x7f43e)" ( (binary_expression "iVar3 * 8 + unaff_EDI + 0x7f43e" (binary_expression "iVar3 * 8 + unaff_EDI" (binary_expression "iVar3 * 8" identifier * number_literal) + identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);" (assignment_expression "iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" identifier = (pointer_expression "*(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" * (cast_expression "(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x7f442 + iVar3 * 8)" ( (binary_expression "unaff_EDI + 0x7f442 + iVar3 * 8" (binary_expression "unaff_EDI + 0x7f442" identifier + number_literal) + (binary_expression "iVar3 * 8" identifier * number_literal)) ))))) ;) })) (expression_statement "*(undefined4 *)(unaff_EDI + 0x87a06) = 1;" (assignment_expression "*(undefined4 *)(unaff_EDI + 0x87a06) = 1" (pointer_expression "*(undefined4 *)(unaff_EDI + 0x87a06)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x87a06)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x87a06)" ( (binary_expression "unaff_EDI + 0x87a06" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(unaff_EDI + 0x8d776) = iVar3;" (assignment_expression "*(int *)(unaff_EDI + 0x8d776) = iVar3" (pointer_expression "*(int *)(unaff_EDI + 0x8d776)" * (cast_expression "(int *)(unaff_EDI + 0x8d776)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x8d776)" ( (binary_expression "unaff_EDI + 0x8d776" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_000ca220(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int unaff_EDI;\n  \n  FUN_00042933();\n  iVar3 = 0;\n  iVar1 = unaff_EDI + 0x12f6a;\n  iVar2 = unaff_EDI + 0x3b185;\n  iVar4 = unaff_EDI + 0x3b179;\n  while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar3;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000ca220(void)" (identifier "FUN_000ca220") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int unaff_EDI;\n  \n  FUN_00042933();\n  iVar3 = 0;\n  iVar1 = unaff_EDI + 0x12f6a;\n  iVar2 = unaff_EDI + 0x3b185;\n  iVar4 = unaff_EDI + 0x3b179;\n  while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }\n  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;\n  *(int *)(unaff_EDI + 0x8d776) = iVar3;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (expression_statement "FUN_00042933();" (call_expression "FUN_00042933()" (identifier "FUN_00042933") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar1 = unaff_EDI + 0x12f6a;" (assignment_expression "iVar1 = unaff_EDI + 0x12f6a" (identifier "iVar1") (= "=") (binary_expression "unaff_EDI + 0x12f6a" (identifier "unaff_EDI") (+ "+") (number_literal "0x12f6a"))) (; ";")) (expression_statement "iVar2 = unaff_EDI + 0x3b185;" (assignment_expression "iVar2 = unaff_EDI + 0x3b185" (identifier "iVar2") (= "=") (binary_expression "unaff_EDI + 0x3b185" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b185"))) (; ";")) (expression_statement "iVar4 = unaff_EDI + 0x3b179;" (assignment_expression "iVar4 = unaff_EDI + 0x3b179" (identifier "iVar4") (= "=") (binary_expression "unaff_EDI + 0x3b179" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b179"))) (; ";")) (while_statement "while( true ) {\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar3 = iVar3 + 1;\n    rl_add_funmap_entry(iVar2,iVar1);\n    if (iVar4 == 0) break;\n    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);\n    iVar2 = iVar4;\n    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);\n  }" ({ "{") (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "rl_add_funmap_entry(iVar2,iVar1);" (call_expression "rl_add_funmap_entry(iVar2,iVar1)" (identifier "rl_add_funmap_entry") (argument_list "(iVar2,iVar1)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar1") () ")"))) (; ";")) (if_statement "if (iVar4 == 0) break;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);" (assignment_expression "iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" (* "*") (cast_expression "(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 * 8 + unaff_EDI + 0x7f43e)" (( "(") (binary_expression "iVar3 * 8 + unaff_EDI + 0x7f43e" (binary_expression "iVar3 * 8 + unaff_EDI" (binary_expression "iVar3 * 8" (identifier "iVar3") (* "*") (number_literal "8")) (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x7f43e")) () ")"))))) (; ";")) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (expression_statement "iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);" (assignment_expression "iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x7f442 + iVar3 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x7f442 + iVar3 * 8)" (( "(") (binary_expression "unaff_EDI + 0x7f442 + iVar3 * 8" (binary_expression "unaff_EDI + 0x7f442" (identifier "unaff_EDI") (+ "+") (number_literal "0x7f442")) (+ "+") (binary_expression "iVar3 * 8" (identifier "iVar3") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(unaff_EDI + 0x87a06) = 1;" (assignment_expression "*(undefined4 *)(unaff_EDI + 0x87a06) = 1" (pointer_expression "*(undefined4 *)(unaff_EDI + 0x87a06)" (* "*") (cast_expression "(undefined4 *)(unaff_EDI + 0x87a06)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x87a06)" (( "(") (binary_expression "unaff_EDI + 0x87a06" (identifier "unaff_EDI") (+ "+") (number_literal "0x87a06")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(unaff_EDI + 0x8d776) = iVar3;" (assignment_expression "*(int *)(unaff_EDI + 0x8d776) = iVar3" (pointer_expression "*(int *)(unaff_EDI + 0x8d776)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x8d776)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x8d776)" (( "(") (binary_expression "unaff_EDI + 0x8d776" (identifier "unaff_EDI") (+ "+") (number_literal "0x8d776")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  type_1 *function;
  char *name;
  int var_3;
  char *var_5;
  int var_2;
  
  var_1();
  var_3 = 0;
  function = (type_1 *)((int)DWORD_ARRAY_00012a10 + var_2 + 0x55a);
  name = (char *)(var_2 + 0x3b185);
  var_5 = (char *)(var_2 + 0x3b179);
  while( true ) {
    var_3 = var_3 + 1;
    var_4(name,function);
    if (var_5 == (char *)0x0) break;
    function = *(type_1 **)(var_3 * 8 + var_2 + 0x7f43e);
    name = var_5;
    var_5 = *(char **)(var_2 + 0x7f442 + var_3 * 8);
  }
  *(type_2 *)(var_2 + 0x87a06) = 1;
  *(int *)(var_2 + 0x8d776) = var_3;
  return;
}


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

void MASKED(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int unaff_EDI;
  
  FUN_00042933();
  iVar3 = 0;
  iVar1 = unaff_EDI + 0x12f6a;
  iVar2 = unaff_EDI + 0x3b185;
  iVar4 = unaff_EDI + 0x3b179;
  while( true ) {
    iVar3 = iVar3 + 1;
    rl_add_funmap_entry(iVar2,iVar1);
    if (iVar4 == 0) break;
    iVar1 = *(int *)(iVar3 * 8 + unaff_EDI + 0x7f43e);
    iVar2 = iVar4;
    iVar4 = *(int *)(unaff_EDI + 0x7f442 + iVar3 * 8);
  }
  *(undefined4 *)(unaff_EDI + 0x87a06) = 1;
  *(int *)(unaff_EDI + 0x8d776) = iVar3;
  return;
}

