| 105 | } |
| 106 | |
| 107 | void ErrorUtils::FindErrorFuncs() |
| 108 | { |
| 109 | uint8_t const fragment1[] = { |
| 110 | 0x4C, 0x8D, 0x8D, 0x08, 0x04, 0x00, 0x00, // lea r9, [rbp+8F8h+var_4F0] |
| 111 | 0x41, 0xB0, 0x01, // mov r8b, 1 |
| 112 | 0x48, 0x8D, 0x95, 0xE8, 0x03, 0x00, 0x00, // lea rdx, [rbp+8F8h+var_510] |
| 113 | 0xE8 // call ecl__EocClient__HandleError |
| 114 | }; |
| 115 | |
| 116 | uint8_t const fragment2[] = { |
| 117 | 0x48, 0x8D, 0x8D, 0xE8, 0x03, 0x00, 0x00 // lea rdx, [rbp+8F8h+var_510] |
| 118 | }; |
| 119 | |
| 120 | auto moduleEnd = moduleStart_ + moduleSize_; |
| 121 | for (auto p = moduleStart_; p < moduleEnd; p++) { |
| 122 | if (*p == 0x48 && p[1] == 0x8B && p[2] == 0x0D |
| 123 | && memcmp(p + 7, fragment1, sizeof(fragment1)) == 0 |
| 124 | && memcmp(p + 29, fragment2, sizeof(fragment2)) == 0) { |
| 125 | EoCClient = (eclEoCClient **)AsmLeaToAbsoluteAddress(p); |
| 126 | EoCClientHandleError = (EoCClient__HandleError)AsmCallToAbsoluteAddress(p + 24); |
| 127 | } |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | |
| 132 | [[noreturn]] |
nothing calls this directly
no test coverage detected