{"type": "func", "start": 6443206832, "end": 6443207304, "name": "FMOD_Thread_SetAttributes", "pseudocode": "// \n// FMOD_Thread_SetAttributes from 0x1800b88b0 to 0x1800b8a88 (472 bytes)\n// \n// 6 xrefs:\n// > sub_180001200 @ 0x180001227\n// > FMOD5_Thread_SetAttributes @ 0x1800f4ef0\n// > <???> @ 0x180189a18\n// > <???> @ 0x180189a28\n// > <???> @ 0x180194348\n// > <???> @ 0x1801fd308\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 FMOD_Thread_SetAttributes(int a1, __int64 a2, int a3, int a4)\n{\n  int v6; // edx\n\n  if ( a1 >= 13 )\n    return 31;\n  v6 = 0;\n  if ( a2 == 0x4000000000000000LL )\n  {\n    switch ( a1 )\n    {\n      case 0:\n        a2 = 0x4000000000000001LL;\n        break;\n      case 1:\n      case 2:\n      case 3:\n      case 4:\n      case 5:\n      case 6:\n      case 7:\n      case 9:\n      case 10:\n      case 11:\n      case 12:\n        a2 = 0x4000000000000003LL;\n        break;\n      case 8:\n        a2 = 0x4000000000000002LL;\n        break;\n      default:\n        a2 = 0;\n        break;\n    }\n  }\n  *((_QWORD *)off_1801AED20 + a1 + 9) = a2;\n  if ( a3 == -32769 )\n  {\n    switch ( a1 )\n    {\n      case 0:\n        a3 = -32774;\n        break;\n      case 1:\n        a3 = -32775;\n        break;\n      case 2:\n      case 11:\n      case 12:\n        a3 = -32773;\n        break;\n      case 3:\n      case 4:\n      case 5:\n        a3 = -32772;\n        break;\n      case 6:\n        a3 = -32770;\n        break;\n      case 7:\n      case 8:\n      case 9:\n      case 10:\n        a3 = -32771;\n        break;\n      default:\n        a3 = 0;\n        break;\n    }\n  }\n  *((_DWORD *)off_1801AED20 + a1 + 44) = a3;\n  if ( a4 )\n  {\n    v6 = a4;\n  }\n  else\n  {\n    switch ( a1 )\n    {\n      case 0:\n        v6 = 81920;\n        break;\n      case 1:\n      case 5:\n      case 11:\n      case 12:\n        v6 = 0x4000;\n        break;\n      case 2:\n      case 8:\n      case 9:\n      case 10:\n        v6 = 98304;\n        break;\n      case 3:\n        v6 = 0x10000;\n        break;\n      case 4:\n        v6 = 114688;\n        break;\n      case 6:\n        v6 = 49152;\n        break;\n      case 7:\n        v6 = 0x20000;\n        break;\n      default:\n        break;\n    }\n  }\n  *((_DWORD *)off_1801AED20 + a1 + 57) = v6;\n  return 0;\n}", "assembly": "; \n; FMOD_Thread_SetAttributes from 0x1800b88b0 to 0x1800b8a88 (472 bytes)\n; \n; 6 xrefs:\n; > sub_180001200 @ 0x180001227\n; > FMOD5_Thread_SetAttributes @ 0x1800f4ef0\n; > <???> @ 0x180189a18\n; > <???> @ 0x180189a28\n; > <???> @ 0x180194348\n; > <???> @ 0x1801fd308\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, 0x1800b88b0\nmovsxd  r11, ecx                                                       ; +0x2, 0x1800b88b2\nmov     ebx, r9d                                                       ; +0x5, 0x1800b88b5\nmov     r10, rdx                                                       ; +0x8, 0x1800b88b8\ncmp     r11d, 0Dh                                                      ; +0xb, 0x1800b88bb\njl      short loc_1800B88C8                                            ; +0xf, 0x1800b88bf\nmov     eax, 1Fh                                                       ; +0x11, 0x1800b88c1\npop     rbx                                                            ; +0x16, 0x1800b88c6\nretn                                                                   ; +0x17, 0x1800b88c7\nmov     rax, 4000000000000000h                                         ; +0x18, 0x1800b88c8\nmov     [rsp+8+arg_0], rdi                                             ; +0x22, 0x1800b88d2\nxor     edx, edx                                                       ; +0x27, 0x1800b88d7\nlea     rdi, cs:180000000h                                             ; +0x29, 0x1800b88d9\ncmp     r10, rax                                                       ; +0x30, 0x1800b88e0\njnz     short loc_1800B891F                                            ; +0x33, 0x1800b88e3\ncmp     r11d, 0Ch; switch 13 cases                                     ; +0x35, 0x1800b88e5\nja      short def_1800B88F6; jumptable 00000001800B88F6 default case   ; +0x39, 0x1800b88e9\nmov     ecx, ds:(jpt_1800B88F6 - 180000000h)[rdi+r11*4]                ; +0x3b, 0x1800b88eb\nadd     rcx, rdi                                                       ; +0x43, 0x1800b88f3\njmp     rcx; switch jump                                               ; +0x46, 0x1800b88f6\nmov     r10, 4000000000000001h; jumptable 00000001800B88F6 case 0      ; +0x48, 0x1800b88f8\njmp     short loc_1800B891F                                            ; +0x52, 0x1800b8902\nmov     r10, 4000000000000003h; jumptable 00000001800B88F6 cases 1-7,9-12 ; +0x54, 0x1800b8904\njmp     short loc_1800B891F                                            ; +0x5e, 0x1800b890e\nmov     r10, 4000000000000002h; jumptable 00000001800B88F6 case 8      ; +0x60, 0x1800b8910\njmp     short loc_1800B891F                                            ; +0x6a, 0x1800b891a\nmov     r10, rdx; jumptable 00000001800B88F6 default case              ; +0x6c, 0x1800b891c\nmov     rax, cs:off_1801AED20                                          ; +0x6f, 0x1800b891f\nmov     [rax+r11*8+48h], r10                                           ; +0x76, 0x1800b8926\ncmp     r8d, 0FFFF7FFFh                                                ; +0x7b, 0x1800b892b\njnz     short loc_1800B897A                                            ; +0x82, 0x1800b8932\ncmp     r11d, 0Ch; switch 13 cases                                     ; +0x84, 0x1800b8934\nja      short def_1800B8945; jumptable 00000001800B8945 default case   ; +0x88, 0x1800b8938\nmov     ecx, ds:(jpt_1800B8945 - 180000000h)[rdi+r11*4]                ; +0x8a, 0x1800b893a\nadd     rcx, rdi                                                       ; +0x92, 0x1800b8942\njmp     rcx; switch jump                                               ; +0x95, 0x1800b8945\nmov     r8d, 0FFFF7FFAh; jumptable 00000001800B8945 case 0             ; +0x97, 0x1800b8947\njmp     short loc_1800B897A                                            ; +0x9d, 0x1800b894d\nmov     r8d, 0FFFF7FF9h; jumptable 00000001800B8945 case 1             ; +0x9f, 0x1800b894f\njmp     short loc_1800B897A                                            ; +0xa5, 0x1800b8955\nmov     r8d, 0FFFF7FFBh; jumptable 00000001800B8945 cases 2,11,12      ; +0xa7, 0x1800b8957\njmp     short loc_1800B897A                                            ; +0xad, 0x1800b895d\nmov     r8d, 0FFFF7FFCh; jumptable 00000001800B8945 cases 3-5          ; +0xaf, 0x1800b895f\njmp     short loc_1800B897A                                            ; +0xb5, 0x1800b8965\nmov     r8d, 0FFFF7FFEh; jumptable 00000001800B8945 case 6             ; +0xb7, 0x1800b8967\njmp     short loc_1800B897A                                            ; +0xbd, 0x1800b896d\nmov     r8d, 0FFFF7FFDh; jumptable 00000001800B8945 cases 7-10         ; +0xbf, 0x1800b896f\njmp     short loc_1800B897A                                            ; +0xc5, 0x1800b8975\nmov     r8d, edx; jumptable 00000001800B8945 default case              ; +0xc7, 0x1800b8977\nmov     rax, cs:off_1801AED20                                          ; +0xca, 0x1800b897a\nmov     [rax+r11*4+0B0h], r8d                                          ; +0xd1, 0x1800b8981\ntest    ebx, ebx                                                       ; +0xd9, 0x1800b8989\njnz     short loc_1800B89D1                                            ; +0xdb, 0x1800b898b\ncmp     r11d, 0Ch; switch 13 cases                                     ; +0xdd, 0x1800b898d\nja      short def_1800B899E; jumptable 00000001800B899E default case   ; +0xe1, 0x1800b8991\nmov     ecx, ds:(jpt_1800B899E - 180000000h)[rdi+r11*4]                ; +0xe3, 0x1800b8993\nadd     rcx, rdi                                                       ; +0xeb, 0x1800b899b\njmp     rcx; switch jump                                               ; +0xee, 0x1800b899e\nmov     edx, 14000h; jumptable 00000001800B899E case 0                 ; +0xf0, 0x1800b89a0\njmp     short def_1800B899E; jumptable 00000001800B899E default case   ; +0xf5, 0x1800b89a5\nmov     edx, 4000h; jumptable 00000001800B899E cases 1,5,11,12         ; +0xf7, 0x1800b89a7\njmp     short def_1800B899E; jumptable 00000001800B899E default case   ; +0xfc, 0x1800b89ac\nmov     edx, 18000h; jumptable 00000001800B899E cases 2,8-10           ; +0xfe, 0x1800b89ae\njmp     short def_1800B899E; jumptable 00000001800B899E default case   ; +0x103, 0x1800b89b3\nmov     edx, 10000h; jumptable 00000001800B899E case 3                 ; +0x105, 0x1800b89b5\njmp     short def_1800B899E; jumptable 00000001800B899E default case   ; +0x10a, 0x1800b89ba\nmov     edx, 1C000h; jumptable 00000001800B899E case 4                 ; +0x10c, 0x1800b89bc\njmp     short def_1800B899E; jumptable 00000001800B899E default case   ; +0x111, 0x1800b89c1\nmov     edx, 0C000h; jumptable 00000001800B899E case 6                 ; +0x113, 0x1800b89c3\njmp     short def_1800B899E; jumptable 00000001800B899E default case   ; +0x118, 0x1800b89c8\nmov     edx, 20000h; jumptable 00000001800B899E case 7                 ; +0x11a, 0x1800b89ca\njmp     short def_1800B899E; jumptable 00000001800B899E default case   ; +0x11f, 0x1800b89cf\nmov     edx, ebx                                                       ; +0x121, 0x1800b89d1\nmov     rax, cs:off_1801AED20; jumptable 00000001800B899E default case ; +0x123, 0x1800b89d3\nmov     rdi, [rsp+8+arg_0]                                             ; +0x12a, 0x1800b89da\nmov     [rax+r11*4+0E4h], edx                                          ; +0x12f, 0x1800b89df\nxor     eax, eax                                                       ; +0x137, 0x1800b89e7\npop     rbx                                                            ; +0x139, 0x1800b89e9\nretn                                                                   ; +0x13a, 0x1800b89ea\nalign 4                                                                ; +0x13b, 0x1800b89eb\ndd offset loc_1800B88F8 - 180000000h; jump table for switch statement  ; +0x13c, 0x1800b89ec\ndd offset loc_1800B8947 - 180000000h; jump table for switch statement  ; +0x170, 0x1800b8a20\ndd offset loc_1800B89A0 - 180000000h; jump table for switch statement  ; +0x1a4, 0x1800b8a54", "xrefs": ["sub_180001200 @ 0x180001227", "FMOD5_Thread_SetAttributes @ 0x1800f4ef0", "<???> @ 0x180189a18", "<???> @ 0x180189a28", "<???> @ 0x180194348", "<???> @ 0x1801fd308"], "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"}