Created
July 2, 2025 16:55
-
-
Save purofle/84ee8ef5c7f46a143aa3781eea01471b to your computer and use it in GitHub Desktop.
uartbase.dll 在稳定版windows下逆向的结果
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ | |
| double __cdecl pow(double _X,double _Y) | |
| { | |
| ulonglong uVar1; | |
| uint uVar2; | |
| uint uVar3; | |
| int iVar4; | |
| double dVar5; | |
| longlong lVar6; | |
| double dVar7; | |
| uint uVar8; | |
| ulonglong uVar9; | |
| uint uVar10; | |
| int iVar11; | |
| longlong lVar12; | |
| double dVar13; | |
| undefined1 auVar14 [16]; | |
| undefined1 auVar15 [16]; | |
| undefined1 auVar16 [16]; | |
| undefined1 auVar17 [64]; | |
| undefined1 auVar18 [64]; | |
| undefined1 in_register_00001248 [56]; | |
| undefined1 auVar19 [64]; | |
| double dVar20; | |
| undefined1 auVar21 [16]; | |
| undefined1 auVar22 [16]; | |
| undefined1 auVar23 [16]; | |
| double dVar24; | |
| double dVar25; | |
| undefined1 auVar26 [16]; | |
| undefined1 extraout_var [60]; | |
| undefined1 extraout_var_00 [60]; | |
| auVar19._8_56_ = in_register_00001248; | |
| auVar19._0_8_ = _Y; | |
| /* 0x5f7b0 2333 pow */ | |
| if (((byte)DAT_180138e60 & 3) != 3) { | |
| dVar13 = (double)FUN_18009d5c0(); | |
| return dVar13; | |
| } | |
| lVar12 = 0; | |
| iVar4 = 0; | |
| uVar10 = (uint)((ulonglong)_X >> 0x20); | |
| uVar3 = uVar10 >> 0x14; | |
| uVar2 = (uint)((ulonglong)_Y >> 0x20); | |
| uVar8 = uVar2 >> 0x14; | |
| dVar13 = _X; | |
| if ((uVar3 - 1 < 0x7fe) && ((uVar8 & 0x7ff) - 0x3be < 0x80)) { | |
| LAB_18005f8d9: | |
| uVar3 = (uint)((longlong)dVar13 + 0xc0196aab00000000U >> 0x20); | |
| dVar20 = (double)((int)uVar3 >> 0x14); | |
| lVar6 = (ulonglong)(uVar3 >> 0xd & 0x7f) * 0x20; | |
| auVar26._8_8_ = 0; | |
| auVar26._0_8_ = *(ulonglong *)(&DAT_1801023c8 + lVar6); | |
| auVar14._8_8_ = 0; | |
| auVar14._0_8_ = (longlong)dVar13 - ((longlong)dVar13 + 0xc0196aab00000000U & 0xfff00000000000 00) | |
| ; | |
| auVar14 = vfmadd213sd_fma(auVar26,auVar14,ZEXT816(0xbff0000000000000)); | |
| dVar13 = dVar20 * 0.6931471805598903 + *(double *)(&DAT_1801023d8 + lVar6); | |
| dVar25 = auVar14._0_8_; | |
| dVar24 = dVar25 * -0.5 * dVar25; | |
| dVar5 = dVar13 + dVar25; | |
| dVar7 = dVar24 + dVar5; | |
| auVar15._0_8_ = -dVar24; | |
| auVar15._8_8_ = 0; | |
| auVar22._8_8_ = 0; | |
| auVar22._0_8_ = dVar25 * -0.5; | |
| auVar14 = vfmadd213sd_fma(auVar22,auVar14,auVar15); | |
| dVar13 = auVar14._0_8_ + | |
| dVar20 * 5.497923018708371e-14 + *(double *)(&DAT_1801023e0 + lVar6) + | |
| (dVar13 - dVar5) + dVar25 + (dVar5 - dVar7) + dVar24 + | |
| (((0.7999999995323976 - dVar25 * 0.6666666663487739) + | |
| (dVar25 * 1.0000415263675542 - 1.142909628459501) * dVar24) * dVar24 + | |
| (dVar25 * 0.5000000000000007 - 0.6666666666666679)) * dVar24 * dVar25; | |
| dVar5 = dVar13 + dVar7; | |
| dVar24 = dVar5 * _Y; | |
| auVar16._0_8_ = -dVar24; | |
| auVar16._8_8_ = 0; | |
| uVar10 = (uint)((ulonglong)dVar24 >> 0x34) & 0x7ff; | |
| auVar23._8_8_ = 0; | |
| auVar23._0_8_ = dVar5; | |
| auVar14 = vfmadd213sd_fma(auVar19._0_16_,auVar23,auVar16); | |
| iVar4 = (int)lVar12; | |
| uVar3 = uVar10; | |
| if (0x3e < uVar10 - 0x3c9) { | |
| if (0x7fffffff < uVar10 - 0x3c9) { | |
| if (iVar4 == 0) { | |
| return dVar24 + 1.0; | |
| } | |
| return -(dVar24 + 1.0); | |
| } | |
| uVar3 = 0; | |
| if (0x408 < uVar10) { | |
| if (((ulonglong)dVar24 & 0x8000000000000000) != 0) { | |
| dVar13 = (double)FUN_18005ffb0(iVar4); | |
| return dVar13; | |
| } | |
| dVar13 = FUN_1800e41c0(iVar4); | |
| return dVar13; | |
| } | |
| } | |
| dVar20 = dVar24 * 369.3299304675746 + 103079215104.5; | |
| uVar9 = (ulonglong)dVar20 >> 0x10; | |
| dVar20 = (double)(int)((ulonglong)dVar20 >> 0x10); | |
| dVar13 = (dVar24 - dVar20 * 0.0027076061741126978) + dVar20 * 5.0411407304988844e-14 + | |
| auVar14._0_8_ + ((dVar7 - dVar5) + dVar13) * _Y; | |
| dVar5 = dVar13 * dVar13; | |
| dVar7 = (double)((lVar12 + uVar9 << 0x2c) + | |
| *(longlong *)(&DAT_180103448 + (uVar9 & 0xff) * 0x10)); | |
| dVar13 = (dVar13 * 0.16666666666665886 + 0.49999999999996786) * dVar5 + | |
| dVar13 + *(double *)(&DAT_180103440 + (uVar9 & 0xff) * 0x10) + | |
| (dVar13 * 0.008333335853047663 + 0.04166668084093659) * dVar5 * dVar5; | |
| if (uVar3 != 0) { | |
| return dVar13 * dVar7 + dVar7; | |
| } | |
| if ((uVar9 & 0x80000000) != 0) { | |
| dVar7 = (double)((longlong)dVar7 + 0x3fe0000000000000); | |
| dVar5 = dVar7 + dVar7 * dVar13; | |
| auVar21._8_8_ = 0; | |
| auVar21._0_8_ = dVar5; | |
| auVar14 = vandpd_avx(auVar21,_DAT_1801046d0); | |
| if (auVar14._0_8_ < 1.0) { | |
| auVar14 = vcmpsd_avx(auVar21,ZEXT816(0),1); | |
| auVar14 = vblendvpd_avx(ZEXT816(0x3ff0000000000000),ZEXT816(0xbff0000000000000),auVar14) ; | |
| dVar24 = auVar14._0_8_; | |
| dVar5 = ((dVar7 - dVar5) + dVar7 * dVar13 + (dVar24 - (dVar24 + dVar5)) + dVar5 + | |
| dVar24 + dVar5) - dVar24; | |
| if (dVar5 == 0.0) { | |
| dVar5 = (double)((ulonglong)dVar7 & 0x8000000000000000); | |
| } | |
| } | |
| auVar17._0_4_ = FUN_18005ff78(dVar5 * 2.2250738585072014e-308); | |
| auVar17._4_60_ = extraout_var; | |
| return auVar17._0_8_; | |
| } | |
| auVar18._0_4_ = | |
| FUN_1800a34ec(((double)((longlong)dVar7 + -0x3f10000000000000) * dVar13 + | |
| (double)((longlong)dVar7 + -0x3f10000000000000)) * 5.486124068793689e+303) ; | |
| auVar18._4_60_ = extraout_var_00; | |
| return auVar18._0_8_; | |
| } | |
| uVar9 = (longlong)_Y * 2; | |
| if (uVar9 - 1 < 0xffdfffffffffffff) { | |
| if (0xffdffffffffffffe < (longlong)_X * 2 - 1U) { | |
| dVar13 = _X * _X; | |
| iVar11 = 0; | |
| if ((((((ulonglong)_X & 0x8000000000000000) != 0) && | |
| (uVar3 = uVar2 >> 0x14 & 0x7ff, iVar11 = iVar4, uVar3 - 0x3ff < 0x35)) && | |
| (uVar9 = 1L << ((ulonglong)(0x433 - uVar3) & 0x3f), ((ulonglong)_Y & uVar9 - 1) == 0)) && | |
| (((ulonglong)_Y & uVar9) != 0)) { | |
| dVar13 = -dVar13; | |
| iVar11 = 1; | |
| } | |
| if ((longlong)_X * 2 == 0) { | |
| if ((auVar19 & (undefined1 [64])0x8000000000000000) == (undefined1 [64])0x0) { | |
| return dVar13; | |
| } | |
| dVar13 = FUN_1800a2930(iVar11); | |
| return dVar13; | |
| } | |
| if ((auVar19 & (undefined1 [64])0x8000000000000000) == (undefined1 [64])0x0) { | |
| return dVar13; | |
| } | |
| return 1.0 / dVar13; | |
| } | |
| if (((ulonglong)_X & 0x8000000000000000) != 0) { | |
| uVar3 = uVar2 >> 0x14 & 0x7ff; | |
| if (uVar3 < 0x3ff) { | |
| LAB_18005fdb9: | |
| dVar13 = FUN_1800e4180(_X); | |
| return dVar13; | |
| } | |
| if (uVar3 < 0x434) { | |
| uVar9 = 1L << ((ulonglong)(0x433 - uVar3) & 0x3f); | |
| if (((ulonglong)_Y & uVar9 - 1) != 0) goto LAB_18005fdb9; | |
| iVar4 = 2 - (uint)((uVar9 & (ulonglong)_Y) != 0); | |
| } | |
| else { | |
| iVar4 = 2; | |
| } | |
| dVar13 = ABS(_X); | |
| uVar3 = uVar10 >> 0x14 & 0x7ff; | |
| lVar12 = 0x80000; | |
| if (iVar4 != 1) { | |
| lVar12 = 0; | |
| } | |
| } | |
| if ((uVar8 & 0x7ff) - 0x3be < 0x80) { | |
| if (uVar3 == 0) { | |
| dVar13 = (double)((longlong)ABS(_X * 4503599627370496.0) + 0xfcc0000000000000); | |
| } | |
| goto LAB_18005f8d9; | |
| } | |
| if (dVar13 != 1.0) { | |
| if (0x3bd < (uVar8 & 0x7ff)) { | |
| if (0x3ff0000000000000 < (ulonglong)dVar13 == uVar8 < 0x800) { | |
| dVar13 = FUN_1800e41c0(0); | |
| return dVar13; | |
| } | |
| dVar13 = (double)FUN_18005ffb0(0); | |
| return dVar13; | |
| } | |
| if (0x3ff0000000000000 < (ulonglong)dVar13) { | |
| return _Y + 1.0; | |
| } | |
| return 1.0 - _Y; | |
| } | |
| LAB_18005ff1a: | |
| dVar13 = 1.0; | |
| } | |
| else { | |
| if (uVar9 == 0) { | |
| uVar9 = (ulonglong)_X ^ 0x8000000000000; | |
| joined_r0x00018005ff14: | |
| if (uVar9 * 2 < 0xfff0000000000001) goto LAB_18005ff1a; | |
| } | |
| else { | |
| if (_X == 1.0) { | |
| uVar9 = (ulonglong)_Y ^ 0x8000000000000; | |
| goto joined_r0x00018005ff14; | |
| } | |
| uVar1 = (longlong)_X * 2; | |
| if ((uVar1 < 0xffe0000000000001) && (uVar9 < 0xffe0000000000001)) { | |
| if (uVar1 != 0x7fe0000000000000) { | |
| if ((uint)(uVar1 < 0x7fe0000000000000) == (uVar2 >> 0x1f ^ 1)) { | |
| return 0.0; | |
| } | |
| return _Y * _Y; | |
| } | |
| goto LAB_18005ff1a; | |
| } | |
| } | |
| dVar13 = _X + _Y; | |
| } | |
| /* WARNING: Read-only address (ram,0x0001801046d0) is written */ | |
| return dVar13; | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment