反编译bomb结果

#include <stdint.h>

int32_t _fopen(char * a1, char * a2);
int32_t initialize_bomb(void);
int32_t phase_1(void);
int32_t phase_2(void);
int32_t phase_3(void);
int32_t phase_4(void);
int32_t phase_5(void);
int32_t phase_6(void);
int32_t phase_defused(void);
int32_t read_line(void);

// --------------------- Global Variables ---------------------

int32_t g1 = 0;
int32_t g2 = 0;
int32_t infile = 0;
int32_t stdin_ptr = 0;
int32_t strlen_ptr = 0x402520;

// ------------------------ Functions -------------------------

// Address range: 0x400900 - 0x400d6c
int main(int argc, char ** argv) {
    // 0x400900
    switch (argc) {
        case 1: {
            // 0x400934
            infile = *(int32_t *)stdin_ptr;
            goto lab_0x400a74;
        }
        case 2: {
            int32_t v1 = _fopen((char *)*(int32_t *)((int32_t)argv + 4), "r"); // 0x40099c
            infile = v1;
            if (v1 == 0) {
                // 0x400a28
                goto lab_0x400a74;
            } else {
                goto lab_0x400a74;
            }
        }
        default: {
            // 0x400a28
            goto lab_0x400a74;
        }
    }
  lab_0x400a74:
    // 0x400a74
    initialize_bomb();
    int32_t v2 = strlen_ptr;
    for (int32_t i = 0; i < 12; i++) {
        char v3 = *(char *)(v2 + (int32_t)&g1 - 1); // 0x400b18
        *(int32_t *)(4 * (11 - i) + (int32_t)&g2) = (int32_t)v3 - 48;
        v2--;
    }
    // 0x400b68
    read_line();
    phase_1();
    phase_defused();
    read_line();
    phase_2();
    phase_defused();
    read_line();
    phase_3();
    phase_defused();
    read_line();
    phase_4();
    phase_defused();
    read_line();
    phase_5();
    phase_defused();
    read_line();
    phase_6();
    phase_defused();
    return 0;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

void (*_signal(int32_t a1, void (*a2)(int32_t)))(int32_t);
int32_t initialize_bomb(void);

// ------------------------ Functions -------------------------

// Address range: 0x401dfc - 0x401e58
int32_t initialize_bomb(void) {
    // 0x401dfc
    return (int32_t)_signal(2, (void (*)(int32_t))0x401a88);
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t explode_bomb(void);
int32_t phase_1(void);
int32_t strings_not_equal(void);

// ------------------------ Functions -------------------------

// Address range: 0x400d6c - 0x400dbc
int32_t phase_1(void) {
    // 0x400d6c
    int32_t result; // 0x400db4
    if (strings_not_equal() != 0) {
        // 0x400d9c
        result = explode_bomb();
    } else {
        result = 0;
    }
    // 0x400da4
    return result;
}
#include <stdbool.h>
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t explode_bomb(void);
int32_t phase_2(void);
int32_t read_six_numbers(void);

// ------------------------ Functions -------------------------

// Address range: 0x400dbc - 0x400ed4
int32_t phase_2(void) {
    // 0x400dbc
    read_six_numbers();
    int32_t v1;
    if (v1 != 1) {
        // 0x400e04
        explode_bomb();
    }
    int32_t v2 = 1; // bp-40
    int32_t v3 = 1; // 0x400e68
    while (true) {
        int32_t v4 = 4 * v3 + (int32_t)&v2; // 0x400e38
        int32_t v5 = *(int32_t *)v4; // 0x400e38
        int32_t v6 = *(int32_t *)0x4131fc; // 0x400e4c
        int32_t v7 = *(int32_t *)(v4 + 4); // 0x400e7c
        int32_t v8; // 0x400e98
        if (*(int32_t *)(v6 + 4 * (12 - v3)) * v5 != v7) {
            // 0x400e8c
            explode_bomb();
            v8 = v2;
        } else {
            v8 = v3;
        }
        int32_t v9 = v8 + 1; // 0x400ea0
        v2 = v9;
        if (v9 >= 6) {
            // break -> 0x400ebc
            break;
        }
        v3 = v9;
    }
    // 0x400ebc
    return 0;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t ___isoc99_sscanf(void);
int32_t explode_bomb(void);
int32_t phase_3(void);

// ------------------------ Functions -------------------------

// Address range: 0x400ed4 - 0x401230
int32_t phase_3(void) {
    // 0x400ed4
    if (___isoc99_sscanf() < 3) {
        // 0x400f3c
        explode_bomb();
    }
    int32_t v1;
    int64_t v2;
    int32_t v3;
    int64_t v4;
    switch (v3) {
        case 0: {
            int32_t v5 = *(int32_t *)(*(int32_t *)0x4131fc + 44); // 0x400f8c
            if ((int32_t)((int64_t)v5 * 0x100000000 * v2 / 0x100000000) != 777) {
                // 0x400fac
                explode_bomb();
                v1 = 113;
            } else {
                v1 = 113;
            }
            goto lab_0x4011f8;
        }
        case 1: {
            int32_t v6 = *(int32_t *)(*(int32_t *)0x4131fc + 44); // 0x400fd0
            if ((int32_t)((int64_t)v6 * 0x100000000 * v2 / 0x100000000) != 214) {
                // 0x400ff0
                explode_bomb();
                v1 = 98;
            } else {
                v1 = 98;
            }
            goto lab_0x4011f8;
        }
        case 2: {
            int32_t v7 = *(int32_t *)(*(int32_t *)0x4131fc + 44); // 0x401014
            if ((int32_t)((int64_t)v7 * 0x100000000 * v2 / 0x100000000) != 755) {
                // 0x401034
                explode_bomb();
                v1 = 98;
            } else {
                v1 = 98;
            }
            goto lab_0x4011f8;
        }
        case 3: {
            int32_t v8 = *(int32_t *)(*(int32_t *)0x4131fc + 44); // 0x401058
            if ((int32_t)((int64_t)v8 * 0x100000000 * v2 / 0x100000000) != 0) {
                // 0x401074
                explode_bomb();
                v1 = 107;
            } else {
                v1 = 107;
            }
            goto lab_0x4011f8;
        }
        case 4: {
            int32_t v9 = *(int32_t *)(*(int32_t *)0x4131fc + 44); // 0x401098
            if ((int32_t)((int64_t)v9 * 0x100000000 * v2 / 0x100000000) != 228) {
                // 0x4010b8
                explode_bomb();
                v1 = 111;
            } else {
                v1 = 111;
            }
            goto lab_0x4011f8;
        }
        case 5: {
            int32_t v10 = *(int32_t *)(*(int32_t *)0x4131fc + 44); // 0x4010dc
            if ((int32_t)((int64_t)v10 * 0x100000000 * v2 / 0x100000000) != 513) {
                // 0x4010fc
                explode_bomb();
                v1 = 116;
            } else {
                v1 = 116;
            }
            goto lab_0x4011f8;
        }
        case 6: {
            int32_t v11 = *(int32_t *)(*(int32_t *)0x4131fc + 44); // 0x401120
            int64_t v12 = 0x100000000 * v2 / 0x100000000; // 0x40112c
            if ((int32_t)((int64_t)v11 * v12) != 780) {
                // 0x401140
                explode_bomb();
                v4 = v12;
            } else {
                v4 = v12;
            }
            goto lab_0x40114c;
        }
        case 7: {
            // 0x400f48
            v4 = 0x100000000 * v2 / 0x100000000;
            goto lab_0x40114c;
        }
        default: {
            // 0x401190
            explode_bomb();
            v1 = 120;
            goto lab_0x4011f8;
        }
    }
  lab_0x4011f8:;
    int32_t v13;
    int32_t result; // 0x401228
    if (v1 != v13) {
        // 0x40120c
        result = explode_bomb();
    } else {
        result = v13;
    }
    // 0x401218
    return result;
  lab_0x40114c:;
    int32_t v14 = *(int32_t *)(*(int32_t *)0x4131fc + 44); // 0x40115c
    if ((int32_t)((int64_t)v14 * v4) != 824) {
        // 0x40117c
        explode_bomb();
        v1 = 98;
    } else {
        v1 = 98;
    }
    goto lab_0x4011f8;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t ___isoc99_sscanf(void);
int32_t explode_bomb(void);
int32_t func4(void);
int32_t phase_4(void);

// ------------------------ Functions -------------------------

// Address range: 0x4012bc - 0x4013e8
int32_t phase_4(void) {
    // 0x4012bc
    int32_t v1;
    if (v1 > 0 != (___isoc99_sscanf() == 1)) {
        // 0x401330
        explode_bomb();
    }
    int32_t v2 = func4(); // 0x4013ac
    int32_t result; // 0x4013e0
    if (*(int32_t *)(*(int32_t *)0x4131fc + 44) % 2 == 0) {
        if (v2 != 13) {
            // 0x4013c4
            result = explode_bomb();
        } else {
            result = 13;
        }
        // 0x4013d0
        return result;
    }
    if (v2 != 8) {
        // 0x401388
        result = explode_bomb();
    } else {
        result = 8;
    }
    // 0x4013d0
    return result;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t func4(void);

// ------------------------ Functions -------------------------

// Address range: 0x401230 - 0x4012bc
int32_t func4(void) {
    // 0x401230
    int32_t result;
    result = 1;
    // 0x4012a0
    return result;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t explode_bomb(void);
int32_t phase_5(void);
int32_t string_length(void);
int32_t strings_not_equal(void);

// ------------------------ Functions -------------------------

// Address range: 0x4013e8 - 0x401500
int32_t phase_5(void) {
    // 0x4013e8
    if (string_length() != 6) {
        // 0x401418
        explode_bomb();
    }
    int32_t v1 = 0; // bp-48
    int32_t v2 = &v1; // 0x401454
    int32_t v3 = v2 + 12; // 0x401458
    int32_t v4 = 0; // 0x40142c
    int32_t v5; // a0
    unsigned char v6 = *(char *)(v4 + v5); // 0x401440
    *(int32_t *)(v3 + 4 * v4) = (int32_t)(v6 % 16);
    int32_t v7 = v1; // 0x401460
    int32_t v8 = *(int32_t *)(v3 + 4 * v7); // 0x401478
    char v9 = *(char *)(v8 + (int32_t)"isrveawhobpnutfg"); // 0x401488
    *(char *)(v2 + 4 + v7) = v9;
    int32_t v10 = v1 + 1; // 0x4014a0
    v1 = v10;
    while (v10 < 6) {
        // 0x40142c
        v4 = v10;
        v6 = *(char *)(v4 + v5);
        *(int32_t *)(v3 + 4 * v4) = (int32_t)(v6 % 16);
        v7 = v1;
        v8 = *(int32_t *)(v3 + 4 * v7);
        v9 = *(char *)(v8 + (int32_t)"isrveawhobpnutfg");
        *(char *)(v2 + 4 + v7) = v9;
        v10 = v1 + 1;
        v1 = v10;
    }
    // 0x4014bc
    int32_t result; // 0x4014f8
    if (strings_not_equal() != 0) {
        // 0x4014e0
        result = explode_bomb();
    } else {
        result = 0;
    }
    // 0x4014e8
    return result;
}
#include <stdbool.h>
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t explode_bomb(void);
int32_t phase_6(void);
int32_t read_six_numbers(void);

// --------------------- Global Variables ---------------------

int32_t g1 = 253;

// ------------------------ Functions -------------------------

// Address range: 0x401500 - 0x4018a4
int32_t phase_6(void) {
    // 0x401500
    read_six_numbers();
    int32_t v1; // bp-72
    int32_t v2 = &v1; // 0x40155c
    int32_t v3 = v2 + 12; // 0x401560
    int32_t v4 = 0;
    while (true) {
      lab_0x401550:;
        int32_t * v5 = (int32_t *)(v3 + 4 * v4); // 0x401564
        if (*v5 >= 7) {
            // 0x40159c
            explode_bomb();
        }
        int32_t v6 = v4 + 1; // 0x4015b023
        v1 = v6;
        if (v6 >= 6) {
            // break -> 0x40165c
            break;
        }
        int32_t v7 = v6; // 0x4015d8
        while (true) {
          lab_0x4015c0:;
            // 0x4015c0
            int32_t v8; // 0x401608
            if (*v5 == *(int32_t *)(v3 + 4 * v7)) {
                // 0x4015fc
                explode_bomb();
                v8 = v1;
            } else {
                v8 = v7;
            }
            int32_t v9 = v8 + 1; // 0x4015b0
            v1 = v9;
            if (v9 < 6) {
                v7 = v9;
                goto lab_0x4015c0;
            } else {
                v4 = v6;
                goto lab_0x401550;
            }
        }
    }
    for (int32_t i = 0; i < 6; i++) {
        // 0x40165c
        v1 = 1;
        int32_t v10 = 4 * i + v2; // 0x4016ac
        int32_t * v11 = (int32_t *)(v10 + 12); // 0x4016b0
        int32_t v12;
        if (*v11 > 1) {
            int32_t v13 = *(int32_t *)((int32_t)&g1 + 8); // 0x401680
            int32_t v14 = 2; // 0x401694
            v1 = v14;
            v12 = v13;
            while (v14 < *v11) {
                // 0x401678
                v13 += 8;
                v14++;
                v1 = v14;
                v12 = v13;
            }
        } else {
            v12 = &g1;
        }
        // 0x4016c8
        *(int32_t *)(v10 + 36) = v12;
    }
    int32_t v15 = 1;
    int32_t * v16 = (int32_t *)(v2 + 36 + 4 * v15); // 0x40173c
    int32_t v17;
    *(int32_t *)(v17 + 8) = *v16;
    int32_t v18 = *v16; // 0x401760
    while (v15 < 5) {
        // 0x401728
        v15++;
        v17 = v18;
        v16 = (int32_t *)(v2 + 36 + 4 * v15);
        *(int32_t *)(v17 + 8) = *v16;
        v18 = *v16;
    }
    // 0x401790
    *(int32_t *)(v18 + 8) = 0;
    int32_t v19 = 0x41b190; // 0x4017b4
    for (int32_t i = 0; i < 5; i++) {
        int32_t v20 = *(int32_t *)v17; // 0x401820
        int32_t * v21 = (int32_t *)(v17 + 8); // 0x40182c
        int32_t v22 = *(int32_t *)*v21; // 0x401834
        int32_t v23; // 0x4017b430
        if (*(int32_t *)(*(int32_t *)(v19 - 0x7f94) + 44) % 2 == 0) {
            if (v22 < v20) {
                // 0x401848
                explode_bomb();
                v23 = 0x41b190;
            } else {
                v23 = v19;
            }
        } else {
            if (v20 < v22) {
                // 0x401804
                explode_bomb();
                v23 = 0x41b190;
            } else {
                v23 = v19;
            }
        }
        // 0x401854
        v19 = v23;
        v17 = *v21;
    }
    // 0x40188c
    return 0;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t fun7(void);

// ------------------------ Functions -------------------------

// Address range: 0x4018a4 - 0x401990
int32_t fun7(void) {
    int32_t v1 = 0; // 0x4018b4
    if (v1 == 0) {
        // 0x401978
        return -1;
    }
    if (v1 > 0) {
        // 0x401978
        return 2 * fun7();
    }
    int32_t result; // 0x401988
    if (v1 < 0) {
        // 0x401944
        result = 2 * fun7() | 1;
    } else {
        result = 0;
    }
    // 0x401978
    return result;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t explode_bomb(void);
int32_t fun7(void);
int32_t phase_defused(void);
int32_t read_line(void);
int32_t secret_phase(void);

// --------------------- Global Variables ---------------------

int32_t strtol_ptr = 0x4024f0;

// ------------------------ Functions -------------------------

// Address range: 0x401990 - 0x401a88
int32_t secret_phase(void) {
    // 0x401990
    read_line();
    if (strtol_ptr >= 1002) {
        // 0x401a04
        explode_bomb();
    }
    // 0x401a10
    if (fun7() != 7) {
        // 0x401a38
        explode_bomb();
    }
    // 0x401a44
    return phase_defused();
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t ___isoc99_sscanf(void);
int32_t explode_bomb(void);
int32_t read_six_numbers(void);

// ------------------------ Functions -------------------------

// Address range: 0x401ba8 - 0x401c78
int32_t read_six_numbers(void) {
    int32_t v1 = ___isoc99_sscanf(); // 0x401c40
    int32_t result; // 0x401c70
    if (v1 < 6) {
        // 0x401c54
        result = explode_bomb();
    } else {
        result = v1 < 6;
    }
    // 0x401c60
    return result;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t string_length(void);

// ------------------------ Functions -------------------------

// Address range: 0x401c78 - 0x401cf8
int32_t string_length(void) {
    // 0x401c78
    int32_t v1; // a0
    if (*(char *)v1 == 0) {
        // 0x401ce0
        return 0;
    }
    int32_t v2 = v1 + 1; // 0x401cd0
    int32_t result = 1; // 0x401ca8
    while (*(char *)v2 != 0) {
        // 0x401ca0
        v2++;
        result++;
    }
    // 0x401ce0
    return result;
}
#include <stdbool.h>
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t string_length(void);
int32_t strings_not_equal(void);

// ------------------------ Functions -------------------------

// Address range: 0x401cf8 - 0x401dfc
int32_t strings_not_equal(void) {
    int32_t v1 = string_length(); // 0x401d18
    if (v1 != string_length()) {
        // 0x401de4
        return 1;
    }
    int32_t result; // 0x401df4
    while (true) {
        // 0x401dc8
        int32_t v2; // a0
        char v3 = *(char *)v2; // 0x401dd0
        if (v3 == 0) {
            result = 0;
            // break -> 0x401de4
            break;
        }
        // 0x401d68
        int32_t v4; // a1
        if (v3 != *(char *)v4) {
            result = 1;
            // break -> 0x401de4
            break;
        }
        v2++;
        v4++;
    }
    // 0x401de4
    return result;
}
include <stdint.h>

// ------------------- Function Prototypes --------------------

void (*_signal(int32_t a1, void (*a2)(int32_t)))(int32_t);
int32_t initialize_bomb(void);

// ------------------------ Functions -------------------------

// Address range: 0x401dfc - 0x401e58
int32_t initialize_bomb(void) {
    // 0x401dfc
    return (int32_t)_signal(2, (void (*)(int32_t))0x401a88);
}
#include <stdbool.h>
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t blank_line(void);

// ------------------------ Functions -------------------------

// Address range: 0x401e58 - 0x401f2c
int32_t blank_line(void) {
    int32_t result;
    while (true) {
        // 0x401ef8
        int32_t v1; // a0
        char v2 = *(char *)v1; // 0x401f00
        if (v2 == 0) {
            result = 1;
            // break -> 0x401f14
            break;
        }
        int32_t v3 = *(int32_t *)0x4131f4; // 0x401e8c
        int16_t v4 = *(int16_t *)(*(int32_t *)v3 + 2 * (int32_t)v2); // 0x401ec0
        if ((v4 & 0x2000) == 0) {
            result = 0;
            // break -> 0x401f14
            break;
        }
        v1++;
    }
    // 0x401f14
    return result;
}
#include <stdint.h>

// ------------------- Function Prototypes --------------------

int32_t explode_bomb(void);
int32_t read_line(void);
int32_t skip(void);

// --------------------- Global Variables ---------------------

int32_t infile = 0;
int32_t num_input_strings = 0;
int32_t stdin_ptr = 0;

// ------------------------ Functions -------------------------

// Address range: 0x401fec - 0x4021f0
int32_t read_line(void) {
    int32_t v1 = skip(); // 0x40200c
    int32_t v2;
    if (v1 == 0) {
        int32_t * v3 = (int32_t *)stdin_ptr; // 0x40203c
        if (infile == *v3) {
            goto lab_0x4020c4;
        } else {
            // 0x40204c
            infile = *v3;
            int32_t v4 = skip(); // 0x4020a8
            if (v4 == 0) {
                goto lab_0x4020c4;
            } else {
                v2 = v4;
                goto lab_0x40210c;
            }
        }
    } else {
        v2 = v1;
        goto lab_0x40210c;
    }
  lab_0x40210c:;
    // 0x40210c
    int32_t v5;
    if (*(char *)v2 != 0) {
        int32_t v6 = 1; // 0x402104
        while (*(char *)(v6 + v2) != 0) {
            // 0x4020fc
            v6++;
        }
        if (v6 == 79) {
            // 0x40213c
            explode_bomb();
            v5 = 79;
        } else {
            v5 = v6;
        }
    } else {
        v5 = 0;
    }
    int32_t v7 = *(int32_t *)0x4131e8; // 0x40217c
    *(char *)(v5 - 1 + 80 * num_input_strings + v7) = 0;
    int32_t v8 = num_input_strings; // 0x4021a0
    num_input_strings = v8 + 1;
    return 80 * v8 + *(int32_t *)0x4131e8;
  lab_0x4020c4:
    // 0x4020c4
    explode_bomb();
    v2 = 0;
    goto lab_0x40210c;
}
	.file	1 "bomb.c"
	.section .mdebug.abi32
	.previous
	.gnu_attribute 4, 1
	.abicalls

	.comm	infile,4,4
	.globl	num_input_strings
	.section	.bss,"aw",@nobits
	.align	2
	.type	num_input_strings, @object
	.size	num_input_strings, 4
num_input_strings:
	.space	4

	.comm	input_strings,1600,4

	.comm	ID_num,48,4

	.comm	ID_num_Raw,20,4
	.globl	node6
	.data
	.align	2
	.type	node6, @object
	.size	node6, 12
node6:
	.word	432
	.word	6
	.word	0
	.globl	node5
	.section	.data.rel,"aw",@progbits
	.align	2
	.type	node5, @object
	.size	node5, 12
node5:
	.word	212
	.word	5
	.word	node6
	.globl	node4
	.align	2
	.type	node4, @object
	.size	node4, 12
node4:
	.word	997
	.word	4
	.word	node5
	.globl	node3
	.align	2
	.type	node3, @object
	.size	node3, 12
node3:
	.word	301
	.word	3
	.word	node4
	.globl	node2
	.align	2
	.type	node2, @object
	.size	node2, 12
node2:
	.word	725
	.word	2
	.word	node3
	.globl	node1
	.align	2
	.type	node1, @object
	.size	node1, 12
node1:
	.word	253
	.word	1
	.word	node2
	.globl	n48
	.data
	.align	2
	.type	n48, @object
	.size	n48, 12
n48:
	.word	1001
	.word	0
	.word	0
	.globl	n46
	.align	2
	.type	n46, @object
	.size	n46, 12
n46:
	.word	47
	.word	0
	.word	0
	.globl	n43
	.align	2
	.type	n43, @object
	.size	n43, 12
n43:
	.word	20
	.word	0
	.word	0
	.globl	n42
	.align	2
	.type	n42, @object
	.size	n42, 12
n42:
	.word	7
	.word	0
	.word	0
	.globl	n44
	.align	2
	.type	n44, @object
	.size	n44, 12
n44:
	.word	35
	.word	0
	.word	0
	.globl	n47
	.align	2
	.type	n47, @object
	.size	n47, 12
n47:
	.word	99
	.word	0
	.word	0
	.globl	n41
	.align	2
	.type	n41, @object
	.size	n41, 12
n41:
	.word	1
	.word	0
	.word	0
	.globl	n45
	.align	2
	.type	n45, @object
	.size	n45, 12
n45:
	.word	40
	.word	0
	.word	0
	.globl	n34
	.section	.data.rel
	.align	2
	.type	n34, @object
	.size	n34, 12
n34:
	.word	107
	.word	n47
	.word	n48
	.globl	n31
	.align	2
	.type	n31, @object
	.size	n31, 12
n31:
	.word	6
	.word	n41
	.word	n42
	.globl	n33
	.align	2
	.type	n33, @object
	.size	n33, 12
n33:
	.word	45
	.word	n45
	.word	n46
	.globl	n32
	.align	2
	.type	n32, @object
	.size	n32, 12
n32:
	.word	22
	.word	n43
	.word	n44
	.globl	n22
	.align	2
	.type	n22, @object
	.size	n22, 12
n22:
	.word	50
	.word	n33
	.word	n34
	.globl	n21
	.align	2
	.type	n21, @object
	.size	n21, 12
n21:
	.word	8
	.word	n31
	.word	n32
	.globl	n1
	.align	2
	.type	n1, @object
	.size	n1, 12
n1:
	.word	36
	.word	n21
	.word	n22
	.rdata
	.align	2
$LC0:
	.ascii	"r\000"
	.align	2
$LC1:
	.ascii	"%s: Error: Couldn't open %s\012\000"
	.align	2
$LC2:
	.ascii	"Usage: %s [<input_file>]\012\000"
	.align	2
$LC3:
	.ascii	"Please input your ID_number:\000"
	.align	2
$LC4:
	.ascii	"%s\000"
	.align	2
$LC5:
	.ascii	"Welcome to my fiendish little bomb. You have 6 phases wi"
	.ascii	"th\000"
	.align	2
$LC6:
	.ascii	"which to blow yourself up. Have a nice day!\000"
	.align	2
$LC7:
	.ascii	"Phase 1 defused. How about the next one?\000"
	.align	2
$LC8:
	.ascii	"That's number 2.  Keep going!\000"
	.align	2
$LC9:
	.ascii	"Halfway there!\000"
	.align	2
$LC10:
	.ascii	"So you got that one.  Try this one.\000"
	.align	2
$LC11:
	.ascii	"Good work!  On to the next...\000"
	.text
	.align	2
	.globl	main
	.set	nomips16
	.ent	main
	.type	main, @function
main:
	.frame	$fp,48,$31		# vars= 16, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-48
	sw	$31,44($sp)
	sw	$fp,40($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	sw	$4,48($fp)
	sw	$5,52($fp)
	lw	$3,48($fp)
	li	$2,1			# 0x1
	bne	$3,$2,$L2
	nop

	lw	$2,%got(stdin)($28)
	nop
	lw	$3,0($2)
	lw	$2,%got(infile)($28)
	nop
	sw	$3,0($2)
	b	$L3
	nop

$L2:
	lw	$3,48($fp)
	li	$2,2			# 0x2
	bne	$3,$2,$L4
	nop

	lw	$2,52($fp)
	nop
	addiu	$2,$2,4
	lw	$2,0($2)
	nop
	move	$3,$2
	lui	$2,%hi($LC0)
	addiu	$2,$2,%lo($LC0)
	move	$4,$3
	move	$5,$2
	lw	$2,%call16(fopen)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	move	$3,$2
	lw	$2,%got(infile)($28)
	nop
	sw	$3,0($2)
	lw	$2,%got(infile)($28)
	nop
	lw	$2,0($2)
	nop
	bne	$2,$0,$L3
	nop

	lui	$2,%hi($LC1)
	addiu	$4,$2,%lo($LC1)
	lw	$2,52($fp)
	nop
	lw	$3,0($2)
	lw	$2,52($fp)
	nop
	addiu	$2,$2,4
	lw	$2,0($2)
	move	$5,$3
	move	$6,$2
	lw	$2,%call16(printf)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	li	$4,8			# 0x8
	lw	$2,%call16(exit)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

$L4:
	lui	$2,%hi($LC2)
	addiu	$3,$2,%lo($LC2)
	lw	$2,52($fp)
	nop
	lw	$2,0($2)
	move	$4,$3
	move	$5,$2
	lw	$2,%call16(printf)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	li	$4,8			# 0x8
	lw	$2,%call16(exit)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

$L3:
	.option	pic0
	jal	initialize_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
	lui	$2,%hi($LC3)
	addiu	$4,$2,%lo($LC3)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	lui	$2,%hi($LC4)
	addiu	$2,$2,%lo($LC4)
	move	$4,$2
	lw	$5,%got(ID_num_Raw)($28)
	lw	$2,%call16(__isoc99_scanf)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	sw	$0,28($fp)
	lw	$4,%got(ID_num_Raw)($28)
	lw	$2,%call16(strlen)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	addiu	$2,$2,-1
	sw	$2,24($fp)
	b	$L5
	nop

$L6:
	li	$3,11			# 0xb
	lw	$2,28($fp)
	nop
	subu	$2,$3,$2
	lw	$3,24($fp)
	lw	$4,%got(ID_num_Raw)($28)
	nop
	addu	$3,$4,$3
	lb	$3,0($3)
	nop
	addiu	$3,$3,-48
	lw	$4,%got(ID_num)($28)
	sll	$2,$2,2
	addu	$2,$4,$2
	sw	$3,0($2)
	lw	$2,28($fp)
	nop
	addiu	$2,$2,1
	sw	$2,28($fp)
	lw	$2,24($fp)
	nop
	addiu	$2,$2,-1
	sw	$2,24($fp)
$L5:
	lw	$2,28($fp)
	nop
	slt	$2,$2,12
	bne	$2,$0,$L6
	nop

	lui	$2,%hi($LC5)
	addiu	$4,$2,%lo($LC5)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	lui	$2,%hi($LC6)
	addiu	$4,$2,%lo($LC6)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	read_line
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,32($fp)
	lw	$4,32($fp)
	.option	pic0
	jal	phase_1
	nop

	.option	pic2
	lw	$28,16($fp)
	.option	pic0
	jal	phase_defused
	nop

	.option	pic2
	lw	$28,16($fp)
	lui	$2,%hi($LC7)
	addiu	$4,$2,%lo($LC7)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	read_line
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,32($fp)
	lw	$4,32($fp)
	.option	pic0
	jal	phase_2
	nop

	.option	pic2
	lw	$28,16($fp)
	.option	pic0
	jal	phase_defused
	nop

	.option	pic2
	lw	$28,16($fp)
	lui	$2,%hi($LC8)
	addiu	$4,$2,%lo($LC8)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	read_line
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,32($fp)
	lw	$4,32($fp)
	.option	pic0
	jal	phase_3
	nop

	.option	pic2
	lw	$28,16($fp)
	.option	pic0
	jal	phase_defused
	nop

	.option	pic2
	lw	$28,16($fp)
	lui	$2,%hi($LC9)
	addiu	$4,$2,%lo($LC9)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	read_line
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,32($fp)
	lw	$4,32($fp)
	.option	pic0
	jal	phase_4
	nop

	.option	pic2
	lw	$28,16($fp)
	.option	pic0
	jal	phase_defused
	nop

	.option	pic2
	lw	$28,16($fp)
	lui	$2,%hi($LC10)
	addiu	$4,$2,%lo($LC10)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	read_line
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,32($fp)
	lw	$4,32($fp)
	.option	pic0
	jal	phase_5
	nop

	.option	pic2
	lw	$28,16($fp)
	.option	pic0
	jal	phase_defused
	nop

	.option	pic2
	lw	$28,16($fp)
	lui	$2,%hi($LC11)
	addiu	$4,$2,%lo($LC11)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	read_line
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,32($fp)
	lw	$4,32($fp)
	.option	pic0
	jal	phase_6
	nop

	.option	pic2
	lw	$28,16($fp)
	.option	pic0
	jal	phase_defused
	nop

	.option	pic2
	lw	$28,16($fp)
	move	$2,$0
	move	$sp,$fp
	lw	$31,44($sp)
	lw	$fp,40($sp)
	addiu	$sp,$sp,48
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	main
	.size	main, .-main
	.rdata
	.align	2
$LC12:
	.ascii	"Let's begin now!\000"
	.text
	.align	2
	.globl	phase_1
	.set	nomips16
	.ent	phase_1
	.type	phase_1, @function
phase_1:
	.frame	$fp,32,$31		# vars= 0, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-32
	sw	$31,28($sp)
	sw	$fp,24($sp)
	move	$fp,$sp
	sw	$4,32($fp)
	lw	$4,32($fp)
	lui	$2,%hi($LC12)
	addiu	$5,$2,%lo($LC12)
	.option	pic0
	jal	strings_not_equal
	nop

	.option	pic2
	beq	$2,$0,$L10
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
$L10:
	move	$sp,$fp
	lw	$31,28($sp)
	lw	$fp,24($sp)
	addiu	$sp,$sp,32
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	phase_1
	.size	phase_1, .-phase_1
	.align	2
	.globl	phase_2
	.set	nomips16
	.ent	phase_2
	.type	phase_2, @function
phase_2:
	.frame	$fp,64,$31		# vars= 32, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-64
	sw	$31,60($sp)
	sw	$fp,56($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	sw	$4,64($fp)
	addiu	$2,$fp,28
	lw	$4,64($fp)
	move	$5,$2
	.option	pic0
	jal	read_six_numbers
	nop

	.option	pic2
	lw	$28,16($fp)
	lw	$3,28($fp)
	li	$2,1			# 0x1
	beq	$3,$2,$L12
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L12:
	li	$2,1			# 0x1
	sw	$2,24($fp)
	b	$L13
	nop

$L15:
	lw	$2,24($fp)
	nop
	addiu	$2,$2,-1
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$4,4($2)
	li	$3,12			# 0xc
	lw	$2,24($fp)
	nop
	subu	$2,$3,$2
	lw	$3,%got(ID_num)($28)
	sll	$2,$2,2
	addu	$2,$3,$2
	lw	$2,0($2)
	nop
	mult	$4,$2
	mflo	$4
	lw	$2,24($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$2,4($2)
	nop
	beq	$4,$2,$L14
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L14:
	lw	$2,24($fp)
	nop
	addiu	$2,$2,1
	sw	$2,24($fp)
$L13:
	lw	$2,24($fp)
	nop
	slt	$2,$2,6
	bne	$2,$0,$L15
	nop

	move	$sp,$fp
	lw	$31,60($sp)
	lw	$fp,56($sp)
	addiu	$sp,$sp,64
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	phase_2
	.size	phase_2, .-phase_2
	.rdata
	.align	2
$LC13:
	.ascii	"%d %c %d\000"
	.text
	.align	2
	.globl	phase_3
	.set	nomips16
	.ent	phase_3
	.type	phase_3, @function
phase_3:
	.frame	$fp,56,$31		# vars= 16, regs= 2/0, args= 24, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-56
	sw	$31,52($sp)
	sw	$fp,48($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	24
	sw	$4,56($fp)
	lw	$4,56($fp)
	lui	$2,%hi($LC13)
	addiu	$5,$2,%lo($LC13)
	addiu	$3,$fp,44
	addiu	$2,$fp,40
	addiu	$6,$fp,36
	sw	$6,16($sp)
	move	$6,$3
	move	$7,$2
	lw	$2,%call16(__isoc99_sscanf)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,24($fp)
	slt	$2,$2,3
	beq	$2,$0,$L18
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
$L18:
	lw	$2,44($fp)
	nop
	sltu	$3,$2,8
	beq	$3,$0,$L19
	nop

	sll	$3,$2,2
	lui	$2,%hi($L28)
	addiu	$2,$2,%lo($L28)
	addu	$2,$3,$2
	lw	$2,0($2)
	nop
	j	$2
	nop

	.rdata
	.align	2
	.align	2
$L28:
	.word	$L20
	.word	$L21
	.word	$L22
	.word	$L23
	.word	$L24
	.word	$L25
	.word	$L26
	.word	$L27
	.text
$L20:
	li	$2,113			# 0x71
	sb	$2,32($fp)
	lw	$2,%got(ID_num)($28)
	nop
	lw	$3,44($2)
	lw	$2,36($fp)
	nop
	mult	$3,$2
	mflo	$3
	li	$2,777			# 0x309
	beq	$3,$2,$L39
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
	b	$L30
	nop

$L21:
	li	$2,98			# 0x62
	sb	$2,32($fp)
	lw	$2,%got(ID_num)($28)
	nop
	lw	$3,44($2)
	lw	$2,36($fp)
	nop
	mult	$3,$2
	mflo	$3
	li	$2,214			# 0xd6
	beq	$3,$2,$L40
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
	b	$L30
	nop

$L22:
	li	$2,98			# 0x62
	sb	$2,32($fp)
	lw	$2,%got(ID_num)($28)
	nop
	lw	$3,44($2)
	lw	$2,36($fp)
	nop
	mult	$3,$2
	mflo	$3
	li	$2,755			# 0x2f3
	beq	$3,$2,$L41
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
	b	$L30
	nop

$L23:
	li	$2,107			# 0x6b
	sb	$2,32($fp)
	lw	$2,%got(ID_num)($28)
	nop
	lw	$3,44($2)
	lw	$2,36($fp)
	nop
	mult	$3,$2
	mflo	$2
	beq	$2,$0,$L42
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
	b	$L30
	nop

$L24:
	li	$2,111			# 0x6f
	sb	$2,32($fp)
	lw	$2,%got(ID_num)($28)
	nop
	lw	$3,44($2)
	lw	$2,36($fp)
	nop
	mult	$3,$2
	mflo	$3
	li	$2,228			# 0xe4
	beq	$3,$2,$L43
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
	b	$L30
	nop

$L25:
	li	$2,116			# 0x74
	sb	$2,32($fp)
	lw	$2,%got(ID_num)($28)
	nop
	lw	$3,44($2)
	lw	$2,36($fp)
	nop
	mult	$3,$2
	mflo	$3
	li	$2,513			# 0x201
	beq	$3,$2,$L44
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
	b	$L30
	nop

$L26:
	li	$2,118			# 0x76
	sb	$2,32($fp)
	lw	$2,%got(ID_num)($28)
	nop
	lw	$3,44($2)
	lw	$2,36($fp)
	nop
	mult	$3,$2
	mflo	$3
	li	$2,780			# 0x30c
	beq	$3,$2,$L27
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
$L27:
	li	$2,98			# 0x62
	sb	$2,32($fp)
	lw	$2,%got(ID_num)($28)
	nop
	lw	$3,44($2)
	lw	$2,36($fp)
	nop
	mult	$3,$2
	mflo	$3
	li	$2,824			# 0x338
	beq	$3,$2,$L45
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
	b	$L30
	nop

$L19:
	li	$2,120			# 0x78
	sb	$2,32($fp)
	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
	b	$L30
	nop

$L39:
	nop
	b	$L30
	nop

$L40:
	nop
	b	$L30
	nop

$L41:
	nop
	b	$L30
	nop

$L42:
	nop
	b	$L30
	nop

$L43:
	nop
	b	$L30
	nop

$L44:
	nop
	b	$L30
	nop

$L45:
	nop
$L30:
	lb	$2,40($fp)
	lb	$3,32($fp)
	nop
	beq	$3,$2,$L38
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,24($fp)
$L38:
	move	$sp,$fp
	lw	$31,52($sp)
	lw	$fp,48($sp)
	addiu	$sp,$sp,56
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	phase_3
	.size	phase_3, .-phase_3
	.align	2
	.globl	func4
	.set	nomips16
	.ent	func4
	.type	func4, @function
func4:
	.frame	$fp,40,$31		# vars= 0, regs= 3/0, args= 16, gp= 8
	.mask	0xc0010000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-40
	sw	$31,36($sp)
	sw	$fp,32($sp)
	sw	$16,28($sp)
	move	$fp,$sp
	sw	$4,40($fp)
	lw	$2,40($fp)
	nop
	slt	$2,$2,2
	bne	$2,$0,$L47
	nop

	lw	$2,40($fp)
	nop
	addiu	$2,$2,-1
	move	$4,$2
	.option	pic0
	jal	func4
	nop

	.option	pic2
	move	$16,$2
	lw	$2,40($fp)
	nop
	addiu	$2,$2,-2
	move	$4,$2
	.option	pic0
	jal	func4
	nop

	.option	pic2
	addu	$2,$16,$2
	b	$L48
	nop

$L47:
	li	$2,1			# 0x1
$L48:
	move	$sp,$fp
	lw	$31,36($sp)
	lw	$fp,32($sp)
	lw	$16,28($sp)
	addiu	$sp,$sp,40
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	func4
	.size	func4, .-func4
	.rdata
	.align	2
$LC14:
	.ascii	"%d\000"
	.text
	.align	2
	.globl	phase_4
	.set	nomips16
	.ent	phase_4
	.type	phase_4, @function
phase_4:
	.frame	$fp,40,$31		# vars= 8, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-40
	sw	$31,36($sp)
	sw	$fp,32($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	sw	$4,40($fp)
	lw	$3,40($fp)
	lui	$2,%hi($LC14)
	addiu	$2,$2,%lo($LC14)
	move	$4,$3
	move	$5,$2
	addiu	$2,$fp,24
	move	$6,$2
	lw	$2,%call16(__isoc99_sscanf)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	move	$3,$2
	li	$2,1			# 0x1
	bne	$3,$2,$L51
	nop

	lw	$2,24($fp)
	nop
	bgtz	$2,$L52
	nop

$L51:
	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
	nop
$L52:
	lw	$2,%got(ID_num)($28)
	nop
	lw	$2,44($2)
	nop
	andi	$2,$2,0x1
	andi	$2,$2,0x00ff
	beq	$2,$0,$L53
	nop

	lw	$2,24($fp)
	nop
	move	$4,$2
	.option	pic0
	jal	func4
	nop

	.option	pic2
	lw	$28,16($fp)
	move	$3,$2
	li	$2,8			# 0x8
	beq	$3,$2,$L55
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
	b	$L55
	nop

$L53:
	lw	$2,24($fp)
	nop
	move	$4,$2
	.option	pic0
	jal	func4
	nop

	.option	pic2
	lw	$28,16($fp)
	move	$3,$2
	li	$2,13			# 0xd
	beq	$3,$2,$L55
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L55:
	move	$sp,$fp
	lw	$31,36($sp)
	lw	$fp,32($sp)
	addiu	$sp,$sp,40
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	phase_4
	.size	phase_4, .-phase_4
	.rdata
	.align	2
$LC15:
	.ascii	"giants\000"
	.text
	.align	2
	.globl	phase_5
	.set	nomips16
	.ent	phase_5
	.type	phase_5, @function
phase_5:
	.frame	$fp,72,$31		# vars= 40, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-72
	sw	$31,68($sp)
	sw	$fp,64($sp)
	move	$fp,$sp
	sw	$4,72($fp)
	lw	$4,72($fp)
	.option	pic0
	jal	string_length
	nop

	.option	pic2
	move	$3,$2
	li	$2,6			# 0x6
	beq	$3,$2,$L57
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
$L57:
	sw	$0,24($fp)
	b	$L58
	nop

$L59:
	lw	$2,24($fp)
	lw	$3,24($fp)
	lw	$4,72($fp)
	nop
	addu	$3,$4,$3
	lb	$3,0($3)
	nop
	andi	$3,$3,0x00ff
	andi	$3,$3,0xf
	sll	$2,$2,2
	addiu	$4,$fp,24
	addu	$2,$4,$2
	sw	$3,12($2)
	lw	$4,24($fp)
	lw	$2,24($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$3,12($2)
	lui	$2,%hi(array.3607)
	addiu	$2,$2,%lo(array.3607)
	addu	$2,$3,$2
	lb	$3,0($2)
	addiu	$2,$fp,24
	addu	$2,$2,$4
	sb	$3,4($2)
	lw	$2,24($fp)
	nop
	addiu	$2,$2,1
	sw	$2,24($fp)
$L58:
	lw	$2,24($fp)
	nop
	slt	$2,$2,6
	bne	$2,$0,$L59
	nop

	sb	$0,34($fp)
	addiu	$2,$fp,28
	move	$4,$2
	lui	$2,%hi($LC15)
	addiu	$5,$2,%lo($LC15)
	.option	pic0
	jal	strings_not_equal
	nop

	.option	pic2
	beq	$2,$0,$L61
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
$L61:
	move	$sp,$fp
	lw	$31,68($sp)
	lw	$fp,64($sp)
	addiu	$sp,$sp,72
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	phase_5
	.size	phase_5, .-phase_5
	.align	2
	.globl	phase_6
	.set	nomips16
	.ent	phase_6
	.type	phase_6, @function
phase_6:
	.frame	$fp,96,$31		# vars= 64, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-96
	sw	$31,92($sp)
	sw	$fp,88($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	sw	$4,96($fp)
	lui	$2,%hi(node1)
	addiu	$2,$2,%lo(node1)
	sw	$2,32($fp)
	addiu	$2,$fp,36
	lw	$4,96($fp)
	move	$5,$2
	.option	pic0
	jal	read_six_numbers
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$0,28($fp)
	b	$L63
	nop

$L69:
	lw	$2,28($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$2,12($2)
	nop
	slt	$2,$2,7
	beq	$2,$0,$L64
	nop

	lw	$2,28($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$2,12($2)
	nop
	bgtz	$2,$L65
	nop

$L64:
	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L65:
	lw	$2,28($fp)
	nop
	addiu	$2,$2,1
	sw	$2,24($fp)
	b	$L66
	nop

$L68:
	lw	$2,28($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$3,12($2)
	lw	$2,24($fp)
	nop
	sll	$2,$2,2
	addiu	$4,$fp,24
	addu	$2,$4,$2
	lw	$2,12($2)
	nop
	bne	$3,$2,$L67
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L67:
	lw	$2,24($fp)
	nop
	addiu	$2,$2,1
	sw	$2,24($fp)
$L66:
	lw	$2,24($fp)
	nop
	slt	$2,$2,6
	bne	$2,$0,$L68
	nop

	lw	$2,28($fp)
	nop
	addiu	$2,$2,1
	sw	$2,28($fp)
$L63:
	lw	$2,28($fp)
	nop
	slt	$2,$2,6
	bne	$2,$0,$L69
	nop

	sw	$0,28($fp)
	b	$L70
	nop

$L73:
	lui	$2,%hi(node1)
	addiu	$2,$2,%lo(node1)
	sw	$2,32($fp)
	li	$2,1			# 0x1
	sw	$2,24($fp)
	b	$L71
	nop

$L72:
	lw	$2,32($fp)
	nop
	lw	$2,8($2)
	nop
	sw	$2,32($fp)
	lw	$2,24($fp)
	nop
	addiu	$2,$2,1
	sw	$2,24($fp)
$L71:
	lw	$2,28($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$3,12($2)
	lw	$2,24($fp)
	nop
	slt	$2,$2,$3
	bne	$2,$0,$L72
	nop

	lw	$2,28($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$3,32($fp)
	nop
	sw	$3,36($2)
	lw	$2,28($fp)
	nop
	addiu	$2,$2,1
	sw	$2,28($fp)
$L70:
	lw	$2,28($fp)
	nop
	slt	$2,$2,6
	bne	$2,$0,$L73
	nop

	lw	$2,60($fp)
	nop
	sw	$2,32($fp)
	li	$2,1			# 0x1
	sw	$2,28($fp)
	b	$L74
	nop

$L75:
	lw	$2,28($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$3,36($2)
	lw	$2,32($fp)
	nop
	sw	$3,8($2)
	lw	$2,28($fp)
	nop
	sll	$2,$2,2
	addiu	$3,$fp,24
	addu	$2,$3,$2
	lw	$2,36($2)
	nop
	sw	$2,32($fp)
	lw	$2,28($fp)
	nop
	addiu	$2,$2,1
	sw	$2,28($fp)
$L74:
	lw	$2,28($fp)
	nop
	slt	$2,$2,6
	bne	$2,$0,$L75
	nop

	lw	$2,32($fp)
	nop
	sw	$0,8($2)
	lw	$2,60($fp)
	nop
	sw	$2,32($fp)
	sw	$0,28($fp)
	b	$L76
	nop

$L79:
	lw	$2,%got(ID_num)($28)
	nop
	lw	$2,44($2)
	nop
	andi	$2,$2,0x1
	andi	$2,$2,0x00ff
	beq	$2,$0,$L77
	nop

	lw	$2,32($fp)
	nop
	lw	$3,0($2)
	lw	$2,32($fp)
	nop
	lw	$2,8($2)
	nop
	lw	$2,0($2)
	nop
	slt	$2,$3,$2
	beq	$2,$0,$L78
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
	b	$L78
	nop

$L77:
	lw	$2,32($fp)
	nop
	lw	$3,0($2)
	lw	$2,32($fp)
	nop
	lw	$2,8($2)
	nop
	lw	$2,0($2)
	nop
	slt	$2,$2,$3
	beq	$2,$0,$L78
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L78:
	lw	$2,32($fp)
	nop
	lw	$2,8($2)
	nop
	sw	$2,32($fp)
	lw	$2,28($fp)
	nop
	addiu	$2,$2,1
	sw	$2,28($fp)
$L76:
	lw	$2,28($fp)
	nop
	slt	$2,$2,5
	bne	$2,$0,$L79
	nop

	move	$sp,$fp
	lw	$31,92($sp)
	lw	$fp,88($sp)
	addiu	$sp,$sp,96
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	phase_6
	.size	phase_6, .-phase_6
	.align	2
	.globl	fun7
	.set	nomips16
	.ent	fun7
	.type	fun7, @function
fun7:
	.frame	$fp,32,$31		# vars= 0, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-32
	sw	$31,28($sp)
	sw	$fp,24($sp)
	move	$fp,$sp
	sw	$4,32($fp)
	sw	$5,36($fp)
	lw	$2,32($fp)
	nop
	bne	$2,$0,$L82
	nop

	li	$2,-1			# 0xffffffffffffffff
	b	$L83
	nop

$L82:
	lw	$2,32($fp)
	nop
	lw	$3,0($2)
	lw	$2,36($fp)
	nop
	slt	$2,$2,$3
	beq	$2,$0,$L84
	nop

	lw	$2,32($fp)
	nop
	lw	$2,4($2)
	nop
	move	$4,$2
	lw	$5,36($fp)
	.option	pic0
	jal	fun7
	nop

	.option	pic2
	sll	$2,$2,1
	b	$L83
	nop

$L84:
	lw	$2,32($fp)
	nop
	lw	$3,0($2)
	lw	$2,36($fp)
	nop
	slt	$2,$3,$2
	beq	$2,$0,$L85
	nop

	lw	$2,32($fp)
	nop
	lw	$2,8($2)
	nop
	move	$4,$2
	lw	$5,36($fp)
	.option	pic0
	jal	fun7
	nop

	.option	pic2
	sll	$2,$2,1
	addiu	$2,$2,1
	b	$L83
	nop

$L85:
	move	$2,$0
$L83:
	move	$sp,$fp
	lw	$31,28($sp)
	lw	$fp,24($sp)
	addiu	$sp,$sp,32
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	fun7
	.size	fun7, .-fun7
	.rdata
	.align	2
$LC16:
	.ascii	"Wow! You've defused the secret stage!\000"
	.text
	.align	2
	.globl	secret_phase
	.set	nomips16
	.ent	secret_phase
	.type	secret_phase, @function
secret_phase:
	.frame	$fp,40,$31		# vars= 8, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-40
	sw	$31,36($sp)
	sw	$fp,32($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	.option	pic0
	jal	read_line
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,28($fp)
	lw	$2,28($fp)
	nop
	move	$4,$2
	move	$5,$0
	li	$6,10			# 0xa
	lw	$2,%call16(strtol)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	sw	$2,24($fp)
	lw	$2,24($fp)
	nop
	addiu	$2,$2,-1
	sltu	$2,$2,1001
	bne	$2,$0,$L88
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L88:
	lui	$2,%hi(n1)
	addiu	$4,$2,%lo(n1)
	lw	$5,24($fp)
	.option	pic0
	jal	fun7
	nop

	.option	pic2
	lw	$28,16($fp)
	move	$3,$2
	li	$2,7			# 0x7
	beq	$3,$2,$L89
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L89:
	lui	$2,%hi($LC16)
	addiu	$4,$2,%lo($LC16)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	phase_defused
	nop

	.option	pic2
	lw	$28,16($fp)
	move	$sp,$fp
	lw	$31,36($sp)
	lw	$fp,32($sp)
	addiu	$sp,$sp,40
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	secret_phase
	.size	secret_phase, .-secret_phase
	.rdata
	.align	2
$LC17:
	.ascii	"So you think you can stop the bomb with ctrl-c, do you?\000"
	.align	2
$LC18:
	.ascii	"Well...\000"
	.align	2
$LC19:
	.ascii	"OK. :-)\000"
	.text
	.align	2
	.globl	sig_handler
	.set	nomips16
	.ent	sig_handler
	.type	sig_handler, @function
sig_handler:
	.frame	$fp,32,$31		# vars= 0, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-32
	sw	$31,28($sp)
	sw	$fp,24($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	lui	$2,%hi($LC17)
	addiu	$4,$2,%lo($LC17)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	li	$4,3			# 0x3
	lw	$2,%call16(sleep)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	lui	$2,%hi($LC18)
	addiu	$2,$2,%lo($LC18)
	move	$4,$2
	lw	$2,%call16(printf)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	nop
	lw	$2,%got(stdout)($28)
	nop
	lw	$2,0($2)
	nop
	move	$4,$2
	lw	$2,%call16(fflush)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	li	$4,1			# 0x1
	lw	$2,%call16(sleep)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	lui	$2,%hi($LC19)
	addiu	$4,$2,%lo($LC19)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	li	$4,16			# 0x10
	lw	$2,%call16(exit)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	.set	macro
	.set	reorder
	.end	sig_handler
	.size	sig_handler, .-sig_handler
	.align	2
	.globl	invalid_phase
	.set	nomips16
	.ent	invalid_phase
	.type	invalid_phase, @function
invalid_phase:
	.frame	$fp,8,$31		# vars= 0, regs= 1/0, args= 0, gp= 0
	.mask	0x40000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-8
	sw	$fp,4($sp)
	move	$fp,$sp
	move	$sp,$fp
	lw	$fp,4($sp)
	addiu	$sp,$sp,8
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	invalid_phase
	.size	invalid_phase, .-invalid_phase
	.rdata
	.align	2
$LC20:
	.ascii	"%d %d %d %d %d %d\000"
	.text
	.align	2
	.globl	read_six_numbers
	.set	nomips16
	.ent	read_six_numbers
	.type	read_six_numbers, @function
read_six_numbers:
	.frame	$fp,48,$31		# vars= 0, regs= 2/0, args= 32, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-48
	sw	$31,44($sp)
	sw	$fp,40($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	32
	sw	$4,48($fp)
	sw	$5,52($fp)
	lw	$4,48($fp)
	lui	$2,%hi($LC20)
	addiu	$3,$2,%lo($LC20)
	lw	$2,52($fp)
	nop
	addiu	$2,$2,4
	lw	$5,52($fp)
	nop
	addiu	$8,$5,8
	lw	$5,52($fp)
	nop
	addiu	$7,$5,12
	lw	$5,52($fp)
	nop
	addiu	$6,$5,16
	lw	$5,52($fp)
	nop
	addiu	$5,$5,20
	sw	$8,16($sp)
	sw	$7,20($sp)
	sw	$6,24($sp)
	sw	$5,28($sp)
	move	$5,$3
	lw	$6,52($fp)
	move	$7,$2
	lw	$2,%call16(__isoc99_sscanf)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,32($fp)
	slt	$2,$2,6
	beq	$2,$0,$L97
	nop

	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,32($fp)
$L97:
	move	$sp,$fp
	lw	$31,44($sp)
	lw	$fp,40($sp)
	addiu	$sp,$sp,48
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	read_six_numbers
	.size	read_six_numbers, .-read_six_numbers
	.align	2
	.globl	string_length
	.set	nomips16
	.ent	string_length
	.type	string_length, @function
string_length:
	.frame	$fp,24,$31		# vars= 8, regs= 1/0, args= 0, gp= 8
	.mask	0x40000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-24
	sw	$fp,20($sp)
	move	$fp,$sp
	sw	$4,24($fp)
	lw	$2,24($fp)
	nop
	sw	$2,12($fp)
	sw	$0,8($fp)
	b	$L99
	nop

$L100:
	lw	$2,8($fp)
	nop
	addiu	$2,$2,1
	sw	$2,8($fp)
$L99:
	lw	$2,12($fp)
	nop
	lb	$2,0($2)
	nop
	sltu	$2,$0,$2
	andi	$2,$2,0x00ff
	lw	$3,12($fp)
	nop
	addiu	$3,$3,1
	sw	$3,12($fp)
	bne	$2,$0,$L100
	nop

	lw	$2,8($fp)
	move	$sp,$fp
	lw	$fp,20($sp)
	addiu	$sp,$sp,24
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	string_length
	.size	string_length, .-string_length
	.align	2
	.globl	strings_not_equal
	.set	nomips16
	.ent	strings_not_equal
	.type	strings_not_equal, @function
strings_not_equal:
	.frame	$fp,48,$31		# vars= 16, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-48
	sw	$31,44($sp)
	sw	$fp,40($sp)
	move	$fp,$sp
	sw	$4,48($fp)
	sw	$5,52($fp)
	lw	$4,48($fp)
	.option	pic0
	jal	string_length
	nop

	.option	pic2
	sw	$2,36($fp)
	lw	$4,52($fp)
	.option	pic0
	jal	string_length
	nop

	.option	pic2
	sw	$2,32($fp)
	lw	$2,48($fp)
	nop
	sw	$2,28($fp)
	lw	$2,52($fp)
	nop
	sw	$2,24($fp)
	lw	$3,36($fp)
	lw	$2,32($fp)
	nop
	beq	$3,$2,$L108
	nop

	li	$2,1			# 0x1
	b	$L104
	nop

$L106:
	lw	$2,28($fp)
	nop
	lb	$3,0($2)
	lw	$2,24($fp)
	nop
	lb	$2,0($2)
	nop
	xor	$2,$3,$2
	sltu	$2,$0,$2
	andi	$2,$2,0x00ff
	lw	$3,28($fp)
	nop
	addiu	$3,$3,1
	sw	$3,28($fp)
	lw	$3,24($fp)
	nop
	addiu	$3,$3,1
	sw	$3,24($fp)
	beq	$2,$0,$L105
	nop

	li	$2,1			# 0x1
	b	$L104
	nop

$L108:
	nop
$L105:
	lw	$2,28($fp)
	nop
	lb	$2,0($2)
	nop
	bne	$2,$0,$L106
	nop

	move	$2,$0
$L104:
	move	$sp,$fp
	lw	$31,44($sp)
	lw	$fp,40($sp)
	addiu	$sp,$sp,48
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	strings_not_equal
	.size	strings_not_equal, .-strings_not_equal
	.align	2
	.globl	initialize_bomb
	.set	nomips16
	.ent	initialize_bomb
	.type	initialize_bomb, @function
initialize_bomb:
	.frame	$fp,32,$31		# vars= 0, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-32
	sw	$31,28($sp)
	sw	$fp,24($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	lui	$2,%hi(sig_handler)
	addiu	$2,$2,%lo(sig_handler)
	li	$4,2			# 0x2
	move	$5,$2
	lw	$2,%call16(signal)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	move	$sp,$fp
	lw	$31,28($sp)
	lw	$fp,24($sp)
	addiu	$sp,$sp,32
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	initialize_bomb
	.size	initialize_bomb, .-initialize_bomb
	.align	2
	.globl	blank_line
	.set	nomips16
	.ent	blank_line
	.type	blank_line, @function
blank_line:
	.frame	$fp,40,$31		# vars= 8, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-40
	sw	$31,36($sp)
	sw	$fp,32($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	sw	$4,40($fp)
	lw	$2,40($fp)
	nop
	sw	$2,24($fp)
	b	$L112
	nop

$L114:
	lw	$2,%call16(__ctype_b_loc)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	lw	$3,0($2)
	lw	$2,24($fp)
	nop
	lb	$2,0($2)
	nop
	sll	$2,$2,1
	addu	$2,$3,$2
	lhu	$2,0($2)
	nop
	andi	$2,$2,0x2000
	sltu	$2,$2,1
	andi	$2,$2,0x00ff
	lw	$3,24($fp)
	nop
	addiu	$3,$3,1
	sw	$3,24($fp)
	beq	$2,$0,$L112
	nop

	move	$2,$0
	b	$L113
	nop

$L112:
	lw	$2,24($fp)
	nop
	lb	$2,0($2)
	nop
	bne	$2,$0,$L114
	nop

	li	$2,1			# 0x1
$L113:
	move	$sp,$fp
	lw	$31,36($sp)
	lw	$fp,32($sp)
	addiu	$sp,$sp,40
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	blank_line
	.size	blank_line, .-blank_line
	.align	2
	.globl	skip
	.set	nomips16
	.ent	skip
	.type	skip, @function
skip:
	.frame	$fp,40,$31		# vars= 8, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-40
	sw	$31,36($sp)
	sw	$fp,32($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	b	$L118
	nop

$L120:
	nop
$L118:
	lw	$3,%got(input_strings)($28)
	lui	$2,%hi(num_input_strings)
	lw	$2,%lo(num_input_strings)($2)
	nop
	sll	$2,$2,4
	sll	$4,$2,2
	addu	$2,$2,$4
	addu	$3,$3,$2
	lw	$2,%got(infile)($28)
	nop
	lw	$2,0($2)
	move	$4,$3
	li	$5,80			# 0x50
	move	$6,$2
	lw	$2,%call16(fgets)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	sw	$2,24($fp)
	lw	$2,24($fp)
	nop
	beq	$2,$0,$L117
	nop

	lw	$4,24($fp)
	.option	pic0
	jal	blank_line
	nop

	.option	pic2
	lw	$28,16($fp)
	bne	$2,$0,$L120
	nop

$L117:
	lw	$2,24($fp)
	move	$sp,$fp
	lw	$31,36($sp)
	lw	$fp,32($sp)
	addiu	$sp,$sp,40
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	skip
	.size	skip, .-skip
	.rdata
	.align	2
$LC21:
	.ascii	"GRADE_BOMB\000"
	.align	2
$LC22:
	.ascii	"Error: Premature EOF on stdin\000"
	.align	2
$LC23:
	.ascii	"Error: Input line too long\000"
	.text
	.align	2
	.globl	read_line
	.set	nomips16
	.ent	read_line
	.type	read_line, @function
read_line:
	.frame	$fp,40,$31		# vars= 8, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-40
	sw	$31,36($sp)
	sw	$fp,32($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	.option	pic0
	jal	skip
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,28($fp)
	lw	$2,28($fp)
	nop
	bne	$2,$0,$L122
	nop

	lw	$2,%got(infile)($28)
	nop
	lw	$3,0($2)
	lw	$2,%got(stdin)($28)
	nop
	lw	$2,0($2)
	nop
	beq	$3,$2,$L123
	nop

	lui	$2,%hi($LC21)
	addiu	$4,$2,%lo($LC21)
	lw	$2,%call16(getenv)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	beq	$2,$0,$L124
	nop

	move	$4,$0
	lw	$2,%call16(exit)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

$L124:
	lw	$2,%got(stdin)($28)
	nop
	lw	$3,0($2)
	lw	$2,%got(infile)($28)
	nop
	sw	$3,0($2)
	.option	pic0
	jal	skip
	nop

	.option	pic2
	lw	$28,16($fp)
	sw	$2,28($fp)
$L123:
	lw	$2,28($fp)
	nop
	bne	$2,$0,$L122
	nop

	lui	$2,%hi($LC22)
	addiu	$4,$2,%lo($LC22)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L122:
	sw	$0,24($fp)
	b	$L125
	nop

$L126:
	lw	$2,24($fp)
	nop
	addiu	$2,$2,1
	sw	$2,24($fp)
$L125:
	lw	$2,24($fp)
	lw	$3,28($fp)
	nop
	addu	$2,$3,$2
	lb	$2,0($2)
	nop
	bne	$2,$0,$L126
	nop

	lw	$3,24($fp)
	li	$2,79			# 0x4f
	bne	$3,$2,$L127
	nop

	lui	$2,%hi($LC23)
	addiu	$4,$2,%lo($LC23)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	explode_bomb
	nop

	.option	pic2
	lw	$28,16($fp)
$L127:
	lui	$2,%hi(num_input_strings)
	lw	$2,%lo(num_input_strings)($2)
	lw	$3,24($fp)
	nop
	addiu	$4,$3,-1
	lw	$3,%got(input_strings)($28)
	sll	$2,$2,4
	sll	$5,$2,2
	addu	$2,$2,$5
	addu	$2,$2,$4
	addu	$2,$3,$2
	sb	$0,0($2)
	lw	$3,%got(input_strings)($28)
	lui	$2,%hi(num_input_strings)
	lw	$2,%lo(num_input_strings)($2)
	nop
	sll	$2,$2,4
	sll	$4,$2,2
	addu	$2,$2,$4
	addu	$2,$3,$2
	sw	$2,28($fp)
	lui	$2,%hi(num_input_strings)
	lw	$2,%lo(num_input_strings)($2)
	nop
	addiu	$3,$2,1
	lui	$2,%hi(num_input_strings)
	sw	$3,%lo(num_input_strings)($2)
	lw	$2,28($fp)
	move	$sp,$fp
	lw	$31,36($sp)
	lw	$fp,32($sp)
	addiu	$sp,$sp,40
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	read_line
	.size	read_line, .-read_line
	.rdata
	.align	2
$LC24:
	.ascii	"\012BOOM!!!\000"
	.align	2
$LC25:
	.ascii	"The bomb has blown up.\000"
	.text
	.align	2
	.globl	explode_bomb
	.set	nomips16
	.ent	explode_bomb
	.type	explode_bomb, @function
explode_bomb:
	.frame	$fp,32,$31		# vars= 0, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-32
	sw	$31,28($sp)
	sw	$fp,24($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	lui	$2,%hi($LC24)
	addiu	$4,$2,%lo($LC24)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	lui	$2,%hi($LC25)
	addiu	$4,$2,%lo($LC25)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	li	$4,8			# 0x8
	lw	$2,%call16(exit)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	.set	macro
	.set	reorder
	.end	explode_bomb
	.size	explode_bomb, .-explode_bomb
	.rdata
	.align	2
$LC26:
	.ascii	"%d %s\000"
	.align	2
$LC27:
	.ascii	"austinpowers\000"
	.align	2
$LC28:
	.ascii	"Curses, you've found the secret phase!\000"
	.align	2
$LC29:
	.ascii	"But finding it and solving it are quite different...\000"
	.align	2
$LC30:
	.ascii	"Congratulations! You've defused the bomb!\000"
	.text
	.align	2
	.globl	phase_defused
	.set	nomips16
	.ent	phase_defused
	.type	phase_defused, @function
phase_defused:
	.frame	$fp,120,$31		# vars= 88, regs= 2/0, args= 16, gp= 8
	.mask	0xc0000000,-4
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	
	addiu	$sp,$sp,-120
	sw	$31,116($sp)
	sw	$fp,112($sp)
	move	$fp,$sp
	lui	$28,%hi(__gnu_local_gp)
	addiu	$28,$28,%lo(__gnu_local_gp)
	.cprestore	16
	lui	$2,%hi(num_input_strings)
	lw	$3,%lo(num_input_strings)($2)
	li	$2,6			# 0x6
	bne	$3,$2,$L134
	nop

	lw	$2,%got(input_strings)($28)
	nop
	addiu	$4,$2,240
	lui	$2,%hi($LC26)
	addiu	$3,$2,%lo($LC26)
	addiu	$2,$fp,104
	move	$5,$3
	move	$6,$2
	addiu	$2,$fp,24
	move	$7,$2
	lw	$2,%call16(__isoc99_sscanf)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	move	$3,$2
	li	$2,2			# 0x2
	bne	$3,$2,$L133
	nop

	addiu	$2,$fp,24
	move	$4,$2
	lui	$2,%hi($LC27)
	addiu	$5,$2,%lo($LC27)
	.option	pic0
	jal	strings_not_equal
	nop

	.option	pic2
	lw	$28,16($fp)
	bne	$2,$0,$L133
	nop

	lui	$2,%hi($LC28)
	addiu	$4,$2,%lo($LC28)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	lui	$2,%hi($LC29)
	addiu	$4,$2,%lo($LC29)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
	.option	pic0
	jal	secret_phase
	nop

	.option	pic2
	lw	$28,16($fp)
$L133:
	lui	$2,%hi($LC30)
	addiu	$4,$2,%lo($LC30)
	lw	$2,%call16(puts)($28)
	nop
	move	$25,$2
	jalr	$25
	nop

	lw	$28,16($fp)
$L134:
	move	$sp,$fp
	lw	$31,116($sp)
	lw	$fp,112($sp)
	addiu	$sp,$sp,120
	j	$31
	nop

	.set	macro
	.set	reorder
	.end	phase_defused
	.size	phase_defused, .-phase_defused
	.data
	.align	2
	.type	array.3607, @object
	.size	array.3607, 16
array.3607:
	.byte	105
	.byte	115
	.byte	114
	.byte	118
	.byte	101
	.byte	97
	.byte	119
	.byte	104
	.byte	111
	.byte	98
	.byte	112
	.byte	110
	.byte	117
	.byte	116
	.byte	102
	.byte	103
	.ident	"GCC: (GNU) 4.4.4 20100726 (Red Hat 4.4.4-14)"

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Back to Top