
BcStatus zbc_num_sub(BcNum *a,BcNum *b,BcNum *c,size_t scale)

{
  BcNumBinaryOp op;
  BcStatus BVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  if (a->neg == b->neg) {
    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc);
  }
  else {
    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538);
  }
  uVar3 = a->rdx;
  uVar4 = b->rdx;
  uVar2 = b->len - uVar4;
  if (uVar4 <= uVar3) {
    uVar4 = uVar3;
  }
  uVar3 = a->len - uVar3;
  if (uVar3 <= uVar2) {
    uVar3 = uVar2;
  }
  BVar1 = zbc_num_binary(a,b,c,1,op,uVar3 + uVar4 + 1);
  return BVar1;
}



void FUN_000267c4(void)

{
  FUN_00026570();
  return;
}


lui gp,0x11
addiu gp,gp,-0x4674
addu gp,gp,t9
addiu sp,sp,-0x28
lbu v1,0x10(a0)
lbu v0,0x10(a1)
sw gp,0x18(sp)
sw ra,0x24(sp)
beq v1,v0,0x00026848
_lw v0,-0x7ef8(gp)
lw v0,-0x7ef8(gp)
addiu v0,v0,0x1538
lw t2,0x4(a0)
li a3,0x1
lw t3,0x4(a1)
lw t1,0x8(a1)
lw t0,0x8(a0)
sltu v1,t2,t3
lw t9,-0x7ef8(gp)
subu t1,t1,t3
movz t3,t2,v1
subu t0,t0,t2
sw v0,0x10(sp)
addiu t9,t9,0x6570
sltu v0,t1,t0
movz t0,t1,v0
addiu v1,t3,0x1
addu v0,t0,v1
bal 0x00026570
_sw v0,0x14(sp)
lw ra,0x24(sp)
jr ra
_addiu sp,sp,0x28
b 0x000267f4
_addiu v0,v0,0x17bc
(translation_unit "void FUN_000267c4(void)\n\n{\n  FUN_00026570();\n  return;\n}\n\n" (function_definition "void FUN_000267c4(void)\n\n{\n  FUN_00026570();\n  return;\n}" primitive_type (function_declarator "FUN_000267c4(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  FUN_00026570();\n  return;\n}" { (expression_statement "FUN_00026570();" (call_expression "FUN_00026570()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "BcStatus zbc_num_sub(BcNum *a,BcNum *b,BcNum *c,size_t scale)\n\n{\n  BcNumBinaryOp op;\n  BcStatus BVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  if (a->neg == b->neg) {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc);\n  }\n  else {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538);\n  }\n  uVar3 = a->rdx;\n  uVar4 = b->rdx;\n  uVar2 = b->len - uVar4;\n  if (uVar4 <= uVar3) {\n    uVar4 = uVar3;\n  }\n  uVar3 = a->len - uVar3;\n  if (uVar3 <= uVar2) {\n    uVar3 = uVar2;\n  }\n  BVar1 = zbc_num_binary(a,b,c,1,op,uVar3 + uVar4 + 1);\n  return BVar1;\n}\n\n" (function_definition "BcStatus zbc_num_sub(BcNum *a,BcNum *b,BcNum *c,size_t scale)\n\n{\n  BcNumBinaryOp op;\n  BcStatus BVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  if (a->neg == b->neg) {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc);\n  }\n  else {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538);\n  }\n  uVar3 = a->rdx;\n  uVar4 = b->rdx;\n  uVar2 = b->len - uVar4;\n  if (uVar4 <= uVar3) {\n    uVar4 = uVar3;\n  }\n  uVar3 = a->len - uVar3;\n  if (uVar3 <= uVar2) {\n    uVar3 = uVar2;\n  }\n  BVar1 = zbc_num_binary(a,b,c,1,op,uVar3 + uVar4 + 1);\n  return BVar1;\n}" type_identifier (function_declarator "zbc_num_sub(BcNum *a,BcNum *b,BcNum *c,size_t scale)" identifier (parameter_list "(BcNum *a,BcNum *b,BcNum *c,size_t scale)" ( (parameter_declaration "BcNum *a" type_identifier (pointer_declarator "*a" * identifier)) , (parameter_declaration "BcNum *b" type_identifier (pointer_declarator "*b" * identifier)) , (parameter_declaration "BcNum *c" type_identifier (pointer_declarator "*c" * identifier)) , (parameter_declaration "size_t scale" primitive_type identifier) ))) (compound_statement "{\n  BcNumBinaryOp op;\n  BcStatus BVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  if (a->neg == b->neg) {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc);\n  }\n  else {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538);\n  }\n  uVar3 = a->rdx;\n  uVar4 = b->rdx;\n  uVar2 = b->len - uVar4;\n  if (uVar4 <= uVar3) {\n    uVar4 = uVar3;\n  }\n  uVar3 = a->len - uVar3;\n  if (uVar3 <= uVar2) {\n    uVar3 = uVar2;\n  }\n  BVar1 = zbc_num_binary(a,b,c,1,op,uVar3 + uVar4 + 1);\n  return BVar1;\n}" { (declaration "BcNumBinaryOp op;" type_identifier identifier ;) (declaration "BcStatus BVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (if_statement "if (a->neg == b->neg) {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc);\n  }\n  else {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538);\n  }" if (parenthesized_expression "(a->neg == b->neg)" ( (binary_expression "a->neg == b->neg" (field_expression "a->neg" identifier -> field_identifier) == (field_expression "b->neg" identifier -> field_identifier)) )) (compound_statement "{\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc);\n  }" { (expression_statement "op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc);" (assignment_expression "op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc)" identifier = (call_expression "(BcNumBinaryOp)(PTR_LAB_0012a258 + 0x17bc)" (parenthesized_expression "(BcNumBinaryOp)" ( identifier )) (argument_list "(PTR_LAB_0012a258 + 0x17bc)" ( (binary_expression "PTR_LAB_0012a258 + 0x17bc" identifier + number_literal) )))) ;) }) (else_clause "else {\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538);\n  }" else (compound_statement "{\n    op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538);\n  }" { (expression_statement "op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538);" (assignment_expression "op = (BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538)" identifier = (call_expression "(BcNumBinaryOp)(PTR_LAB_0012a258 + 0x1538)" (parenthesized_expression "(BcNumBinaryOp)" ( identifier )) (argument_list "(PTR_LAB_0012a258 + 0x1538)" ( (binary_expression "PTR_LAB_0012a258 + 0x1538" identifier + number_literal) )))) ;) }))) (expression_statement "uVar3 = a->rdx;" (assignment_expression "uVar3 = a->rdx" identifier = (field_expression "a->rdx" identifier -> field_identifier)) ;) (expression_statement "uVar4 = b->rdx;" (assignment_expression "uVar4 = b->rdx" identifier = (field_expression "b->rdx" identifier -> field_identifier)) ;) (expression_statement "uVar2 = b->len - uVar4;" (assignment_expression "uVar2 = b->len - uVar4" identifier = (binary_expression "b->len - uVar4" (field_expression "b->len" identifier -> field_identifier) - identifier)) ;) (if_statement "if (uVar4 <= uVar3) {\n    uVar4 = uVar3;\n  }" if (parenthesized_expression "(uVar4 <= uVar3)" ( (binary_expression "uVar4 <= uVar3" identifier <= identifier) )) (compound_statement "{\n    uVar4 = uVar3;\n  }" { (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) })) (expression_statement "uVar3 = a->len - uVar3;" (assignment_expression "uVar3 = a->len - uVar3" identifier = (binary_expression "a->len - uVar3" (field_expression "a->len" identifier -> field_identifier) - identifier)) ;) (if_statement "if (uVar3 <= uVar2) {\n    uVar3 = uVar2;\n  }" if (parenthesized_expression "(uVar3 <= uVar2)" ( (binary_expression "uVar3 <= uVar2" identifier <= identifier) )) (compound_statement "{\n    uVar3 = uVar2;\n  }" { (expression_statement "uVar3 = uVar2;" (assignment_expression "uVar3 = uVar2" identifier = identifier) ;) })) (expression_statement "BVar1 = zbc_num_binary(a,b,c,1,op,uVar3 + uVar4 + 1);" (assignment_expression "BVar1 = zbc_num_binary(a,b,c,1,op,uVar3 + uVar4 + 1)" identifier = (call_expression "zbc_num_binary(a,b,c,1,op,uVar3 + uVar4 + 1)" identifier (argument_list "(a,b,c,1,op,uVar3 + uVar4 + 1)" ( identifier , identifier , identifier , number_literal , identifier , (binary_expression "uVar3 + uVar4 + 1" (binary_expression "uVar3 + uVar4" identifier + identifier) + number_literal) )))) ;) (return_statement "return BVar1;" return identifier ;) })))
(translation_unit "void FUN_000267c4(void)\n\n{\n  FUN_00026570();\n  return;\n}\n\n" (function_definition "void FUN_000267c4(void)\n\n{\n  FUN_00026570();\n  return;\n}" primitive_type (function_declarator "FUN_000267c4(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  FUN_00026570();\n  return;\n}" { (expression_statement "FUN_00026570();" (call_expression "FUN_00026570()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_000267c4(void)\n\n{\n  FUN_00026570();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000267c4(void)" (identifier "FUN_000267c4") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  FUN_00026570();\n  return;\n}" ({ "{") (expression_statement "FUN_00026570();" (call_expression "FUN_00026570()" (identifier "FUN_00026570") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

type_1 function_1(type_2 *a,type_2 *b,type_2 *c,size_t scale)

{
  type_3 op;
  type_1 BVar1;
  type_4 var_4;
  type_4 var_3;
  type_4 var_2;
  
  if (a->neg == b->neg) {
    op = (type_3)(var_1 + 0x17bc);
  }
  else {
    op = (type_3)(var_1 + 0x1538);
  }
  var_3 = a->rdx;
  var_2 = b->rdx;
  var_4 = b->len - var_2;
  if (var_2 <= var_3) {
    var_2 = var_3;
  }
  var_3 = a->len - var_3;
  if (var_3 <= var_4) {
    var_3 = var_4;
  }
  BVar1 = var_5(a,b,c,1,op,var_3 + var_2 + 1);
  return BVar1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))))

void MASKED(void)

{
  FUN_00026570();
  return;
}

