How does the BRGE instruction work in assembly? Why is this code not functioning properly?
BRGE is a signed branch instruction, meaning it interprets the arguments as signed numbers represented in Two's Complement
 format. For 8 bit numbers the values of twos complement range from -128 (1000 0000) to +127 (0111 1111)

In order for your code to work as intended with hex literals you need to use the unsigned branch comparison operator BRSH, which does an unsigned comparison. 

For all available branch instructions you can peruse  this list on the atmel website.

Most branch instruction will work by checking a status flag that is set by a previous operations, BRGE and BRSH check the signed flag and carry flag respectively. The convenience of two's complement signed numbers (that the architecture exploits) is that arithmetic operations are performed identically to unsigned numbers - so it only comes down to how you interpret the operands and results. The cpi command is agnostic to signed or unsigned numbers and  will set both flags for the compare. The branch instruction will  then check one or the other