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;
}