
/* WARNING: Removing unreachable block (ram,0x000238e8) */
/* WARNING: Removing unreachable block (ram,0x00023914) */
/* WARNING: Removing unreachable block (ram,0x000238f0) */
/* WARNING: Removing unreachable block (ram,0x0002390c) */
/* WARNING: Removing unreachable block (ram,0x0002391c) */
/* WARNING: Removing unreachable block (ram,0x00023844) */
/* WARNING: Removing unreachable block (ram,0x00023954) */
/* WARNING: Removing unreachable block (ram,0x00023998) */
/* WARNING: Removing unreachable block (ram,0x000239dc) */
/* WARNING: Removing unreachable block (ram,0x000239a4) */
/* WARNING: Removing unreachable block (ram,0x00023a18) */
/* WARNING: Removing unreachable block (ram,0x000239b0) */
/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */

int post_process_urlencoded(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)

{
  undefined *puVar1;
  undefined *puVar2;
  MHD_PostProcessor *arg;
  code *pcVar3;
  PP_State PVar4;
  int iVar5;
  
  puVar2 = PTR_mhd_panic_cls_0003f054;
  puVar1 = PTR_DAT_0003f02c;
  arg = pp + 1;
  pcVar3 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);
  while( true ) {
    while (post_data_len != 0) {
      PVar4 = pp->state;
      if (PVar4 == PP_Error) goto LAB_00023960;
      if (PVar4 < PP_ExpectNewLine) {
                    /* WARNING: Could not emulate address calculation at 0x000238cc */
                    /* WARNING: Treating indirect jump as call */
        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();
        return iVar5;
      }
      (**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);
    }
    if (pp->state != PP_Callback) break;
    if (pp->buffer_pos < pp->buffer_size) {
      if (pp->must_unescape_key != false) {
        arg->xbuf[pp->buffer_pos - 0x28] = '\0';
        MHD_unescape_plus((char *)arg);
        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);
        pp->must_unescape_key = false;
      }
      (*pcVar3)(pp,0,0,0);
      *(undefined4 *)((int)&pp->value_offset + 4) = 0;
      *(undefined4 *)&pp->value_offset = 0;
      pp->buffer_pos = 0;
      pp->state = PP_Init;
    }
    else {
      pp->state = PP_Error;
    }
  }
LAB_00023960:
  return (uint)(pp->state != PP_Error);
}



/* WARNING: Removing unreachable block (ram,0x000238e8) */
/* WARNING: Removing unreachable block (ram,0x00023914) */
/* WARNING: Removing unreachable block (ram,0x000238f0) */
/* WARNING: Removing unreachable block (ram,0x0002390c) */
/* WARNING: Removing unreachable block (ram,0x0002391c) */
/* WARNING: Removing unreachable block (ram,0x00023844) */
/* WARNING: Removing unreachable block (ram,0x00023954) */
/* WARNING: Removing unreachable block (ram,0x00023998) */
/* WARNING: Removing unreachable block (ram,0x000239dc) */
/* WARNING: Removing unreachable block (ram,0x000239a4) */
/* WARNING: Removing unreachable block (ram,0x00023a18) */
/* WARNING: Removing unreachable block (ram,0x000239b0) */

uint FUN_0002352c(int param_1,undefined4 param_2,int param_3)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  code *pcVar4;
  uint uVar5;
  
  puVar2 = PTR_DAT_0003f054;
  puVar1 = PTR_DAT_0003f02c;
  iVar3 = param_1 + 0x60;
  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);
  while( true ) {
    while (param_3 != 0) {
      uVar5 = *(uint *)(param_1 + 0x4c);
      if (uVar5 == 0) goto LAB_00023960;
      if (uVar5 < 6) {
                    /* WARNING: Could not emulate address calculation at 0x000238cc */
                    /* WARNING: Treating indirect jump as call */
        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();
        return uVar5;
      }
      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);
    }
    if (*(int *)(param_1 + 0x4c) != 5) break;
    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {
      if (*(char *)(param_1 + 0x49) != '\0') {
        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;
        FUN_0001fd74(iVar3);
        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);
        *(undefined1 *)(param_1 + 0x49) = 0;
      }
      (*pcVar4)(param_1,0,0,0);
      *(undefined4 *)(param_1 + 0x3c) = 0;
      *(undefined4 *)(param_1 + 0x38) = 0;
      *(undefined4 *)(param_1 + 0x30) = 0;
      *(undefined4 *)(param_1 + 0x4c) = 2;
    }
    else {
      *(undefined4 *)(param_1 + 0x4c) = 0;
    }
  }
LAB_00023960:
  return (uint)(*(int *)(param_1 + 0x4c) != 0);
}


lui gp,0x2
addiu gp,gp,0x3ad4
addu gp,gp,t9
addiu sp,sp,-0x60
sw ra,0x5c(sp)
sw s8,0x58(sp)
sw s7,0x54(sp)
sw s6,0x50(sp)
sw s5,0x4c(sp)
sw s4,0x48(sp)
sw s3,0x44(sp)
sw s2,0x40(sp)
sw s1,0x3c(sp)
sw s0,0x38(sp)
sw gp,0x10(sp)
or s0,a0,zero
or s4,a1,zero
or s2,a2,zero
addiu v0,a0,0x60
sw v0,0x2c(sp)
sw zero,0x34(sp)
sw zero,0x1c(sp)
or s7,zero,zero
or s5,zero,zero
or s3,zero,zero
or s1,zero,zero
lw v0,-0x7fac(gp)
sw v0,0x20(sp)
lw v0,-0x7fd4(gp)
sw v0,0x24(sp)
lw s6,-0x7fd4(gp)
addiu s6,s6,-0x1d10
lw v0,-0x7fd4(gp)
addiu v0,v0,-0x1de0
sw v0,0x28(sp)
lw v0,-0x7f5c(gp)
addiu v0,v0,0x32c0
b 0x00023800
_sw v0,0x30(sp)
beq s3,zero,0x00023620
_nop
li v0,0x1
sb v0,0x48(s0)
addu v1,s4,s1
lb v0,0x0(v1)
li a0,0xd
beq v0,a0,0x00023650
_slti a0,v0,0xe
bne a0,zero,0x00023628
_li a0,0x26
beq v0,a0,0x0002363c
_li a0,0x3d
bne v0,a0,0x00023634
_li v0,0x4
addiu s1,s1,0x1
sw v0,0x4c(s0)
b 0x00023800
_or s5,v1,zero
b 0x000235dc
_addu s3,s4,s1
li a0,0xa
beq v0,a0,0x00023650
_nop
b 0x00023800
_addiu s1,s1,0x1
addiu s1,s1,0x1
li v0,0x5
sw v0,0x4c(s0)
b 0x00023800
_or s5,v1,zero
addiu s1,s1,0x1
li v0,0x1
sw v0,0x4c(s0)
b 0x00023800
_or s5,v1,zero
beq s7,zero,0x000236a4
_nop
addu a0,s4,s1
lbu v0,0x0(a0)
addiu v0,v0,-0xa
andi v1,v0,0xff
sltiu v1,v1,0x34
beq v1,zero,0x0002373c
_andi v0,v0,0xff
sll v0,v0,0x2
lw v1,0x28(sp)
addu v0,v1,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
b 0x0002366c
_addu s7,s4,s1
b 0x00023800
_sw zero,0x4c(s0)
lbu v0,0x48(s0)
bne v0,zero,0x000236c8
_addiu s1,s1,0x1
beq a0,s7,0x000236d8
_or v1,zero,zero
li v0,0x5
sw v0,0x4c(s0)
b 0x00023800
_sw a0,0x1c(sp)
sw zero,0x30(s0)
or v0,zero,zero
sw v1,0x3c(s0)
sw v0,0x38(s0)
li v0,0x2
sw v0,0x4c(s0)
sw a0,0x1c(sp)
b 0x00023800
_or s7,zero,zero
lbu v0,0x48(s0)
beq v0,zero,0x00023718
_addiu s1,s1,0x1
li v0,0x5
sw v0,0x4c(s0)
b 0x00023800
_sw a0,0x1c(sp)
li v0,0x1
sw v0,0x4c(s0)
b 0x00023800
_sw a0,0x1c(sp)
addiu s1,s1,0x1
b 0x00023800
_sw a0,0x34(sp)
b 0x00023800
_addiu s1,s1,0x1
addiu s1,s1,0x1
b 0x00023800
_sw zero,0x34(sp)
addu v0,s4,s1
lb v0,0x0(v0)
li v1,0xa
beq v0,v1,0x0002376c
_li v1,0xd
beq v0,v1,0x0002376c
_nop
b 0x00023800
_sw zero,0x4c(s0)
b 0x00023800
_addiu s1,s1,0x1
b 0x00023800
_sw zero,0x4c(s0)
lbu v0,0x49(s0)
bne v0,zero,0x00023878
_nop
or a3,zero,zero
lw a2,0x1c(sp)
or a1,s7,zero
or a0,s0,zero
lw t9,0x30(sp)
jalr t9
_nop
lw gp,0x10(sp)
or v1,zero,zero
or v0,zero,zero
sw v1,0x3c(s0)
sw v0,0x38(s0)
sw zero,0x30(s0)
li v0,0x2
sw v0,0x4c(s0)
sw zero,0x1c(sp)
or s7,zero,zero
b 0x00023800
_or s3,zero,zero
lw v0,-0x7fb0(gp)
lw t9,0x0(v0)
or a3,zero,zero
li a2,0x278
lw v0,0x24(sp)
addiu a1,v0,-0x1ebc
lw v0,0x20(sp)
lw a0,0x0(v0)
jalr t9
_nop
lw gp,0x10(sp)
sltu v0,s1,s2
bne v0,zero,0x000238b8
_li v0,0x5
lw v1,0x4c(s0)
bne v1,v0,0x000238e0
_nop
lw a0,0x30(s0)
subu s8,s5,s3
addu v0,a0,s8
lw v1,0x2c(s0)
sltu v1,v0,v1
beq v1,zero,0x00023774
_sltu v0,v0,a0
bne v0,zero,0x00023774
_nop
beq s3,zero,0x0002377c
_or a2,s8,zero
or a1,s3,zero
lw v0,0x2c(sp)
addu a0,v0,a0
lw t9,-0x7db8(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw v0,0x30(s0)
addu s8,v0,s8
sw s8,0x30(s0)
li v0,0x1
sb v0,0x49(s0)
or s5,zero,zero
lw v0,0x30(s0)
lw s3,0x2c(sp)
addu v0,s3,v0
sb zero,0x0(v0)
or a0,s3,zero
lw t9,-0x7f18(gp)
bal 0x0001fd74
_nop
lw gp,0x10(sp)
or a0,s3,zero
lw t9,-0x7ea8(gp)
jalr t9
_nop
lw gp,0x10(sp)
b 0x00023788
_sb zero,0x49(s0)
lw v0,0x4c(s0)
beq v0,zero,0x000238e0
_sltiu v1,v0,0x6
beq v1,zero,0x000237d4
_sll v0,v0,0x2
addu v0,s6,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
beq s3,zero,0x0002394c
_nop
beq s5,zero,0x00023914
_nop
lw a0,0x30(s0)
subu s5,s5,s3
addu v0,a0,s5
lw v1,0x2c(s0)
sltu v0,v0,v1
bne v0,zero,0x0002391c
_or a2,s5,zero
b 0x00023968
_sw zero,0x4c(s0)
b 0x000238f0
_addu s5,s4,s1
or a1,s3,zero
lw v0,0x2c(sp)
addu a0,v0,a0
lw t9,-0x7db8(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw v0,0x30(s0)
addu s5,v0,s5
sw s5,0x30(s0)
li v0,0x1
sb v0,0x49(s0)
beq s7,zero,0x00023960
_li v0,0x4
lw v1,0x4c(s0)
beq v1,v0,0x00023998
_nop
lw v0,0x4c(s0)
sltu v0,zero,v0
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
lbu v0,0x49(s0)
bne v0,zero,0x000239dc
_lw s2,0x2c(sp)
lw v0,0x1c(sp)
beq v0,zero,0x00023a18
_addu v0,s4,s1
lw a3,0x34(sp)
lw a2,0x1c(sp)
or a1,s7,zero
or a0,s0,zero
lw t9,-0x7f5c(gp)
addiu t9,t9,0x32c0
bal 0x000232c0
_nop
lw gp,0x10(sp)
b 0x00023960
_sb zero,0x48(s0)
lw v0,0x30(s0)
addu v0,s2,v0
sb zero,0x0(v0)
or a0,s2,zero
lw t9,-0x7f18(gp)
bal 0x0001fd74
_nop
lw gp,0x10(sp)
or a0,s2,zero
lw t9,-0x7ea8(gp)
jalr t9
_nop
lw gp,0x10(sp)
b 0x000239a4
_sb zero,0x49(s0)
b 0x000239b0
_sw v0,0x1c(sp)
(translation_unit "/* WARNING: Removing unreachable block (ram,0x000238e8) */\n/* WARNING: Removing unreachable block (ram,0x00023914) */\n/* WARNING: Removing unreachable block (ram,0x000238f0) */\n/* WARNING: Removing unreachable block (ram,0x0002390c) */\n/* WARNING: Removing unreachable block (ram,0x0002391c) */\n/* WARNING: Removing unreachable block (ram,0x00023844) */\n/* WARNING: Removing unreachable block (ram,0x00023954) */\n/* WARNING: Removing unreachable block (ram,0x00023998) */\n/* WARNING: Removing unreachable block (ram,0x000239dc) */\n/* WARNING: Removing unreachable block (ram,0x000239a4) */\n/* WARNING: Removing unreachable block (ram,0x00023a18) */\n/* WARNING: Removing unreachable block (ram,0x000239b0) */\n\nuint FUN_0002352c(int param_1,undefined4 param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  code *pcVar4;\n  uint uVar5;\n  \n  puVar2 = PTR_DAT_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  iVar3 = param_1 + 0x60;\n  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }\nLAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);\n}\n\n" comment comment comment comment comment comment comment comment comment comment comment comment (function_definition "uint FUN_0002352c(int param_1,undefined4 param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  code *pcVar4;\n  uint uVar5;\n  \n  puVar2 = PTR_DAT_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  iVar3 = param_1 + 0x60;\n  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }\nLAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);\n}" type_identifier (function_declarator "FUN_0002352c(int param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  code *pcVar4;\n  uint uVar5;\n  \n  puVar2 = PTR_DAT_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  iVar3 = param_1 + 0x60;\n  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }\nLAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "puVar2 = PTR_DAT_0003f054;" (assignment_expression "puVar2 = PTR_DAT_0003f054" identifier = identifier) ;) (expression_statement "puVar1 = PTR_DAT_0003f02c;" (assignment_expression "puVar1 = PTR_DAT_0003f02c" identifier = identifier) ;) (expression_statement "iVar3 = param_1 + 0x60;" (assignment_expression "iVar3 = param_1 + 0x60" identifier = (binary_expression "param_1 + 0x60" identifier + number_literal)) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0)" identifier = (cast_expression "(code *)(PTR_LAB_0003f0a4 + 0x32c0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003f0a4 + 0x32c0)" ( (binary_expression "PTR_LAB_0003f0a4 + 0x32c0" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }" { (while_statement "while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }" while (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }" { (expression_statement "uVar5 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 == 0) goto LAB_00023960;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00023960;" goto statement_identifier ;)) (if_statement "if (uVar5 < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }" if (parenthesized_expression "(uVar5 < 6)" ( (binary_expression "uVar5 < 6" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }" { comment comment (expression_statement "uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();" (assignment_expression "uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar5 * 4 + -0x1d10)" * (cast_expression "(int *)(puVar1 + uVar5 * 4 + -0x1d10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar5 * 4 + -0x1d10)" ( (binary_expression "puVar1 + uVar5 * 4 + -0x1d10" (binary_expression "puVar1 + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar5;" return identifier ;) })) (expression_statement "(**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);" (call_expression "(**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0)" (parenthesized_expression "(**(code **)PTR_DAT_0003f050)" ( (pointer_expression "**(code **)PTR_DAT_0003f050" * (pointer_expression "*(code **)PTR_DAT_0003f050" * (cast_expression "(code **)PTR_DAT_0003f050" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "puVar1 + -0x1ebc" identifier + number_literal) , number_literal , number_literal ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x4c) != 5) break;" if (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 5)" ( (binary_expression "*(int *)(param_1 + 0x4c) != 5" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c))" ( (binary_expression "*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_1 + 0x2c)" * (cast_expression "(uint *)(param_1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }" { (if_statement "if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x49) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x49) != '\0'" (pointer_expression "*(char *)(param_1 + 0x49)" * (cast_expression "(char *)(param_1 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x49)" ( (binary_expression "param_1 + 0x49" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }" { (expression_statement "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;" (assignment_expression "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0" (pointer_expression "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30))" * (cast_expression "(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + *(int *)(param_1 + 0x30))" ( (binary_expression "iVar3 + *(int *)(param_1 + 0x30)" identifier + (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) )))) = number_literal) ;) (expression_statement "FUN_0001fd74(iVar3);" (call_expression "FUN_0001fd74(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);" (call_expression "(*(code *)PTR_MHD_http_unescape_0003f158)(iVar3)" (parenthesized_expression "(*(code *)PTR_MHD_http_unescape_0003f158)" ( (pointer_expression "*(code *)PTR_MHD_http_unescape_0003f158" * (cast_expression "(code *)PTR_MHD_http_unescape_0003f158" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x49) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x49) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x49)" * (cast_expression "(undefined1 *)(param_1 + 0x49)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x49)" ( (binary_expression "param_1 + 0x49" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "(*pcVar4)(param_1,0,0,0);" (call_expression "(*pcVar4)(param_1,0,0,0)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1,0,0,0)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x38)" * (cast_expression "(undefined4 *)(param_1 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" else (compound_statement "{\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) }))) })) (labeled_statement "LAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);" statement_identifier : (return_statement "return (uint)(*(int *)(param_1 + 0x4c) != 0);" return (call_expression "(uint)(*(int *)(param_1 + 0x4c) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 0x4c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) != number_literal) ))) ;)) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x000238e8) */\n/* WARNING: Removing unreachable block (ram,0x00023914) */\n/* WARNING: Removing unreachable block (ram,0x000238f0) */\n/* WARNING: Removing unreachable block (ram,0x0002390c) */\n/* WARNING: Removing unreachable block (ram,0x0002391c) */\n/* WARNING: Removing unreachable block (ram,0x00023844) */\n/* WARNING: Removing unreachable block (ram,0x00023954) */\n/* WARNING: Removing unreachable block (ram,0x00023998) */\n/* WARNING: Removing unreachable block (ram,0x000239dc) */\n/* WARNING: Removing unreachable block (ram,0x000239a4) */\n/* WARNING: Removing unreachable block (ram,0x00023a18) */\n/* WARNING: Removing unreachable block (ram,0x000239b0) */\n/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */\n\nint post_process_urlencoded(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  MHD_PostProcessor *arg;\n  code *pcVar3;\n  PP_State PVar4;\n  int iVar5;\n  \n  puVar2 = PTR_mhd_panic_cls_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  arg = pp + 1;\n  pcVar3 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (post_data_len != 0) {\n      PVar4 = pp->state;\n      if (PVar4 == PP_Error) goto LAB_00023960;\n      if (PVar4 < PP_ExpectNewLine) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }\n      (**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (pp->state != PP_Callback) break;\n    if (pp->buffer_pos < pp->buffer_size) {\n      if (pp->must_unescape_key != false) {\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }\n      (*pcVar3)(pp,0,0,0);\n      *(undefined4 *)((int)&pp->value_offset + 4) = 0;\n      *(undefined4 *)&pp->value_offset = 0;\n      pp->buffer_pos = 0;\n      pp->state = PP_Init;\n    }\n    else {\n      pp->state = PP_Error;\n    }\n  }\nLAB_00023960:\n  return (uint)(pp->state != PP_Error);\n}\n\n" comment comment comment comment comment comment comment comment comment comment comment comment comment (function_definition "int post_process_urlencoded(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  MHD_PostProcessor *arg;\n  code *pcVar3;\n  PP_State PVar4;\n  int iVar5;\n  \n  puVar2 = PTR_mhd_panic_cls_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  arg = pp + 1;\n  pcVar3 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (post_data_len != 0) {\n      PVar4 = pp->state;\n      if (PVar4 == PP_Error) goto LAB_00023960;\n      if (PVar4 < PP_ExpectNewLine) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }\n      (**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (pp->state != PP_Callback) break;\n    if (pp->buffer_pos < pp->buffer_size) {\n      if (pp->must_unescape_key != false) {\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }\n      (*pcVar3)(pp,0,0,0);\n      *(undefined4 *)((int)&pp->value_offset + 4) = 0;\n      *(undefined4 *)&pp->value_offset = 0;\n      pp->buffer_pos = 0;\n      pp->state = PP_Init;\n    }\n    else {\n      pp->state = PP_Error;\n    }\n  }\nLAB_00023960:\n  return (uint)(pp->state != PP_Error);\n}" primitive_type (function_declarator "post_process_urlencoded(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)" identifier (parameter_list "(MHD_PostProcessor *pp,char *post_data,size_t post_data_len)" ( (parameter_declaration "MHD_PostProcessor *pp" type_identifier (pointer_declarator "*pp" * identifier)) , (parameter_declaration "char *post_data" primitive_type (pointer_declarator "*post_data" * identifier)) , (parameter_declaration "size_t post_data_len" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  MHD_PostProcessor *arg;\n  code *pcVar3;\n  PP_State PVar4;\n  int iVar5;\n  \n  puVar2 = PTR_mhd_panic_cls_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  arg = pp + 1;\n  pcVar3 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (post_data_len != 0) {\n      PVar4 = pp->state;\n      if (PVar4 == PP_Error) goto LAB_00023960;\n      if (PVar4 < PP_ExpectNewLine) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }\n      (**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (pp->state != PP_Callback) break;\n    if (pp->buffer_pos < pp->buffer_size) {\n      if (pp->must_unescape_key != false) {\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }\n      (*pcVar3)(pp,0,0,0);\n      *(undefined4 *)((int)&pp->value_offset + 4) = 0;\n      *(undefined4 *)&pp->value_offset = 0;\n      pp->buffer_pos = 0;\n      pp->state = PP_Init;\n    }\n    else {\n      pp->state = PP_Error;\n    }\n  }\nLAB_00023960:\n  return (uint)(pp->state != PP_Error);\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "MHD_PostProcessor *arg;" type_identifier (pointer_declarator "*arg" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "PP_State PVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "puVar2 = PTR_mhd_panic_cls_0003f054;" (assignment_expression "puVar2 = PTR_mhd_panic_cls_0003f054" identifier = identifier) ;) (expression_statement "puVar1 = PTR_DAT_0003f02c;" (assignment_expression "puVar1 = PTR_DAT_0003f02c" identifier = identifier) ;) (expression_statement "arg = pp + 1;" (assignment_expression "arg = pp + 1" identifier = (binary_expression "pp + 1" identifier + number_literal)) ;) (expression_statement "pcVar3 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_0003f0a4 + 0x32c0)" identifier = (cast_expression "(code *)(PTR_LAB_0003f0a4 + 0x32c0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003f0a4 + 0x32c0)" ( (binary_expression "PTR_LAB_0003f0a4 + 0x32c0" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    while (post_data_len != 0) {\n      PVar4 = pp->state;\n      if (PVar4 == PP_Error) goto LAB_00023960;\n      if (PVar4 < PP_ExpectNewLine) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }\n      (**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (pp->state != PP_Callback) break;\n    if (pp->buffer_pos < pp->buffer_size) {\n      if (pp->must_unescape_key != false) {\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }\n      (*pcVar3)(pp,0,0,0);\n      *(undefined4 *)((int)&pp->value_offset + 4) = 0;\n      *(undefined4 *)&pp->value_offset = 0;\n      pp->buffer_pos = 0;\n      pp->state = PP_Init;\n    }\n    else {\n      pp->state = PP_Error;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while (post_data_len != 0) {\n      PVar4 = pp->state;\n      if (PVar4 == PP_Error) goto LAB_00023960;\n      if (PVar4 < PP_ExpectNewLine) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }\n      (**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (pp->state != PP_Callback) break;\n    if (pp->buffer_pos < pp->buffer_size) {\n      if (pp->must_unescape_key != false) {\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }\n      (*pcVar3)(pp,0,0,0);\n      *(undefined4 *)((int)&pp->value_offset + 4) = 0;\n      *(undefined4 *)&pp->value_offset = 0;\n      pp->buffer_pos = 0;\n      pp->state = PP_Init;\n    }\n    else {\n      pp->state = PP_Error;\n    }\n  }" { (while_statement "while (post_data_len != 0) {\n      PVar4 = pp->state;\n      if (PVar4 == PP_Error) goto LAB_00023960;\n      if (PVar4 < PP_ExpectNewLine) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }\n      (**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }" while (parenthesized_expression "(post_data_len != 0)" ( (binary_expression "post_data_len != 0" identifier != number_literal) )) (compound_statement "{\n      PVar4 = pp->state;\n      if (PVar4 == PP_Error) goto LAB_00023960;\n      if (PVar4 < PP_ExpectNewLine) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }\n      (**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }" { (expression_statement "PVar4 = pp->state;" (assignment_expression "PVar4 = pp->state" identifier = (field_expression "pp->state" identifier -> field_identifier)) ;) (if_statement "if (PVar4 == PP_Error) goto LAB_00023960;" if (parenthesized_expression "(PVar4 == PP_Error)" ( (binary_expression "PVar4 == PP_Error" identifier == identifier) )) (goto_statement "goto LAB_00023960;" goto statement_identifier ;)) (if_statement "if (PVar4 < PP_ExpectNewLine) {\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }" if (parenthesized_expression "(PVar4 < PP_ExpectNewLine)" ( (binary_expression "PVar4 < PP_ExpectNewLine" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x000238cc */\n                    /* WARNING: Treating indirect jump as call */\n        iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();\n        return iVar5;\n      }" { comment comment (expression_statement "iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))();" (assignment_expression "iVar5 = (*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10))" * (cast_expression "(code *)(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10))" ( (binary_expression "&_gp + *(int *)(puVar1 + PVar4 * 4 + -0x1d10)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(puVar1 + PVar4 * 4 + -0x1d10)" * (cast_expression "(int *)(puVar1 + PVar4 * 4 + -0x1d10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + PVar4 * 4 + -0x1d10)" ( (binary_expression "puVar1 + PVar4 * 4 + -0x1d10" (binary_expression "puVar1 + PVar4 * 4" identifier + (binary_expression "PVar4 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar5;" return identifier ;) })) (expression_statement "(**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);" (call_expression "(**(code **)PTR_mhd_panic_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0)" (parenthesized_expression "(**(code **)PTR_mhd_panic_0003f050)" ( (pointer_expression "**(code **)PTR_mhd_panic_0003f050" * (pointer_expression "*(code **)PTR_mhd_panic_0003f050" * (cast_expression "(code **)PTR_mhd_panic_0003f050" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "puVar1 + -0x1ebc" identifier + number_literal) , number_literal , number_literal ))) ;) })) (if_statement "if (pp->state != PP_Callback) break;" if (parenthesized_expression "(pp->state != PP_Callback)" ( (binary_expression "pp->state != PP_Callback" (field_expression "pp->state" identifier -> field_identifier) != identifier) )) (break_statement "break;" break ;)) (if_statement "if (pp->buffer_pos < pp->buffer_size) {\n      if (pp->must_unescape_key != false) {\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }\n      (*pcVar3)(pp,0,0,0);\n      *(undefined4 *)((int)&pp->value_offset + 4) = 0;\n      *(undefined4 *)&pp->value_offset = 0;\n      pp->buffer_pos = 0;\n      pp->state = PP_Init;\n    }\n    else {\n      pp->state = PP_Error;\n    }" if (parenthesized_expression "(pp->buffer_pos < pp->buffer_size)" ( (binary_expression "pp->buffer_pos < pp->buffer_size" (field_expression "pp->buffer_pos" identifier -> field_identifier) < (field_expression "pp->buffer_size" identifier -> field_identifier)) )) (compound_statement "{\n      if (pp->must_unescape_key != false) {\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }\n      (*pcVar3)(pp,0,0,0);\n      *(undefined4 *)((int)&pp->value_offset + 4) = 0;\n      *(undefined4 *)&pp->value_offset = 0;\n      pp->buffer_pos = 0;\n      pp->state = PP_Init;\n    }" { (if_statement "if (pp->must_unescape_key != false) {\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }" if (parenthesized_expression "(pp->must_unescape_key != false)" ( (binary_expression "pp->must_unescape_key != false" (field_expression "pp->must_unescape_key" identifier -> field_identifier) != false) )) (compound_statement "{\n        arg->xbuf[pp->buffer_pos - 0x28] = '\0';\n        MHD_unescape_plus((char *)arg);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(arg);\n        pp->must_unescape_key = false;\n      }" { (expression_statement "arg->xbuf[pp->buffer_pos - 0x28] = '\0';" (assignment_expression "arg->xbuf[pp->buffer_pos - 0x28] = '\0'" (subscript_expression "arg->xbuf[pp->buffer_pos - 0x28]" (field_expression "arg->xbuf" identifier -> field_identifier) [ (binary_expression "pp->buffer_pos - 0x28" (field_expression "pp->buffer_pos" identifier -> field_identifier) - number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "MHD_unescape_plus((char *)arg);" (call_expression "MHD_unescape_plus((char *)arg)" identifier (argument_list "((char *)arg)" ( (cast_expression "(char *)arg" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "(*(code *)PTR_MHD_http_unescape_0003f158)(arg);" (call_expression "(*(code *)PTR_MHD_http_unescape_0003f158)(arg)" (parenthesized_expression "(*(code *)PTR_MHD_http_unescape_0003f158)" ( (pointer_expression "*(code *)PTR_MHD_http_unescape_0003f158" * (cast_expression "(code *)PTR_MHD_http_unescape_0003f158" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(arg)" ( identifier ))) ;) (expression_statement "pp->must_unescape_key = false;" (assignment_expression "pp->must_unescape_key = false" (field_expression "pp->must_unescape_key" identifier -> field_identifier) = false) ;) })) (expression_statement "(*pcVar3)(pp,0,0,0);" (call_expression "(*pcVar3)(pp,0,0,0)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(pp,0,0,0)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "*(undefined4 *)((int)&pp->value_offset + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&pp->value_offset + 4) = 0" (pointer_expression "*(undefined4 *)((int)&pp->value_offset + 4)" * (cast_expression "(undefined4 *)((int)&pp->value_offset + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pp->value_offset + 4)" ( (binary_expression "(int)&pp->value_offset + 4" (cast_expression "(int)&pp->value_offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pp->value_offset" & (field_expression "pp->value_offset" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&pp->value_offset = 0;" (assignment_expression "*(undefined4 *)&pp->value_offset = 0" (pointer_expression "*(undefined4 *)&pp->value_offset" * (cast_expression "(undefined4 *)&pp->value_offset" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pp->value_offset" & (field_expression "pp->value_offset" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pp->buffer_pos = 0;" (assignment_expression "pp->buffer_pos = 0" (field_expression "pp->buffer_pos" identifier -> field_identifier) = number_literal) ;) (expression_statement "pp->state = PP_Init;" (assignment_expression "pp->state = PP_Init" (field_expression "pp->state" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n      pp->state = PP_Error;\n    }" else (compound_statement "{\n      pp->state = PP_Error;\n    }" { (expression_statement "pp->state = PP_Error;" (assignment_expression "pp->state = PP_Error" (field_expression "pp->state" identifier -> field_identifier) = identifier) ;) }))) })) (labeled_statement "LAB_00023960:\n  return (uint)(pp->state != PP_Error);" statement_identifier : (return_statement "return (uint)(pp->state != PP_Error);" return (call_expression "(uint)(pp->state != PP_Error)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pp->state != PP_Error)" ( (binary_expression "pp->state != PP_Error" (field_expression "pp->state" identifier -> field_identifier) != identifier) ))) ;)) })))
(translation_unit "uint FUN_0002352c(int param_1,undefined4 param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  code *pcVar4;\n  uint uVar5;\n  \n  puVar2 = PTR_DAT_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  iVar3 = param_1 + 0x60;\n  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }\nLAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);\n}\n\n" (function_definition "uint FUN_0002352c(int param_1,undefined4 param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  code *pcVar4;\n  uint uVar5;\n  \n  puVar2 = PTR_DAT_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  iVar3 = param_1 + 0x60;\n  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }\nLAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);\n}" type_identifier (function_declarator "FUN_0002352c(int param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  code *pcVar4;\n  uint uVar5;\n  \n  puVar2 = PTR_DAT_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  iVar3 = param_1 + 0x60;\n  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }\nLAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "puVar2 = PTR_DAT_0003f054;" (assignment_expression "puVar2 = PTR_DAT_0003f054" identifier = identifier) ;) (expression_statement "puVar1 = PTR_DAT_0003f02c;" (assignment_expression "puVar1 = PTR_DAT_0003f02c" identifier = identifier) ;) (expression_statement "iVar3 = param_1 + 0x60;" (assignment_expression "iVar3 = param_1 + 0x60" identifier = (binary_expression "param_1 + 0x60" identifier + number_literal)) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0)" identifier = (cast_expression "(code *)(PTR_LAB_0003f0a4 + 0x32c0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003f0a4 + 0x32c0)" ( (binary_expression "PTR_LAB_0003f0a4 + 0x32c0" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }" { (while_statement "while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }" while (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }" { (expression_statement "uVar5 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 == 0) goto LAB_00023960;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00023960;" goto statement_identifier ;)) (if_statement "if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }" if (parenthesized_expression "(uVar5 < 6)" ( (binary_expression "uVar5 < 6" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }" { (expression_statement "uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();" (assignment_expression "uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar5 * 4 + -0x1d10)" * (cast_expression "(int *)(puVar1 + uVar5 * 4 + -0x1d10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar5 * 4 + -0x1d10)" ( (binary_expression "puVar1 + uVar5 * 4 + -0x1d10" (binary_expression "puVar1 + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar5;" return identifier ;) })) (expression_statement "(**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);" (call_expression "(**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0)" (parenthesized_expression "(**(code **)PTR_DAT_0003f050)" ( (pointer_expression "**(code **)PTR_DAT_0003f050" * (pointer_expression "*(code **)PTR_DAT_0003f050" * (cast_expression "(code **)PTR_DAT_0003f050" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "puVar1 + -0x1ebc" identifier + number_literal) , number_literal , number_literal ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x4c) != 5) break;" if (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 5)" ( (binary_expression "*(int *)(param_1 + 0x4c) != 5" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c))" ( (binary_expression "*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_1 + 0x2c)" * (cast_expression "(uint *)(param_1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }" { (if_statement "if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x49) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x49) != '\0'" (pointer_expression "*(char *)(param_1 + 0x49)" * (cast_expression "(char *)(param_1 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x49)" ( (binary_expression "param_1 + 0x49" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }" { (expression_statement "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;" (assignment_expression "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0" (pointer_expression "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30))" * (cast_expression "(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + *(int *)(param_1 + 0x30))" ( (binary_expression "iVar3 + *(int *)(param_1 + 0x30)" identifier + (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) )))) = number_literal) ;) (expression_statement "FUN_0001fd74(iVar3);" (call_expression "FUN_0001fd74(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);" (call_expression "(*(code *)PTR_MHD_http_unescape_0003f158)(iVar3)" (parenthesized_expression "(*(code *)PTR_MHD_http_unescape_0003f158)" ( (pointer_expression "*(code *)PTR_MHD_http_unescape_0003f158" * (cast_expression "(code *)PTR_MHD_http_unescape_0003f158" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x49) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x49) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x49)" * (cast_expression "(undefined1 *)(param_1 + 0x49)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x49)" ( (binary_expression "param_1 + 0x49" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "(*pcVar4)(param_1,0,0,0);" (call_expression "(*pcVar4)(param_1,0,0,0)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1,0,0,0)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x38)" * (cast_expression "(undefined4 *)(param_1 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" else (compound_statement "{\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) }))) })) (labeled_statement "LAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);" statement_identifier : (return_statement "return (uint)(*(int *)(param_1 + 0x4c) != 0);" return (call_expression "(uint)(*(int *)(param_1 + 0x4c) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 0x4c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) != number_literal) ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (binary_expression IDENT + LIT) , LIT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , 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) ;) (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) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) })) (labeled_statement statement_identifier : (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) ;)) })))
(function_definition "uint FUN_0002352c(int param_1,undefined4 param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  code *pcVar4;\n  uint uVar5;\n  \n  puVar2 = PTR_DAT_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  iVar3 = param_1 + 0x60;\n  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }\nLAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);\n}" (type_identifier "uint") (function_declarator "FUN_0002352c(int param_1,undefined4 param_2,int param_3)" (identifier "FUN_0002352c") (parameter_list "(int param_1,undefined4 param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  code *pcVar4;\n  uint uVar5;\n  \n  puVar2 = PTR_DAT_0003f054;\n  puVar1 = PTR_DAT_0003f02c;\n  iVar3 = param_1 + 0x60;\n  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);\n  while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }\nLAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (expression_statement "puVar2 = PTR_DAT_0003f054;" (assignment_expression "puVar2 = PTR_DAT_0003f054" (identifier "puVar2") (= "=") (identifier "PTR_DAT_0003f054")) (; ";")) (expression_statement "puVar1 = PTR_DAT_0003f02c;" (assignment_expression "puVar1 = PTR_DAT_0003f02c" (identifier "puVar1") (= "=") (identifier "PTR_DAT_0003f02c")) (; ";")) (expression_statement "iVar3 = param_1 + 0x60;" (assignment_expression "iVar3 = param_1 + 0x60" (identifier "iVar3") (= "=") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60"))) (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_0003f0a4 + 0x32c0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0003f0a4 + 0x32c0)" (( "(") (binary_expression "PTR_LAB_0003f0a4 + 0x32c0" (identifier "PTR_LAB_0003f0a4") (+ "+") (number_literal "0x32c0")) () ")")))) (; ";")) (while_statement "while( true ) {\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }\n    if (*(int *)(param_1 + 0x4c) != 5) break;\n    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }\n  }" ({ "{") (while_statement "while (param_3 != 0) {\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }" (while "while") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar5 = *(uint *)(param_1 + 0x4c);\n      if (uVar5 == 0) goto LAB_00023960;\n      if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }\n      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);\n    }" ({ "{") (expression_statement "uVar5 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x4c)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (if_statement "if (uVar5 == 0) goto LAB_00023960;" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00023960;" (goto "goto") (statement_identifier "LAB_00023960") (; ";"))) (if_statement "if (uVar5 < 6) {\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }" (if "if") (parenthesized_expression "(uVar5 < 6)" (( "(") (binary_expression "uVar5 < 6" (identifier "uVar5") (< "<") (number_literal "6")) () ")")) (compound_statement "{\n                    \n                    \n        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();\n        return uVar5;\n      }" ({ "{") (expression_statement "uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();" (assignment_expression "uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))()" (identifier "uVar5") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10))" (( "(") (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(puVar1 + uVar5 * 4 + -0x1d10)" (* "*") (cast_expression "(int *)(puVar1 + uVar5 * 4 + -0x1d10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + uVar5 * 4 + -0x1d10)" (( "(") (binary_expression "puVar1 + uVar5 * 4 + -0x1d10" (binary_expression "puVar1 + uVar5 * 4" (identifier "puVar1") (+ "+") (binary_expression "uVar5 * 4" (identifier "uVar5") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x1d10")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (expression_statement "(**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);" (call_expression "(**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0)" (parenthesized_expression "(**(code **)PTR_DAT_0003f050)" (( "(") (pointer_expression "**(code **)PTR_DAT_0003f050" (* "*") (pointer_expression "*(code **)PTR_DAT_0003f050" (* "*") (cast_expression "(code **)PTR_DAT_0003f050" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_DAT_0003f050")))) () ")")) (argument_list "(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0)" (( "(") (pointer_expression "*(undefined4 *)puVar2" (* "*") (cast_expression "(undefined4 *)puVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (, ",") (binary_expression "puVar1 + -0x1ebc" (identifier "puVar1") (+ "+") (number_literal "-0x1ebc")) (, ",") (number_literal "0x278") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x4c) != 5) break;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 5)" (( "(") (binary_expression "*(int *)(param_1 + 0x4c) != 5" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (!= "!=") (number_literal "5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }\n    else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c))" (( "(") (binary_expression "*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)" (pointer_expression "*(uint *)(param_1 + 0x30)" (* "*") (cast_expression "(uint *)(param_1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (< "<") (pointer_expression "*(uint *)(param_1 + 0x2c)" (* "*") (cast_expression "(uint *)(param_1 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n      if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }\n      (*pcVar4)(param_1,0,0,0);\n      *(undefined4 *)(param_1 + 0x3c) = 0;\n      *(undefined4 *)(param_1 + 0x38) = 0;\n      *(undefined4 *)(param_1 + 0x30) = 0;\n      *(undefined4 *)(param_1 + 0x4c) = 2;\n    }" ({ "{") (if_statement "if (*(char *)(param_1 + 0x49) != '\0') {\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x49) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x49) != '\0'" (pointer_expression "*(char *)(param_1 + 0x49)" (* "*") (cast_expression "(char *)(param_1 + 0x49)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x49)" (( "(") (binary_expression "param_1 + 0x49" (identifier "param_1") (+ "+") (number_literal "0x49")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;\n        FUN_0001fd74(iVar3);\n        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);\n        *(undefined1 *)(param_1 + 0x49) = 0;\n      }" ({ "{") (expression_statement "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;" (assignment_expression "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0" (pointer_expression "*(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30))" (* "*") (cast_expression "(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + *(int *)(param_1 + 0x30))" (( "(") (binary_expression "iVar3 + *(int *)(param_1 + 0x30)" (identifier "iVar3") (+ "+") (pointer_expression "*(int *)(param_1 + 0x30)" (* "*") (cast_expression "(int *)(param_1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0001fd74(iVar3);" (call_expression "FUN_0001fd74(iVar3)" (identifier "FUN_0001fd74") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);" (call_expression "(*(code *)PTR_MHD_http_unescape_0003f158)(iVar3)" (parenthesized_expression "(*(code *)PTR_MHD_http_unescape_0003f158)" (( "(") (pointer_expression "*(code *)PTR_MHD_http_unescape_0003f158" (* "*") (cast_expression "(code *)PTR_MHD_http_unescape_0003f158" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_MHD_http_unescape_0003f158"))) () ")")) (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x49) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x49) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x49)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x49)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x49)" (( "(") (binary_expression "param_1 + 0x49" (identifier "param_1") (+ "+") (number_literal "0x49")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "(*pcVar4)(param_1,0,0,0);" (call_expression "(*pcVar4)(param_1,0,0,0)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(param_1,0,0,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" (else "else") (compound_statement "{\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n    }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_00023960:\n  return (uint)(*(int *)(param_1 + 0x4c) != 0);" (statement_identifier "LAB_00023960") (: ":") (return_statement "return (uint)(*(int *)(param_1 + 0x4c) != 0);" (return "return") (call_expression "(uint)(*(int *)(param_1 + 0x4c) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_1 + 0x4c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) (; ";"))) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_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: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_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: (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))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_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: (char_literal (escape_sequence)))) 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: (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: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (number_literal) (number_literal) (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))) (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)))) alternative: (else_clause (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)))))))) (labeled_statement label: (statement_identifier) (return_statement (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (number_literal)))))))))

/* WARNING: Removing unreachable block (ram,0x000238e8) */
/* WARNING: Removing unreachable block (ram,0x00023914) */
/* WARNING: Removing unreachable block (ram,0x000238f0) */
/* WARNING: Removing unreachable block (ram,0x0002390c) */
/* WARNING: Removing unreachable block (ram,0x0002391c) */
/* WARNING: Removing unreachable block (ram,0x00023844) */
/* WARNING: Removing unreachable block (ram,0x00023954) */
/* WARNING: Removing unreachable block (ram,0x00023998) */
/* WARNING: Removing unreachable block (ram,0x000239dc) */
/* WARNING: Removing unreachable block (ram,0x000239a4) */
/* WARNING: Removing unreachable block (ram,0x00023a18) */
/* WARNING: Removing unreachable block (ram,0x000239b0) */

uint MASKED(int param_1,undefined4 param_2,int param_3)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  code *pcVar4;
  uint uVar5;
  
  puVar2 = PTR_DAT_0003f054;
  puVar1 = PTR_DAT_0003f02c;
  iVar3 = param_1 + 0x60;
  pcVar4 = (code *)(PTR_LAB_0003f0a4 + 0x32c0);
  while( true ) {
    while (param_3 != 0) {
      uVar5 = *(uint *)(param_1 + 0x4c);
      if (uVar5 == 0) goto LAB_00023960;
      if (uVar5 < 6) {
                    /* WARNING: Could not emulate address calculation at 0x000238cc */
                    /* WARNING: Treating indirect jump as call */
        uVar5 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar5 * 4 + -0x1d10)))();
        return uVar5;
      }
      (**(code **)PTR_DAT_0003f050)(*(undefined4 *)puVar2,puVar1 + -0x1ebc,0x278,0);
    }
    if (*(int *)(param_1 + 0x4c) != 5) break;
    if (*(uint *)(param_1 + 0x30) < *(uint *)(param_1 + 0x2c)) {
      if (*(char *)(param_1 + 0x49) != '\0') {
        *(undefined1 *)(iVar3 + *(int *)(param_1 + 0x30)) = 0;
        FUN_0001fd74(iVar3);
        (*(code *)PTR_MHD_http_unescape_0003f158)(iVar3);
        *(undefined1 *)(param_1 + 0x49) = 0;
      }
      (*pcVar4)(param_1,0,0,0);
      *(undefined4 *)(param_1 + 0x3c) = 0;
      *(undefined4 *)(param_1 + 0x38) = 0;
      *(undefined4 *)(param_1 + 0x30) = 0;
      *(undefined4 *)(param_1 + 0x4c) = 2;
    }
    else {
      *(undefined4 *)(param_1 + 0x4c) = 0;
    }
  }
LAB_00023960:
  return (uint)(*(int *)(param_1 + 0x4c) != 0);
}

