@@ -0,0 +1,695 @@
+import angr%0Afrom angr.sim_type import SimTypeInt%0A%0Aimport logging%0Al = logging.getLogger(%22angr.procedures.libc.toupper%22)%0A%0A%0Aclass toupper(angr.SimProcedure):%0A    def run(self, c):%0A        self.argument_types = %7B0: SimTypeInt(self.state.arch, True)%7D%0A        self.return_type = SimTypeInt(self.state.arch, True)%0A%0A        if not self.state.solver.symbolic(c):%0A            try:%0A                ret_expr = chr(self.state.solver.eval(c)).upper()%0A            except ValueError:  # not in range(256)%0A                ret_expr = c%0A            return ret_expr%0A        else:%0A            return self.state.solver.If(%0A                self.state.solver.And(c %3E= 97, c %3C= 122),  # a - z%0A                c - 32, c)%0A

Add toupper simproc.