
int sober128_ready(prng_state *prng)

{
  int iVar1;
  
  if (prng == (prng_state *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);
  }
  iVar1 = 0;
  if (prng->ready == 0) {
    iVar1 = sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20);
    if (iVar1 == 0) {
      iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);
      if (iVar1 == 0) {
        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;
        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;
        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;
        (prng->field_0).chacha.idx = 0;
        prng->ready = 1;
        return 0;
      }
    }
  }
  return iVar1;
}



undefined8 sober128_ready(long param_1)

{
  undefined8 uVar1;
  
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);
  }
  uVar1 = 0;
  if (*(short *)(param_1 + 0x44f0) == 0) {
    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);
    if ((int)uVar1 == 0) {
      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);
      if ((int)uVar1 == 0) {
        *(undefined8 *)(param_1 + 0xb4) = 0;
        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;
        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;
        *(undefined8 *)(param_1 + 0xc0) = 0;
        *(undefined2 *)(param_1 + 0x44f0) = 1;
        return uVar1;
      }
    }
  }
  return uVar1;
}


PUSH RBP
PUSH RBX
SUB RSP,0x8
TEST RDI,RDI
JZ 0x001888b0
XOR EAX,EAX
CMP word ptr [RDI + 0x44f0],0x0
MOV RBX,RDI
JZ 0x00188848
ADD RSP,0x8
POP RBX
POP RBP
RET
LEA RSI,[RDI + 0x94]
MOV EDX,0x20
CALL 0x00114860
TEST EAX,EAX
JNZ 0x0018883e
LEA RSI,[RBX + 0xb4]
MOV EDX,0x8
MOV RDI,RBX
CALL 0x00113720
TEST EAX,EAX
JNZ 0x0018883e
PXOR XMM0,XMM0
MOV EDX,0x1
MOV qword ptr [RBX + 0xb4],0x0
MOVUPS xmmword ptr [RBX + 0x94],XMM0
MOVUPS xmmword ptr [RBX + 0xa4],XMM0
MOV qword ptr [RBX + 0xc0],0x0
MOV word ptr [RBX + 0x44f0],DX
ADD RSP,0x8
POP RBX
POP RBP
RET
MOV EDX,0x61
LEA RSI,[0x1c7129]
LEA RDI,[0x1bfb0d]
CALL 0x00114270
(translation_unit "undefined8 sober128_ready(long param_1)\n\n{\n  undefined8 uVar1;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  uVar1 = 0;\n  if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined8 sober128_ready(long param_1)\n\n{\n  undefined8 uVar1;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  uVar1 = 0;\n  if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }\n  return uVar1;\n}" type_identifier (function_declarator "sober128_ready(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  uVar1 = 0;\n  if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }\n  return uVar1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (if_statement "if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }" { comment (expression_statement "crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);" (call_expression "crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61)" identifier (argument_list "("prng != NULL","src/prngs/sober128.c",0x61)" ( (string_literal ""prng != NULL"" " string_content ") , (string_literal ""src/prngs/sober128.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (if_statement "if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }" if (parenthesized_expression "(*(short *)(param_1 + 0x44f0) == 0)" ( (binary_expression "*(short *)(param_1 + 0x44f0) == 0" (pointer_expression "*(short *)(param_1 + 0x44f0)" * (cast_expression "(short *)(param_1 + 0x44f0)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44f0)" ( (binary_expression "param_1 + 0x44f0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }" { (expression_statement "uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);" (assignment_expression "uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20)" identifier = (call_expression "sober128_stream_setup(param_1,param_1 + 0x94,0x20)" identifier (argument_list "(param_1,param_1 + 0x94,0x20)" ( identifier , (binary_expression "param_1 + 0x94" identifier + number_literal) , number_literal )))) ;) (if_statement "if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }" if (parenthesized_expression "((int)uVar1 == 0)" ( (binary_expression "(int)uVar1 == 0" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }" { (expression_statement "uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);" (assignment_expression "uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8)" identifier = (call_expression "sober128_stream_setiv(param_1,param_1 + 0xb4,8)" identifier (argument_list "(param_1,param_1 + 0xb4,8)" ( identifier , (binary_expression "param_1 + 0xb4" identifier + number_literal) , number_literal )))) ;) (if_statement "if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }" if (parenthesized_expression "((int)uVar1 == 0)" ( (binary_expression "(int)uVar1 == 0" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }" { (expression_statement "*(undefined8 *)(param_1 + 0xb4) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xb4) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xb4)" * (cast_expression "(undefined8 *)(param_1 + 0xb4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;" (assignment_expression "*(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0" (pointer_expression "*(undefined1 (*) [16])(param_1 + 0x94)" * (cast_expression "(undefined1 (*) [16])(param_1 + 0x94)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;" (assignment_expression "*(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0" (pointer_expression "*(undefined1 (*) [16])(param_1 + 0xa4)" * (cast_expression "(undefined1 (*) [16])(param_1 + 0xa4)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) )))) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(undefined8 *)(param_1 + 0xc0) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xc0) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xc0)" * (cast_expression "(undefined8 *)(param_1 + 0xc0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc0)" ( (binary_expression "param_1 + 0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(param_1 + 0x44f0) = 1;" (assignment_expression "*(undefined2 *)(param_1 + 0x44f0) = 1" (pointer_expression "*(undefined2 *)(param_1 + 0x44f0)" * (cast_expression "(undefined2 *)(param_1 + 0x44f0)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44f0)" ( (binary_expression "param_1 + 0x44f0" identifier + number_literal) )))) = number_literal) ;) (return_statement "return uVar1;" return identifier ;) })) })) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "int sober128_ready(prng_state *prng)\n\n{\n  int iVar1;\n  \n  if (prng == (prng_state *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  iVar1 = 0;\n  if (prng->ready == 0) {\n    iVar1 = sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20);\n    if (iVar1 == 0) {\n      iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);\n      if (iVar1 == 0) {\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }\n    }\n  }\n  return iVar1;\n}\n\n" (function_definition "int sober128_ready(prng_state *prng)\n\n{\n  int iVar1;\n  \n  if (prng == (prng_state *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  iVar1 = 0;\n  if (prng->ready == 0) {\n    iVar1 = sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20);\n    if (iVar1 == 0) {\n      iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);\n      if (iVar1 == 0) {\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }\n    }\n  }\n  return iVar1;\n}" primitive_type (function_declarator "sober128_ready(prng_state *prng)" identifier (parameter_list "(prng_state *prng)" ( (parameter_declaration "prng_state *prng" type_identifier (pointer_declarator "*prng" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  \n  if (prng == (prng_state *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  iVar1 = 0;\n  if (prng->ready == 0) {\n    iVar1 = sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20);\n    if (iVar1 == 0) {\n      iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);\n      if (iVar1 == 0) {\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }\n    }\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (prng == (prng_state *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }" if (parenthesized_expression "(prng == (prng_state *)0x0)" ( (binary_expression "prng == (prng_state *)0x0" identifier == (cast_expression "(prng_state *)0x0" ( (type_descriptor "prng_state *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }" { comment (expression_statement "crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);" (call_expression "crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61)" identifier (argument_list "("prng != NULL","src/prngs/sober128.c",0x61)" ( (string_literal ""prng != NULL"" " string_content ") , (string_literal ""src/prngs/sober128.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (if_statement "if (prng->ready == 0) {\n    iVar1 = sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20);\n    if (iVar1 == 0) {\n      iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);\n      if (iVar1 == 0) {\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }\n    }\n  }" if (parenthesized_expression "(prng->ready == 0)" ( (binary_expression "prng->ready == 0" (field_expression "prng->ready" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    iVar1 = sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20);\n    if (iVar1 == 0) {\n      iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);\n      if (iVar1 == 0) {\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }\n    }\n  }" { (expression_statement "iVar1 = sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20);" (assignment_expression "iVar1 = sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20)" identifier = (call_expression "sober128_stream_setup((sober128_state *)prng,(prng->field_0).sober128.ent,0x20)" identifier (argument_list "((sober128_state *)prng,(prng->field_0).sober128.ent,0x20)" ( (cast_expression "(sober128_state *)prng" ( (type_descriptor "sober128_state *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "(prng->field_0).sober128.ent" (field_expression "(prng->field_0).sober128" (parenthesized_expression "(prng->field_0)" ( (field_expression "prng->field_0" identifier -> field_identifier) )) . field_identifier) . field_identifier) , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n      iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);\n      if (iVar1 == 0) {\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);\n      if (iVar1 == 0) {\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }\n    }" { (expression_statement "iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8);" (assignment_expression "iVar1 = sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8)" identifier = (call_expression "sober128_stream_setiv((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8)" identifier (argument_list "((sober128_state *)prng,(prng->field_0).chacha.ent + 0x1c,8)" ( (cast_expression "(sober128_state *)prng" ( (type_descriptor "sober128_state *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "(prng->field_0).chacha.ent + 0x1c" (field_expression "(prng->field_0).chacha.ent" (field_expression "(prng->field_0).chacha" (parenthesized_expression "(prng->field_0)" ( (field_expression "prng->field_0" identifier -> field_identifier) )) . field_identifier) . field_identifier) + number_literal) , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        *(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;\n        (prng->field_0).chacha.idx = 0;\n        prng->ready = 1;\n        return 0;\n      }" { (expression_statement "*(undefined8 *)((long)&prng->field_0 + 0xb4) = 0;" (assignment_expression "*(undefined8 *)((long)&prng->field_0 + 0xb4) = 0" (pointer_expression "*(undefined8 *)((long)&prng->field_0 + 0xb4)" * (cast_expression "(undefined8 *)((long)&prng->field_0 + 0xb4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&prng->field_0 + 0xb4)" ( (binary_expression "(long)&prng->field_0 + 0xb4" (cast_expression "(long)&prng->field_0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&prng->field_0" & (field_expression "prng->field_0" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0;" (assignment_expression "*(undefined1 (*) [16])((long)&prng->field_0 + 0x94) = (undefined1  [16])0x0" (pointer_expression "*(undefined1 (*) [16])((long)&prng->field_0 + 0x94)" * (cast_expression "(undefined1 (*) [16])((long)&prng->field_0 + 0x94)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "((long)&prng->field_0 + 0x94)" ( (binary_expression "(long)&prng->field_0 + 0x94" (cast_expression "(long)&prng->field_0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&prng->field_0" & (field_expression "prng->field_0" identifier -> field_identifier))) + number_literal) )))) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0;" (assignment_expression "*(undefined1 (*) [16])((long)&prng->field_0 + 0xa4) = (undefined1  [16])0x0" (pointer_expression "*(undefined1 (*) [16])((long)&prng->field_0 + 0xa4)" * (cast_expression "(undefined1 (*) [16])((long)&prng->field_0 + 0xa4)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "((long)&prng->field_0 + 0xa4)" ( (binary_expression "(long)&prng->field_0 + 0xa4" (cast_expression "(long)&prng->field_0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&prng->field_0" & (field_expression "prng->field_0" identifier -> field_identifier))) + number_literal) )))) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "(prng->field_0).chacha.idx = 0;" (assignment_expression "(prng->field_0).chacha.idx = 0" (field_expression "(prng->field_0).chacha.idx" (field_expression "(prng->field_0).chacha" (parenthesized_expression "(prng->field_0)" ( (field_expression "prng->field_0" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "prng->ready = 1;" (assignment_expression "prng->ready = 1" (field_expression "prng->ready" identifier -> field_identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) })) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "undefined8 sober128_ready(long param_1)\n\n{\n  undefined8 uVar1;\n  \n  if (param_1 == 0) {\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  uVar1 = 0;\n  if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined8 sober128_ready(long param_1)\n\n{\n  undefined8 uVar1;\n  \n  if (param_1 == 0) {\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  uVar1 = 0;\n  if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }\n  return uVar1;\n}" type_identifier (function_declarator "sober128_ready(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  \n  if (param_1 == 0) {\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  uVar1 = 0;\n  if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }\n  return uVar1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }" { (expression_statement "crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);" (call_expression "crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61)" identifier (argument_list "("prng != NULL","src/prngs/sober128.c",0x61)" ( (string_literal ""prng != NULL"" " string_content ") , (string_literal ""src/prngs/sober128.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (if_statement "if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }" if (parenthesized_expression "(*(short *)(param_1 + 0x44f0) == 0)" ( (binary_expression "*(short *)(param_1 + 0x44f0) == 0" (pointer_expression "*(short *)(param_1 + 0x44f0)" * (cast_expression "(short *)(param_1 + 0x44f0)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44f0)" ( (binary_expression "param_1 + 0x44f0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }" { (expression_statement "uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);" (assignment_expression "uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20)" identifier = (call_expression "sober128_stream_setup(param_1,param_1 + 0x94,0x20)" identifier (argument_list "(param_1,param_1 + 0x94,0x20)" ( identifier , (binary_expression "param_1 + 0x94" identifier + number_literal) , number_literal )))) ;) (if_statement "if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }" if (parenthesized_expression "((int)uVar1 == 0)" ( (binary_expression "(int)uVar1 == 0" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }" { (expression_statement "uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);" (assignment_expression "uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8)" identifier = (call_expression "sober128_stream_setiv(param_1,param_1 + 0xb4,8)" identifier (argument_list "(param_1,param_1 + 0xb4,8)" ( identifier , (binary_expression "param_1 + 0xb4" identifier + number_literal) , number_literal )))) ;) (if_statement "if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }" if (parenthesized_expression "((int)uVar1 == 0)" ( (binary_expression "(int)uVar1 == 0" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }" { (expression_statement "*(undefined8 *)(param_1 + 0xb4) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xb4) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xb4)" * (cast_expression "(undefined8 *)(param_1 + 0xb4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;" (assignment_expression "*(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0" (pointer_expression "*(undefined1 (*) [16])(param_1 + 0x94)" * (cast_expression "(undefined1 (*) [16])(param_1 + 0x94)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;" (assignment_expression "*(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0" (pointer_expression "*(undefined1 (*) [16])(param_1 + 0xa4)" * (cast_expression "(undefined1 (*) [16])(param_1 + 0xa4)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) )))) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(undefined8 *)(param_1 + 0xc0) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xc0) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xc0)" * (cast_expression "(undefined8 *)(param_1 + 0xc0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc0)" ( (binary_expression "param_1 + 0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(param_1 + 0x44f0) = 1;" (assignment_expression "*(undefined2 *)(param_1 + 0x44f0) = 1" (pointer_expression "*(undefined2 *)(param_1 + 0x44f0)" * (cast_expression "(undefined2 *)(param_1 + 0x44f0)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44f0)" ( (binary_expression "param_1 + 0x44f0" identifier + number_literal) )))) = number_literal) ;) (return_statement "return uVar1;" return identifier ;) })) })) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (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_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) 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) )))) = LIT) ;) (return_statement return IDENT ;) })) })) })) (return_statement return IDENT ;) })))
(function_definition "undefined8 sober128_ready(long param_1)\n\n{\n  undefined8 uVar1;\n  \n  if (param_1 == 0) {\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  uVar1 = 0;\n  if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }\n  return uVar1;\n}" (type_identifier "undefined8") (function_declarator "sober128_ready(long param_1)" (identifier "sober128_ready") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  \n  if (param_1 == 0) {\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }\n  uVar1 = 0;\n  if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }\n  return uVar1;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);\n  }" ({ "{") (expression_statement "crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);" (call_expression "crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61)" (identifier "crypt_argchk") (argument_list "("prng != NULL","src/prngs/sober128.c",0x61)" (( "(") (string_literal ""prng != NULL"" (" """) (string_content "prng != NULL") (" """)) (, ",") (string_literal ""src/prngs/sober128.c"" (" """) (string_content "src/prngs/sober128.c") (" """)) (, ",") (number_literal "0x61") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(short *)(param_1 + 0x44f0) == 0) {\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(short *)(param_1 + 0x44f0) == 0)" (( "(") (binary_expression "*(short *)(param_1 + 0x44f0) == 0" (pointer_expression "*(short *)(param_1 + 0x44f0)" (* "*") (cast_expression "(short *)(param_1 + 0x44f0)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44f0)" (( "(") (binary_expression "param_1 + 0x44f0" (identifier "param_1") (+ "+") (number_literal "0x44f0")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);\n    if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);" (assignment_expression "uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20)" (identifier "uVar1") (= "=") (call_expression "sober128_stream_setup(param_1,param_1 + 0x94,0x20)" (identifier "sober128_stream_setup") (argument_list "(param_1,param_1 + 0x94,0x20)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) (, ",") (number_literal "0x20") () ")")))) (; ";")) (if_statement "if ((int)uVar1 == 0) {\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }" (if "if") (parenthesized_expression "((int)uVar1 == 0)" (( "(") (binary_expression "(int)uVar1 == 0" (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);\n      if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }\n    }" ({ "{") (expression_statement "uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);" (assignment_expression "uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8)" (identifier "uVar1") (= "=") (call_expression "sober128_stream_setiv(param_1,param_1 + 0xb4,8)" (identifier "sober128_stream_setiv") (argument_list "(param_1,param_1 + 0xb4,8)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) (, ",") (number_literal "8") () ")")))) (; ";")) (if_statement "if ((int)uVar1 == 0) {\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }" (if "if") (parenthesized_expression "((int)uVar1 == 0)" (( "(") (binary_expression "(int)uVar1 == 0" (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined8 *)(param_1 + 0xb4) = 0;\n        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;\n        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;\n        *(undefined8 *)(param_1 + 0xc0) = 0;\n        *(undefined2 *)(param_1 + 0x44f0) = 1;\n        return uVar1;\n      }" ({ "{") (expression_statement "*(undefined8 *)(param_1 + 0xb4) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xb4) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xb4)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xb4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;" (assignment_expression "*(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0" (pointer_expression "*(undefined1 (*) [16])(param_1 + 0x94)" (* "*") (cast_expression "(undefined1 (*) [16])(param_1 + 0x94)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")")))) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;" (assignment_expression "*(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0" (pointer_expression "*(undefined1 (*) [16])(param_1 + 0xa4)" (* "*") (cast_expression "(undefined1 (*) [16])(param_1 + 0xa4)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")")))) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0xc0) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xc0) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xc0)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xc0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc0)" (( "(") (binary_expression "param_1 + 0xc0" (identifier "param_1") (+ "+") (number_literal "0xc0")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(param_1 + 0x44f0) = 1;" (assignment_expression "*(undefined2 *)(param_1 + 0x44f0) = 1" (pointer_expression "*(undefined2 *)(param_1 + 0x44f0)" (* "*") (cast_expression "(undefined2 *)(param_1 + 0x44f0)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44f0)" (( "(") (binary_expression "param_1 + 0x44f0" (identifier "param_1") (+ "+") (number_literal "0x44f0")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

int function_1(type_1 *var_1)

{
  int var_4;
  
  if (var_1 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("prng != NULL","src/prngs/sober128.c",0x61);
  }
  var_4 = 0;
  if (var_1->ready == 0) {
    var_4 = var_3((type_2 *)var_1,(var_1->field_0).sober128.ent,0x20);
    if (var_4 == 0) {
      var_4 = var_5((type_2 *)var_1,(var_1->field_0).chacha.ent + 0x1c,8);
      if (var_4 == 0) {
        *(type_3 *)((long)&var_1->field_0 + 0xb4) = 0;
        *(type_4 (*) [16])((long)&var_1->field_0 + 0x94) = (type_4  [16])0x0;
        *(type_4 (*) [16])((long)&var_1->field_0 + 0xa4) = (type_4  [16])0x0;
        (var_1->field_0).chacha.idx = 0;
        var_1->ready = 1;
        return 0;
      }
    }
  }
  return var_4;
}


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

undefined8 MASKED(long param_1)

{
  undefined8 uVar1;
  
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("prng != NULL","src/prngs/sober128.c",0x61);
  }
  uVar1 = 0;
  if (*(short *)(param_1 + 0x44f0) == 0) {
    uVar1 = sober128_stream_setup(param_1,param_1 + 0x94,0x20);
    if ((int)uVar1 == 0) {
      uVar1 = sober128_stream_setiv(param_1,param_1 + 0xb4,8);
      if ((int)uVar1 == 0) {
        *(undefined8 *)(param_1 + 0xb4) = 0;
        *(undefined1 (*) [16])(param_1 + 0x94) = (undefined1  [16])0x0;
        *(undefined1 (*) [16])(param_1 + 0xa4) = (undefined1  [16])0x0;
        *(undefined8 *)(param_1 + 0xc0) = 0;
        *(undefined2 *)(param_1 + 0x44f0) = 1;
        return uVar1;
      }
    }
  }
  return uVar1;
}

