{"type": "func", "start": 6443768776, "end": 6443769017, "name": "__acrt_fenv_get_control", "pseudocode": "// \n// __acrt_fenv_get_control from 0x180141bc8 to 0x180141cb9 (241 bytes)\n// \n// 2 xrefs:\n// > fegetround @ 0x18013f498\n// > fegetenv @ 0x180141495\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__int64 _acrt_fenv_get_control()\n{\n  unsigned int v0; // r9d\n  __int16 v1; // ax\n  int v2; // r8d\n  int v3; // eax\n  int v4; // ecx\n  int v5; // edx\n\n  v0 = _mm_getcsr();\n  v1 = v0 & 0x8040;\n  if ( (v0 & 0x8040) == 0x8000 )\n  {\n    v2 = 3072;\n  }\n  else if ( v1 == 64 )\n  {\n    v2 = 2048;\n  }\n  else\n  {\n    v2 = 0;\n    if ( v1 == -32704 )\n      v2 = 1024;\n  }\n  v3 = v0 & 0x6000;\n  if ( (v0 & 0x6000) != 0 )\n  {\n    if ( v3 == 0x2000 )\n    {\n      v4 = 256;\n    }\n    else if ( v3 == 0x4000 )\n    {\n      v4 = 512;\n    }\n    else\n    {\n      v4 = 768;\n      if ( v3 != 24576 )\n        v4 = 0;\n    }\n  }\n  else\n  {\n    v4 = 0;\n  }\n  v5 = v2\n     | v4\n     | (v0 >> 12) & 1\n     | (2 * ((v0 >> 11) & 1))\n     | (4 * ((v0 >> 10) & 1))\n     | (8 * ((v0 >> 9) & 1))\n     | (16 * ((v0 >> 7) & 1))\n     | (32 * ((v0 >> 8) & 1));\n  return v5\n       | ((v2 & 0x3F\n         | v4 & 0x3F\n         | ((v0 & 0x1000) != 0)\n         | ((unsigned __int8)(2 * ((v0 & 0x800) != 0))\n          | (unsigned __int8)((4 * ((v0 & 0x400) != 0))\n                            | (8 * ((v0 & 0x200) != 0))\n                            | (16 * ((v0 & 0x80) != 0))\n                            | (32 * (BYTE1(v0) & 1))))\n         & 0x3F) << 24)\n       | (v5 << 22) & 0xC0000000;\n}", "assembly": "; \n; __acrt_fenv_get_control from 0x180141bc8 to 0x180141cb9 (241 bytes)\n; \n; 2 xrefs:\n; > fegetround @ 0x18013f498\n; > fegetenv @ 0x180141495\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     r10d, 8040h                                                    ; +0x0, 0x180141bc8\nxor     edx, edx                                                       ; +0x6, 0x180141bce\nstmxcsr [rsp+arg_0]                                                    ; +0x8, 0x180141bd0\nmov     r9d, [rsp+arg_0]                                               ; +0xd, 0x180141bd5\nmovzx   eax, r9w                                                       ; +0x12, 0x180141bda\nand     ax, r10w                                                       ; +0x16, 0x180141bde\nlea     ecx, [r10-40h]                                                 ; +0x1a, 0x180141be2\ncmp     ax, cx                                                         ; +0x1e, 0x180141be6\njnz     short loc_180141BF3                                            ; +0x21, 0x180141be9\nmov     r8d, 0C00h                                                     ; +0x23, 0x180141beb\njmp     short loc_180141C11                                            ; +0x29, 0x180141bf1\ncmp     ax, 40h ; '@'                                                  ; +0x2b, 0x180141bf3\njnz     short loc_180141C01                                            ; +0x2f, 0x180141bf7\nmov     r8d, 800h                                                      ; +0x31, 0x180141bf9\njmp     short loc_180141C11                                            ; +0x37, 0x180141bff\ncmp     ax, r10w                                                       ; +0x39, 0x180141c01\nmov     r8d, edx                                                       ; +0x3d, 0x180141c05\nmov     ecx, 400h                                                      ; +0x40, 0x180141c08\ncmovz   r8d, ecx                                                       ; +0x45, 0x180141c0d\nmov     eax, r9d                                                       ; +0x49, 0x180141c11\nmov     r10d, 6000h                                                    ; +0x4c, 0x180141c14\nand     eax, r10d                                                      ; +0x52, 0x180141c1a\njz      short loc_180141C48                                            ; +0x55, 0x180141c1d\ncmp     eax, 2000h                                                     ; +0x57, 0x180141c1f\njz      short loc_180141C41                                            ; +0x5c, 0x180141c24\ncmp     eax, 4000h                                                     ; +0x5e, 0x180141c26\njz      short loc_180141C3A                                            ; +0x63, 0x180141c2b\ncmp     eax, r10d                                                      ; +0x65, 0x180141c2d\nmov     ecx, 300h                                                      ; +0x68, 0x180141c30\ncmovnz  ecx, edx                                                       ; +0x6d, 0x180141c35\njmp     short loc_180141C4A                                            ; +0x70, 0x180141c38\nmov     ecx, 200h                                                      ; +0x72, 0x180141c3a\njmp     short loc_180141C4A                                            ; +0x77, 0x180141c3f\nmov     ecx, 100h                                                      ; +0x79, 0x180141c41\njmp     short loc_180141C4A                                            ; +0x7e, 0x180141c46\nmov     ecx, edx                                                       ; +0x80, 0x180141c48\nmov     r10d, 1                                                        ; +0x82, 0x180141c4a\nmov     edx, r9d                                                       ; +0x88, 0x180141c50\nshr     edx, 8                                                         ; +0x8b, 0x180141c53\nmov     eax, r9d                                                       ; +0x8e, 0x180141c56\nshr     eax, 7                                                         ; +0x91, 0x180141c59\nand     edx, r10d                                                      ; +0x94, 0x180141c5c\nand     eax, r10d                                                      ; +0x97, 0x180141c5f\nshl     edx, 5                                                         ; +0x9a, 0x180141c62\nshl     eax, 4                                                         ; +0x9d, 0x180141c65\nor      edx, eax                                                       ; +0xa0, 0x180141c68\nmov     eax, r9d                                                       ; +0xa2, 0x180141c6a\nshr     eax, 9                                                         ; +0xa5, 0x180141c6d\nand     eax, r10d                                                      ; +0xa8, 0x180141c70\nshl     eax, 3                                                         ; +0xab, 0x180141c73\nor      edx, eax                                                       ; +0xae, 0x180141c76\nmov     eax, r9d                                                       ; +0xb0, 0x180141c78\nshr     eax, 0Ah                                                       ; +0xb3, 0x180141c7b\nand     eax, r10d                                                      ; +0xb6, 0x180141c7e\nshl     eax, 2                                                         ; +0xb9, 0x180141c81\nor      edx, eax                                                       ; +0xbc, 0x180141c84\nmov     eax, r9d                                                       ; +0xbe, 0x180141c86\nshr     eax, 0Bh                                                       ; +0xc1, 0x180141c89\nand     eax, r10d                                                      ; +0xc4, 0x180141c8c\nshr     r9d, 0Ch                                                       ; +0xc7, 0x180141c8f\nadd     eax, eax                                                       ; +0xcb, 0x180141c93\nand     r9d, r10d                                                      ; +0xcd, 0x180141c95\nor      edx, eax                                                       ; +0xd0, 0x180141c98\nor      edx, r9d                                                       ; +0xd2, 0x180141c9a\nor      edx, ecx                                                       ; +0xd5, 0x180141c9d\nor      edx, r8d                                                       ; +0xd7, 0x180141c9f\nmov     eax, edx                                                       ; +0xda, 0x180141ca2\nmov     ecx, edx                                                       ; +0xdc, 0x180141ca4\nshl     eax, 16h                                                       ; +0xde, 0x180141ca6\nand     ecx, 3Fh                                                       ; +0xe1, 0x180141ca9\nand     eax, 0C0000000h                                                ; +0xe4, 0x180141cac\nshl     ecx, 18h                                                       ; +0xe9, 0x180141cb1\nor      eax, ecx                                                       ; +0xec, 0x180141cb4\nor      eax, edx                                                       ; +0xee, 0x180141cb6\nretn                                                                   ; +0xf0, 0x180141cb8", "xrefs": ["fegetround @ 0x18013f498", "fegetenv @ 0x180141495"], "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"}