I would have written code myself, but I was busy working on another project.
Since both of you gentlemen seem to be missing the point:
Yes, a lookup table will come in handy.
No, it will not need to have zillions of entries: 128 entries will do.
The lookup table will have entries for odd indices only: 0x01, 0x03, 0x05, and so on, up to 0xFF. For each entry, the index multiplied by the entry will end in ...01 (hexadecimal). The table will begin 0x01, 0xAB, 0xCD, 0xB7, ...
Let's try "dividing" 0x18979 by 0x107.
We begin by "dividing" 1 by 0x107. From our table we see the quotient ends in ...B7. In a sort of "mirror image" of how division is taught in school, we multiply 0x107 by 0xB7, giving us 0xBC01, which we then subtract from 0x0001, giving us 0x...FFFF4400. We drop the two zeros from the end, giving us 0x...FFFFFF44. We then divide this by 0x107. We multiply 0x44 by 0xB7, giving 0x309C, which tells us our next two hex digits are 9C. We multiply 0x107 by 0x9C, giving 0xA044, which we then subtract from 0x...FFFFFF44, giving 0x...FFFF5F00. (Our quotient so far is 0x...9CB7.) Again, we drop two zeros, this time from 0x...FFFF5F00, giving us 0x...FFFFFF5F. Now we can grab even more digits at a time. We will now grab four digits. We multiply 0xFF5F by 0x9CB7, giving 0x9C5470E9, so the four hex digits we grab are 70E9. We multiply 0x107 by 0x70E9, giving 0x73FF5F, and... I think we have enough digits for now. We now know that 1 "divided" by 0x107 equals 0x...70E99CB7.
Now, we multiply 0x18979 by 0x70E99CB7. We get 0xAD8C,0000,017F. Since we were only working to 8 hex digits of "precision", we can only trust the last 8 hex digits, so we have 0x0000017F. This is a reasonably small answer, given the size of our operands, and 0x17F times 0x107 does indeed equal 0x18979.
If we had tried dividing a different number, let's say 0x1897D, by 0x107 using this method, we would have got 0x1897D multiplied by 0x70E99CB7 equals 0xAD8D,C3A6,745B, which is obvious garbage: this tells us that dividing 0x1897D by 0x107 is itself a "garbage" operation (i.e. the result is not an integer, and therefore 0x1897D is not a multiple of 0x107).