{"type": "func", "start": 6443769104, "end": 6443769431, "name": "__acrt_fenv_set_control", "pseudocode": "// \n// __acrt_fenv_set_control from 0x180141d10 to 0x180141e57 (327 bytes)\n// \n// 2 xrefs:\n// > fesetenv @ 0x1801414b7\n// > <???> @ 0x180203ce0\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 __fastcall _acrt_fenv_set_control(unsigned int a1)\n{\n  __int16 v1; // di\n  unsigned int v2; // r8d\n  int v3; // ecx\n  __int16 v4; // r11\n  __int16 v5; // r9\n  __int16 v6; // bx\n  __int16 v7; // r10\n  int v8; // eax\n  __int16 v9; // cx\n  __int16 v10; // dx\n  __int16 v11; // dx\n  __int16 v12; // dx\n  __int16 v13; // dx\n  __int16 v14; // ax\n  __int16 v15; // dx\n  __int64 result; // rax\n\n  v1 = 1024;\n  v2 = (a1 & 0xC03FFFFF | (a1 >> 2) & 0xFC00000) >> 22;\n  v3 = a1 & 0xC00;\n  v4 = 2048;\n  switch ( v3 )\n  {\n    case 1024:\n      v5 = -32704;\n      break;\n    case 2048:\n      v5 = 64;\n      break;\n    case 3072:\n      v5 = 0x8000;\n      break;\n    default:\n      v5 = 0;\n      break;\n  }\n  v6 = 256;\n  v7 = 512;\n  v8 = v2 & 0x300;\n  if ( (v2 & 0x300) != 0 )\n  {\n    switch ( v8 )\n    {\n      case 256:\n        v9 = 0x2000;\n        goto LABEL_16;\n      case 512:\n        v9 = 0x4000;\n        goto LABEL_16;\n      case 768:\n        v9 = 24576;\n        goto LABEL_16;\n    }\n  }\n  v9 = 0;\nLABEL_16:\n  if ( (v2 & 1) != 0 )\n    v10 = 4096;\n  else\n    v10 = 0;\n  if ( (v2 & 2) == 0 )\n    v4 = 0;\n  v11 = v4 | v10;\n  if ( (v2 & 4) == 0 )\n    v1 = 0;\n  v12 = v1 | v11;\n  if ( (v2 & 8) == 0 )\n    v7 = 0;\n  v13 = v7 | v12;\n  if ( (v2 & 0x10) != 0 )\n    v14 = 128;\n  else\n    v14 = 0;\n  v15 = v14 | v13;\n  if ( (v2 & 0x20) == 0 )\n    v6 = 0;\n  result = (unsigned __int16)(v5 | v9 | v6 | v15) & 0xFFC0;\n  _mm_setcsr(result | _mm_getcsr() & 0xFFFF003F);\n  return result;\n}", "assembly": "; \n; __acrt_fenv_set_control from 0x180141d10 to 0x180141e57 (327 bytes)\n; \n; 2 xrefs:\n; > fesetenv @ 0x1801414b7\n; > <???> @ 0x180203ce0\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     [rsp+arg_8], rbx                                               ; +0x0, 0x180141d10\nmov     [rsp+arg_10], rsi                                              ; +0x5, 0x180141d15\nmov     [rsp+arg_18], rdi                                              ; +0xa, 0x180141d1a\nmov     r8d, ecx                                                       ; +0xf, 0x180141d1f\nmov     eax, ecx                                                       ; +0x12, 0x180141d22\nshr     r8d, 2                                                         ; +0x14, 0x180141d24\nand     eax, 0C03FFFFFh                                                ; +0x18, 0x180141d28\nand     r8d, 0FC00000h                                                 ; +0x1d, 0x180141d2d\nxor     esi, esi                                                       ; +0x24, 0x180141d34\nor      r8d, eax                                                       ; +0x26, 0x180141d36\nmov     edi, 400h                                                      ; +0x29, 0x180141d39\nmov     eax, 0C00h                                                     ; +0x2e, 0x180141d3e\nshr     r8d, 16h                                                       ; +0x33, 0x180141d43\nand     ecx, eax                                                       ; +0x37, 0x180141d47\nmov     r11d, 800h                                                     ; +0x39, 0x180141d49\ncmp     ecx, edi                                                       ; +0x3f, 0x180141d4f\njz      short loc_180141D72                                            ; +0x41, 0x180141d51\ncmp     ecx, r11d                                                      ; +0x43, 0x180141d53\njz      short loc_180141D6A                                            ; +0x46, 0x180141d56\ncmp     ecx, eax                                                       ; +0x48, 0x180141d58\njz      short loc_180141D62                                            ; +0x4a, 0x180141d5a\nmovzx   r9d, si                                                        ; +0x4c, 0x180141d5c\njmp     short loc_180141D78                                            ; +0x50, 0x180141d60\nmov     r9d, 8000h                                                     ; +0x52, 0x180141d62\njmp     short loc_180141D78                                            ; +0x58, 0x180141d68\nmov     r9d, 40h ; '@'                                                 ; +0x5a, 0x180141d6a\njmp     short loc_180141D78                                            ; +0x60, 0x180141d70\nmov     r9d, 8040h                                                     ; +0x62, 0x180141d72\nmov     eax, r8d                                                       ; +0x68, 0x180141d78\nmov     ecx, 300h                                                      ; +0x6b, 0x180141d7b\nmov     ebx, 100h                                                      ; +0x70, 0x180141d80\nmov     r10d, 200h                                                     ; +0x75, 0x180141d85\nand     eax, ecx                                                       ; +0x7b, 0x180141d8b\njz      short loc_180141DB1                                            ; +0x7d, 0x180141d8d\ncmp     eax, ebx                                                       ; +0x7f, 0x180141d8f\njz      short loc_180141DAA                                            ; +0x81, 0x180141d91\ncmp     eax, r10d                                                      ; +0x83, 0x180141d93\njz      short loc_180141DA3                                            ; +0x86, 0x180141d96\ncmp     eax, ecx                                                       ; +0x88, 0x180141d98\njnz     short loc_180141DB1                                            ; +0x8a, 0x180141d9a\nmov     ecx, 6000h                                                     ; +0x8c, 0x180141d9c\njmp     short loc_180141DB4                                            ; +0x91, 0x180141da1\nmov     ecx, 4000h                                                     ; +0x93, 0x180141da3\njmp     short loc_180141DB4                                            ; +0x98, 0x180141da8\nmov     ecx, 2000h                                                     ; +0x9a, 0x180141daa\njmp     short loc_180141DB4                                            ; +0x9f, 0x180141daf\nmovzx   ecx, si                                                        ; +0xa1, 0x180141db1\ntest    r8b, 1                                                         ; +0xa4, 0x180141db4\njz      short loc_180141DC1                                            ; +0xa8, 0x180141db8\nmov     edx, 1000h                                                     ; +0xaa, 0x180141dba\njmp     short loc_180141DC4                                            ; +0xaf, 0x180141dbf\nmovzx   edx, si                                                        ; +0xb1, 0x180141dc1\nmov     eax, r8d                                                       ; +0xb4, 0x180141dc4\nshr     eax, 1                                                         ; +0xb7, 0x180141dc7\ntest    al, 1                                                          ; +0xb9, 0x180141dc9\njnz     short loc_180141DD1                                            ; +0xbb, 0x180141dcb\nmovzx   r11d, si                                                       ; +0xbd, 0x180141dcd\nmov     eax, r8d                                                       ; +0xc1, 0x180141dd1\nor      dx, r11w                                                       ; +0xc4, 0x180141dd4\nshr     eax, 2                                                         ; +0xc8, 0x180141dd8\ntest    al, 1                                                          ; +0xcb, 0x180141ddb\njnz     short loc_180141DE2                                            ; +0xcd, 0x180141ddd\nmovzx   edi, si                                                        ; +0xcf, 0x180141ddf\nmov     eax, r8d                                                       ; +0xd2, 0x180141de2\nor      dx, di                                                         ; +0xd5, 0x180141de5\nshr     eax, 3                                                         ; +0xd8, 0x180141de8\ntest    al, 1                                                          ; +0xdb, 0x180141deb\njnz     short loc_180141DF3                                            ; +0xdd, 0x180141ded\nmovzx   r10d, si                                                       ; +0xdf, 0x180141def\nmov     eax, r8d                                                       ; +0xe3, 0x180141df3\nor      dx, r10w                                                       ; +0xe6, 0x180141df6\nshr     eax, 4                                                         ; +0xea, 0x180141dfa\ntest    al, 1                                                          ; +0xed, 0x180141dfd\njz      short loc_180141E08                                            ; +0xef, 0x180141dff\nmov     eax, 80h                                                       ; +0xf1, 0x180141e01\njmp     short loc_180141E0B                                            ; +0xf6, 0x180141e06\nmovzx   eax, si                                                        ; +0xf8, 0x180141e08\nor      dx, ax                                                         ; +0xfb, 0x180141e0b\nshr     r8d, 5                                                         ; +0xfe, 0x180141e0e\ntest    r8b, 1                                                         ; +0x102, 0x180141e12\njnz     short loc_180141E1B                                            ; +0x106, 0x180141e16\nmovzx   ebx, si                                                        ; +0x108, 0x180141e18\nmov     rsi, [rsp+arg_10]                                              ; +0x10b, 0x180141e1b\nor      dx, bx                                                         ; +0x110, 0x180141e20\nmov     rbx, [rsp+arg_8]                                               ; +0x113, 0x180141e23\nor      dx, cx                                                         ; +0x118, 0x180141e28\nmov     rdi, [rsp+arg_18]                                              ; +0x11b, 0x180141e2b\nor      dx, r9w                                                        ; +0x120, 0x180141e30\nstmxcsr [rsp+arg_0]                                                    ; +0x124, 0x180141e34\nmov     ecx, [rsp+arg_0]                                               ; +0x129, 0x180141e39\nmovzx   eax, dx                                                        ; +0x12d, 0x180141e3d\nand     ecx, 0FFFF003Fh                                                ; +0x130, 0x180141e40\nand     eax, 0FFC0h                                                    ; +0x136, 0x180141e46\nor      ecx, eax                                                       ; +0x13b, 0x180141e4b\nmov     [rsp+arg_0], ecx                                               ; +0x13d, 0x180141e4d\nldmxcsr [rsp+arg_0]                                                    ; +0x141, 0x180141e51\nretn                                                                   ; +0x146, 0x180141e56", "xrefs": ["fesetenv @ 0x1801414b7", "<???> @ 0x180203ce0"], "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"}