Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // This file was generated by the Retargetable Decompiler
- // Website: http://decompiler.fit.vutbr.cz
- // Copyright (c) 2011-2014 Lissom <[email protected]>
- //
- #include <errno.h>
- #include <stdbool.h>
- #include <stdint.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- /* ------- Float Types Definitions ------ */
- typedef long double float80_t;
- /* ------------- Structures ------------- */
- struct struct_0 {
- int32_t e0;
- int32_t e1;
- int32_t e2;
- int32_t e3;
- int32_t e4;
- int32_t e5;
- int8_t e6;
- int8_t e7[52];
- int32_t e8;
- int32_t e9;
- int32_t e10;
- };
- struct struct_1 {
- int8_t e0;
- int32_t e1;
- int32_t e2;
- int32_t e3;
- };
- struct struct_16 {
- int32_t e0;
- int32_t * e1;
- int8_t e2[4];
- int32_t e3;
- };
- struct struct_2 {
- int32_t e0;
- int32_t e1;
- int32_t e2;
- int32_t e3;
- };
- struct struct_3 {
- int32_t e0;
- int32_t e1;
- int32_t e2;
- int32_t e3;
- int32_t e4;
- int32_t e5;
- int32_t e6;
- int32_t e7;
- int32_t e8;
- int32_t e9;
- int32_t e10;
- int32_t e11;
- int32_t e12;
- int32_t e13;
- int32_t e14;
- int32_t e15;
- };
- struct struct_4 {
- int32_t e0;
- int32_t e1;
- int32_t e2;
- int32_t e3;
- int32_t e4;
- int32_t e5;
- int32_t e6;
- int32_t e7;
- int32_t e8;
- int32_t e9;
- int32_t e10;
- int32_t e11;
- int32_t e12;
- int32_t e13;
- };
- struct struct_5 {
- int32_t e0;
- int32_t e1;
- int8_t e2[24];
- int32_t e3;
- };
- struct struct_6 {
- int32_t e0;
- int32_t e1;
- int8_t e2[4];
- int32_t e3;
- };
- struct struct_7 {
- int32_t e0;
- int32_t e1;
- int8_t e2[16];
- int32_t e3;
- };
- struct struct_8 {
- int32_t e0;
- int32_t e1;
- };
- struct struct__IO_FILE {
- int32_t e0;
- int8_t * e1;
- int8_t * e2;
- int8_t * e3;
- int8_t * e4;
- int8_t * e5;
- int8_t * e6;
- int8_t * e7;
- int8_t * e8;
- int8_t * e9;
- int8_t * e10;
- int8_t * e11;
- struct struct__IO_marker * e12;
- struct struct__IO_FILE * e13;
- int32_t e14;
- int32_t e15;
- int32_t e16;
- int16_t e17;
- int8_t e18;
- int8_t e19[1];
- int8_t * e20;
- int64_t e21;
- int8_t * e22;
- int8_t * e23;
- int8_t * e24;
- int8_t * e25;
- int32_t e26;
- int32_t e27;
- int8_t e28[40];
- };
- struct struct__IO_marker {
- struct struct__IO_marker * e0;
- struct struct__IO_FILE * e1;
- int32_t e2;
- };
- /* -------- Function Prototypes --------- */
- int32_t calcDecodeLength(int8_t * str);
- int32_t Base64Decode(int8_t * str, int8_t ** a2);
- int32_t calc_md5(int8_t * a1, int32_t * a2);
- int32_t correct(void);
- int32_t auth(int32_t a1);
- int32_t MD5_Update(int32_t * a1, int8_t * a2, int32_t * a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t * a10, int8_t * a11);
- int32_t MD5_Final(int8_t * a1, struct struct_0 * a2);
- int32_t MD5_Init(struct struct_1 * a1);
- int32_t md5_block_asm_data_order(struct struct_2 * a1, struct struct_3 * a2, int32_t a3);
- int32_t BIO_set(struct struct_4 * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6);
- int32_t BIO_new(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7);
- int32_t BIO_free(struct struct_5 * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7);
- int32_t BIO_set_flags(int32_t result, int32_t a2);
- int32_t BIO_read(struct struct_6 * a1, struct struct_6 * a2, int32_t a3);
- int32_t BIO_ctrl(struct struct_7 * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10, int32_t a11, int32_t a12, struct struct_7 * a13, int32_t a14, int32_t a15, int32_t a16, int32_t a17, int32_t a18, int32_t a19, int32_t a20, int32_t a21);
- int32_t BIO_push(int32_t a1, int32_t result, int32_t a3);
- int32_t BIO_free_all(int32_t a1);
- int32_t BIO_new_fp(int32_t a1, int32_t a2);
- int32_t ERR_STATE_free(int32_t * a1);
- int32_t err_fns_check_part_2(int32_t a1);
- int32_t ERR_get_state(int32_t a1);
- int32_t ERR_put_error(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5);
- int32_t BIO_f_base64(void);
- int32_t * CRYPTO_THREADID_current(struct struct_8 * a1, int32_t a2);
- int32_t CRYPTO_THREADID_cpy(struct struct_8 * a1, struct struct_8 * a2);
- int32_t OPENSSL_showfatal(int32_t a1);
- int32_t CRYPTO_lock(int32_t * a1, int32_t a2, int32_t * a3, int32_t a4, int32_t a5, int32_t * a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10, int32_t a11, int32_t a12, int32_t a13, int32_t a14, int32_t a15, int32_t a16);
- int32_t CRYPTO_add_lock(int32_t * a1, int32_t a2, int32_t a3, int32_t * a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10, int32_t a11);
- int32_t * default_malloc_ex(int32_t * a1, int32_t * a2);
- int32_t CRYPTO_malloc(int32_t * a1, int32_t * a2, int32_t * a3);
- int32_t CRYPTO_free(int32_t * a1, int32_t a2, int32_t a3);
- int32_t impl_check(int32_t a1);
- int32_t CRYPTO_new_ex_data(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6);
- int32_t CRYPTO_free_ex_data(int32_t a1, int32_t a2, int32_t a3, int32_t a4);
- int32_t _IO_fclose(int32_t * a1);
- int32_t __memset_chk(void);
- int32_t ___vfprintf_chk(struct struct_16 * a1, int32_t a2);
- int32_t __init_cpu_features(int32_t a1);
- int32_t strncasecmp_l(void);
- int32_t function_80482e0(void);
- int32_t function_80482f0(void);
- // The following external functions do not have any associated header file:
- void ___mingw_snprintf(void);
- /* ---------- Global Variables ---------- */
- int32_t g1 = -0x452df7c; // 0x811b4e0
- int32_t g2 = -0x452df78; // 0x811b580
- bool g3 = false; // 0x811d6ec
- bool g4 = false; // 0x811d754
- int32_t g5 = 0; // 0x811eb40
- bool g6 = false; // 0x811eee0
- int32_t g7 = 0; // 0x811eef0
- int32_t g8 = 0; // 0x811eef4
- int32_t g9 = 0; // 0x811ef10
- int32_t g10 = 0; // gpr0
- int32_t g11 = 0; // gpr1
- int32_t g12 = 0; // gpr2
- int32_t g13 = 0; // gpr3
- int32_t g14 = 0; // gpr5
- int32_t g15 = 0; // gpr6
- int32_t g16 = 0; // gpr7
- bool g17 = false; // zf0
- /* ------------- Functions -------------- */
- int32_t calcDecodeLength(int8_t * str) {
- int32_t v1 = (int32_t)str; // 0x804900f
- int32_t len = strlen(str); // 0x8049015
- int32_t v2 = len - 1; // 0x8049027
- int8_t * v3 = (int8_t *)(v2 + v1); // bp+13
- uint8_t v4; // 0x804905c
- if (*v3 != 61) {
- // 0x8049051
- g12 = v2;
- v4 = *v3;
- g17 = v4 == 61;
- float80_t v5 = v4 == 61 ? 1.0 : 0.0;
- // branch -> 0x804906a
- // 0x804906a
- g10 = 3136;
- return (int32_t)(0.75 * (float80_t)len - v5);
- }
- // 0x8049036
- float80_t v6; // 0x80490752
- if (*(int8_t *)(len - 2 + v1) != 61) {
- // 0x8049051
- g12 = v2;
- v4 = *v3;
- g17 = v4 == 61;
- v6 = v4 == 61 ? 1.0 : 0.0;
- // branch -> 0x804906a
- } else {
- v6 = 2.0;
- }
- // 0x804906a
- g10 = 3136;
- return (int32_t)(0.75 * (float80_t)len - v6);
- }
- int32_t Base64Decode(int8_t * str, int8_t ** a2) {
- int32_t result = calcDecodeLength(str); // 0x80490a1
- *a2 = (int8_t *)malloc(result + 1);
- int32_t len = strlen(str); // 0x80490cb
- g10 = (int32_t)str;
- struct struct__IO_FILE * v1 = fmemopen(str, len, "r"); // 0x80490e2
- BIO_f_base64();
- int32_t v2 = BIO_new(0x811b380, len, (int32_t)"r", 0, 0, 0, 0); // 0x80490f2
- int32_t v3 = (int32_t)v1; // 0x8049102
- g10 = v3;
- int32_t v4 = BIO_new_fp(v3, 0); // 0x8049108
- g10 = v2;
- int32_t v5 = BIO_push(v2, v4, (int32_t)"r"); // 0x804911d
- BIO_set_flags(v5, 256);
- int32_t len2 = strlen(str); // 0x804913e
- g12 = len2;
- int32_t v6 = *(int32_t *)a2; // 0x8049148
- g10 = v5;
- BIO_read((struct struct_6 *)v5, (struct struct_6 *)v6, len2);
- int32_t v7 = *(int32_t *)a2; // 0x8049163
- g12 = v7;
- *(int8_t *)(v7 - 2) = 0;
- g10 = v5;
- BIO_free_all(v5);
- g10 = v3;
- _IO_fclose(&v1->e0);
- return result;
- }
- int32_t calc_md5(int8_t * a1, int32_t * a2) {
- int32_t mem = (int32_t)malloc(33); // bp-20
- int32_t v1;
- MD5_Init((struct struct_1 *)&v1);
- int8_t v2;
- if (a2 > NULL) {
- while (true) {
- uint32_t v3 = (int32_t)a2 - 512; // 0x80491ad
- int32_t v4 = (int32_t)a1; // 0x80491d9
- g10 = v4;
- int32_t v5 = v2; // 0x80491e6
- if (a2 < (int32_t *)513) {
- // 0x80491d2
- MD5_Update(&v1, a1, a2, 0, 0, 0, 0, v5, 0, NULL, NULL);
- // branch -> 0x80491eb
- } else {
- // 0x80491b6
- MD5_Update(&v1, a1, (int32_t *)512, 0, 0, 0, 0, v5, 0, NULL, NULL);
- // branch -> 0x80491eb
- }
- // 0x80491eb
- if (v3 <= 0) {
- // break -> 0x80491f9
- break;
- }
- a1 = (int8_t *)(v4 + 512);
- a2 = (int32_t *)v3;
- // continue -> 0x80491ad
- }
- // 0x80491f9
- // branch -> 0x80491ff
- }
- // 0x80491ff
- MD5_Final(&v2, (struct struct_0 *)&v1);
- g17 = false;
- // branch -> 0x804921a
- for (uint32_t i = 0; i < 16; i++) {
- // 0x804921a
- ___mingw_snprintf();
- // PHI copies at the loop end
- // loop 0x804921a end
- }
- // 0x804925a
- return &mem;
- }
- int32_t correct(void) {
- int32_t v1 = g5; // 0x804926f
- g10 = v1;
- g17 = v1 == -0x21524111;
- if (v1 == -0x21524111) {
- // 0x8049278
- puts("Congratulation! you are good!");
- system("/bin/sh");
- // branch -> 0x8049290
- }
- // 0x8049290
- exit(0);
- // UNREACHABLE
- }
- int32_t auth(int32_t a1) {
- // 0x804929c
- g10 = a1;
- int32_t * v1;
- memcpy(v1, &g5, a1);
- int8_t * v2;
- int32_t v3 = calc_md5(v2, (int32_t *)12); // 0x80492cd
- printf("hash : %s\n", (int8_t *)v3);
- g10 = v3;
- int32_t v4 = function_80482f0(); // 0x80492f6
- g17 = v4 == 0;
- return v4 == 0;
- }
- int main(int argc, char **argv) {
- // bb
- g17 = false;
- function_80482e0();
- setvbuf((struct struct__IO_FILE *)&g1, NULL, 2, 0);
- setvbuf((struct struct__IO_FILE *)&g2, NULL, 1, 0);
- printf("Authenticate : ");
- int8_t * v1;
- scanf("%30s", v1);
- function_80482e0();
- int32_t v2 = Base64Decode(v1, NULL); // 0x80493cf
- if (v2 > 12) {
- // 0x8049413
- puts("Wrong Length");
- // branch -> 0x804941f
- } else {
- // 0x80493df
- g12 = v2;
- memcpy(&g5, NULL, v2);
- int32_t v3 = auth(v2); // 0x8049402
- g17 = v3 == 1;
- if (v3 == 1) {
- // 0x804940c
- correct();
- // branch -> 0x804941f
- }
- }
- // 0x804941f
- return 0;
- }
- int32_t MD5_Update(int32_t * a1, int8_t * a2, int32_t * a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t * a10, int8_t * a11) {
- int32_t v1 = g14; // 0x8049430
- int32_t v2 = g16; // 0x8049431
- int32_t v3 = g15; // 0x8049432
- int32_t v4 = g13; // 0x8049433
- int32_t v5 = (int32_t)a3; // 0x8049437
- g13 = v5;
- int32_t v6 = (int32_t)a1; // 0x804943b
- g15 = v6;
- if (a3 == NULL) {
- // 0x8049505
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = v1;
- return 1;
- }
- int32_t * v7 = (int32_t *)(v6 + 16); // bp+117
- uint32_t v8 = *v7; // 0x8049447
- int32_t v9 = *(int32_t *)(v6 + 20); // 0x804944a
- g11 = v9;
- int32_t v10 = v8 + 8 * v5; // 0x804944d
- if (v8 > v10) {
- // 0x8049454
- g11 = v9 + 1;
- // branch -> 0x8049457
- }
- // 0x8049457
- *v7 = v10;
- g10 = *(int32_t *)(g15 + 88);
- *(int32_t *)(g15 + 20) = g11 + g13 / 0x20000000;
- int32_t v11 = g10; // 0x8049467
- int32_t * v12;
- int32_t * v13;
- uint32_t v14; // 0x80494f8
- int32_t v15; // 0x8049501
- int32_t v16; // 0x804955d
- int32_t v17; // 0x804951c
- int32_t v18; // 0x8049544
- if (v11 == 0) {
- // 0x80494f8
- v14 = g13;
- if (v14 < 64) {
- v15 = v14;
- // 0x8049501
- if (v15 != 0) {
- // 0x8049518
- g10 = (int32_t)v12;
- v17 = g15;
- g15 = v17 + 24;
- *(int32_t *)(v17 + 88) = v15;
- memcpy((int32_t *)g15, (int32_t *)g10, g13);
- g17 = false;
- g13 = a7;
- g15 = a8;
- g16 = a9;
- g14 = (int32_t)a10;
- return 1;
- }
- } else {
- v18 = v14 / 64;
- // 0x8049540
- g13 = v14 - 64 * v18;
- md5_block_asm_data_order((struct struct_2 *)g15, (struct struct_3 *)v13, v18);
- v16 = g13;
- if (v16 != 0) {
- // 0x8049518
- g10 = (int32_t)(int32_t *)v18;
- v17 = g15;
- g15 = v17 + 24;
- *(int32_t *)(v17 + 88) = v16;
- memcpy((int32_t *)g15, (int32_t *)g10, g13);
- g17 = false;
- g13 = a7;
- g15 = a8;
- g16 = a9;
- g14 = (int32_t)(int32_t *)0x8049559;
- return 1;
- }
- }
- // 0x8049505
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = v1;
- return 1;
- }
- uint32_t v19 = g13; // 0x804946f
- int32_t v20 = g15 + 24; // 0x8049472
- if (v19 <= 63) {
- // 0x8049477
- if (v19 + v11 < 64) {
- // 0x8049588
- g10 = (int32_t)v13;
- memcpy((int32_t *)(v20 + v11), v13, v19);
- int32_t * v21 = (int32_t *)(g15 + 88); // bp+162
- *v21 = g13 + *v21;
- // branch -> 0x8049505
- // 0x8049505
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = v1;
- return 1;
- }
- }
- int32_t v22 = 64 - v11; // 0x804948c
- g13 = v19 - v22;
- memcpy((int32_t *)(v20 + v11), (int32_t *)a2, v22);
- md5_block_asm_data_order((struct struct_2 *)g15, (struct struct_3 *)v20, 1);
- g12 = 64;
- *(int32_t *)(g15 + 88) = 0;
- int32_t v23; // 0x80494de
- int8_t * v24; // 0x1704
- int32_t v25; // 0x80495c1
- if ((int8_t *)v20 == (int8_t *)1) {
- // 0x80494d2
- // branch -> 0x80495b8
- // 0x80495b8
- *(int16_t *)(int8_t *)1 = 0;
- v25 = g12 - 2;
- g12 = v25;
- v23 = v25;
- v24 = (int8_t *)(v20 + 2);
- // branch -> 0x80494de
- } else {
- // 0x80494d2
- *(int8_t *)(g15 + 24) = 0;
- int32_t v26 = g15 + 25; // 0x80495ac
- int8_t * v27 = (int8_t *)v26; // bp+167
- int32_t v28 = g12 & -256 | 63; // 0x80495af
- g12 = v28;
- if (v27 != (int8_t *)2) {
- // 0x80495b8
- *(int16_t *)v27 = 0;
- v25 = g12 - 2;
- g12 = v25;
- v23 = v25;
- v24 = (int8_t *)(v26 + 2);
- // branch -> 0x80494de
- } else {
- v23 = v28;
- v24 = (int8_t *)2;
- }
- }
- // 0x80494de
- g11 = v23;
- g17 = (v23 & 2) == 0;
- memset((int32_t *)v24, 0, v23 / 4);
- uint32_t v29; // 0x8049579
- if (g17) {
- int32_t v30 = g12 % 2; // 0x80494ec
- g12 = v30;
- if (v30 != 0) {
- // 0x8049576
- *v24 = 0;
- v29 = g13;
- if (v29 < 64) {
- v15 = v29;
- // 0x8049501
- if (v15 != 0) {
- // 0x8049518
- g10 = (int32_t)v12;
- v17 = g15;
- g15 = v17 + 24;
- *(int32_t *)(v17 + 88) = v15;
- memcpy((int32_t *)g15, (int32_t *)g10, g13);
- g17 = false;
- g13 = a7;
- g15 = a8;
- g16 = a9;
- g14 = (int32_t)a10;
- return 1;
- }
- } else {
- v18 = v29 / 64;
- // 0x8049540
- g13 = v29 - 64 * v18;
- md5_block_asm_data_order((struct struct_2 *)g15, (struct struct_3 *)v13, v18);
- v16 = g13;
- if (v16 != 0) {
- // 0x8049518
- g10 = (int32_t)(int32_t *)v18;
- v17 = g15;
- g15 = v17 + 24;
- *(int32_t *)(v17 + 88) = v16;
- memcpy((int32_t *)g15, (int32_t *)g10, g13);
- g17 = false;
- g13 = a7;
- g15 = a8;
- g16 = a9;
- g14 = (int32_t)(int32_t *)0x8049559;
- return 1;
- }
- }
- // 0x8049505
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = v1;
- return 1;
- }
- } else {
- // 0x8049568
- *(int16_t *)v24 = 0;
- int32_t v31 = g12 % 2; // 0x8049571
- g12 = v31;
- if (v31 != 0) {
- // 0x8049576
- *(int8_t *)((int32_t)v24 + 2) = 0;
- v29 = g13;
- if (v29 < 64) {
- v15 = v29;
- // 0x8049501
- if (v15 != 0) {
- // 0x8049518
- g10 = (int32_t)v12;
- v17 = g15;
- g15 = v17 + 24;
- *(int32_t *)(v17 + 88) = v15;
- memcpy((int32_t *)g15, (int32_t *)g10, g13);
- g17 = false;
- g13 = a7;
- g15 = a8;
- g16 = a9;
- g14 = (int32_t)a10;
- return 1;
- }
- } else {
- v18 = v29 / 64;
- // 0x8049540
- g13 = v29 - 64 * v18;
- md5_block_asm_data_order((struct struct_2 *)g15, (struct struct_3 *)v13, v18);
- v16 = g13;
- if (v16 != 0) {
- // 0x8049518
- g10 = (int32_t)(int32_t *)v18;
- v17 = g15;
- g15 = v17 + 24;
- *(int32_t *)(v17 + 88) = v16;
- memcpy((int32_t *)g15, (int32_t *)g10, g13);
- g17 = false;
- g13 = a7;
- g15 = a8;
- g16 = a9;
- g14 = (int32_t)(int32_t *)0x8049559;
- return 1;
- }
- }
- // 0x8049505
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = v1;
- return 1;
- }
- }
- // 0x80494f8
- v14 = g13;
- if (v14 < 64) {
- v15 = v14;
- // 0x8049501
- if (v15 != 0) {
- // 0x8049518
- g10 = (int32_t)v12;
- v17 = g15;
- g15 = v17 + 24;
- *(int32_t *)(v17 + 88) = v15;
- memcpy((int32_t *)g15, (int32_t *)g10, g13);
- g17 = false;
- g13 = a7;
- g15 = a8;
- g16 = a9;
- g14 = (int32_t)a10;
- return 1;
- }
- } else {
- v18 = v14 / 64;
- // 0x8049540
- g13 = v14 - 64 * v18;
- md5_block_asm_data_order((struct struct_2 *)g15, (struct struct_3 *)v13, v18);
- v16 = g13;
- if (v16 != 0) {
- // 0x8049518
- g10 = (int32_t)(int32_t *)v18;
- v17 = g15;
- g15 = v17 + 24;
- *(int32_t *)(v17 + 88) = v16;
- memcpy((int32_t *)g15, (int32_t *)g10, g13);
- g17 = false;
- g13 = a7;
- g15 = a8;
- g16 = a9;
- g14 = (int32_t)(int32_t *)0x8049559;
- return 1;
- }
- }
- // 0x8049505
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = v1;
- return 1;
- }
- int32_t MD5_Final(int8_t * a1, struct struct_0 * a2) {
- struct struct_0 * v1 = a2;
- int32_t v2 = (int32_t)a2; // 0x8049606
- int32_t v3 = (int32_t)a1;
- int32_t v4 = a2->e10; // 0x804960e
- int32_t v5 = v2 + 24; // 0x8049611
- *(int8_t *)(v4 + v5) = -128;
- int32_t * v6;
- if (v4 > 55) {
- // 0x80496c8
- function_80482e0();
- v1 = (struct struct_0 *)1;
- md5_block_asm_data_order((struct struct_2 *)v2, (struct struct_3 *)v5, 1);
- v6 = (int32_t *)0x80496f9;
- // branch -> 0x804962c
- } else {
- // 0x8049625
- v6 = (int32_t *)g16;
- // branch -> 0x804962c
- }
- // 0x804962c
- function_80482e0();
- v1->e8 = v1->e4;
- v1->e9 = v1->e5;
- md5_block_asm_data_order((struct struct_2 *)v2, (struct struct_3 *)v5, 1);
- g12 = 64;
- v1->e10 = 0;
- int32_t v7; // 0x8049686
- int32_t v8; // 0x804969d
- int32_t v9; // 0x80496b5
- int32_t v10; // 0x8049711
- int8_t * v11; // 0x2193
- int8_t * v12; // 0x2194
- if ((int8_t *)v5 == (int8_t *)1) {
- // 0x804967a
- // branch -> 0x8049708
- // 0x8049708
- *(int16_t *)(int8_t *)1 = 0;
- v10 = g12 - 2;
- g12 = v10;
- v7 = v10;
- v12 = (int8_t *)(v5 + 2);
- // branch -> 0x8049686
- // 0x8049686
- g11 = v7;
- g17 = (v7 & 2) == 0;
- memset((int32_t *)v12, 0, v7 / 4);
- v11 = v12;
- if (!g17) {
- // 0x8049694
- *(int16_t *)v12 = 0;
- v11 = (int8_t *)((int32_t)v12 + 2);
- // branch -> 0x804969d
- }
- // 0x804969d
- v8 = g12 % 2;
- g12 = v8;
- if (v8 != 0) {
- // 0x80496a2
- *v11 = 0;
- // branch -> 0x80496a5
- }
- // 0x80496a5
- *(int32_t *)v3 = *(int32_t *)v2;
- *(int32_t *)(v3 + 4) = v1->e1;
- *(int32_t *)(v3 + 8) = v1->e2;
- v9 = v1->e3;
- g10 = v9;
- *(int32_t *)(v3 + 12) = v9;
- g17 = false;
- g16 = (int32_t)v6;
- return 1;
- }
- // 0x804967a
- v1->e6 = 0;
- int32_t v13 = v2 + 25; // 0x8049724
- int8_t * v14 = (int8_t *)v13; // bp+219
- int32_t v15 = g12 & -256 | 63; // 0x8049727
- g12 = v15;
- if (v14 != (int8_t *)2) {
- // 0x8049708
- *(int16_t *)v14 = 0;
- v10 = g12 - 2;
- g12 = v10;
- v7 = v10;
- v12 = (int8_t *)(v13 + 2);
- // branch -> 0x8049686
- } else {
- v7 = v15;
- v12 = (int8_t *)2;
- }
- // 0x8049686
- g11 = v7;
- g17 = (v7 & 2) == 0;
- memset((int32_t *)v12, 0, v7 / 4);
- v11 = v12;
- if (!g17) {
- // 0x8049694
- *(int16_t *)v12 = 0;
- v11 = (int8_t *)((int32_t)v12 + 2);
- // branch -> 0x804969d
- }
- // 0x804969d
- v8 = g12 % 2;
- g12 = v8;
- if (v8 != 0) {
- // 0x80496a2
- *v11 = 0;
- // branch -> 0x80496a5
- }
- // 0x80496a5
- *(int32_t *)v3 = *(int32_t *)v2;
- *(int32_t *)(v3 + 4) = v1->e1;
- *(int32_t *)(v3 + 8) = v1->e2;
- v9 = v1->e3;
- g10 = v9;
- *(int32_t *)(v3 + 12) = v9;
- g17 = false;
- g16 = (int32_t)v6;
- return 1;
- }
- int32_t MD5_Init(struct struct_1 * a1) {
- int32_t v1 = (int32_t)a1; // 0x8049732
- g12 = v1;
- int32_t v2 = 92;
- int32_t v3; // 0x804974a
- int32_t v4; // 0x8049761
- int8_t * v5; // 0x2353
- int8_t * v6; // 0x2354
- int8_t * v7; // 0x2355
- if (a1 == (struct struct_1 *)1) {
- // 0x8049742
- if (&a1->e0 == (int8_t *)2) {
- v3 = 92;
- v7 = (int8_t *)2;
- // 0x804974a
- g11 = v3;
- g17 = (v3 & 2) == 0;
- memset((int32_t *)v7, 0, v3 / 4);
- v6 = v7;
- if (!g17) {
- // 0x8049758
- g10 = 0;
- *(int16_t *)v7 = 0;
- v6 = (int8_t *)((int32_t)v7 + 2);
- // branch -> 0x8049761
- }
- // 0x8049761
- v4 = v2 % 2;
- g17 = v4 == 0;
- if (v4 != 0) {
- // 0x8049766
- *v6 = 0;
- // branch -> 0x8049769
- }
- // 0x8049769
- *(int32_t *)g12 = 0x67452301;
- a1->e1 = -0x10325477;
- a1->e2 = -0x67452302;
- a1->e3 = 0x10325476;
- return 1;
- }
- v5 = &a1->e0;
- } else {
- int32_t v8 = v1 + 1; // 0x8049790
- int8_t * v9 = (int8_t *)v8; // bp+230
- v2 = 91;
- a1->e0 = 0;
- if (v8 == 2) {
- // 0x8049790
- v3 = v2;
- v7 = v9;
- // branch -> 0x804974a
- // 0x804974a
- g11 = v3;
- g17 = (v3 & 2) == 0;
- memset((int32_t *)v7, 0, v3 / 4);
- v6 = v7;
- if (!g17) {
- // 0x8049758
- g10 = 0;
- *(int16_t *)v7 = 0;
- v6 = (int8_t *)((int32_t)v7 + 2);
- // branch -> 0x8049761
- }
- // 0x8049761
- v4 = v2 % 2;
- g17 = v4 == 0;
- if (v4 != 0) {
- // 0x8049766
- *v6 = 0;
- // branch -> 0x8049769
- }
- // 0x8049769
- *(int32_t *)g12 = 0x67452301;
- a1->e1 = -0x10325477;
- a1->e2 = -0x67452302;
- a1->e3 = 0x10325476;
- return 1;
- }
- v5 = v9;
- }
- // 0x80497a0
- *(int16_t *)v5 = 0;
- int32_t v10 = v2 - 2; // 0x80497a9
- v3 = v10;
- v7 = (int8_t *)((int32_t)v5 + 2);
- // branch -> 0x804974a
- // 0x804974a
- g11 = v3;
- g17 = (v3 & 2) == 0;
- memset((int32_t *)v7, 0, v3 / 4);
- v6 = v7;
- if (!g17) {
- // 0x8049758
- g10 = 0;
- *(int16_t *)v7 = 0;
- v6 = (int8_t *)((int32_t)v7 + 2);
- // branch -> 0x8049761
- }
- // 0x8049761
- v4 = v10 % 2;
- g17 = v4 == 0;
- if (v4 != 0) {
- // 0x8049766
- *v6 = 0;
- // branch -> 0x8049769
- }
- // 0x8049769
- *(int32_t *)g12 = 0x67452301;
- a1->e1 = -0x10325477;
- a1->e2 = -0x67452302;
- a1->e3 = 0x10325476;
- return 1;
- }
- int32_t md5_block_asm_data_order(struct struct_2 * a1, struct struct_3 * a2, int32_t a3) {
- struct struct_3 * v1 = a2;
- int32_t v2 = a2->e0;
- int32_t v3 = v2;
- int32_t result = 64 * a3 - 64 + v2; // 0x80497c5
- int32_t v4 = a1->e1; // 0x80497da
- int32_t v5 = a1->e3; // 0x80497d8
- int32_t v6 = a1->e2; // 0x80497d4
- uint32_t v7 = a1->e0 - 0x28955b88 + a2->e0 + ((v6 ^ v5) & v4 ^ v5); // 0x80497e5
- int32_t v8 = a2->e0;
- int32_t v9 = (128 * v7 | v7 / 0x2000000) + v4; // 0x80497ef
- uint32_t v10 = v5 - 0x173848aa + v8 + (v9 & (v6 ^ v4) ^ v6); // 0x80497fe
- int32_t v11 = a2->e0;
- int32_t v12 = (0x1000 * v10 | v10 / 0x100000) + v9; // 0x8049808
- uint32_t v13 = v6 + 0x242070db + v11 + (v12 & (v9 ^ v4) ^ v4); // 0x8049817
- int32_t v14 = a2->e0;
- int32_t v15 = (0x20000 * v13 | v13 / 0x8000) + v12; // 0x8049821
- uint32_t v16 = v4 - 0x3e423112 + v14 + (v15 & (v12 ^ v9) ^ v9); // 0x8049830
- int32_t v17 = a2->e0;
- int32_t v18 = (0x400000 * v16 | v16 / 1024) + v15; // 0x804983a
- uint32_t v19 = v9 - 0xa83f051 + v17 + (v18 & (v15 ^ v12) ^ v12); // 0x8049849
- int32_t v20 = a2->e0;
- int32_t v21 = (128 * v19 | v19 / 0x2000000) + v18; // 0x8049853
- uint32_t v22 = v20 + 0x4787c62a + v12 + (v21 & (v18 ^ v15) ^ v15); // 0x8049862
- int32_t v23 = a2->e0;
- int32_t v24 = (0x1000 * v22 | v22 / 0x100000) + v21; // 0x804986c
- uint32_t v25 = v23 - 0x57cfb9ed + v15 + (v24 & (v21 ^ v18) ^ v18); // 0x804987b
- int32_t v26 = a2->e0;
- int32_t v27 = (0x20000 * v25 | v25 / 0x8000) + v24; // 0x8049885
- uint32_t v28 = v26 - 0x2b96aff + v18 + (v27 & (v24 ^ v21) ^ v21); // 0x8049894
- int32_t v29 = a2->e0;
- int32_t v30 = (0x400000 * v28 | v28 / 1024) + v27; // 0x804989e
- uint32_t v31 = v29 + 0x698098d8 + v21 + (v30 & (v27 ^ v24) ^ v24); // 0x80498ad
- int32_t v32 = a2->e0;
- int32_t v33 = (128 * v31 | v31 / 0x2000000) + v30; // 0x80498b7
- uint32_t v34 = v32 - 0x74bb0851 + v24 + (v33 & (v30 ^ v27) ^ v27); // 0x80498c6
- int32_t v35 = a2->e0;
- int32_t v36 = (0x1000 * v34 | v34 / 0x100000) + v33; // 0x80498d0
- uint32_t v37 = v35 - 0xa44f + v27 + (v36 & (v33 ^ v30) ^ v30); // 0x80498df
- int32_t v38 = a2->e0;
- int32_t v39 = (0x20000 * v37 | v37 / 0x8000) + v36; // 0x80498e9
- uint32_t v40 = v38 - 0x76a32842 + v30 + (v39 & (v36 ^ v33) ^ v33); // 0x80498f8
- int32_t v41 = v1->e0;
- int32_t v42 = (0x400000 * v40 | v40 / 1024) + v39; // 0x8049902
- uint32_t v43 = v41 + 0x6b901122 + v33 + (v42 & (v39 ^ v36) ^ v36); // 0x8049911
- int32_t v44 = v1->e0;
- int32_t v45 = (128 * v43 | v43 / 0x2000000) + v42; // 0x804991b
- uint32_t v46 = v44 - 0x2678e6d + v36 + (v45 & (v42 ^ v39) ^ v39); // 0x804992a
- int32_t v47 = v1->e0;
- int32_t v48 = (0x1000 * v46 | v46 / 0x100000) + v45; // 0x8049934
- uint32_t v49 = v47 - 0x5986bc72 + v39 + (v48 & (v45 ^ v42) ^ v42); // 0x8049943
- int32_t v50 = v1->e0;
- int32_t v51 = (0x20000 * v49 | v49 / 0x8000) + v48; // 0x804994d
- uint32_t v52 = v50 + 0x49b40821 + v42 + (v51 & (v48 ^ v45) ^ v45); // 0x804995c
- int32_t v53 = (0x400000 * v52 | v52 / 1024) + v51; // 0x8049966
- int32_t v54 = (v53 ^ v51) & v48; // 0x8049971
- uint32_t v55 = (v54 ^ v51) + v1->e0 - 0x9e1da9e + v45; // 0x8049978
- int32_t v56 = (32 * v55 | v55 / 0x8000000) + v53; // 0x804997f
- int32_t v57 = (v56 ^ v53) & v51; // 0x804998a
- uint32_t v58 = (v57 ^ v53) + v1->e0 - 0x3fbf4cc0 + v48; // 0x8049991
- int32_t v59 = (512 * v58 | v58 / 0x800000) + v56; // 0x8049998
- int32_t v60 = (v59 ^ v56) & v53; // 0x80499a3
- uint32_t v61 = (v60 ^ v56) + v1->e0 + 0x265e5a51 + v51; // 0x80499a9
- int32_t v62 = (0x4000 * v61 | v61 / 0x40000) + v59; // 0x80499b0
- int32_t v63 = (v62 ^ v59) & v56; // 0x80499bb
- uint32_t v64 = (v63 ^ v59) + v1->e0 - 0x16493856 + v53; // 0x80499c2
- int32_t v65 = (0x100000 * v64 | v64 / 0x1000) + v62; // 0x80499c9
- int32_t v66 = (v65 ^ v62) & v59; // 0x80499d4
- uint32_t v67 = (v66 ^ v62) + v1->e0 - 0x29d0efa3 + v56; // 0x80499db
- int32_t v68 = (32 * v67 | v67 / 0x8000000) + v65; // 0x80499e2
- int32_t v69 = (v68 ^ v65) & v62; // 0x80499ed
- uint32_t v70 = (v69 ^ v65) + v1->e0 + 0x2441453 + v59; // 0x80499f4
- int32_t v71 = (512 * v70 | v70 / 0x800000) + v68; // 0x80499fb
- int32_t v72 = (v71 ^ v68) & v65; // 0x8049a06
- uint32_t v73 = (v72 ^ v68) + v1->e0 - 0x275e197f + v62; // 0x8049a0d
- int32_t v74 = (0x4000 * v73 | v73 / 0x40000) + v71; // 0x8049a14
- int32_t v75 = (v74 ^ v71) & v68; // 0x8049a1f
- uint32_t v76 = (v75 ^ v71) + v1->e0 - 0x182c0438 + v65; // 0x8049a26
- int32_t v77 = (0x100000 * v76 | v76 / 0x1000) + v74; // 0x8049a2d
- int32_t v78 = (v77 ^ v74) & v71; // 0x8049a38
- uint32_t v79 = (v78 ^ v74) + v1->e0 + 0x21e1cde6 + v68; // 0x8049a3f
- int32_t v80 = (32 * v79 | v79 / 0x8000000) + v77; // 0x8049a46
- int32_t v81 = (v80 ^ v77) & v74; // 0x8049a51
- uint32_t v82 = (v81 ^ v77) + v1->e0 - 0x3cc8f82a + v71; // 0x8049a58
- int32_t v83 = (512 * v82 | v82 / 0x800000) + v80; // 0x8049a5f
- int32_t v84 = (v83 ^ v80) & v77; // 0x8049a6a
- uint32_t v85 = (v84 ^ v80) + v1->e0 - 0xb2af279 + v74; // 0x8049a71
- int32_t v86 = (0x4000 * v85 | v85 / 0x40000) + v83; // 0x8049a78
- int32_t v87 = (v86 ^ v83) & v80; // 0x8049a83
- uint32_t v88 = (v87 ^ v83) + v1->e0 + 0x455a14ed + v77; // 0x8049a8a
- int32_t v89 = (0x100000 * v88 | v88 / 0x1000) + v86; // 0x8049a91
- int32_t v90 = (v89 ^ v86) & v83; // 0x8049a9c
- uint32_t v91 = (v90 ^ v86) + v1->e0 - 0x561c16fb + v80; // 0x8049aa3
- int32_t v92 = (32 * v91 | v91 / 0x8000000) + v89; // 0x8049aaa
- int32_t v93 = (v92 ^ v89) & v86; // 0x8049ab5
- uint32_t v94 = (v93 ^ v89) + v1->e0 - 0x3105c08 + v83; // 0x8049abc
- int32_t v95 = (512 * v94 | v94 / 0x800000) + v92; // 0x8049ac3
- int32_t v96 = (v95 ^ v92) & v89; // 0x8049ace
- uint32_t v97 = (v96 ^ v92) + v1->e0 + 0x676f02d9 + v86; // 0x8049ad5
- int32_t v98 = (0x4000 * v97 | v97 / 0x40000) + v95; // 0x8049adc
- int32_t v99 = v1->e0 - 0x72d5b376 + v89; // 0x8049ade
- int32_t v100 = v98 ^ v95; // 0x8049ae5
- uint32_t v101 = (v100 & v92 ^ v95) + v99; // 0x8049aee
- int32_t v102 = (0x100000 * v101 | v101 / 0x1000) + v98; // 0x8049af5
- uint32_t v103 = v1->e0 - 0x5c6be + v92 + (v102 ^ v100); // 0x8049b02
- int32_t v104 = (16 * v103 | v103 / 0x10000000) + v102; // 0x8049b13
- int32_t v105 = v104 ^ v102; // 0x8049b15
- uint32_t v106 = (v105 ^ v98) + v1->e0 - 0x788e097f + v95; // 0x8049b1c
- int32_t v107 = (2048 * v106 | v106 / 0x200000) + v104; // 0x8049b23
- uint32_t v108 = v1->e0 + 0x6d9d6122 + v98 + (v107 ^ v105); // 0x8049b30
- int32_t v109 = (0x10000 * v108 | v108 / 0x10000) + v107; // 0x8049b41
- int32_t v110 = v109 ^ v107; // 0x8049b43
- uint32_t v111 = (v110 ^ v104) + v1->e0 - 0x21ac7f4 + v102; // 0x8049b4a
- int32_t v112 = (0x800000 * v111 | v111 / 512) + v109; // 0x8049b51
- uint32_t v113 = v1->e0 - 0x5b4115bc + v104 + (v112 ^ v110); // 0x8049b5e
- int32_t v114 = (16 * v113 | v113 / 0x10000000) + v112; // 0x8049b6f
- int32_t v115 = v114 ^ v112; // 0x8049b71
- uint32_t v116 = (v115 ^ v109) + v1->e0 + 0x4bdecfa9 + v107; // 0x8049b78
- int32_t v117 = (2048 * v116 | v116 / 0x200000) + v114; // 0x8049b7f
- uint32_t v118 = v1->e0 - 0x944b4a0 + v109 + (v117 ^ v115); // 0x8049b8c
- int32_t v119 = (0x10000 * v118 | v118 / 0x10000) + v117; // 0x8049b9d
- int32_t v120 = v119 ^ v117; // 0x8049b9f
- uint32_t v121 = (v120 ^ v114) + v1->e0 - 0x41404390 + v112; // 0x8049ba6
- int32_t v122 = (0x800000 * v121 | v121 / 512) + v119; // 0x8049bad
- uint32_t v123 = v1->e0 + 0x289b7ec6 + v114 + (v122 ^ v120); // 0x8049bba
- int32_t v124 = (16 * v123 | v123 / 0x10000000) + v122; // 0x8049bca
- int32_t v125 = v124 ^ v122; // 0x8049bcc
- uint32_t v126 = (v125 ^ v119) + v1->e0 - 0x155ed806 + v117; // 0x8049bd3
- int32_t v127 = (2048 * v126 | v126 / 0x200000) + v124; // 0x8049bda
- uint32_t v128 = v1->e0 - 0x2b10cf7b + v119 + (v127 ^ v125); // 0x8049be7
- int32_t v129 = (0x10000 * v128 | v128 / 0x10000) + v127; // 0x8049bf8
- int32_t v130 = v129 ^ v127; // 0x8049bfa
- uint32_t v131 = (v130 ^ v124) + v1->e0 + 0x4881d05 + v122; // 0x8049c01
- int32_t v132 = (0x800000 * v131 | v131 / 512) + v129; // 0x8049c08
- uint32_t v133 = v1->e0 - 0x262b2fc7 + v124 + (v132 ^ v130); // 0x8049c15
- int32_t v134 = (16 * v133 | v133 / 0x10000000) + v132; // 0x8049c26
- int32_t v135 = v134 ^ v132; // 0x8049c28
- uint32_t v136 = (v135 ^ v129) + v1->e0 - 0x1924661b + v127; // 0x8049c2f
- int32_t v137 = (2048 * v136 | v136 / 0x200000) + v134; // 0x8049c36
- uint32_t v138 = v1->e0 + 0x1fa27cf8 + v129 + (v137 ^ v135); // 0x8049c43
- int32_t v139 = (0x10000 * v138 | v138 / 0x10000) + v137; // 0x8049c54
- int32_t v140 = v137 ^ v134 ^ v139; // 0x8049c58
- uint32_t v141 = v140 + v1->e0 - 0x3b53a99b + v132; // 0x8049c5c
- int32_t v142 = (0x800000 * v141 | v141 / 512) + v139; // 0x8049c66
- int32_t v143 = (v142 | -1 - v137) ^ v139; // 0x8049c73
- uint32_t v144 = v143 + v1->e0 - 0xbd6ddbc + v134; // 0x8049c78
- int32_t v145 = (64 * v144 | v144 / 0x4000000) + v142; // 0x8049c84
- int32_t v146 = (v145 | -1 - v139) ^ v142; // 0x8049c8f
- uint32_t v147 = v146 + v1->e0 + 0x432aff97 + v137; // 0x8049c94
- int32_t v148 = (1024 * v147 | v147 / 0x400000) + v145; // 0x8049ca0
- int32_t v149 = (v148 | -1 - v142) ^ v145; // 0x8049cab
- uint32_t v150 = v149 + v1->e0 - 0x546bdc59 + v139; // 0x8049cb0
- int32_t v151 = (0x8000 * v150 | v150 / 0x20000) + v148; // 0x8049cbc
- int32_t v152 = (v151 | -1 - v145) ^ v148; // 0x8049cc7
- uint32_t v153 = v152 + v1->e0 - 0x36c5fc7 + v142; // 0x8049ccc
- int32_t v154 = (0x200000 * v153 | v153 / 2048) + v151; // 0x8049cd8
- int32_t v155 = (v154 | -1 - v148) ^ v151; // 0x8049ce3
- uint32_t v156 = v155 + v1->e0 + 0x655b59c3 + v145; // 0x8049ce8
- int32_t v157 = (64 * v156 | v156 / 0x4000000) + v154; // 0x8049cf4
- int32_t v158 = (v157 | -1 - v151) ^ v154; // 0x8049cff
- uint32_t v159 = v158 + v1->e0 - 0x70f3336e + v148; // 0x8049d04
- int32_t v160 = (1024 * v159 | v159 / 0x400000) + v157; // 0x8049d10
- int32_t v161 = (v160 | -1 - v154) ^ v157; // 0x8049d1b
- uint32_t v162 = v161 + v1->e0 - 0x100b83 + v151; // 0x8049d20
- int32_t v163 = (0x8000 * v162 | v162 / 0x20000) + v160; // 0x8049d2c
- int32_t v164 = (v163 | -1 - v157) ^ v160; // 0x8049d37
- uint32_t v165 = v164 + v1->e0 - 0x7a7ba22f + v154; // 0x8049d3c
- int32_t v166 = (0x200000 * v165 | v165 / 2048) + v163; // 0x8049d48
- int32_t v167 = (v166 | -1 - v160) ^ v163; // 0x8049d53
- uint32_t v168 = v167 + v1->e0 + 0x6fa87e4f + v157; // 0x8049d58
- int32_t v169 = (64 * v168 | v168 / 0x4000000) + v166; // 0x8049d64
- int32_t v170 = (v169 | -1 - v163) ^ v166; // 0x8049d6f
- uint32_t v171 = v170 + v1->e0 - 0x1d31920 + v160; // 0x8049d74
- int32_t v172 = (1024 * v171 | v171 / 0x400000) + v169; // 0x8049d80
- int32_t v173 = (v172 | -1 - v166) ^ v169; // 0x8049d8b
- uint32_t v174 = v173 + v1->e0 - 0x5cfebcec + v163; // 0x8049d90
- int32_t v175 = (0x8000 * v174 | v174 / 0x20000) + v172; // 0x8049d9c
- int32_t v176 = (v175 | -1 - v169) ^ v172; // 0x8049da7
- uint32_t v177 = v176 + v1->e0 + 0x4e0811a1 + v166; // 0x8049dac
- int32_t v178 = (0x200000 * v177 | v177 / 2048) + v175; // 0x8049db8
- int32_t v179 = (v178 | -1 - v172) ^ v175; // 0x8049dc3
- uint32_t v180 = v179 + v1->e0 - 0x8ac817e + v169; // 0x8049dc8
- int32_t v181 = (64 * v180 | v180 / 0x4000000) + v178; // 0x8049dd4
- int32_t v182 = (v181 | -1 - v175) ^ v178; // 0x8049ddf
- uint32_t v183 = v182 + v1->e0 - 0x42c50dcb + v172; // 0x8049de4
- int32_t v184 = (1024 * v183 | v183 / 0x400000) + v181; // 0x8049df0
- int32_t v185 = (v184 | -1 - v178) ^ v181; // 0x8049dfb
- uint32_t v186 = v185 + v1->e0 + 0x2ad7d2bb + v175; // 0x8049e00
- int32_t v187 = (0x8000 * v186 | v186 / 0x20000) + v184; // 0x8049e0c
- int32_t v188 = (v187 | -1 - v181) ^ v184; // 0x8049e17
- uint32_t v189 = v1->e0 - 0x14792c6f + v178 + v188; // 0x8049e1d
- v3 += 64;
- int32_t v190 = v181 + a1->e0; // 0x8049e2a
- g10 = v190;
- int32_t v191 = (0x200000 * v189 | v189 / 2048) + v187 + a1->e1;
- g11 = v187 + a1->e2;
- g12 = v184 + a1->e3;
- a1->e0 = v190;
- a1->e1 = v191;
- a1->e2 = g11;
- a1->e3 = g12;
- // branch -> 0x80497d4
- while (result >= v3) {
- // 0x80497d4
- // 0x80497d4
- v4 = v191;
- v5 = g12;
- a2 = v1;
- v6 = g11;
- v7 = g10 - 0x28955b88 + a2->e0 + ((v6 ^ v5) & v4 ^ v5);
- v8 = a2->e0;
- v9 = (128 * v7 | v7 / 0x2000000) + v4;
- v10 = v5 - 0x173848aa + v8 + (v9 & (v6 ^ v4) ^ v6);
- v11 = a2->e0;
- v12 = (0x1000 * v10 | v10 / 0x100000) + v9;
- v13 = v6 + 0x242070db + v11 + (v12 & (v9 ^ v4) ^ v4);
- v14 = a2->e0;
- v15 = (0x20000 * v13 | v13 / 0x8000) + v12;
- v16 = v4 - 0x3e423112 + v14 + (v15 & (v12 ^ v9) ^ v9);
- v17 = a2->e0;
- v18 = (0x400000 * v16 | v16 / 1024) + v15;
- v19 = v9 - 0xa83f051 + v17 + (v18 & (v15 ^ v12) ^ v12);
- v20 = a2->e0;
- v21 = (128 * v19 | v19 / 0x2000000) + v18;
- v22 = v20 + 0x4787c62a + v12 + (v21 & (v18 ^ v15) ^ v15);
- v23 = a2->e0;
- v24 = (0x1000 * v22 | v22 / 0x100000) + v21;
- v25 = v23 - 0x57cfb9ed + v15 + (v24 & (v21 ^ v18) ^ v18);
- v26 = a2->e0;
- v27 = (0x20000 * v25 | v25 / 0x8000) + v24;
- v28 = v26 - 0x2b96aff + v18 + (v27 & (v24 ^ v21) ^ v21);
- v29 = a2->e0;
- v30 = (0x400000 * v28 | v28 / 1024) + v27;
- v31 = v29 + 0x698098d8 + v21 + (v30 & (v27 ^ v24) ^ v24);
- v32 = a2->e0;
- v33 = (128 * v31 | v31 / 0x2000000) + v30;
- v34 = v32 - 0x74bb0851 + v24 + (v33 & (v30 ^ v27) ^ v27);
- v35 = a2->e0;
- v36 = (0x1000 * v34 | v34 / 0x100000) + v33;
- v37 = v35 - 0xa44f + v27 + (v36 & (v33 ^ v30) ^ v30);
- v38 = a2->e0;
- v39 = (0x20000 * v37 | v37 / 0x8000) + v36;
- v40 = v38 - 0x76a32842 + v30 + (v39 & (v36 ^ v33) ^ v33);
- v41 = v1->e0;
- v42 = (0x400000 * v40 | v40 / 1024) + v39;
- v43 = v41 + 0x6b901122 + v33 + (v42 & (v39 ^ v36) ^ v36);
- v44 = v1->e0;
- v45 = (128 * v43 | v43 / 0x2000000) + v42;
- v46 = v44 - 0x2678e6d + v36 + (v45 & (v42 ^ v39) ^ v39);
- v47 = v1->e0;
- v48 = (0x1000 * v46 | v46 / 0x100000) + v45;
- v49 = v47 - 0x5986bc72 + v39 + (v48 & (v45 ^ v42) ^ v42);
- v50 = v1->e0;
- v51 = (0x20000 * v49 | v49 / 0x8000) + v48;
- v52 = v50 + 0x49b40821 + v42 + (v51 & (v48 ^ v45) ^ v45);
- v53 = (0x400000 * v52 | v52 / 1024) + v51;
- v54 = (v53 ^ v51) & v48;
- v55 = (v54 ^ v51) + v1->e0 - 0x9e1da9e + v45;
- v56 = (32 * v55 | v55 / 0x8000000) + v53;
- v57 = (v56 ^ v53) & v51;
- v58 = (v57 ^ v53) + v1->e0 - 0x3fbf4cc0 + v48;
- v59 = (512 * v58 | v58 / 0x800000) + v56;
- v60 = (v59 ^ v56) & v53;
- v61 = (v60 ^ v56) + v1->e0 + 0x265e5a51 + v51;
- v62 = (0x4000 * v61 | v61 / 0x40000) + v59;
- v63 = (v62 ^ v59) & v56;
- v64 = (v63 ^ v59) + v1->e0 - 0x16493856 + v53;
- v65 = (0x100000 * v64 | v64 / 0x1000) + v62;
- v66 = (v65 ^ v62) & v59;
- v67 = (v66 ^ v62) + v1->e0 - 0x29d0efa3 + v56;
- v68 = (32 * v67 | v67 / 0x8000000) + v65;
- v69 = (v68 ^ v65) & v62;
- v70 = (v69 ^ v65) + v1->e0 + 0x2441453 + v59;
- v71 = (512 * v70 | v70 / 0x800000) + v68;
- v72 = (v71 ^ v68) & v65;
- v73 = (v72 ^ v68) + v1->e0 - 0x275e197f + v62;
- v74 = (0x4000 * v73 | v73 / 0x40000) + v71;
- v75 = (v74 ^ v71) & v68;
- v76 = (v75 ^ v71) + v1->e0 - 0x182c0438 + v65;
- v77 = (0x100000 * v76 | v76 / 0x1000) + v74;
- v78 = (v77 ^ v74) & v71;
- v79 = (v78 ^ v74) + v1->e0 + 0x21e1cde6 + v68;
- v80 = (32 * v79 | v79 / 0x8000000) + v77;
- v81 = (v80 ^ v77) & v74;
- v82 = (v81 ^ v77) + v1->e0 - 0x3cc8f82a + v71;
- v83 = (512 * v82 | v82 / 0x800000) + v80;
- v84 = (v83 ^ v80) & v77;
- v85 = (v84 ^ v80) + v1->e0 - 0xb2af279 + v74;
- v86 = (0x4000 * v85 | v85 / 0x40000) + v83;
- v87 = (v86 ^ v83) & v80;
- v88 = (v87 ^ v83) + v1->e0 + 0x455a14ed + v77;
- v89 = (0x100000 * v88 | v88 / 0x1000) + v86;
- v90 = (v89 ^ v86) & v83;
- v91 = (v90 ^ v86) + v1->e0 - 0x561c16fb + v80;
- v92 = (32 * v91 | v91 / 0x8000000) + v89;
- v93 = (v92 ^ v89) & v86;
- v94 = (v93 ^ v89) + v1->e0 - 0x3105c08 + v83;
- v95 = (512 * v94 | v94 / 0x800000) + v92;
- v96 = (v95 ^ v92) & v89;
- v97 = (v96 ^ v92) + v1->e0 + 0x676f02d9 + v86;
- v98 = (0x4000 * v97 | v97 / 0x40000) + v95;
- v99 = v1->e0 - 0x72d5b376 + v89;
- v100 = v98 ^ v95;
- v101 = (v100 & v92 ^ v95) + v99;
- v102 = (0x100000 * v101 | v101 / 0x1000) + v98;
- v103 = v1->e0 - 0x5c6be + v92 + (v102 ^ v100);
- v104 = (16 * v103 | v103 / 0x10000000) + v102;
- v105 = v104 ^ v102;
- v106 = (v105 ^ v98) + v1->e0 - 0x788e097f + v95;
- v107 = (2048 * v106 | v106 / 0x200000) + v104;
- v108 = v1->e0 + 0x6d9d6122 + v98 + (v107 ^ v105);
- v109 = (0x10000 * v108 | v108 / 0x10000) + v107;
- v110 = v109 ^ v107;
- v111 = (v110 ^ v104) + v1->e0 - 0x21ac7f4 + v102;
- v112 = (0x800000 * v111 | v111 / 512) + v109;
- v113 = v1->e0 - 0x5b4115bc + v104 + (v112 ^ v110);
- v114 = (16 * v113 | v113 / 0x10000000) + v112;
- v115 = v114 ^ v112;
- v116 = (v115 ^ v109) + v1->e0 + 0x4bdecfa9 + v107;
- v117 = (2048 * v116 | v116 / 0x200000) + v114;
- v118 = v1->e0 - 0x944b4a0 + v109 + (v117 ^ v115);
- v119 = (0x10000 * v118 | v118 / 0x10000) + v117;
- v120 = v119 ^ v117;
- v121 = (v120 ^ v114) + v1->e0 - 0x41404390 + v112;
- v122 = (0x800000 * v121 | v121 / 512) + v119;
- v123 = v1->e0 + 0x289b7ec6 + v114 + (v122 ^ v120);
- v124 = (16 * v123 | v123 / 0x10000000) + v122;
- v125 = v124 ^ v122;
- v126 = (v125 ^ v119) + v1->e0 - 0x155ed806 + v117;
- v127 = (2048 * v126 | v126 / 0x200000) + v124;
- v128 = v1->e0 - 0x2b10cf7b + v119 + (v127 ^ v125);
- v129 = (0x10000 * v128 | v128 / 0x10000) + v127;
- v130 = v129 ^ v127;
- v131 = (v130 ^ v124) + v1->e0 + 0x4881d05 + v122;
- v132 = (0x800000 * v131 | v131 / 512) + v129;
- v133 = v1->e0 - 0x262b2fc7 + v124 + (v132 ^ v130);
- v134 = (16 * v133 | v133 / 0x10000000) + v132;
- v135 = v134 ^ v132;
- v136 = (v135 ^ v129) + v1->e0 - 0x1924661b + v127;
- v137 = (2048 * v136 | v136 / 0x200000) + v134;
- v138 = v1->e0 + 0x1fa27cf8 + v129 + (v137 ^ v135);
- v139 = (0x10000 * v138 | v138 / 0x10000) + v137;
- v140 = v137 ^ v134 ^ v139;
- v141 = v140 + v1->e0 - 0x3b53a99b + v132;
- v142 = (0x800000 * v141 | v141 / 512) + v139;
- v143 = (v142 | -1 - v137) ^ v139;
- v144 = v143 + v1->e0 - 0xbd6ddbc + v134;
- v145 = (64 * v144 | v144 / 0x4000000) + v142;
- v146 = (v145 | -1 - v139) ^ v142;
- v147 = v146 + v1->e0 + 0x432aff97 + v137;
- v148 = (1024 * v147 | v147 / 0x400000) + v145;
- v149 = (v148 | -1 - v142) ^ v145;
- v150 = v149 + v1->e0 - 0x546bdc59 + v139;
- v151 = (0x8000 * v150 | v150 / 0x20000) + v148;
- v152 = (v151 | -1 - v145) ^ v148;
- v153 = v152 + v1->e0 - 0x36c5fc7 + v142;
- v154 = (0x200000 * v153 | v153 / 2048) + v151;
- v155 = (v154 | -1 - v148) ^ v151;
- v156 = v155 + v1->e0 + 0x655b59c3 + v145;
- v157 = (64 * v156 | v156 / 0x4000000) + v154;
- v158 = (v157 | -1 - v151) ^ v154;
- v159 = v158 + v1->e0 - 0x70f3336e + v148;
- v160 = (1024 * v159 | v159 / 0x400000) + v157;
- v161 = (v160 | -1 - v154) ^ v157;
- v162 = v161 + v1->e0 - 0x100b83 + v151;
- v163 = (0x8000 * v162 | v162 / 0x20000) + v160;
- v164 = (v163 | -1 - v157) ^ v160;
- v165 = v164 + v1->e0 - 0x7a7ba22f + v154;
- v166 = (0x200000 * v165 | v165 / 2048) + v163;
- v167 = (v166 | -1 - v160) ^ v163;
- v168 = v167 + v1->e0 + 0x6fa87e4f + v157;
- v169 = (64 * v168 | v168 / 0x4000000) + v166;
- v170 = (v169 | -1 - v163) ^ v166;
- v171 = v170 + v1->e0 - 0x1d31920 + v160;
- v172 = (1024 * v171 | v171 / 0x400000) + v169;
- v173 = (v172 | -1 - v166) ^ v169;
- v174 = v173 + v1->e0 - 0x5cfebcec + v163;
- v175 = (0x8000 * v174 | v174 / 0x20000) + v172;
- v176 = (v175 | -1 - v169) ^ v172;
- v177 = v176 + v1->e0 + 0x4e0811a1 + v166;
- v178 = (0x200000 * v177 | v177 / 2048) + v175;
- v179 = (v178 | -1 - v172) ^ v175;
- v180 = v179 + v1->e0 - 0x8ac817e + v169;
- v181 = (64 * v180 | v180 / 0x4000000) + v178;
- v182 = (v181 | -1 - v175) ^ v178;
- v183 = v182 + v1->e0 - 0x42c50dcb + v172;
- v184 = (1024 * v183 | v183 / 0x400000) + v181;
- v185 = (v184 | -1 - v178) ^ v181;
- v186 = v185 + v1->e0 + 0x2ad7d2bb + v175;
- v187 = (0x8000 * v186 | v186 / 0x20000) + v184;
- v188 = (v187 | -1 - v181) ^ v184;
- v189 = v1->e0 - 0x14792c6f + v178 + v188;
- v3 += 64;
- v190 = v181 + a1->e0;
- g10 = v190;
- v191 = (0x200000 * v189 | v189 / 2048) + v187 + a1->e1;
- g11 = v187 + a1->e2;
- g12 = v184 + a1->e3;
- a1->e0 = v190;
- a1->e1 = v191;
- a1->e2 = g11;
- a1->e3 = g12;
- // branch -> 0x80497d4
- }
- // 0x8049e52
- return result;
- }
- int32_t BIO_set(struct struct_4 * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6) {
- int32_t v1 = g15; // 0x8049e61
- int32_t v2 = g13; // 0x8049e62
- g17 = false;
- int32_t v3 = (int32_t)a1; // 0x8049e66
- g13 = v3;
- g15 = a2;
- g16 = v3 + 56;
- a1->e0 = a2;
- a1->e1 = 0;
- a1->e2 = 0;
- a1->e3 = 0;
- a1->e4 = 1;
- a1->e5 = 0;
- a1->e6 = 0;
- a1->e7 = 0;
- a1->e8 = 0;
- a1->e10 = 0;
- a1->e9 = 0;
- a1->e11 = 1;
- a1->e12 = 0;
- a1->e13 = 0;
- int32_t v4;
- CRYPTO_new_ex_data(0, g13, g16, v4, v2, v1);
- // UNREACHABLE
- }
- int32_t BIO_new(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7) {
- int32_t v1 = g13; // 0x8049f30
- int32_t v2 = 70; // bp-36
- int32_t v3 = (int32_t)"bio_lib.c";
- int32_t v4 = 64;
- int32_t v5 = CRYPTO_malloc(&v4, &v3, &v2); // 0x8049f4b
- g13 = v5;
- if (v5 == 0) {
- // 0x8049f6a
- ERR_put_error(32, 108, 65, (int32_t)"bio_lib.c", 73);
- g17 = false;
- int32_t result = g13; // 0x8049f6d
- g13 = v1;
- return result;
- }
- // 0x8049f56
- g10 = a1;
- v4 = v5;
- v3 = a1;
- int32_t v6;
- BIO_set((struct struct_4 *)&v4, a1, v2, v6, 0, 0);
- // UNREACHABLE
- }
- int32_t BIO_free(struct struct_5 * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7) {
- int32_t v1 = g13; // 0x8049fc0
- struct struct_5 * v2 = (struct struct_5 *)v1; // bp-4
- if (a1 == NULL) {
- // 0x804a002
- g17 = false;
- g13 = (int32_t)v2;
- return 0;
- }
- int32_t v3 = (int32_t)a1 + 44; // 0x8049fce
- int32_t v4 = (int32_t)"bio_lib.c"; // bp-32
- int32_t * v5;
- int32_t v6 = CRYPTO_add_lock(&((struct struct_5 *)v3)->e0, -1, 21, &v4, 117, 0, 0, 0, 0, (int32_t)v5, v1); // 0x8049ff4
- if (v6 >= 1) {
- // 0x804a002
- g17 = false;
- g13 = (int32_t)v2;
- return 1;
- }
- int32_t v7 = a1->e1; // 0x804a008
- g10 = v7;
- g17 = v7 == 0;
- int32_t v8; // 0x804a040
- int32_t v9; // 0x804a040
- if (v7 == 0) {
- // 0x804a040
- v8 = g13;
- v9 = v8 + 56;
- g10 = v9;
- CRYPTO_free_ex_data(0, v8, v9, a2);
- // UNREACHABLE
- }
- // 0x804a00f
- ((int32_t (*)())v7)();
- if (g10 < 1) {
- // 0x804a002
- g17 = false;
- g13 = (int32_t)(struct struct_5 *)0x804a03c;
- return 0;
- }
- // 0x804a040
- v8 = g13;
- v9 = v8 + 56;
- g10 = v9;
- CRYPTO_free_ex_data(0, v8, v9, 0);
- // UNREACHABLE
- }
- int32_t BIO_set_flags(int32_t result, int32_t a2) {
- // 0x804a0b0
- g12 = a2;
- int32_t * v1 = (int32_t *)(result + 20); // bp+343
- *v1 = *v1 | a2;
- return result;
- }
- int32_t BIO_read(struct struct_6 * a1, struct struct_6 * a2, int32_t a3) {
- int32_t * v1 = (int32_t *)g13; // bp+345
- g13 = (int32_t)a1;
- g16 = (int32_t)a2;
- g14 = a3;
- int32_t v2;
- int32_t v3;
- int32_t v4;
- if (a1 == NULL) {
- // 0x804a208
- ERR_put_error(32, 111, 121, (int32_t)"bio_lib.c", 197);
- // branch -> 0x804a1c3
- // 0x804a1c3
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = (int32_t)(int32_t *)0x804a234;
- return -2;
- }
- int32_t v5 = a1->e0; // 0x804a13b
- g10 = v5;
- if (v5 == 0) {
- // 0x804a208
- ERR_put_error(32, 111, 121, (int32_t)"bio_lib.c", 197);
- // branch -> 0x804a1c3
- // 0x804a1c3
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = (int32_t)(int32_t *)0x804a234;
- return -2;
- }
- int32_t v6 = a1->e3; // 0x804a145
- g12 = v6;
- if (v6 == 0) {
- // 0x804a208
- ERR_put_error(32, 111, 121, (int32_t)"bio_lib.c", 197);
- // branch -> 0x804a1c3
- // 0x804a1c3
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = (int32_t)(int32_t *)0x804a234;
- return -2;
- }
- int32_t v7 = a1->e1; // 0x804a150
- g15 = v7;
- g17 = v7 == 0;
- int32_t * v8;
- int32_t v9; // 0x804a187
- int32_t v10; // 0x804a19e
- uint32_t v11; // 0x804a187
- int32_t * v12; // bp+355
- int32_t v13; // 0x804a180
- if (v7 == 0) {
- // 0x804a180
- v13 = a1->e3;
- g10 = v13;
- if (v13 == 0) {
- // 0x804a1d0
- ERR_put_error(32, 111, 120, (int32_t)"bio_lib.c", 208);
- v8 = (int32_t *)0x804a1fc;
- // branch -> 0x804a1c3
- } else {
- // 0x804a187
- v9 = g13;
- v11 = *(int32_t *)v9;
- g10 = v11;
- if (v11 >= 1) {
- // 0x804a19b
- v12 = (int32_t *)(v9 + 48);
- *v12 = *v12 + v11;
- // branch -> 0x804a19e
- }
- // 0x804a19e
- v10 = g15;
- g17 = v10 == 0;
- if (v10 != 0) {
- // 0x804a1a2
- ((int32_t (*)())v10)();
- v8 = v1;
- // branch -> 0x804a1c3
- } else {
- v8 = v1;
- }
- }
- // 0x804a1c3
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = (int32_t)v8;
- return -2;
- }
- // 0x804a157
- ((int32_t (*)())v7)();
- if (g10 >= 1) {
- // 0x804a157
- // branch -> 0x804a180
- // 0x804a180
- v13 = a1->e3;
- g10 = v13;
- if (v13 == 0) {
- // 0x804a1d0
- ERR_put_error(32, 111, 120, (int32_t)"bio_lib.c", 208);
- v8 = (int32_t *)0x804a1fc;
- // branch -> 0x804a1c3
- } else {
- // 0x804a187
- v9 = g13;
- v11 = *(int32_t *)v9;
- g10 = v11;
- if (v11 >= 1) {
- // 0x804a19b
- v12 = (int32_t *)(v9 + 48);
- *v12 = *v12 + v11;
- // branch -> 0x804a19e
- }
- // 0x804a19e
- v10 = g15;
- g17 = v10 == 0;
- if (v10 != 0) {
- // 0x804a1a2
- ((int32_t (*)())v10)();
- v8 = v1;
- // branch -> 0x804a1c3
- } else {
- v8 = v1;
- }
- }
- // 0x804a1c3
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = (int32_t)v8;
- return -2;
- }
- // 0x804a1c3
- g17 = false;
- g13 = v4;
- g15 = v3;
- g16 = v2;
- g14 = (int32_t)v1;
- return -2;
- }
- int32_t BIO_ctrl(struct struct_7 * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10, int32_t a11, int32_t a12, struct struct_7 * a13, int32_t a14, int32_t a15, int32_t a16, int32_t a17, int32_t a18, int32_t a19, int32_t a20, int32_t a21) {
- int32_t v1 = g13; // 0x804a603
- g13 = (int32_t)a1;
- g16 = a2;
- g14 = a3;
- g12 = a4;
- int32_t * v2;
- int32_t v3;
- int32_t v4;
- int32_t v5;
- if (a1 == NULL) {
- // 0x804a6d0
- g17 = true;
- g13 = v3;
- g15 = v4;
- g16 = v5;
- g14 = (int32_t)v2;
- return 0;
- }
- int32_t v6 = a1->e0; // 0x804a61f
- g10 = v6;
- int32_t v7;
- int32_t v8;
- int32_t v9;
- if (v6 == 0) {
- // 0x804a6da
- ERR_put_error(32, 103, 121, (int32_t)"bio_lib.c", 360);
- // branch -> 0x804a6a1
- // 0x804a6a1
- g17 = false;
- g13 = v9;
- g15 = v8;
- g16 = v7;
- g14 = v1;
- return -2;
- }
- int32_t v10 = a1->e3; // 0x804a629
- g10 = v10;
- if (v10 == 0) {
- // 0x804a6da
- ERR_put_error(32, 103, 121, (int32_t)"bio_lib.c", 360);
- // branch -> 0x804a6a1
- // 0x804a6a1
- g17 = false;
- g13 = v9;
- g15 = v8;
- g16 = v7;
- g14 = v1;
- return -2;
- }
- int32_t v11 = a1->e1; // 0x804a634
- g15 = v11;
- g17 = v11 == 0;
- if (v11 == 0) {
- // 0x804a6b0
- g17 = false;
- g13 = a8;
- g15 = a9;
- g16 = a10;
- g14 = a11;
- ((int32_t (*)())v10)();
- // branch -> 0x804a6d0
- // 0x804a6d0
- g17 = true;
- g13 = v3;
- g15 = v4;
- g16 = v5;
- g14 = (int32_t)v2;
- return 0;
- }
- // 0x804a63b
- ((int32_t (*)())v11)();
- uint32_t v12 = g10; // 0x804a664
- g17 = v12 == 0;
- if (v12 >= 1) {
- // 0x804a668
- g10 = *(int32_t *)g13;
- g12 = (int32_t)(struct struct_7 *)1;
- ((int32_t (*)())g15)();
- // branch -> 0x804a6a1
- }
- // 0x804a6a1
- g17 = false;
- g13 = v9;
- g15 = v8;
- g16 = v7;
- g14 = v1;
- return -2;
- }
- int32_t BIO_push(int32_t a1, int32_t result, int32_t a3) {
- int32_t v1 = g13; // 0x804a8f0
- g13 = a1;
- if (a1 == 0) {
- // 0x804a939
- g17 = false;
- g13 = v1;
- return result;
- }
- int32_t v2 = a1; // 0x804a913
- g11 = v2;
- int32_t * v3 = (int32_t *)(v2 + 36); // bp+388
- int32_t v4 = *v3; // 0x804a90a
- while (v4 != 0) {
- // 0x804a90a
- v2 = v4;
- g11 = v2;
- v3 = (int32_t *)(v2 + 36);
- v4 = *v3;
- // continue -> 0x804a90a
- }
- // 0x804a911
- *v3 = result;
- if (result != 0) {
- // 0x804a918
- *(int32_t *)(result + 40) = g11;
- // branch -> 0x804a91b
- }
- int32_t v5 = g13; // bp-28
- int32_t v6;
- BIO_ctrl((struct struct_7 *)&v5, 6, 0, g11, 0, 0, v1, v6, a1, result, a3, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0);
- int32_t result2 = g13; // bp+321
- // branch -> 0x804a939
- // 0x804a939
- g17 = false;
- g13 = v1;
- return result2;
- }
- int32_t BIO_free_all(int32_t a1) {
- int32_t v1 = g15; // 0x804aa60
- int32_t v2 = g13; // 0x804aa61
- if (a1 == 0) {
- // 0x804aa89
- g17 = false;
- g13 = v2;
- g15 = v1;
- return 0;
- }
- int32_t v3 = 0; // bp-28
- // branch -> 0x804aa76
- int32_t result2; // 0x804aa7f
- while (true) {
- // 0x804aa76
- g15 = *(int32_t *)(a1 + 44);
- g13 = *(int32_t *)(a1 + 36);
- v3 = a1;
- result2 = BIO_free((struct struct_5 *)&v3, 0, 0, 0, 0, v2, v1);
- int32_t result = result2; // bp+341
- if (g15 < 2) {
- int32_t v4 = g13; // 0x804aa70
- if (v4 == 0) {
- // break -> 0x804aa89
- break;
- }
- a1 = v4;
- // continue -> 0x804aa76
- continue;
- }
- // 0x804aa89
- g17 = false;
- g13 = v2;
- g15 = v1;
- return result;
- }
- // 0x804aa89
- g17 = false;
- g13 = v2;
- g15 = v1;
- return result2;
- }
- int32_t BIO_new_fp(int32_t a1, int32_t a2) {
- int32_t v1 = g13; // 0x804b350
- int32_t v2 = (int32_t)"\x02\x04"; // bp-28
- int32_t v3;
- int32_t v4 = BIO_new((int32_t)"\x02\x04", v3, 0, 0, 0, 0, v1); // 0x804b35b
- g13 = v4;
- int32_t result; // 0x804b399
- if (v4 != 0) {
- // 0x804b366
- BIO_set_flags(v4, 0);
- v2 = g13;
- g10 = a2;
- int32_t v5;
- BIO_ctrl((struct struct_7 *)&v2, 106, a2, a1, 0, 0, v1, v5, a1, a2, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0);
- result = g13;
- // branch -> 0x804b396
- } else {
- result = 0;
- }
- // 0x804b396
- g17 = false;
- g13 = v1;
- return result;
- }
- int32_t ERR_STATE_free(int32_t * a1) {
- int32_t v1 = g10; // 0x804b521
- int32_t v2 = g13; // 0x804b524
- if (v1 == 0) {
- // 0x804b580
- g17 = false;
- g13 = v2;
- return 0;
- }
- int32_t v3 = 0;
- int32_t v4 = v1; // 0x804b54d
- int32_t v5 = 0; // 0x804b5383
- // branch -> 0x804b54d
- while (true) {
- int32_t v6 = *(int32_t *)(v4 + 136); // 0x804b54d
- int32_t v7 = v4; // 0x804b53b
- int32_t v8 = v5; // 0x804b538
- int32_t v9;
- int32_t v10; // 0x804b548
- if (v6 != 0) {
- // 0x804b557
- if (*(int8_t *)(v4 + 200) != 1) {
- // 0x804b560
- v9 = v6;
- CRYPTO_free(&v9, 0, 0);
- *(int32_t *)(g13 + 136) = 0;
- v7 = g13;
- v8 = v3;
- // branch -> 0x804b538
- } else {
- v7 = v4;
- v8 = v5;
- }
- // 0x804b538
- v3 = v8 + 1;
- g13 = v7 + 4;
- *(int32_t *)(v7 + 200) = 0;
- v10 = v3;
- if (v10 == 16) {
- // 0x804b578
- v9 = v1;
- CRYPTO_free(&v9, 0, 0);
- // branch -> 0x804b580
- // 0x804b580
- g17 = false;
- g13 = v2;
- return 0;
- }
- lab_0x4024e50:
- // 0x804b538
- v4 = g13;
- v5 = v10;
- // branch -> 0x804b54d
- continue;
- }
- // 0x804b538
- v3 = v8 + 1;
- g13 = v7 + 4;
- *(int32_t *)(v7 + 200) = 0;
- v10 = v3;
- if (v10 != 16) {
- goto lab_0x4024e50;
- }
- // 0x804b578
- v9 = v1;
- CRYPTO_free(&v9, 0, 0);
- // branch -> 0x804b580
- // 0x804b580
- g17 = false;
- g13 = v2;
- return 0;
- }
- }
- int32_t err_fns_check_part_2(int32_t a1) {
- int32_t v1 = (int32_t)"err.c";
- int32_t v2 = 9;
- int32_t v3;
- CRYPTO_lock(&v2, 1, &v1, 295, 0, NULL, 0, v3, a1, 0, 0, 0, 0, 0, 0, 0);
- bool v4 = g3;
- g10 = v4 ? 0x80daba0 : 0;
- if (!v4) {
- // 0x804b7e8
- g3 = true;
- // branch -> 0x804b7c0
- }
- // 0x804b7c0
- v1 = (int32_t)"err.c";
- v2 = 10;
- CRYPTO_lock(&v2, 1, &v1, 298, 0, NULL, 0, v3, a1, 0, 0, 0, 0, 0, 0, 0);
- g17 = false;
- return 0;
- }
- int32_t ERR_get_state(int32_t a1) {
- int32_t v1 = g16; // 0x804c3f0
- int32_t v2 = v1; // bp-4
- int32_t * v3 = (int32_t *)g13; // bp+410
- int32_t * v4 = (int32_t *)g15; // 0x4263
- if (!g3) {
- // 0x804c440
- err_fns_check_part_2(v1);
- v4 = (int32_t *)0x804c445;
- // branch -> 0x804c403
- }
- // 0x804c403
- int32_t v5;
- int32_t v6;
- CRYPTO_THREADID_current((struct struct_8 *)&v5, v6);
- int32_t v7;
- CRYPTO_THREADID_cpy((struct struct_8 *)&v7, (struct struct_8 *)&v5);
- g13 = g3 ? 0x80daba0 : 0;
- int32_t * v8;
- int32_t result; // 0x804c436
- if (g3) {
- // 0x804c430
- g17 = false;
- result = g13;
- g13 = (int32_t)v8;
- g15 = (int32_t)v3;
- g16 = (int32_t)v4;
- return result;
- }
- // 0x804c448
- a1 = 1019;
- g13 = 0x811c060;
- int32_t v9 = (int32_t)"err.c";
- v2 = 400;
- int32_t v10 = CRYPTO_malloc(&v2, &v9, &a1); // 0x804c464
- g16 = v10;
- if (v10 == 0) {
- // 0x804c430
- g17 = false;
- result = g13;
- g13 = (int32_t)v8;
- g15 = (int32_t)v3;
- g16 = (int32_t)(int32_t *)0x804c469;
- return result;
- }
- // 0x804c46f
- v2 = v10;
- CRYPTO_THREADID_cpy((struct struct_8 *)&v2, (struct struct_8 *)&v5);
- g12 = 0;
- *(int32_t *)(g16 + 392) = 0;
- *(int32_t *)(g16 + 396) = 0;
- *(int32_t *)(g16 + 136 + 4 * g12) = 0;
- *(int32_t *)(g16 + 200 + 4 * g12) = 0;
- int32_t v11 = g12 + 1; // 0x804c4ae
- g12 = v11;
- // branch -> 0x804c498
- while (v11 != 16) {
- // 0x804c498
- *(int32_t *)(g16 + 136 + 4 * v11) = 0;
- *(int32_t *)(g16 + 200 + 4 * g12) = 0;
- v11 = g12 + 1;
- g12 = v11;
- // continue -> 0x804c498
- }
- int32_t v12 = g3 ? 0x80daba0 : 0; // 0x804c4b6
- g10 = v12;
- v2 = g16;
- g12 = v12;
- g13 = v12;
- int32_t * v13;
- if (v12 == g16) {
- // 0x804c4e8
- if (g3) {
- // 0x804c4f0
- ERR_STATE_free((int32_t *)0x804c4cf);
- v13 = (int32_t *)0x804c4f7;
- // branch -> 0x804c430
- } else {
- v13 = v8;
- }
- } else {
- // 0x804c4d5
- g10 = g16;
- g13 = 0x811c060;
- ERR_STATE_free((int32_t *)0x804c4cf);
- v13 = (int32_t *)0x804c4e1;
- // branch -> 0x804c430
- }
- // 0x804c430
- g17 = false;
- result = g13;
- g13 = (int32_t)v13;
- g15 = (int32_t)(int32_t *)0x804c4cf;
- g16 = (int32_t)(int32_t *)g16;
- return result;
- }
- int32_t ERR_put_error(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5) {
- int32_t v1 = g15; // 0x804c500
- int32_t v2 = g13; // 0x804c501
- int32_t result = ERR_get_state(0); // 0x804c505
- int32_t * v3 = (int32_t *)(result + 392); // bp+432
- int32_t v4 = (*v3 + 1) % 16; // 0x804c520
- g12 = v4;
- int32_t * v5 = (int32_t *)(result + 396); // bp+433
- g13 = v4;
- *v3 = v4;
- if (v4 == *v5) {
- // 0x804c5c0
- *v5 = (g12 + 1) % 16;
- // branch -> 0x804c536
- }
- int32_t v6 = 4 * g12 + result; // 0x804c536
- g11 = v6;
- g12 = a2;
- g15 = a3;
- *(int32_t *)(v6 + 8) = 0;
- *(int32_t *)(g11 + 72) = 0x1000 * g12 & 0xfff000 | 0x1000000 * a1 | g15 % 0x1000;
- *(int32_t *)(g11 + 264) = a4;
- *(int32_t *)(g11 + 328) = a5;
- int32_t v7 = *(int32_t *)(g11 + 136); // 0x804c579
- g12 = v7;
- if (v7 == 0) {
- // 0x804c5ad
- *(int32_t *)(result + 200 + 4 * g13) = 0;
- g17 = false;
- g13 = v2;
- g15 = v1;
- return result;
- }
- // 0x804c583
- if (*(int8_t *)(g11 + 200) != 1) {
- int32_t v8;
- CRYPTO_free(&v7, 0, v8);
- int32_t v9 = *v3; // 0x804c59c
- g13 = v9;
- *(int32_t *)(result + 136 + 4 * v9) = 0;
- // branch -> 0x804c5ad
- }
- // 0x804c5ad
- *(int32_t *)(result + 200 + 4 * g13) = 0;
- g17 = false;
- g13 = v2;
- g15 = v1;
- return result;
- }
- int32_t BIO_f_base64(void) {
- // 0x804dbf0
- return 0x811b380;
- }
- int32_t * CRYPTO_THREADID_current(struct struct_8 * a1, int32_t a2) {
- // 0x804ddc0
- g13 = (int32_t)a1;
- g10 = 0;
- int32_t * result = __errno_location(); // 0x804ddf8
- int32_t v1 = (int32_t)result; // bp+451
- *(int32_t *)g13 = v1;
- a1->e1 = v1;
- g17 = false;
- g13 = 0x804ddfd;
- return result;
- }
- int32_t CRYPTO_THREADID_cpy(struct struct_8 * a1, struct struct_8 * a2) {
- int32_t v1 = a2->e0; // 0x804de48
- g11 = v1;
- a1->e0 = v1;
- int32_t v2 = a2->e1; // 0x804de4c
- g12 = v2;
- a1->e1 = v2;
- return (int32_t)a1;
- }
- int32_t OPENSSL_showfatal(int32_t a1) {
- // 0x804e000
- g10 = 0x811b440;
- int32_t v1 = (int32_t)"\x86\x20\xAD\xFB"; // bp-28
- return ___vfprintf_chk((struct struct_16 *)&v1, 1);
- }
- int32_t CRYPTO_lock(int32_t * a1, int32_t a2, int32_t * a3, int32_t a4, int32_t a5, int32_t * a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10, int32_t a11, int32_t a12, int32_t a13, int32_t a14, int32_t a15, int32_t a16) {
- // 0x804e070
- g17 = false;
- g13 = a15;
- g15 = a16;
- int32_t v1;
- g16 = v1;
- int32_t * v2;
- g14 = (int32_t)v2;
- return 0;
- }
- int32_t CRYPTO_add_lock(int32_t * a1, int32_t a2, int32_t a3, int32_t * a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10, int32_t a11) {
- // 0x804e590
- g12 = 0;
- int32_t v1;
- int32_t v2;
- int32_t v3;
- CRYPTO_lock((int32_t *)9, a3, a4, a5, a3, a4, a5, a2, a7, a8, a9, a10, a11, v1, v2, v3);
- int32_t * v4 = (int32_t *)g14; // bp+508
- int32_t v5 = *v4 + a2; // 0x804e5e0
- g10 = v5;
- *v4 = v5;
- CRYPTO_lock((int32_t *)10, g13, (int32_t *)g15, g16, a3, a4, a5, g10, a7, a8, a9, a10, a11, v1, v2, v3);
- g17 = false;
- g13 = a10;
- g15 = a11;
- g16 = v1;
- g14 = v2;
- return g10;
- }
- int32_t * default_malloc_ex(int32_t * a1, int32_t * a2) {
- // 0x804e660
- g10 = 0x8066420;
- return malloc((int32_t)a1);
- }
- int32_t CRYPTO_malloc(int32_t * a1, int32_t * a2, int32_t * a3) {
- int32_t v1 = g15; // 0x804eac2
- int32_t v2 = g13; // 0x804eac3
- int32_t result;
- if (a1 < (int32_t *)1) {
- // 0x804eb58
- result = 0;
- // branch -> 0x804eb4b
- } else {
- // 0x804eadb
- g12 = 0;
- result = (int32_t)default_malloc_ex(a1, a2);
- // branch -> 0x804eb4b
- }
- // 0x804eb4b
- g17 = false;
- int32_t v3;
- g13 = v3;
- int32_t v4;
- g15 = v4;
- g16 = v2;
- g14 = v1;
- return result;
- }
- int32_t CRYPTO_free(int32_t * a1, int32_t a2, int32_t a3) {
- // 0x804ed80
- g10 = 0;
- cfree(a1);
- g17 = false;
- int32_t v1;
- g13 = v1;
- return 0;
- }
- int32_t impl_check(int32_t a1) {
- int32_t v1 = (int32_t)"ex_data.c";
- int32_t v2 = 9;
- int32_t v3;
- CRYPTO_lock(&v2, 2, &v1, 203, 0, NULL, 0, v3, a1, 0, 0, 0, 0, 0, 0, 0);
- bool v4 = g4;
- g10 = v4 ? 0x811b3d4 : 0;
- if (!v4) {
- // 0x804fdb8
- g4 = true;
- // branch -> 0x804fd90
- }
- // 0x804fd90
- v1 = (int32_t)"ex_data.c";
- v2 = 10;
- CRYPTO_lock(&v2, 2, &v1, 206, 0, NULL, 0, v3, a1, 0, 0, 0, 0, 0, 0, 0);
- g17 = false;
- return 0;
- }
- int32_t CRYPTO_new_ex_data(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6) {
- bool v1 = g4;
- int32_t v2 = g16; // 0x8050395
- int32_t * v3 = (int32_t *)g15; // bp+544
- g17 = v1 ^ true;
- int32_t v4; // 0x80503b4
- if (v1) {
- v4 = v1 ? 0x811b3d4 : 0;
- lab_0x4a408c0:;
- int32_t v5 = *(int32_t *)(v4 + 12); // 0x80503b4
- g10 = v5;
- g15 = (int32_t)v3;
- g16 = v2;
- ((int32_t (*)())v5)();
- // branch -> 0x80503c0
- }
- // 0x80503c0
- impl_check(v2);
- v4 = g4 ? 0x811b3d4 : 0;
- v3 = (int32_t *)0x80503c5;
- // branch -> 0x80503a8
- goto lab_0x4a408c0;
- }
- int32_t CRYPTO_free_ex_data(int32_t a1, int32_t a2, int32_t a3, int32_t a4) {
- bool v1 = g4;
- int32_t v2 = g16; // 0x8050415
- int32_t * v3 = (int32_t *)g15; // bp+548
- g17 = v1 ^ true;
- int32_t v4; // 0x8050434
- if (v1) {
- v4 = v1 ? 0x811b3d4 : 0;
- lab_0x49b7770:;
- int32_t v5 = *(int32_t *)(v4 + 20); // 0x8050434
- g10 = v5;
- g15 = (int32_t)v3;
- g16 = v2;
- ((int32_t (*)())v5)();
- // branch -> 0x8050440
- }
- // 0x8050440
- impl_check(v2);
- v4 = g4 ? 0x811b3d4 : 0;
- v3 = (int32_t *)0x8050445;
- // branch -> 0x8050428
- goto lab_0x49b7770;
- }
- int32_t _IO_fclose(int32_t * a1) {
- // 0x805b870
- g13 = (int32_t)a1;
- int32_t result = *a1; // 0x805b87a
- g12 = result;
- g11 = result;
- return result;
- }
- int32_t __memset_chk(void) {
- // 0x807de70
- if (!g6) {
- // 0x807de79
- int32_t v1;
- __init_cpu_features(v1);
- // branch -> 0x807de7e
- }
- // 0x807de7e
- if (g8 == 0x4000000) {
- // 0x807dea8
- return 0x807def0;
- }
- // 0x807de90
- g17 = g9 % 2 == 0;
- return g9 == 1 ? 0x807deb0 : 0x807ded0;
- }
- int32_t ___vfprintf_chk(struct struct_16 * a1, int32_t a2) {
- int32_t v1 = (int32_t)a1; // 0x807df17
- g13 = v1;
- g15 = a2;
- int32_t v2 = a1->e0 & 0x8000; // 0x807df29
- int32_t v3 = *(int32_t *)(v1 + 72); // 0x807df30
- g12 = v3;
- g11 = 1;
- int32_t * v4 = (int32_t *)v3; // bp+561
- int32_t v5 = *v4; // 0x807df4f
- g17 = v2 == v5;
- int32_t result; // bp+91
- if (v2 == v5) {
- // if_807df4f_23a_true
- *v4 = 1;
- result = g15;
- // branch -> after_if_807df4f_23a
- } else {
- // if_807df4f_23a_false
- g10 = v5;
- result = a2;
- // branch -> after_if_807df4f_23a
- }
- // after_if_807df4f_23a
- return result;
- }
- int32_t __init_cpu_features(int32_t a1) {
- // 0x807f560
- int32_t v1; // 0x807f565
- if (g11 == 0x6c65746e) {
- // 0x807f584
- if (v1 == 0x756e6547) {
- // 0x807f58c
- if (g12 == 0x49656e69) {
- // 0x807f5b1
- g8 = 0x49656e69;
- g9 |= 8;
- g12 = 0;
- g7 = 0x6c65746e;
- // branch -> 0x807f5b9
- // 0x807f5b9
- // branch -> 0x807f5ca
- // 0x807f5ca
- g11 = 3;
- g6 = true;
- g17 = false;
- return 0;
- }
- }
- // 0x807f598
- g17 = false;
- // branch -> 0x807f5b1
- } else {
- // 0x807f598
- if (g11 == 0x444d4163) {
- // 0x807f5f8
- if (v1 == 0x68747541) {
- // 0x807f600
- if (g12 == 0x69746e65) {
- // 0x807f5b1
- g10 = 1;
- g7 = 0x444d4163;
- g8 = 0x69746e65;
- // branch -> 0x807f5ca
- // 0x807f5ca
- g11 = 3;
- g6 = true;
- g17 = false;
- return -0x80000000;
- }
- }
- }
- }
- // 0x807f5b1
- if ((g7 & 0x8000000) != 0) {
- // 0x807f5b9
- // branch -> 0x807f5ca
- }
- // 0x807f5ca
- g11 = 3;
- g6 = true;
- g17 = false;
- return 0;
- }
- int32_t strncasecmp_l(void) {
- // 0x80cafe0
- if (!g6) {
- // 0x80cafe9
- int32_t v1;
- __init_cpu_features(v1);
- // branch -> 0x80cafee
- }
- // 0x80cafee
- if (g7 == 512) {
- // 0x80cb018
- return 0x80cb110;
- }
- // 0x80cb000
- g17 = (g7 & 0x100000) == 0;
- return g7 == 0x100000 ? 0x80cb1a0 : 0x80cdcf0;
- }
- int32_t function_80482e0(void) {
- // 0x80482e0
- return (int32_t)memset(NULL, 0, 0);
- }
- int32_t function_80482f0(void) {
- // 0x80482f0
- return strcmp(NULL, NULL);
- }
- /* --------- External Functions --------- */
- // void ___mingw_snprintf(void);
- // int * __errno_location(void)
- // void abort ()
- // void cfree (void *)
- // void exit (int)
- // FILE * fmemopen (void *, size_t, const char *)
- // char * index (const char *, int)
- // void * malloc (size_t)
- // void * memcpy (void *restrict, const void *restrict, size_t)
- // void * memset (void *, int, size_t)
- // int printf (const char *restrict, ...)
- // int puts (const char *)
- // int32_t scanf(int8_t * arg1, ...);
- // int setvbuf (FILE *restrict, char *restrict, int, size_t)
- // int strcmp (const char *, const char *)
- // size_t strlen (const char *)
- // int system (const char *)
- /* ---------- Meta-Information ---------- */
- // Detected compiler: gcc 4.8.1
- // Detected functions: 42 (53 in front-end)
- // Decompiler release: v1.7 (Jun 30 2014)
- // Decompilation date: Jun 30 2014 09:30:47
Advertisement
Add Comment
Please, Sign In to add comment