| 1 | ; $Id: math64.asm,v 1.1 2001-07-20 15:40:29 sandervl Exp $ | 
|---|
| 2 |  | 
|---|
| 3 | ;/* | 
|---|
| 4 | ; * Project Odin Software License can be found in LICENSE.TXT | 
|---|
| 5 | ; * Win32 Exception handling + misc functions for OS/2 | 
|---|
| 6 | ; * | 
|---|
| 7 | ; * Copyright 1998 Sander van Leeuwen | 
|---|
| 8 | ; * | 
|---|
| 9 | ; */ | 
|---|
| 10 |  | 
|---|
| 11 | ; 1999/08/09 PH see if we can do this as INLINE functions | 
|---|
| 12 |  | 
|---|
| 13 | .386p | 
|---|
| 14 | NAME    odinfs | 
|---|
| 15 |  | 
|---|
| 16 | DATA32  segment para use32 public 'DATA' | 
|---|
| 17 | flt_A0CB4       dd 9.223372e18          ; DATA XREF: ODINCRTD_1030+1Ar | 
|---|
| 18 | DATA32  ends | 
|---|
| 19 |  | 
|---|
| 20 | CODE32          SEGMENT DWORD PUBLIC USE32 'CODE' | 
|---|
| 21 | ASSUME  DS:FLAT, SS:FLAT | 
|---|
| 22 |  | 
|---|
| 23 | public __modi64 | 
|---|
| 24 | __modi64        proc near | 
|---|
| 25 |  | 
|---|
| 26 | arg_0           = dword ptr  0Ch | 
|---|
| 27 |  | 
|---|
| 28 | push    edi | 
|---|
| 29 | push    ebx | 
|---|
| 30 | mov     edi, [esp+arg_0] | 
|---|
| 31 | mov     ebx, 80000000h | 
|---|
| 32 | test    edx, ebx | 
|---|
| 33 | jz      short loc_25FEB | 
|---|
| 34 | not     eax | 
|---|
| 35 | not     edx | 
|---|
| 36 | add     eax, 1 | 
|---|
| 37 | adc     edx, 0 | 
|---|
| 38 | test    edi, ebx | 
|---|
| 39 | jz      short loc_26005 | 
|---|
| 40 | not     ecx | 
|---|
| 41 | not     edi | 
|---|
| 42 | add     ecx, 1 | 
|---|
| 43 | adc     edi, 0 | 
|---|
| 44 | jmp     short loc_2600F | 
|---|
| 45 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 46 |  | 
|---|
| 47 | loc_25FE1:                              ; CODE XREF: ODINCRTD_1027+35j | 
|---|
| 48 | mov     ebx, edi | 
|---|
| 49 | and     ebx, 80000000h | 
|---|
| 50 | jmp     short loc_2600F | 
|---|
| 51 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 52 |  | 
|---|
| 53 | loc_25FEB:                              ; CODE XREF: ODINCRTD_1027+Dj | 
|---|
| 54 | test    edi, ebx | 
|---|
| 55 | jz      short loc_25FE1 | 
|---|
| 56 | mov     ebx, edi | 
|---|
| 57 | not     ebx | 
|---|
| 58 | and     ebx, 80000000h | 
|---|
| 59 | not     ecx | 
|---|
| 60 | not     edi | 
|---|
| 61 | add     ecx, 1 | 
|---|
| 62 | adc     edi, 0 | 
|---|
| 63 | jmp     short loc_2600F | 
|---|
| 64 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 65 |  | 
|---|
| 66 | loc_26005:                              ; CODE XREF: ODINCRTD_1027+1Bj | 
|---|
| 67 | mov     ebx, edi | 
|---|
| 68 | not     ebx | 
|---|
| 69 | and     ebx, 80000000h | 
|---|
| 70 |  | 
|---|
| 71 | loc_2600F:                              ; CODE XREF: ODINCRTD_1027+27j | 
|---|
| 72 | ; ODINCRTD_1027+31j ... | 
|---|
| 73 | test    edi, edi | 
|---|
| 74 | jnz     short loc_26047 | 
|---|
| 75 | test    ecx, ecx | 
|---|
| 76 | jz      short loc_2601B | 
|---|
| 77 | cmp     ecx, edx | 
|---|
| 78 | jbe     short loc_26053 | 
|---|
| 79 |  | 
|---|
| 80 | loc_2601B:                              ; CODE XREF: ODINCRTD_1027+5Dj | 
|---|
| 81 | div     ecx | 
|---|
| 82 | mov     eax, edx | 
|---|
| 83 | xor     edx, edx | 
|---|
| 84 | test    ebx, ebx | 
|---|
| 85 | jz      short loc_26087 | 
|---|
| 86 | not     eax | 
|---|
| 87 | not     edx | 
|---|
| 88 | add     eax, 1 | 
|---|
| 89 | adc     edx, 0 | 
|---|
| 90 | jmp     short loc_26087 | 
|---|
| 91 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 92 |  | 
|---|
| 93 | loc_26031:                              ; CODE XREF: ODINCRTD_1027+99j | 
|---|
| 94 | xor     edx, edx | 
|---|
| 95 | xor     eax, eax | 
|---|
| 96 | jmp     short loc_26087 | 
|---|
| 97 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 98 |  | 
|---|
| 99 | loc_26037:                              ; CODE XREF: ODINCRTD_1027+93j | 
|---|
| 100 | ; ODINCRTD_1027+97j | 
|---|
| 101 | test    ebx, ebx | 
|---|
| 102 | jz      short loc_26087 | 
|---|
| 103 | not     eax | 
|---|
| 104 | not     edx | 
|---|
| 105 | add     eax, 1 | 
|---|
| 106 | adc     edx, 0 | 
|---|
| 107 | jmp     short loc_26087 | 
|---|
| 108 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 109 |  | 
|---|
| 110 | loc_26047:                              ; CODE XREF: ODINCRTD_1027+59j | 
|---|
| 111 | cmp     edx, edi | 
|---|
| 112 | ja      short loc_26053 | 
|---|
| 113 | jb      short loc_26037 | 
|---|
| 114 | cmp     eax, ecx | 
|---|
| 115 | jb      short loc_26037 | 
|---|
| 116 | jz      short loc_26031 | 
|---|
| 117 |  | 
|---|
| 118 | loc_26053:                              ; CODE XREF: ODINCRTD_1027+61j | 
|---|
| 119 | ; ODINCRTD_1027+91j | 
|---|
| 120 | push    ebp | 
|---|
| 121 | push    esi | 
|---|
| 122 | xor     esi, esi | 
|---|
| 123 | xor     ebp, ebp | 
|---|
| 124 | mov     bl, 40h ; '@' | 
|---|
| 125 |  | 
|---|
| 126 | loc_2605B:                              ; CODE XREF: ODINCRTD_1027+BBj | 
|---|
| 127 | shl     eax, 1 | 
|---|
| 128 | rcl     edx, 1 | 
|---|
| 129 | rcl     esi, 1 | 
|---|
| 130 | rcl     ebp, 1 | 
|---|
| 131 | cmp     ebp, edi | 
|---|
| 132 | ja      short loc_2606D | 
|---|
| 133 | jb      short loc_26071 | 
|---|
| 134 | cmp     esi, ecx | 
|---|
| 135 | jb      short loc_26071 | 
|---|
| 136 |  | 
|---|
| 137 | loc_2606D:                              ; CODE XREF: ODINCRTD_1027+ADj | 
|---|
| 138 | sub     esi, ecx | 
|---|
| 139 | sbb     ebp, edi | 
|---|
| 140 |  | 
|---|
| 141 | loc_26071:                              ; CODE XREF: ODINCRTD_1027+AFj | 
|---|
| 142 | ; ODINCRTD_1027+B3j | 
|---|
| 143 | dec     bl | 
|---|
| 144 | jnz     short loc_2605B | 
|---|
| 145 | mov     eax, esi | 
|---|
| 146 | mov     edx, ebp | 
|---|
| 147 | test    ebx, ebx | 
|---|
| 148 | jz      short loc_26085 | 
|---|
| 149 | xor     eax, eax | 
|---|
| 150 | xor     edx, edx | 
|---|
| 151 | sub     eax, esi | 
|---|
| 152 | sbb     edx, ebp | 
|---|
| 153 |  | 
|---|
| 154 | loc_26085:                              ; CODE XREF: ODINCRTD_1027+C3j | 
|---|
| 155 | pop     esi | 
|---|
| 156 | pop     ebp | 
|---|
| 157 |  | 
|---|
| 158 | loc_26087:                              ; CODE XREF: ODINCRTD_1027+6Bj | 
|---|
| 159 | ; ODINCRTD_1027+77j ... | 
|---|
| 160 | pop     ebx | 
|---|
| 161 | pop     edi | 
|---|
| 162 | retn | 
|---|
| 163 | __modi64        endp | 
|---|
| 164 |  | 
|---|
| 165 | public __modu64 | 
|---|
| 166 | __modu64        proc near               ; CODE XREF: sub_473C0+46p | 
|---|
| 167 | ; sub_4A490+348p ... | 
|---|
| 168 |  | 
|---|
| 169 | arg_0           = dword ptr  8 | 
|---|
| 170 |  | 
|---|
| 171 | push    edi | 
|---|
| 172 | mov     edi, [esp+arg_0] | 
|---|
| 173 | test    edi, edi | 
|---|
| 174 | jnz     short loc_26B3F | 
|---|
| 175 | test    ecx, ecx | 
|---|
| 176 | jz      short loc_26B31 | 
|---|
| 177 | cmp     ecx, edx | 
|---|
| 178 | jbe     short loc_26B4B | 
|---|
| 179 |  | 
|---|
| 180 | loc_26B31:                              ; CODE XREF: ODINCRTD_1028+Bj | 
|---|
| 181 | div     ecx | 
|---|
| 182 | mov     eax, edx | 
|---|
| 183 | xor     edx, edx | 
|---|
| 184 | jmp     short loc_26B78 | 
|---|
| 185 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 186 |  | 
|---|
| 187 | loc_26B39:                              ; CODE XREF: ODINCRTD_1028+29j | 
|---|
| 188 | xor     eax, eax | 
|---|
| 189 | xor     edx, edx | 
|---|
| 190 | jmp     short loc_26B78 | 
|---|
| 191 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 192 |  | 
|---|
| 193 | loc_26B3F:                              ; CODE XREF: ODINCRTD_1028+7j | 
|---|
| 194 | cmp     edx, edi | 
|---|
| 195 | ja      short loc_26B4B | 
|---|
| 196 | jb      short loc_26B78 | 
|---|
| 197 | cmp     eax, ecx | 
|---|
| 198 | jb      short loc_26B78 | 
|---|
| 199 | jz      short loc_26B39 | 
|---|
| 200 |  | 
|---|
| 201 | loc_26B4B:                              ; CODE XREF: ODINCRTD_1028+Fj | 
|---|
| 202 | ; ODINCRTD_1028+21j | 
|---|
| 203 | push    ebp | 
|---|
| 204 | push    ebx | 
|---|
| 205 | push    esi | 
|---|
| 206 | xor     esi, esi | 
|---|
| 207 | xor     ebp, ebp | 
|---|
| 208 | mov     bl, 40h ; '@' | 
|---|
| 209 |  | 
|---|
| 210 | loc_26B54:                              ; CODE XREF: ODINCRTD_1028+4Fj | 
|---|
| 211 | shl     eax, 1 | 
|---|
| 212 | rcl     edx, 1 | 
|---|
| 213 | rcl     esi, 1 | 
|---|
| 214 | rcl     ebp, 1 | 
|---|
| 215 | cmp     ebp, edi | 
|---|
| 216 | ja      short loc_26B66 | 
|---|
| 217 | jb      short loc_26B6D | 
|---|
| 218 | cmp     esi, ecx | 
|---|
| 219 | jb      short loc_26B6D | 
|---|
| 220 |  | 
|---|
| 221 | loc_26B66:                              ; CODE XREF: ODINCRTD_1028+3Ej | 
|---|
| 222 | sub     esi, ecx | 
|---|
| 223 | sbb     ebp, edi | 
|---|
| 224 | or      eax, 1 | 
|---|
| 225 |  | 
|---|
| 226 | loc_26B6D:                              ; CODE XREF: ODINCRTD_1028+40j | 
|---|
| 227 | ; ODINCRTD_1028+44j | 
|---|
| 228 | dec     bl | 
|---|
| 229 | jnz     short loc_26B54 | 
|---|
| 230 | mov     eax, esi | 
|---|
| 231 | mov     edx, ebp | 
|---|
| 232 | pop     esi | 
|---|
| 233 | pop     ebx | 
|---|
| 234 | pop     ebp | 
|---|
| 235 |  | 
|---|
| 236 | loc_26B78:                              ; CODE XREF: ODINCRTD_1028+17j | 
|---|
| 237 | ; ODINCRTD_1028+1Dj ... | 
|---|
| 238 | pop     edi | 
|---|
| 239 | retn | 
|---|
| 240 | __modu64        endp | 
|---|
| 241 |  | 
|---|
| 242 | public __multi64 | 
|---|
| 243 | __multi64       proc near               ; CODE XREF: sub_259BA+258p | 
|---|
| 244 | ; sub_259BA+337p ... | 
|---|
| 245 |  | 
|---|
| 246 | arg_0           = dword ptr  8 | 
|---|
| 247 |  | 
|---|
| 248 | push    edx | 
|---|
| 249 | or      edx, [esp+arg_0] | 
|---|
| 250 | jnz     short loc_2D5E3 | 
|---|
| 251 | mul     ecx | 
|---|
| 252 | pop     ecx | 
|---|
| 253 | retn | 
|---|
| 254 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 255 |  | 
|---|
| 256 | loc_2D5E3:                              ; CODE XREF: ODINCRTD_1029+5j | 
|---|
| 257 | push    ebx | 
|---|
| 258 | push    eax | 
|---|
| 259 | mul     [esp+8+arg_0] | 
|---|
| 260 | mov     ebx, eax | 
|---|
| 261 | mov     eax, ecx | 
|---|
| 262 | mul     dword ptr [esp+8] | 
|---|
| 263 | add     ebx, eax | 
|---|
| 264 | pop     eax | 
|---|
| 265 | mul     ecx | 
|---|
| 266 | add     edx, ebx | 
|---|
| 267 | pop     ebx | 
|---|
| 268 | pop     ecx | 
|---|
| 269 | retn | 
|---|
| 270 | __multi64       endp | 
|---|
| 271 |  | 
|---|
| 272 | public __u64toflt | 
|---|
| 273 | __u64toflt      proc near | 
|---|
| 274 |  | 
|---|
| 275 | var_C           = tbyte ptr -0Ch | 
|---|
| 276 |  | 
|---|
| 277 | mov     ecx, edx | 
|---|
| 278 | or      edx, 80000000h | 
|---|
| 279 | push    403Eh | 
|---|
| 280 | push    edx | 
|---|
| 281 | push    eax | 
|---|
| 282 | fld     [esp+0Ch+var_C] | 
|---|
| 283 | test    ecx, 80000000h | 
|---|
| 284 | jnz     short loc_22AD8 | 
|---|
| 285 | fsub    flt_A0CB4 | 
|---|
| 286 |  | 
|---|
| 287 | loc_22AD8:                              ; CODE XREF: ODINCRTD_1030+18j | 
|---|
| 288 | add     esp, 0Ch | 
|---|
| 289 | retn | 
|---|
| 290 | __u64toflt      endp | 
|---|
| 291 |  | 
|---|
| 292 | public __divi64 | 
|---|
| 293 | __divi64        proc near               ; CODE XREF: cseg02:0002E670p | 
|---|
| 294 | ; cseg02:0002E6FAp | 
|---|
| 295 |  | 
|---|
| 296 | var_4           = word ptr -4 | 
|---|
| 297 | var_2           = word ptr -2 | 
|---|
| 298 | arg_0           = qword ptr  4 | 
|---|
| 299 | arg_8           = qword ptr  0Ch | 
|---|
| 300 |  | 
|---|
| 301 | mov     dword ptr [esp+arg_0+4], edx | 
|---|
| 302 | or      edx, dword ptr [esp+arg_8+4] | 
|---|
| 303 | jnz     short loc_260D1 | 
|---|
| 304 | xor     edx, edx | 
|---|
| 305 | div     ecx | 
|---|
| 306 | xor     edx, edx | 
|---|
| 307 | retn | 
|---|
| 308 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 309 |  | 
|---|
| 310 | loc_260D1:                              ; CODE XREF: ODINCRTD_1031+8j | 
|---|
| 311 | sub     esp, 4 | 
|---|
| 312 | mov     dword ptr [esp+4+arg_0], eax | 
|---|
| 313 | mov     dword ptr [esp+4+arg_8], ecx | 
|---|
| 314 | fstcw   [esp+4+var_4] | 
|---|
| 315 | mov     ax, [esp+4+var_4] | 
|---|
| 316 | or      ax, 0F00h | 
|---|
| 317 | mov     [esp+4+var_2], ax | 
|---|
| 318 | wait | 
|---|
| 319 | fldcw   [esp+4+var_2] | 
|---|
| 320 | fild    [esp+4+arg_0] | 
|---|
| 321 | fild    [esp+4+arg_8] | 
|---|
| 322 | fdivp   st(1), st | 
|---|
| 323 | fistp   [esp+4+arg_0] | 
|---|
| 324 | fclex | 
|---|
| 325 | wait | 
|---|
| 326 | fldcw   [esp+4+var_4] | 
|---|
| 327 | add     esp, 4 | 
|---|
| 328 | mov     eax, dword ptr [esp+arg_0] | 
|---|
| 329 | mov     edx, dword ptr [esp+arg_0+4] | 
|---|
| 330 | retn | 
|---|
| 331 | __divi64        endp | 
|---|
| 332 |  | 
|---|
| 333 | public __divu64 | 
|---|
| 334 | __divu64        proc near               ; CODE XREF: cseg02:0002E2D6p | 
|---|
| 335 | ; sub_473C0+2Ep ... | 
|---|
| 336 |  | 
|---|
| 337 | arg_0           = dword ptr  8 | 
|---|
| 338 |  | 
|---|
| 339 | push    edi | 
|---|
| 340 | mov     edi, [esp+arg_0] | 
|---|
| 341 | test    edi, edi | 
|---|
| 342 | jnz     short loc_26D12 | 
|---|
| 343 | test    ecx, ecx | 
|---|
| 344 | jz      short loc_26CFD | 
|---|
| 345 | cmp     ecx, edx | 
|---|
| 346 | jbe     short loc_26D1E | 
|---|
| 347 |  | 
|---|
| 348 | loc_26CFD:                              ; CODE XREF: ODINCRTD_1032+Bj | 
|---|
| 349 | div     ecx | 
|---|
| 350 | xor     edx, edx | 
|---|
| 351 | jmp     short loc_26D47 | 
|---|
| 352 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 353 |  | 
|---|
| 354 | loc_26D03:                              ; CODE XREF: ODINCRTD_1032+2Aj | 
|---|
| 355 | ; ODINCRTD_1032+2Ej | 
|---|
| 356 | xor     edx, edx | 
|---|
| 357 | xor     eax, eax | 
|---|
| 358 | jmp     short loc_26D47 | 
|---|
| 359 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 360 |  | 
|---|
| 361 | loc_26D09:                              ; CODE XREF: ODINCRTD_1032+30j | 
|---|
| 362 | xor     edx, edx | 
|---|
| 363 | mov     eax, 1 | 
|---|
| 364 | jmp     short loc_26D47 | 
|---|
| 365 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | 
|---|
| 366 |  | 
|---|
| 367 | loc_26D12:                              ; CODE XREF: ODINCRTD_1032+7j | 
|---|
| 368 | cmp     edx, edi | 
|---|
| 369 | ja      short loc_26D1E | 
|---|
| 370 | jb      short loc_26D03 | 
|---|
| 371 | cmp     eax, ecx | 
|---|
| 372 | jb      short loc_26D03 | 
|---|
| 373 | jz      short loc_26D09 | 
|---|
| 374 |  | 
|---|
| 375 | loc_26D1E:                              ; CODE XREF: ODINCRTD_1032+Fj | 
|---|
| 376 | ; ODINCRTD_1032+28j | 
|---|
| 377 | push    ebp | 
|---|
| 378 | push    ebx | 
|---|
| 379 | push    esi | 
|---|
| 380 | xor     esi, esi | 
|---|
| 381 | xor     ebp, ebp | 
|---|
| 382 | mov     bl, 40h ; '@' | 
|---|
| 383 |  | 
|---|
| 384 | loc_26D27:                              ; CODE XREF: ODINCRTD_1032+56j | 
|---|
| 385 | shl     eax, 1 | 
|---|
| 386 | rcl     edx, 1 | 
|---|
| 387 | rcl     esi, 1 | 
|---|
| 388 | rcl     ebp, 1 | 
|---|
| 389 | cmp     ebp, edi | 
|---|
| 390 | ja      short loc_26D39 | 
|---|
| 391 | jb      short loc_26D40 | 
|---|
| 392 | cmp     esi, ecx | 
|---|
| 393 | jb      short loc_26D40 | 
|---|
| 394 |  | 
|---|
| 395 | loc_26D39:                              ; CODE XREF: ODINCRTD_1032+45j | 
|---|
| 396 | sub     esi, ecx | 
|---|
| 397 | sbb     ebp, edi | 
|---|
| 398 | or      eax, 1 | 
|---|
| 399 |  | 
|---|
| 400 | loc_26D40:                              ; CODE XREF: ODINCRTD_1032+47j | 
|---|
| 401 | ; ODINCRTD_1032+4Bj | 
|---|
| 402 | dec     bl | 
|---|
| 403 | jnz     short loc_26D27 | 
|---|
| 404 | pop     esi | 
|---|
| 405 | pop     ebx | 
|---|
| 406 | pop     ebp | 
|---|
| 407 |  | 
|---|
| 408 | loc_26D47:                              ; CODE XREF: ODINCRTD_1032+15j | 
|---|
| 409 | ; ODINCRTD_1032+1Bj ... | 
|---|
| 410 | pop     edi | 
|---|
| 411 | retn | 
|---|
| 412 | __divu64        endp | 
|---|
| 413 |  | 
|---|
| 414 | CODE32          ENDS | 
|---|
| 415 | END | 
|---|