{"type": "func", "start": 6443770144, "end": 6443770254, "name": "_clearfp", "pseudocode": "// \n// _clearfp from 0x180142120 to 0x18014218e (110 bytes)\n// \n// 2 xrefs:\n// > feholdexcept @ 0x180141534\n// > <???> @ 0x180203d1c\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\nunsigned int __cdecl clearfp()\n{\n  char fpsr; // bl\n  unsigned int v1; // r9d\n  int v2; // r8d\n  int v3; // ecx\n  int v4; // edx\n\n  fpsr = get_fpsr();\n  fclrf();\n  v1 = 0;\n  if ( (fpsr & 0x3F) != 0 )\n  {\n    v2 = (16 * (fpsr & 1)) | 8;\n    if ( (fpsr & 4) == 0 )\n      v2 = 16 * (fpsr & 1);\n    v3 = v2 | 4;\n    if ( (fpsr & 8) == 0 )\n      v3 = v2;\n    v4 = v3 | 2;\n    if ( (fpsr & 0x10) == 0 )\n      v4 = v3;\n    v1 = v4 | 1;\n    if ( (fpsr & 0x20) == 0 )\n      v1 = v4;\n    if ( (fpsr & 2) != 0 )\n      v1 |= 0x80000u;\n  }\n  return v1;\n}", "assembly": "; \n; _clearfp from 0x180142120 to 0x18014218e (110 bytes)\n; \n; 2 xrefs:\n; > feholdexcept @ 0x180141534\n; > <???> @ 0x180203d1c\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\npush    rbx                                                            ; +0x0, 0x180142120\nsub     rsp, 20h                                                       ; +0x2, 0x180142122\ncall    _get_fpsr                                                      ; +0x6, 0x180142126\nmov     ebx, eax                                                       ; +0xb, 0x18014212b\ncall    _fclrf                                                         ; +0xd, 0x18014212d\nxor     r9d, r9d                                                       ; +0x12, 0x180142132\ntest    bl, 3Fh                                                        ; +0x15, 0x180142135\njz      short loc_180142185                                            ; +0x18, 0x180142138\nmov     ecx, ebx                                                       ; +0x1a, 0x18014213a\nmov     eax, ebx                                                       ; +0x1c, 0x18014213c\nmov     edx, ebx                                                       ; +0x1e, 0x18014213e\nand     edx, 1                                                         ; +0x20, 0x180142140\nshl     edx, 4                                                         ; +0x23, 0x180142143\nmov     r8d, edx                                                       ; +0x26, 0x180142146\nor      r8d, 8                                                         ; +0x29, 0x180142149\nand     cl, 4                                                          ; +0x2d, 0x18014214d\ncmovz   r8d, edx                                                       ; +0x30, 0x180142150\nmov     ecx, r8d                                                       ; +0x34, 0x180142154\nor      ecx, 4                                                         ; +0x37, 0x180142157\nand     al, 8                                                          ; +0x3a, 0x18014215a\nmov     eax, ebx                                                       ; +0x3c, 0x18014215c\ncmovz   ecx, r8d                                                       ; +0x3e, 0x18014215e\nmov     edx, ecx                                                       ; +0x42, 0x180142162\nor      edx, 2                                                         ; +0x44, 0x180142164\nand     al, 10h                                                        ; +0x47, 0x180142167\nmov     eax, ebx                                                       ; +0x49, 0x180142169\ncmovz   edx, ecx                                                       ; +0x4b, 0x18014216b\nmov     r9d, edx                                                       ; +0x4e, 0x18014216e\nor      r9d, 1                                                         ; +0x51, 0x180142171\nand     al, 20h                                                        ; +0x55, 0x180142175\ncmovz   r9d, edx                                                       ; +0x57, 0x180142177\ntest    bl, 2                                                          ; +0x5b, 0x18014217b\njz      short loc_180142185                                            ; +0x5e, 0x18014217e\nbts     r9d, 13h                                                       ; +0x60, 0x180142180\nmov     eax, r9d                                                       ; +0x65, 0x180142185\nadd     rsp, 20h                                                       ; +0x68, 0x180142188\npop     rbx                                                            ; +0x6c, 0x18014218c\nretn                                                                   ; +0x6d, 0x18014218d", "xrefs": ["feholdexcept @ 0x180141534", "<???> @ 0x180203d1c"], "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"}