undefined4 FUN_00412f88(undefined4 param_1,int *param_2,undefined4 param_3,char param_4)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  char *pcVar5;
  undefined4 uVar6;
  int iVar7;
  int iVar8;
  undefined1 auStack_ec [196];
  
  if (param_4 != '\0') {
    FUN_0047f310(s__var_run_dh_pub_key_004af4f8);
    FUN_0047f310(s__var_run_dh_priv_key_004af4e0);
  }
                    /* try { // try from 00413008 to 0041362b has its CatchHandler @ 00413638 */
  iVar1 = FUN_0042c670();
  *param_2 = iVar1;
  if (iVar1 == 0) {
    puVar2 = (undefined4 *)FUN_0047082c(4);
    *puVar2 = 0x6002;
    FUN_00472734(puVar2,&PTR_PTR_FUN_004af1e0,0);
  }
  uVar3 = FUN_0042aee8();
  *(undefined4 *)(iVar1 + 8) = uVar3;
  iVar1 = *param_2;
  uVar3 = FUN_0042aee8();
  uVar6 = *(undefined4 *)(*param_2 + 8);
  *(undefined4 *)(iVar1 + 0xc) = uVar3;
  iVar1 = FUN_0042b664(&DAT_004af420,0xc0,uVar6);
  if (iVar1 == 0) {
    puVar2 = (undefined4 *)FUN_0047082c(4);
    *puVar2 = 0x6002;
    FUN_00472734(puVar2,&PTR_PTR_FUN_004af1e0,0);
  }
  iVar1 = FUN_0042b664();
  if (iVar1 == 0) {
    puVar2 = (undefined4 *)FUN_0047082c(4);
    *puVar2 = 0x6002;
    FUN_00472734(puVar2,&PTR_PTR_FUN_004af1e0,0);
  }
  iVar1 = *param_2;
  uVar3 = FUN_0042aee8();
  *(undefined4 *)(iVar1 + 0x14) = uVar3;
  iVar7 = *param_2;
  uVar3 = FUN_0042aee8();
  iVar1 = *param_2;
  *(undefined4 *)(iVar7 + 0x18) = uVar3;
  if (((*(int *)(iVar1 + 0x14) == 0) || (*(int *)(iVar1 + 0x18) == 0)) ||
     (iVar1 = FUN_00480430(s__var_run_dh_pub_key_004af4f8,"r"), iVar1 == 0)) {
LAB_004132b8:
    iVar1 = *param_2;
    if (*(int *)(iVar1 + 0x14) != 0) {
      FUN_0042aaa4();
      iVar1 = *param_2;
    }
    if (*(int *)(iVar1 + 0x18) != 0) {
      FUN_0042aaa4();
    }
    iVar1 = *param_2;
    *(undefined4 *)(iVar1 + 0x18) = 0;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    iVar1 = FUN_0042b970();
    if (iVar1 == 0) {
      puVar2 = (undefined4 *)FUN_0047082c(4);
      *puVar2 = 0x6002;
      FUN_00472734(puVar2,&PTR_PTR_FUN_004af1e0,0);
    }
    iVar1 = FUN_0042b230(*(undefined4 *)(*param_2 + 0x14),auStack_ec);
    if ((iVar1 == 0) ||
       (iVar7 = FUN_00480430(s__var_run_dh_pub_key_004af4f8,&DAT_0048bb7c), iVar7 == 0))
    goto LAB_00413600;
    iVar4 = FUN_00483000(auStack_ec,1,iVar1,iVar7);
    for (iVar8 = 0; (iVar4 != iVar1 && (iVar8 != 3)); iVar8 = iVar8 + 1) {
      FUN_00480710("write cache file %s fail do again\n",s__var_run_dh_pub_key_004af4f8);
      if (iVar7 != 0) {
        FUN_00480250(iVar7);
      }
      FUN_004872a0(100000);
      iVar7 = FUN_00480430(s__var_run_dh_pub_key_004af4f8,&DAT_0048bb7c);
      iVar4 = 0;
      if (iVar7 != 0) {
        iVar4 = FUN_00483000(auStack_ec,1,iVar1,iVar7);
      }
    }
    if (iVar7 != 0) {
      FUN_00480250(iVar7);
    }
    iVar7 = FUN_0042b230(*(undefined4 *)(*param_2 + 0x18),auStack_ec);
    if ((iVar7 == 0) ||
       (iVar1 = FUN_00480430(s__var_run_dh_priv_key_004af4e0,&DAT_0048bb7c), iVar1 == 0))
    goto LAB_00413600;
    iVar4 = FUN_00483000(auStack_ec,1,iVar7,iVar1);
    for (iVar8 = 0; (iVar4 != iVar7 && (iVar8 != 3)); iVar8 = iVar8 + 1) {
      FUN_00480710("write cache file %s fail do again\n",s__var_run_dh_priv_key_004af4e0);
      if (iVar1 != 0) {
        FUN_00480250(iVar1);
      }
      FUN_004872a0(100000);
      iVar1 = FUN_00480430(s__var_run_dh_priv_key_004af4e0,&DAT_0048bb7c);
      iVar4 = 0;
      if (iVar1 != 0) {
        iVar4 = FUN_00483000(auStack_ec,1,iVar7,iVar1);
      }
    }
    if (iVar1 == 0) goto LAB_00413600;
  }
  else {
    iVar7 = FUN_00482f20(auStack_ec,1,0xc0,iVar1);
    if (iVar7 != 0xc0) {
      pcVar5 = "%s: pubkey maybe wrap Re-genarate the key\n";
LAB_00413264:
      FUN_00480710(pcVar5,"GenerateDHKeyPair");
      if (iVar1 != 0) {
LAB_004132a4:
        FUN_00480250(iVar1);
      }
      goto LAB_004132b8;
    }
    iVar7 = FUN_0042b664(auStack_ec,0xc0,*(undefined4 *)(*param_2 + 0x14));
    if (iVar7 == 0) goto LAB_004132a4;
    FUN_00480250(iVar1);
    iVar1 = FUN_00480430(s__var_run_dh_priv_key_004af4e0,"r");
    if (iVar1 == 0) goto LAB_004132b8;
    iVar7 = FUN_00482f20(auStack_ec,1,0xc0,iVar1);
    if (iVar7 != 0xc0) {
      pcVar5 = "%s: privkey maybe wrap Re-genarate the key\n";
      goto LAB_00413264;
    }
    iVar7 = FUN_0042b664(auStack_ec,0xc0,*(undefined4 *)(*param_2 + 0x18));
    if (iVar7 == 0) goto LAB_004132a4;
  }
  FUN_00480250(iVar1);
LAB_00413600:
  FUN_0042b230(*(undefined4 *)(*param_2 + 0x14),auStack_ec);
  FUN_00405914(param_3,0xc0,auStack_ec);
  return 0x1001;
}