{"type": "func", "start": 6443712240, "end": 6443712635, "name": "_powf_special", "pseudocode": "// \n// _powf_special from 0x180133ef0 to 0x18013407b (395 bytes)\n// \n// 24 xrefs:\n// > powf @ 0x180127fb6\n// > powf @ 0x18012810a\n// > powf @ 0x180128190\n// > powf @ 0x1801281d3\n// > powf @ 0x180128207\n// > powf @ 0x1801282b5\n// > powf @ 0x1801282e4\n// > powf @ 0x18012831e\n// > powf @ 0x180128348\n// > powf @ 0x18012836e\n// > powf @ 0x1801283a3\n// > powf @ 0x1801283d0\n// > powf @ 0x18012870d\n// > powf @ 0x1801288d3\n// > powf @ 0x180128913\n// > powf @ 0x180128947\n// > powf @ 0x180128a15\n// > powf @ 0x180128a44\n// > powf @ 0x180128a7e\n// > powf @ 0x180128aa8\n// > powf @ 0x180128acf\n// > powf @ 0x180128b04\n// > powf @ 0x180128b30\n// > <???> @ 0x180203224\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\n// local variable allocation has failed, the output may be wrong!\n__m128 __fastcall powf_special(float a1, float a2, double a3, unsigned int a4)\n{\n  int v4; // r9d\n  int v5; // r8d\n  __m128 result; // xmm0\n  unsigned int v7; // [rsp+30h] [rbp-11h]\n  float v8; // [rsp+38h] [rbp-9h]\n  float v9; // [rsp+40h] [rbp-1h]\n\n  if ( a4 == 1 )\n  {\n    v9 = a2;\n    v8 = a1;\n    v7 = 0;\n    v4 = 0;\n    v5 = LODWORD(a3);\nLABEL_14:\n    handle_errorf((__int64)\"powf\", 29, v5, v4, 8, v7, v8, v9, 2);\n    return *(__m128 *)&a3;\n  }\n  if ( a4 == 2 )\n  {\n    handle_errorf((__int64)\"powf\", 29, SLODWORD(a3), 2, 4, 0x22u, a1, a2, 2);\n  }\n  else if ( a4 > 2 )\n  {\n    if ( a4 <= 5 )\n    {\n      result.m128_f32[0] = handle_nanf(SLODWORD(a3));\n      return result;\n    }\n    if ( a4 != 6 )\n    {\n      if ( a4 == 7 )\n      {\n        handle_errorf((__int64)\"powf\", 29, SLODWORD(a3), 4, 18, 0x22u, a1, a2, 2);\n      }\n      else if ( a4 == 9 )\n      {\n        handle_errorf((__int64)\"powf\", 29, SLODWORD(a3), 3, 17, 0x22u, a1, a2, 2);\n      }\n      return *(__m128 *)&a3;\n    }\n    v4 = 1;\n    v9 = a2;\n    v8 = a1;\n    v5 = LODWORD(a3);\n    v7 = 33;\n    goto LABEL_14;\n  }\n  return *(__m128 *)&a3;\n}", "assembly": "; \n; _powf_special from 0x180133ef0 to 0x18013407b (395 bytes)\n; \n; 24 xrefs:\n; > powf @ 0x180127fb6\n; > powf @ 0x18012810a\n; > powf @ 0x180128190\n; > powf @ 0x1801281d3\n; > powf @ 0x180128207\n; > powf @ 0x1801282b5\n; > powf @ 0x1801282e4\n; > powf @ 0x18012831e\n; > powf @ 0x180128348\n; > powf @ 0x18012836e\n; > powf @ 0x1801283a3\n; > powf @ 0x1801283d0\n; > powf @ 0x18012870d\n; > powf @ 0x1801288d3\n; > powf @ 0x180128913\n; > powf @ 0x180128947\n; > powf @ 0x180128a15\n; > powf @ 0x180128a44\n; > powf @ 0x180128a7e\n; > powf @ 0x180128aa8\n; > powf @ 0x180128acf\n; > powf @ 0x180128b04\n; > powf @ 0x180128b30\n; > <???> @ 0x180203224\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\nmov     rax, rsp                                                       ; +0x0, 0x180133ef0\npush    rbp                                                            ; +0x3, 0x180133ef3\nlea     rbp, [rax-5Fh]                                                 ; +0x4, 0x180133ef4\nsub     rsp, 90h                                                       ; +0x8, 0x180133ef8\nmovaps  xmmword ptr [rax-18h], xmm6                                    ; +0xf, 0x180133eff\nmovaps  xmm6, xmm2                                                     ; +0x13, 0x180133f03\nmov     eax, 2                                                         ; +0x16, 0x180133f06\ncmp     r9d, 1                                                         ; +0x1b, 0x180133f0b\njz      loc_180134028                                                  ; +0x1f, 0x180133f0f\ncmp     r9d, eax                                                       ; +0x25, 0x180133f15\njz      loc_180133FF5                                                  ; +0x28, 0x180133f18\njbe     loc_180134067                                                  ; +0x2e, 0x180133f1e\ncmp     r9d, 5                                                         ; +0x34, 0x180133f24\njbe     loc_180133FE6                                                  ; +0x38, 0x180133f28\ncmp     r9d, 6                                                         ; +0x3e, 0x180133f2e\njz      loc_180133FB8                                                  ; +0x42, 0x180133f32\ncmp     r9d, 7                                                         ; +0x48, 0x180133f38\njz      short loc_180133F7F                                            ; +0x4c, 0x180133f3c\ncmp     r9d, 9                                                         ; +0x4e, 0x180133f3e\njnz     loc_180134067                                                  ; +0x52, 0x180133f42\nand     [rbp+57h+var_40], 0                                            ; +0x58, 0x180133f48\nlea     r9d, [rax+1]                                                   ; +0x5d, 0x180133f4d\nmov     [rsp+40h], eax                                                 ; +0x61, 0x180133f51\nmovss   [rsp+90h+var_58], xmm1                                         ; +0x65, 0x180133f55\nmovss   [rsp+90h+var_60], xmm0                                         ; +0x6b, 0x180133f5b\nmov     [rsp+90h+var_68], 22h ; '\"'                                    ; +0x71, 0x180133f61\nmovss   dword ptr [rbp+57h+var_40], xmm6                               ; +0x79, 0x180133f69\nmov     r8, [rbp+57h+var_40]                                           ; +0x7e, 0x180133f6e\nmov     [rsp+90h+var_70], 11h                                          ; +0x82, 0x180133f72\njmp     loc_180134056                                                  ; +0x8a, 0x180133f7a\nand     [rbp+57h+var_38], 0                                            ; +0x8f, 0x180133f7f\nmov     r9d, 4                                                         ; +0x94, 0x180133f84\nmov     [rsp+40h], eax                                                 ; +0x9a, 0x180133f8a\nmovss   [rsp+90h+var_58], xmm1                                         ; +0x9e, 0x180133f8e\nmovss   [rsp+90h+var_60], xmm0                                         ; +0xa4, 0x180133f94\nmov     [rsp+90h+var_68], 22h ; '\"'                                    ; +0xaa, 0x180133f9a\nmovss   dword ptr [rbp+57h+var_38], xmm6                               ; +0xb2, 0x180133fa2\nmov     r8, [rbp+57h+var_38]                                           ; +0xb7, 0x180133fa7\nmov     [rsp+90h+var_70], 12h                                          ; +0xbb, 0x180133fab\njmp     loc_180134056                                                  ; +0xc3, 0x180133fb3\nand     [rbp+57h+var_30], 0                                            ; +0xc8, 0x180133fb8\nmov     r9d, 1                                                         ; +0xcd, 0x180133fbd\nmov     [rsp+40h], eax                                                 ; +0xd3, 0x180133fc3\nmovss   [rsp+90h+var_58], xmm1                                         ; +0xd7, 0x180133fc7\nmovss   [rsp+90h+var_60], xmm0                                         ; +0xdd, 0x180133fcd\nmovss   dword ptr [rbp+57h+var_30], xmm6                               ; +0xe3, 0x180133fd3\nmov     r8, [rbp+57h+var_30]                                           ; +0xe8, 0x180133fd8\nmov     [rsp+90h+var_68], 21h ; '!'                                    ; +0xec, 0x180133fdc\njmp     short loc_18013404E                                            ; +0xf4, 0x180133fe4\nmovss   [rbp+57h+arg_18], xmm6                                         ; +0xf6, 0x180133fe6\nmov     ecx, [rbp+57h+arg_18]                                          ; +0xfb, 0x180133feb\ncall    _handle_nanf                                                   ; +0xfe, 0x180133fee\njmp     short loc_18013406A                                            ; +0x103, 0x180133ff3\nand     [rbp+57h+var_28], 0                                            ; +0x105, 0x180133ff5\nmov     r9d, eax                                                       ; +0x10a, 0x180133ffa\nmov     [rsp+40h], eax                                                 ; +0x10d, 0x180133ffd\nmovss   [rsp+90h+var_58], xmm1                                         ; +0x111, 0x180134001\nmovss   [rsp+90h+var_60], xmm0                                         ; +0x117, 0x180134007\nmov     [rsp+90h+var_68], 22h ; '\"'                                    ; +0x11d, 0x18013400d\nmovss   dword ptr [rbp+57h+var_28], xmm6                               ; +0x125, 0x180134015\nmov     r8, [rbp+57h+var_28]                                           ; +0x12a, 0x18013401a\nmov     [rsp+90h+var_70], 4                                            ; +0x12e, 0x18013401e\njmp     short loc_180134056                                            ; +0x136, 0x180134026\nand     [rbp+57h+var_20], 0                                            ; +0x138, 0x180134028\nmov     [rsp+40h], eax                                                 ; +0x13d, 0x18013402d\nmovss   [rsp+90h+var_58], xmm1                                         ; +0x141, 0x180134031\nmovss   [rsp+90h+var_60], xmm0                                         ; +0x147, 0x180134037\nand     [rsp+90h+var_68], 0                                            ; +0x14d, 0x18013403d\nmovss   dword ptr [rbp+57h+var_20], xmm6                               ; +0x152, 0x180134042\nxor     r9d, r9d                                                       ; +0x157, 0x180134047\nmov     r8, [rbp+57h+var_20]                                           ; +0x15a, 0x18013404a\nmov     [rsp+90h+var_70], 8                                            ; +0x15e, 0x18013404e\nmov     edx, 1Dh                                                       ; +0x166, 0x180134056\nlea     rcx, aPowf                                                     ; +0x16b, 0x18013405b\ncall    _handle_errorf                                                 ; +0x172, 0x180134062\nmovaps  xmm0, xmm6                                                     ; +0x177, 0x180134067\nmovaps  xmm6, [rsp+90h+var_18+8]                                       ; +0x17a, 0x18013406a\nadd     rsp, 90h                                                       ; +0x182, 0x180134072\npop     rbp                                                            ; +0x189, 0x180134079\nretn                                                                   ; +0x18a, 0x18013407a", "xrefs": ["powf @ 0x180127fb6", "powf @ 0x18012810a", "powf @ 0x180128190", "powf @ 0x1801281d3", "powf @ 0x180128207", "powf @ 0x1801282b5", "powf @ 0x1801282e4", "powf @ 0x18012831e", "powf @ 0x180128348", "powf @ 0x18012836e", "powf @ 0x1801283a3", "powf @ 0x1801283d0", "powf @ 0x18012870d", "powf @ 0x1801288d3", "powf @ 0x180128913", "powf @ 0x180128947", "powf @ 0x180128a15", "powf @ 0x180128a44", "powf @ 0x180128a7e", "powf @ 0x180128aa8", "powf @ 0x180128acf", "powf @ 0x180128b04", "powf @ 0x180128b30", "<???> @ 0x180203224"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}