1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| _BOOL8 sub_401F8A()
{
char input_str; // [rsp+0h] [rbp-1F0h]
int v2; // [rsp+60h] [rbp-190h]
int v3; // [rsp+64h] [rbp-18Ch]
char v4; // [rsp+70h] [rbp-180h]
char v5; // [rsp+F0h] [rbp-100h]
struct mpz_num n; // [rsp+110h] [rbp-E0h]
struct mpz_num q; // [rsp+120h] [rbp-D0h]
struct mpz_num p; // [rsp+130h] [rbp-C0h]
char v9; // [rsp+140h] [rbp-B0h]
char v10; // [rsp+150h] [rbp-A0h]
char v11; // [rsp+160h] [rbp-90h]
struct mpz_num v12; // [rsp+170h] [rbp-80h]
char v13; // [rsp+180h] [rbp-70h]
char v14; // [rsp+190h] [rbp-60h]
struct mpz_num v15; // [rsp+1A0h] [rbp-50h]
struct mpz_num v16; // [rsp+1B0h] [rbp-40h]
char v17; // [rsp+1C0h] [rbp-30h]
struct mpz_num input_n; // [rsp+1D0h] [rbp-20h]
__int64 v19; // [rsp+1E8h] [rbp-8h]
mpz_init(&v17);
mpz_init_set_str((__int64)&v16, (__int64)"226", 0xAu);
sub_47AC70(&v16, "226");
sub_4430F0((unsigned __int64)&v5);
v19 = sub_444530(&v5, "r");
sub_444290(&v4, 128LL, v19);
sub_443F20(v19);
if ( !(unsigned int)sub_401098(&v4, "hdb") )
return 1LL;
mpz_init(&v13);
mpz_init(&v10);
mpz_init(&v9);
mpz_init(&v11);
sub_403080(&v14, 2LL);
mpz_init(&n);
mpz_init(&v12);
mpz_init_set_str((__int64)&v15, (__int64)"2", 0xAu);
mpz_init_set_str((__int64)&p, (__int64)"170141183460469231731687303715884106303", 0xAu);
mpz_init_set_str((__int64)&q, (__int64)"170141183460469231731687303715884106207", 0xAu);
memset(&input_str, 0, 0x60uLL);
v2 = 0;
getinput((__int64)"%s", &input_str, &v3);
mpz_init_set_str((__int64)&input_n, (__int64)&input_str, 0xAu);
mpz_mul(&n.a1, (__int64)&p, (__int64)&q); // n = p * q
mpz_square((__int64)&input_n, (__int64)&v12); // v12 = inputn * inputn
mpz_div((signed int *)&v11, (__int64)&input_n, (__int64)&v16);// v11 = inputn // 226
mpz_mul((signed int *)&v11, (__int64)&v11, (__int64)&input_n);// v11 * inputn
mpz_sub(&v9, &v12, &v11); // v9 = v12 - v11
sub_404920(&v10, 1LL); // v10 = 1
while ( (unsigned int)sub_402E20((__int64)&v15, (__int64)&v9) != 1 )// v15 <= v9
{
mpz_pow(&v14, &v15, 3LL); // v14 = pow(v15, 3)
mpz_add(&v10, &v10, &v14);
mpz_add1(&v15.a1, (__int64)&v15, 1uLL); // v15 = v15 + 1
}
mpz_mul(&n.a1, (__int64)&p, (__int64)&q);
mpz_mod((__int64)&v10, (__int64)&v10, (__int64)&n);
rsa((__int64)&v13, (__int64)&v10);
gmp_printf((__int64)"%ZX\n", &v13);
mpz_clear(&input_n.a1);
mpz_clear((signed int *)&v17);
mpz_clear(&v16.a1);
mpz_clear((signed int *)&v11);
mpz_clear((signed int *)&v13);
mpz_clear(&v15.a1);
mpz_clear((signed int *)&v10);
mpz_clear((signed int *)&v9);
mpz_clear(&p.a1);
mpz_clear(&q.a1);
mpz_clear(&v12.a1);
sub_47AC70(&v12, &v13);
sub_4430F0((unsigned __int64)&v5);
v19 = sub_444530(&v5, "r");
sub_444290(&v4, 128LL, v19);
sub_443F20(v19);
return (unsigned int)sub_401098(&v4, "hdb") == 0;
}
|