{"game":{"name":"Demo Quest 64","slug":"demo-n64","arch":"mips","bytes":1084,"platform":"N64","compiler":"GCC 2.7.2","functions":13,"align":16,"total":1168},"functions":[{"name":"clamp_s32","offset":0,"size":36,"insns":9,"hex":"0085102a1440000500a0102100c010210044182a506000010080102103e0000800000000","asm":[[0,"0085102a","slt $v0, $a0, $a1"],[4,"14400005","bnez $v0, 0x1c"],[8,"00a01021","move $v0, $a1"],[12,"00c01021","move $v0, $a2"],[16,"0044182a","slt $v1, $v0, $a0"],[20,"50600001","beql $v1, $zero, 0x1c"],[24,"00801021","move $v0, $a0"],[28,"03e00008","jr $ra"],[32,"00000000","nop"]],"src":"s32 clamp_s32(s32 v, s32 lo, s32 hi) {\n    if (v < lo) {\n        return lo;\n    }\n    if (v > hi) {\n        return hi;\n    }\n    return v;\n}","attempts":[720,215,200]},{"name":"abs_s32","offset":48,"size":20,"insns":5,"hex":"00801021044200010002102303e0000800000000","asm":[[0,"00801021","move $v0, $a0"],[4,"04420001","bltzl $v0, 0xc"],[8,"00021023","negu $v0, $v0"],[12,"03e00008","jr $ra"],[16,"00000000","nop"]],"src":"s32 abs_s32(s32 v) {\n    return v < 0 ? -v : v;\n}","attempts":[700]},{"name":"player_take_damage","offset":80,"size":84,"insns":21,"hex":"3c03000024630020846200001c40000f000000003c0200008c42001c004410233c010000ac22001c1c4000072402003c240200033c010000ac20001c3c010000a42200222402003ca462000003e0000800000000","asm":[[0,"3c030000","lui $v1, %hi(g_player+0x20)"],[4,"24630020","addiu $v1, $v1, %lo(g_player+0x20)"],[8,"84620000","lh $v0, ($v1)"],[12,"1c40000f","bgtz $v0, 0x4c"],[16,"00000000","nop"],[20,"3c020000","lui $v0, %hi(g_player+0x1c)"],[24,"8c42001c","lw $v0, %lo(g_player+0x1c)($v0)"],[28,"00441023","subu $v0, $v0, $a0"],[32,"3c010000","lui $at, %hi(g_player+0x1c)"],[36,"ac22001c","sw $v0, %lo(g_player+0x1c)($at)"],[40,"1c400007","bgtz $v0, 0x48"],[44,"2402003c","addiu $v0, $zero, 0x3c"],[48,"24020003","addiu $v0, $zero, 3"],[52,"3c010000","lui $at, %hi(g_player+0x1c)"],[56,"ac20001c","sw $zero, %lo(g_player+0x1c)($at)"],[60,"3c010000","lui $at, %hi(g_player+0x22)"],[64,"a4220022","sh $v0, %lo(g_player+0x22)($at)"],[68,"2402003c","addiu $v0, $zero, 0x3c"],[72,"a4620000","sh $v0, ($v1)"],[76,"03e00008","jr $ra"],[80,"00000000","nop"]],"src":"void player_take_damage(s32 amount) {\n    if (g_player.invuln_timer > 0) {\n        return;\n    }\n    g_player.hp -= amount;\n    if (g_player.hp <= 0) {\n        g_player.hp = 0;\n        g_player.state = PLAYER_STATE_DEAD;\n    }\n    g_player.invuln_timer = 60;\n}","attempts":[890,645,400]},{"name":"rng_next","offset":176,"size":48,"insns":12,"hex":"3c0200008c4200003c0341c634634e6d0043001800001012244230393c010000ac2200000002140203e0000830427fff","asm":[[0,"3c020000","lui $v0, %hi(g_rng_state)"],[4,"8c420000","lw $v0, %lo(g_rng_state)($v0)"],[8,"3c0341c6","lui $v1, 0x41c6"],[12,"34634e6d","ori $v1, $v1, 0x4e6d"],[16,"00430018","mult $v0, $v1"],[20,"00001012","mflo $v0"],[24,"24423039","addiu $v0, $v0, 0x3039"],[28,"3c010000","lui $at, %hi(g_rng_state)"],[32,"ac220000","sw $v0, %lo(g_rng_state)($at)"],[36,"00021402","srl $v0, $v0, 0x10"],[40,"03e00008","jr $ra"],[44,"30427fff","andi $v0, $v0, 0x7fff"]],"src":"u32 rng_next(void) {\n    g_rng_state = g_rng_state * 1103515245 + 12345;\n    return (g_rng_state >> 16) & 0x7FFF;\n}","attempts":[200,160]},{"name":"count_alive_entities","offset":224,"size":56,"insns":14,"hex":"0000282100002021000018213c0200000043102194420002248400013042000100a22821288200201440fff82463001c03e0000800a01021","asm":[[0,"00002821","move $a1, $zero"],[4,"00002021","move $a0, $zero"],[8,"00001821","move $v1, $zero"],[12,"3c020000","lui $v0, %hi(g_entities+0x2)"],[16,"00431021","addu $v0, $v0, $v1"],[20,"94420002","lhu $v0, %lo(g_entities+0x2)($v0)"],[24,"24840001","addiu $a0, $a0, 1"],[28,"30420001","andi $v0, $v0, 1"],[32,"00a22821","addu $a1, $a1, $v0"],[36,"28820020","slti $v0, $a0, 0x20"],[40,"1440fff8","bnez $v0, 0xc"],[44,"2463001c","addiu $v1, $v1, 0x1c"],[48,"03e00008","jr $ra"],[52,"00a01021","move $v0, $a1"]],"src":"s32 count_alive_entities(void) {\n    s32 i;\n    s32 n = 0;\n\n    for (i = 0; i < MAX_ENTITIES; i++) {\n        if (g_entities[i].flags & ENTITY_FLAG_ACTIVE) {\n            n++;\n        }\n    }\n    return n;\n}","attempts":[910]},{"name":"entity_update_physics","offset":288,"size":104,"insns":26,"hex":"008030218cc2001024420002acc20010284200191440000224020018acc200108cc300048cc4000c8cc200088cc500100064182100451021acc20008284201c114400007acc3000494c30002240201c0acc20008acc0001034630002a4c3000203e0000800000000","asm":[[0,"00803021","move $a2, $a0"],[4,"8cc20010","lw $v0, 0x10($a2)"],[8,"24420002","addiu $v0, $v0, 2"],[12,"acc20010","sw $v0, 0x10($a2)"],[16,"28420019","slti $v0, $v0, 0x19"],[20,"14400002","bnez $v0, 0x20"],[24,"24020018","addiu $v0, $zero, 0x18"],[28,"acc20010","sw $v0, 0x10($a2)"],[32,"8cc30004","lw $v1, 4($a2)"],[36,"8cc4000c","lw $a0, 0xc($a2)"],[40,"8cc20008","lw $v0, 8($a2)"],[44,"8cc50010","lw $a1, 0x10($a2)"],[48,"00641821","addu $v1, $v1, $a0"],[52,"00451021","addu $v0, $v0, $a1"],[56,"acc20008","sw $v0, 8($a2)"],[60,"284201c1","slti $v0, $v0, 0x1c1"],[64,"14400007","bnez $v0, 0x60"],[68,"acc30004","sw $v1, 4($a2)"],[72,"94c30002","lhu $v1, 2($a2)"],[76,"240201c0","addiu $v0, $zero, 0x1c0"],[80,"acc20008","sw $v0, 8($a2)"],[84,"acc00010","sw $zero, 0x10($a2)"],[88,"34630002","ori $v1, $v1, 2"],[92,"a4c30002","sh $v1, 2($a2)"],[96,"03e00008","jr $ra"],[100,"00000000","nop"]],"src":"void entity_update_physics(Entity *e) {\n    e->vel_y += GRAVITY;\n    if (e->vel_y > MAX_FALL_SPEED) {\n        e->vel_y = MAX_FALL_SPEED;\n    }\n    e->x += e->vel_x;\n    e->y += e->vel_y;\n    if (e->y > FLOOR_Y) {\n        e->y = FLOOR_Y;\n        e->vel_y = 0;\n        e->flags |= ENTITY_FLAG_GROUNDED;\n    }\n}","attempts":[955,875]},{"name":"entity_default_hp","offset":400,"size":96,"insns":24,"hex":"2484ffff00042400000424032c82000510400010000410803c010000002208218c22000000400008000000000800006d240200030800006d240200020800006d2402000a0800006d240200320800006d240200010000102103e0000800000000","asm":[[0,"2484ffff","addiu $a0, $a0, -1"],[4,"00042400","sll $a0, $a0, 0x10"],[8,"00042403","sra $a0, $a0, 0x10"],[12,"2c820005","sltiu $v0, $a0, 5"],[16,"10400010","beqz $v0, 0x54"],[20,"00041080","sll $v0, $a0, 2"],[24,"3c010000","lui $at, %hi(.rodata)"],[28,"00220821","addu $at, $at, $v0"],[32,"8c220000","lw $v0, %lo(.rodata)($at)"],[36,"00400008","jr $v0"],[40,"00000000","nop"],[44,"0800006d","j entity_default_hp"],[48,"24020003","addiu $v0, $zero, 3"],[52,"0800006d","j entity_default_hp"],[56,"24020002","addiu $v0, $zero, 2"],[60,"0800006d","j entity_default_hp"],[64,"2402000a","addiu $v0, $zero, 0xa"],[68,"0800006d","j entity_default_hp"],[72,"24020032","addiu $v0, $zero, 0x32"],[76,"0800006d","j entity_default_hp"],[80,"24020001","addiu $v0, $zero, 1"],[84,"00001021","move $v0, $zero"],[88,"03e00008","jr $ra"],[92,"00000000","nop"]],"src":"s32 entity_default_hp(s16 type) {\n    switch (type) {\n        case ENTITY_SLIME:\n            return 3;\n        case ENTITY_BAT:\n            return 2;\n        case ENTITY_KNIGHT:\n            return 10;\n        case ENTITY_DRAGON:\n            return 50;\n        case ENTITY_COIN:\n            return 1;\n        default:\n            return 0;\n    }\n}","attempts":[2010,1710]},{"name":"entity_spawn","offset":496,"size":128,"insns":32,"hex":"27bdffe800803821000018212408000100042400afb000103c10000026100000afbf001496020002304200011440000c2463000100042403a6070000ae050004ae060008ae00000cae0000100c000057a6080002ae0200180800008b02001021286200201440ffef2610001c000010218fbf00148fb0001003e0000827bd0018","asm":[[0,"27bdffe8","addiu $sp, $sp, -0x18"],[4,"00803821","move $a3, $a0"],[8,"00001821","move $v1, $zero"],[12,"24080001","addiu $t0, $zero, 1"],[16,"00042400","sll $a0, $a0, 0x10"],[20,"afb00010","sw $s0, 0x10($sp)"],[24,"3c100000","lui $s0, %hi(g_entities)"],[28,"26100000","addiu $s0, $s0, %lo(g_entities)"],[32,"afbf0014","sw $ra, 0x14($sp)"],[36,"96020002","lhu $v0, 2($s0)"],[40,"30420001","andi $v0, $v0, 1"],[44,"1440000c","bnez $v0, 0x60"],[48,"24630001","addiu $v1, $v1, 1"],[52,"00042403","sra $a0, $a0, 0x10"],[56,"a6070000","sh $a3, ($s0)"],[60,"ae050004","sw $a1, 4($s0)"],[64,"ae060008","sw $a2, 8($s0)"],[68,"ae00000c","sw $zero, 0xc($s0)"],[72,"ae000010","sw $zero, 0x10($s0)"],[76,"0c000057","jal entity_default_hp"],[80,"a6080002","sh $t0, 2($s0)"],[84,"ae020018","sw $v0, 0x18($s0)"],[88,"0800008b","j entity_spawn"],[92,"02001021","move $v0, $s0"],[96,"28620020","slti $v0, $v1, 0x20"],[100,"1440ffef","bnez $v0, 0x24"],[104,"2610001c","addiu $s0, $s0, 0x1c"],[108,"00001021","move $v0, $zero"],[112,"8fbf0014","lw $ra, 0x14($sp)"],[116,"8fb00010","lw $s0, 0x10($sp)"],[120,"03e00008","jr $ra"],[124,"27bd0018","addiu $sp, $sp, 0x18"]],"src":"Entity *entity_spawn(s16 type, s32 x, s32 y) {\n    s32 i;\n\n    for (i = 0; i < MAX_ENTITIES; i++) {\n        Entity *e = &g_entities[i];\n        if (!(e->flags & ENTITY_FLAG_ACTIVE)) {\n            e->type = type;\n            e->x = x;\n            e->y = y;\n            e->vel_x = 0;\n            e->vel_y = 0;\n            e->flags = ENTITY_FLAG_ACTIVE;\n            e->hp = entity_default_hp(type);\n            return e;\n        }\n    }\n    return NULL;\n}","attempts":[1414,1309]},{"name":"add_score","offset":624,"size":76,"insns":19,"hex":"3c0200008c4200242442000100820018000020123c0200008c4200003c03000f3463423f004410213c010000ac2200000062102a10400003000000003c010000ac23000003e0000800000000","asm":[[0,"3c020000","lui $v0, %hi(g_player+0x24)"],[4,"8c420024","lw $v0, %lo(g_player+0x24)($v0)"],[8,"24420001","addiu $v0, $v0, 1"],[12,"00820018","mult $a0, $v0"],[16,"00002012","mflo $a0"],[20,"3c020000","lui $v0, %hi(g_score)"],[24,"8c420000","lw $v0, %lo(g_score)($v0)"],[28,"3c03000f","lui $v1, 0xf"],[32,"3463423f","ori $v1, $v1, 0x423f"],[36,"00441021","addu $v0, $v0, $a0"],[40,"3c010000","lui $at, %hi(g_score)"],[44,"ac220000","sw $v0, %lo(g_score)($at)"],[48,"0062102a","slt $v0, $v1, $v0"],[52,"10400003","beqz $v0, 0x44"],[56,"00000000","nop"],[60,"3c010000","lui $at, %hi(g_score)"],[64,"ac230000","sw $v1, %lo(g_score)($at)"],[68,"03e00008","jr $ra"],[72,"00000000","nop"]],"src":"void add_score(s32 points) {\n    g_score += points * (g_player.combo + 1);\n    if (g_score > MAX_SCORE) {\n        g_score = MAX_SCORE;\n    }\n}","attempts":[470,435]},{"name":"lerp","offset":704,"size":24,"insns":6,"hex":"460c700144861000000000004602000203e0000846006000","asm":[[0,"460c7001","sub.s $f0, $f14, $f12"],[4,"44861000","mtc1 $a2, $f2"],[8,"00000000","nop"],[12,"46020002","mul.s $f0, $f0, $f2"],[16,"03e00008","jr $ra"],[20,"46006000","add.s $f0, $f12, $f0"]],"src":"f32 lerp(f32 a, f32 b, f32 t) {\n    return a + (b - a) * t;\n}","attempts":[805,470]},{"name":"checksum_save","offset":736,"size":52,"insns":13,"hex":"18a0000a2406123400a4282190820000248400010006194000661821006230210085102a1440fff90000000003e0000800c01021","asm":[[0,"18a0000a","blez $a1, 0x2c"],[4,"24061234","addiu $a2, $zero, 0x1234"],[8,"00a42821","addu $a1, $a1, $a0"],[12,"90820000","lbu $v0, ($a0)"],[16,"24840001","addiu $a0, $a0, 1"],[20,"00061940","sll $v1, $a2, 5"],[24,"00661821","addu $v1, $v1, $a2"],[28,"00623021","addu $a2, $v1, $v0"],[32,"0085102a","slt $v0, $a0, $a1"],[36,"1440fff9","bnez $v0, 0xc"],[40,"00000000","nop"],[44,"03e00008","jr $ra"],[48,"00c01021","move $v0, $a2"]],"src":"u32 checksum_save(const u8 *data, s32 len) {\n    u32 sum = 0x1234;\n    s32 i;\n\n    for (i = 0; i < len; i++) {\n        sum = (sum << 5) + sum + data[i];\n    }\n    return sum;\n}","attempts":[1050,200]},{"name":"entity_collides","offset":800,"size":152,"insns":38,"hex":"27bdffe0afb0001000808021afb1001400a088218e0200048e240004afbf001cafb200180c00000900442023860300148624001400641821000327c200641821000318430043102a1040000c000090218e0200088e2400080c00000900442023860300168624001600641821000327c200641821000318430043902a024010218fbf001c8fb200188fb100148fb0001003e0000827bd0020","asm":[[0,"27bdffe0","addiu $sp, $sp, -0x20"],[4,"afb00010","sw $s0, 0x10($sp)"],[8,"00808021","move $s0, $a0"],[12,"afb10014","sw $s1, 0x14($sp)"],[16,"00a08821","move $s1, $a1"],[20,"8e020004","lw $v0, 4($s0)"],[24,"8e240004","lw $a0, 4($s1)"],[28,"afbf001c","sw $ra, 0x1c($sp)"],[32,"afb20018","sw $s2, 0x18($sp)"],[36,"0c000009","jal abs_s32"],[40,"00442023","subu $a0, $v0, $a0"],[44,"86030014","lh $v1, 0x14($s0)"],[48,"86240014","lh $a0, 0x14($s1)"],[52,"00641821","addu $v1, $v1, $a0"],[56,"000327c2","srl $a0, $v1, 0x1f"],[60,"00641821","addu $v1, $v1, $a0"],[64,"00031843","sra $v1, $v1, 1"],[68,"0043102a","slt $v0, $v0, $v1"],[72,"1040000c","beqz $v0, 0x7c"],[76,"00009021","move $s2, $zero"],[80,"8e020008","lw $v0, 8($s0)"],[84,"8e240008","lw $a0, 8($s1)"],[88,"0c000009","jal abs_s32"],[92,"00442023","subu $a0, $v0, $a0"],[96,"86030016","lh $v1, 0x16($s0)"],[100,"86240016","lh $a0, 0x16($s1)"],[104,"00641821","addu $v1, $v1, $a0"],[108,"000327c2","srl $a0, $v1, 0x1f"],[112,"00641821","addu $v1, $v1, $a0"],[116,"00031843","sra $v1, $v1, 1"],[120,"0043902a","slt $s2, $v0, $v1"],[124,"02401021","move $v0, $s2"],[128,"8fbf001c","lw $ra, 0x1c($sp)"],[132,"8fb20018","lw $s2, 0x18($sp)"],[136,"8fb10014","lw $s1, 0x14($sp)"],[140,"8fb00010","lw $s0, 0x10($sp)"],[144,"03e00008","jr $ra"],[148,"27bd0020","addiu $sp, $sp, 0x20"]],"src":"s32 entity_collides(const Entity *a, const Entity *b) {\n    return abs_s32(a->x - b->x) < (a->w + b->w) / 2 && abs_s32(a->y - b->y) < (a->h + b->h) / 2;\n}","attempts":[2375,410]},{"name":"game_tick","offset":960,"size":208,"insns":52,"hex":"3c0200008c42000027bdffd83c04000024840020afbf0024afb20020afb1001cafb0001884830000244200013c010000ac22000018600003006010212442ffffa482000000008821241200053c10000026100000960200023042000150400013263100010c00003d020020213c05000024a500000c0000b5020020215040000b263100018602000014520005000000000c00008f2404000a08000105a60000020c00000e24040001263100012a2200201440ffe82610001c8fbf00248fb200208fb1001c8fb0001803e0000827bd0028","asm":[[0,"3c020000","lui $v0, %hi(g_frame_count)"],[4,"8c420000","lw $v0, %lo(g_frame_count)($v0)"],[8,"27bdffd8","addiu $sp, $sp, -0x28"],[12,"3c040000","lui $a0, %hi(g_player+0x20)"],[16,"24840020","addiu $a0, $a0, %lo(g_player+0x20)"],[20,"afbf0024","sw $ra, 0x24($sp)"],[24,"afb20020","sw $s2, 0x20($sp)"],[28,"afb1001c","sw $s1, 0x1c($sp)"],[32,"afb00018","sw $s0, 0x18($sp)"],[36,"84830000","lh $v1, ($a0)"],[40,"24420001","addiu $v0, $v0, 1"],[44,"3c010000","lui $at, %hi(g_frame_count)"],[48,"ac220000","sw $v0, %lo(g_frame_count)($at)"],[52,"18600003","blez $v1, 0x44"],[56,"00601021","move $v0, $v1"],[60,"2442ffff","addiu $v0, $v0, -1"],[64,"a4820000","sh $v0, ($a0)"],[68,"00008821","move $s1, $zero"],[72,"24120005","addiu $s2, $zero, 5"],[76,"3c100000","lui $s0, %hi(g_entities)"],[80,"26100000","addiu $s0, $s0, %lo(g_entities)"],[84,"96020002","lhu $v0, 2($s0)"],[88,"30420001","andi $v0, $v0, 1"],[92,"50400013","beql $v0, $zero, 0xac"],[96,"26310001","addiu $s1, $s1, 1"],[100,"0c00003d","jal entity_update_physics"],[104,"02002021","move $a0, $s0"],[108,"3c050000","lui $a1, %hi(g_player)"],[112,"24a50000","addiu $a1, $a1, %lo(g_player)"],[116,"0c0000b5","jal entity_collides"],[120,"02002021","move $a0, $s0"],[124,"5040000b","beql $v0, $zero, 0xac"],[128,"26310001","addiu $s1, $s1, 1"],[132,"86020000","lh $v0, ($s0)"],[136,"14520005","bne $v0, $s2, 0xa0"],[140,"00000000","nop"],[144,"0c00008f","jal add_score"],[148,"2404000a","addiu $a0, $zero, 0xa"],[152,"08000105","j game_tick"],[156,"a6000002","sh $zero, 2($s0)"],[160,"0c00000e","jal player_take_damage"],[164,"24040001","addiu $a0, $zero, 1"],[168,"26310001","addiu $s1, $s1, 1"],[172,"2a220020","slti $v0, $s1, 0x20"],[176,"1440ffe8","bnez $v0, 0x54"],[180,"2610001c","addiu $s0, $s0, 0x1c"],[184,"8fbf0024","lw $ra, 0x24($sp)"],[188,"8fb20020","lw $s2, 0x20($sp)"],[192,"8fb1001c","lw $s1, 0x1c($sp)"],[196,"8fb00018","lw $s0, 0x18($sp)"],[200,"03e00008","jr $ra"],[204,"27bd0028","addiu $sp, $sp, 0x28"]],"src":"void game_tick(void) {\n    s32 i;\n\n    g_frame_count++;\n    if (g_player.invuln_timer > 0) {\n        g_player.invuln_timer--;\n    }\n    for (i = 0; i < MAX_ENTITIES; i++) {\n        Entity *e = &g_entities[i];\n        if (e->flags & ENTITY_FLAG_ACTIVE) {\n            entity_update_physics(e);\n            if (entity_collides(e, &g_player.ent)) {\n                if (e->type == ENTITY_COIN) {\n                    add_score(10);\n                    e->flags = 0;\n                } else {\n                    player_take_damage(1);\n                }\n            }\n        }\n    }\n}","attempts":[325,235]}],"walkthrough":{"function":"clamp_s32","max":900,"asm":[[0,"0085102a","slt $v0, $a0, $a1"],[4,"14400005","bnez $v0, 0x1c"],[8,"00a01021","move $v0, $a1"],[12,"00c01021","move $v0, $a2"],[16,"0044182a","slt $v1, $v0, $a0"],[20,"50600001","beql $v1, $zero, 0x1c"],[24,"00801021","move $v0, $a0"],[28,"03e00008","jr $ra"],[32,"00000000","nop"]],"attempts":[{"n":1,"src":"s32 clamp_s32(s32 v, s32 lo, s32 hi) {\n    s32 r = v;\n    if (r > hi) r = hi;\n    if (r < lo) r = lo;\n    return r;\n}","score":720,"pct":20.0,"match":false,"rows":[["r","slt $v0, $a0, $a1","slt $v0, $a2, $a0"],["|","bnez $v0, 0x1c","bnel $v0, $zero, 0xc"],["<","move $v0, $a1",""],["r","move $v0, $a2","move $a0, $a2"],["r","slt $v1, $v0, $a0","slt $v0, $a0, $a1"],["|","beql $v1, $zero, 0x1c","bnel $v0, $zero, 0x18"],["r","move $v0, $a0","move $a0, $a1"],[" ","jr $ra","jr $ra"],["|","nop","move $v0, $a0"]]},{"n":2,"src":"s32 clamp_s32(s32 v, s32 lo, s32 hi) {\n    if (v > hi) return hi;\n    if ((u32)v < (u32)lo) return lo;\n    return v;\n}","score":215,"pct":76.1,"match":false,"rows":[["r","slt $v0, $a0, $a1","slt $v0, $a2, $a0"],[" ","bnez $v0, 0x1c","bnez $v0, 0x1c"],["r","move $v0, $a1","move $v0, $a2"],["r","move $v0, $a2","move $v0, $a1"],["|","slt $v1, $v0, $a0","sltu $v1, $a0, $v0"],[" ","beql $v1, $zero, 0x1c","beql $v1, $zero, 0x1c"],[" ","move $v0, $a0","move $v0, $a0"],[" ","jr $ra","jr $ra"],[" ","nop","nop"]]},{"n":3,"src":"s32 clamp_s32(s32 v, s32 lo, s32 hi) {\n    if (v <= hi) {\n        if (v < lo) return lo;\n        return v;\n    }\n    return hi;\n}","score":225,"pct":75.0,"match":false,"rows":[["r","slt $v0, $a0, $a1","slt $v0, $a2, $a0"],[" ","bnez $v0, 0x1c","bnez $v0, 0x1c"],["r","move $v0, $a1","move $v0, $a2"],["r","move $v0, $a2","move $v0, $a0"],["r","slt $v1, $v0, $a0","slt $v1, $v0, $a1"],["|","beql $v1, $zero, 0x1c","bnel $v1, $zero, 0x1c"],["r","move $v0, $a0","move $v0, $a1"],[" ","jr $ra","jr $ra"],[" ","nop","nop"]]},{"n":4,"src":"s32 clamp_s32(s32 v, s32 lo, s32 hi) {\n    if ((u32)v < (u32)lo) return lo;\n    if (v > hi) return hi;\n    return v;\n}","score":200,"pct":77.8,"match":false,"rows":[["|","slt $v0, $a0, $a1","sltu $v0, $a0, $a1"],[" ","bnez $v0, 0x1c","bnez $v0, 0x1c"],[" ","move $v0, $a1","move $v0, $a1"],[" ","move $v0, $a2","move $v0, $a2"],[" ","slt $v1, $v0, $a0","slt $v1, $v0, $a0"],[" ","beql $v1, $zero, 0x1c","beql $v1, $zero, 0x1c"],[" ","move $v0, $a0","move $v0, $a0"],[" ","jr $ra","jr $ra"],[" ","nop","nop"]]},{"n":5,"src":"s32 clamp_s32(s32 v, s32 lo, s32 hi) {\n    if (v < lo) {\n        return lo;\n    }\n    if (v > hi) {\n        return hi;\n    }\n    return v;\n}","score":0,"pct":100.0,"match":true,"rows":[[" ","slt $v0, $a0, $a1","slt $v0, $a0, $a1"],[" ","bnez $v0, 0x1c","bnez $v0, 0x1c"],[" ","move $v0, $a1","move $v0, $a1"],[" ","move $v0, $a2","move $v0, $a2"],[" ","slt $v1, $v0, $a0","slt $v1, $v0, $a0"],[" ","beql $v1, $zero, 0x1c","beql $v1, $zero, 0x1c"],[" ","move $v0, $a0","move $v0, $a0"],[" ","jr $ra","jr $ra"],[" ","nop","nop"]]}]}}