{"type": "func", "start": 1075932, "end": 1076004, "name": "__powisf2", "pseudocode": "// \n// __powisf2 from 0x106adc to 0x106b24 (72 bytes)\n// \n// 4 xrefs:\n// > .__powisf2 @ 0x109a8c\n// > <???> @ 0x7e88\n// > .__powisf2 @ 0x109a84\n// > <???> @ 0x111608\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\nfloat __fastcall _powisf2(int a1, float a2)\n{\n  float v2; // s1\n  unsigned int v3; // w1\n  float result; // s0\n\n  v2 = 1.0;\n  v3 = abs32(a1);\n  if ( (v3 & 1) != 0 )\n    v2 = a2;\n  while ( 1 )\n  {\n    v3 >>= 1;\n    if ( !v3 )\n      break;\n    a2 = a2 * a2;\n    if ( (v3 & 1) != 0 )\n      v2 = v2 * a2;\n  }\n  result = v2;\n  if ( a1 < 0 )\n    return 1.0 / v2;\n  return result;\n}", "assembly": "; \n; __powisf2 from 0x106adc to 0x106b24 (72 bytes)\n; \n; 4 xrefs:\n; > .__powisf2 @ 0x109a8c\n; > <???> @ 0x7e88\n; > .__powisf2 @ 0x109a84\n; > <???> @ 0x111608\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\nSXTW            X2, W0                                                 ; +0x0, 0x106adc\nFMOV            S1, #1.0                                               ; +0x4, 0x106ae0\nEOR             X1, X2, X2,ASR#63                                      ; +0x8, 0x106ae4\nSUB             X2, X1, X2,ASR#63                                      ; +0xc, 0x106ae8\nMOV             W1, W2                                                 ; +0x10, 0x106aec\nTBZ             W2, #0, loc_106B08                                     ; +0x14, 0x106af0\nFMOV            S1, S0                                                 ; +0x18, 0x106af4\nB               loc_106B08                                             ; +0x1c, 0x106af8\nFMUL            S0, S0, S0                                             ; +0x20, 0x106afc\nTBZ             W1, #0, loc_106B08                                     ; +0x24, 0x106b00\nFMUL            S1, S1, S0                                             ; +0x28, 0x106b04\nLSR             W1, W1, #1                                             ; +0x2c, 0x106b08\nCBNZ            W1, loc_106AFC                                         ; +0x30, 0x106b0c\nFMOV            S0, S1                                                 ; +0x34, 0x106b10\nTBZ             W0, #0x1F, locret_106B20                               ; +0x38, 0x106b14\nFMOV            S1, #1.0                                               ; +0x3c, 0x106b18\nFDIV            S0, S1, S0                                             ; +0x40, 0x106b1c\nRET                                                                    ; +0x44, 0x106b20", "xrefs": [".__powisf2 @ 0x109a8c", "<???> @ 0x7e88", ".__powisf2 @ 0x109a84", "<???> @ 0x111608"], "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"}