// Generated by Rec Studio 4 - build Jul 23 2013 _init() {// addr = 0x00400A48 call_gmon_start(); frame_dummy(__rax); __do_global_ctors_aux(); return; } free() {// addr = 0x00400A70 goto __imp__free; } localtime() {// addr = 0x00400A80 goto __imp__localtime; } __errno_location() {// addr = 0x00400A90 goto __imp____errno_location; } _exit() {// addr = 0x00400AA0 goto __imp___exit; } puts() {// addr = 0x00400AB0 goto __imp__puts; } sigaction() {// addr = 0x00400AC0 goto __imp__sigaction; } vsnprintf() {// addr = 0x00400AD0 goto __imp__vsnprintf; } fcntl() {// addr = 0x00400AE0 goto __imp__fcntl; } write() {// addr = 0x00400AF0 goto __imp__write; } __stack_chk_fail() {// addr = 0x00400B00 goto __imp____stack_chk_fail; } printf() {// addr = 0x00400B10 goto __imp__printf; } gettimeofday() {// addr = 0x00400B20 goto __imp__gettimeofday; } memset() {// addr = 0x00400B30 goto __imp__memset; } ioctl() {// addr = 0x00400B40 goto __imp__ioctl; } strncat() {// addr = 0x00400B50 goto __imp__strncat; } close() {// addr = 0x00400B60 goto __imp__close; } read() {// addr = 0x00400B70 goto __imp__read; } __libc_start_main() {// addr = 0x00400B80 goto __imp____libc_start_main; } memcmp() {// addr = 0x00400B90 goto __imp__memcmp; } sigemptyset() {// addr = 0x00400BA0 goto __imp__sigemptyset; } memcpy() {// addr = 0x00400BB0 goto __imp__memcpy; } time() {// addr = 0x00400BC0 goto __imp__time; } malloc() {// addr = 0x00400BE0 goto __imp__malloc; } open() {// addr = 0x00400BF0 goto __imp__open; } perror() {// addr = 0x00400C00 goto __imp__perror; } sprintf() {// addr = 0x00400C10 goto __imp__sprintf; } exit() {// addr = 0x00400C20 goto __imp__exit; } strerror() {// addr = 0x00400C30 goto __imp__strerror; } usleep() {// addr = 0x00400C40 goto __imp__usleep; } _start( _unknown_ __rax, // r53 _unknown_ __rdx // r56 ) {// addr = 0x00400C50 long long* _t2; // _t2 r9 = __rdx; _pop(__rsi); __rsp = __rsp & 240; _push(__rax); _push(__rsp); r8 = __libc_csu_fini; __libc_start_main(); asm("hlt "); __rsp = __rsp - 8; _t2 = __imp____gmon_start__; if(_t2 != 0) { *_t2(); } __rsp = __rsp + 8; return; } call_gmon_start() {// addr = 0x00400C7C __rax = __imp____gmon_start__; if(__rax != 0) { *__rax(); return; } return; } __do_global_dtors_aux() {// addr = 0x00400CA0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t6; // _t6 signed long long _t7; // _t7 _unknown_ _t8; // _t8 _unknown_ _t11; // _t11 if(completed.6531 == 0) { _t6 = dtor_idx.6533; _t11 = (_t8 - &__DTOR_LIST__ >> 3) - 1; if(_t6 >= _t11) { L4: completed.6531 = 1; return; } asm("o16 nop [eax+eax+0x0]"); do { _t7 = _t6 + 1; dtor_idx.6533 = _t7; *((intOrPtr*)(_t7 * 8 + &__DTOR_LIST__))(); _t6 = dtor_idx.6533; } while(_t6 < _t11); goto L4; } return; } frame_dummy( _unknown_ __rax // r53 ) {// addr = 0x00400D10 _unknown_ __rbp; // r59 __rax = __rax; __rbp = __rsp; if(__JCR_LIST__ == 0) { } else { __eax = 0; if(__rax != 0) { _pop(__rbp); goto __rax; } } return __eax; } RADIO_State_Update() {// addr = 0x00400D34 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t124; // _t124 long long _t129; // _t129 _v32 = _t129; _v24 = 0; _v10 = 0; _t100 = _v32; if(( *(_v32 + 191498) & 255) != 0) { _t101 = _v32; if(( *(_v32 + 191496) & 255) == 0) { DebugPrint(0, _t101, _t124, __rdx, _t129, __rsi); } else { __rsi = &_v24; _t129 = *_v32 + 960; RT_PCI_IO_READ32(); if(_v24 == 0) { *(_v32 + 191499) = 0; } else { *(_v32 + 191499) = 1; } r9d = *(_v32 + 191499) & 0xff; r8d = *(_v32 + 191498) & 0xff; DebugPrint(0, _v24, _v24, __rdx, _t129, __rsi); } _v9 = *(_v32 + 191498) & 255 & *(_v32 + 191499) & 255; if(( *(_v32 + 191497) & 255) == _v9) { r9d = *(_v32 + 191499) & 0xff; r8d = *(_v32 + 191498) & 0xff; DebugPrint(0, _v24, _v24, __rdx, _t129, __rsi); } else { *(_v32 + 191497) = _v9 & 255; r9d = *(_v32 + 191499) & 0xff; r8d = *(_v32 + 191498) & 0xff; DebugPrint(0, _v24, _v24, __rdx, _t129, __rsi); if(_v9 == 0) { Rtbth_Set_Radio_Led(); } else { Rtbth_Set_Radio_Led(); } _v10 = 1; } return; } DebugPrint(0, _t100, _t124, __rdx, _t129, __rsi); return; } rtmp_timer_RadioStateMonitorDPC() {// addr = 0x00400F36 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t12; // _t12 _unknown_ _t29; // _t29 _unknown_ _t31; // _t31 _unknown_ _t33; // _t33 _v32 = __rdi; _t21 = _v32; _v24 = _v32; if(_v24 == 0) { DebugPrint(0, _t21, _t29, _t31, __rdi, _t33); return; } _v16 = _v24 + 16; if( *_v16 != 0) { r8 = *_v16; r8(); return; } return; } RadioStateMonitorDPC() {// addr = 0x00400FB1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t24; // _t24 long long _t26; // _t26 long long _t29; // _t29 _v32 = _t26; _v40 = _t29; _v48 = _t24; _v56 = _t22; _v16 = _v40; RADIO_State_Update(); if(__al == 0) { _v24 = 4284967296; KeSetTimer(_v16 + 191504, _v16 + 191520, _v24); return; } return; } RADIO_Start_State_Monitor() {// addr = 0x0040101B long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 _v32 = _t11; _v24 = 4284967296; __rdx = _v32 + 191504; __rsi = _v24; KeSetTimer(_v32 + 191504, _v32 + 191520, _v24); return; } RADIO_Initialise() {// addr = 0x00401056 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t26; // _t26 _v16 = _t26; if(( *(_v16 + 40) & 255) != 160) { if(( *(_v16 + 40) & 255) != 176) { pRadioFunc = &RADIO_FUNC_TC2001; } else { pRadioFunc = &RADIO_FUNC_TC6004; } } else { pRadioFunc = &RADIO_FUNC_RT3290; } if( *pRadioFunc != 0) { *((long long*)( *pRadioFunc))(); } if(( *(_v16 + 191496) & 255) == 0) { return; } else { Radio_StateInitialise(); RADIO_Start_State_Monitor(); return; } } RADIO_DeInitialise() {// addr = 0x004010EA long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 _unknown_ _t15; // _t15 long long _t17; // _t17 _v16 = _t17; DebugPrint(0, _t9, __rcx, _t15, _t17, __rsi); if(pRadioFunc == 0 || *((intOrPtr*)(pRadioFunc + 8)) == 0) { return; } else { *((long long*)( *((intOrPtr*)(pRadioFunc + 8))))(); return; } } RADIO_Reset( long long __rdi // r57 ) {// addr = 0x00401141 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; if(pRadioFunc == 0 || *((intOrPtr*)(pRadioFunc + 16)) == 0) { return; } else { *((long long*)( *((intOrPtr*)(pRadioFunc + 16))))(); return; } } RADIO_Start_Temperature_Monitor( long long __rdi // r57 ) {// addr = 0x0040117F long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; if(pRadioFunc == 0 || *((intOrPtr*)(pRadioFunc + 24)) == 0) { return; } else { *((long long*)( *((intOrPtr*)(pRadioFunc + 24))))(); return; } } RADIO_Stop_Temperature_Monitor( long long __rdi // r57 ) {// addr = 0x004011BD long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; if(pRadioFunc == 0 || *((intOrPtr*)(pRadioFunc + 32)) == 0) { return; } else { *((long long*)( *((intOrPtr*)(pRadioFunc + 32))))(); return; } } RADIO_GenerateRadioChangeEvent() {// addr = 0x004011FB signed int _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 long long _t13; // _t13 _v32 = _t13; _v36 = __esi; _v24 = 8; _v23 = _v36 & 255; EG_Generate_Radio_Change_Event(); return; } Radio_LMP_Detach_Timeout() {// addr = 0x00401238 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 long long _t13; // _t13 _v16 = _t13; _v24 = __rsi; DebugPrint(0, _t11, __rcx, __rdx, _t13, __rsi); Radio_EventCallback(3, __rdx, _v16); return; } Radio_LccmdPageScanCreatedCallback() {// addr = 0x00401279 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t11; // _t11 _v16 = _t11; _v24 = __rsi; _v40 = __rcx; _v28 = __edx; if((_v28 & 255) == 0) { __rdx = &_v28; __esi = 2; Radio_EventCallback(2, &_v28, _v16); return; } return; } Radio_LccmdPageScanCancelCallback() {// addr = 0x004012B1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t11; // _t11 _v16 = _t11; _v24 = __rsi; _v40 = __rcx; _v28 = __edx; if((_v28 & 255) == 0) { __rdx = &_v28; __esi = 1; Radio_EventCallback(1, &_v28, _v16); return; } return; } Radio_StateInitialise() {// addr = 0x004012E9 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; if(_v16 != 0) { if(( *(_v16 + 191497) & 255) == 0) { *(_v16 + 191592) = 4; __rdx = *4925952; *((long long*)(_v16 + 191584)) = __rdx; } else { *(_v16 + 191592) = 0; __rdx = RadioStateTable; *((long long*)(_v16 + 191584)) = __rdx; } r8d = *(_v16 + 191592) & 0xffff; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); } return 0; } Radio_EventCallback( char __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00401390 char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _v32 = __rdi; _v48 = __rdx; _v36 = __esi; _v12 = 0; if(_v32 != 0 && *((intOrPtr*)(_v32 + 191584)) != 0) { r8 = *((intOrPtr*)(_v32 + 191584)); r8(); _v12 = __esi; } return _v12; } Radio_SetNextState() {// addr = 0x004013EA signed long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed short _t15; // _t15 signed short _t25; // _t25 signed long long _t28; // _t28 _unknown_ _t30; // _t30 _v16 = __rdi; _t15 = _t25; _v20 = _t15; if(_v16 != 0) { r8d = _v20 & 65535; DebugPrint(0, _v16, __rcx, _t30, __rdi, __rsi); _t28 = _v16; *(_t28 + 191592) = _v20 & 65535; *((long long*)(_v16 + 191584)) = *((intOrPtr*)(_t28 * 8 + &RadioStateTable)); return _t28; } return _t15; } RadioState_Idle_Event_Handler() {// addr = 0x0040145D char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t28; // _t28 signed char _t46; // _t46 intOrPtr _t59; // _t59 long long _t70; // _t70 _v32 = _t70; _v48 = __rdx; _v36 = _t46; _v9 = 0; r8d = _v36 & 255; DebugPrint(0, _v32, __rcx, __rdx, _t70, __rsi); _t28 = _v36 & 255; if(_t28 == 0) { RADIO_GenerateRadioChangeEvent(); _t59 = _v32; _t31 = *(_t59 + 190504) & 1; if(( *(_t59 + 190504) & 1) != 0) { LCCMD_InquiryScanCancelRequest(_t31); } Radio_SetNextState(); if(( *(_v32 + 190504) & 2) == 0) { Radio_EventCallback(1, __rdx, _v32); } else { if(BTSTS_CheckDeviceState(32, _v32 + 191308) != 0 || *((intOrPtr*)(_v32 + 54744)) == 0) { Radio_EventCallback(1, __rdx, _v32); } else { LCCMD_PageScanCancelRequest(); } } } else { if(_t28 == 5) { } } return; } RadioState_W4PageScanCancellEventHandler() {// addr = 0x00401590 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t50; // _t50 signed char _t78; // _t78 signed long long _t89; // _t89 signed long long _t95; // _t95 signed long long _t106; // _t106 _unknown_ _t111; // _t111 _v32 = _t106; _v48 = __rdx; _v36 = _t78; _v10 = 0; _v9 = 0; _t89 = _v32; r8d = _v36 & 255; DebugPrint(0, _t89, __rcx, __rdx, _t106, _t111); _t50 = _v36 & 255; if(_t50 == 1) { _v11 = 0; while(_v11 <= 6) { __rdx = _v32; _t89 = _t89 * 808 + _v32 + 60208; if(( *(_t89 + 17) & 255) != 0) { _t95 = _v32; __rdx = _t95 + 60224; _v24 = _t95 * 808 + _t95 + 60224; _t89 = *(_v24 + 432); if(_t89 != 0) { _t89 = *( *(_v24 + 432) + 48); if(_t89 != 0) { _v10 = _v10 + 1; __rdx = *( *(_v24 + 432) + 48); _t89 = *(_v24 + 432); r9d = 0; r8d = 21; LMP_Send_Detach(); } } } _v11 = _v11 + 1; } Radio_SetNextState(); if(_v10 == 0) { Radio_EventCallback(3, __rdx, _v32); } else { DM_Set_Timer(); } goto L15; } else { if(_t50 == 5) { DebugPrint(0, _v32, __rcx, __rdx, _t106, _t111); } L15: return; } } RadioState_W4LmpDetachToEventHandler() {// addr = 0x0040173E char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t42; // _t42 signed char _t69; // _t69 signed long long _t77; // _t77 signed long long _t83; // _t83 _v32 = _t89; _v48 = __rdx; _v36 = _t69; _v10 = 0; _v9 = 0; _t77 = _v32; r8d = _v36 & 255; DebugPrint(0, _t77, __rcx, __rdx, _t89, __rsi); _t42 = _v36 & 255; if(_t42 == 3) { _v11 = 0; while(_v11 <= 6) { __rdx = _v32; _t77 = _t77 * 808 + _v32 + 60208; if(( *(_t77 + 17) & 255) != 0) { _t83 = _v32; __rdx = _t83 + 60224; _v24 = _t83 * 808 + __rdx; _t77 = *(_v24 + 432); if(_t77 != 0) { _t77 = *( *(_v24 + 432) + 48); if(_t77 != 0) { _v10 = _v10 + 1; DebugPrint(0, _t77, __rcx, __rdx, _t89, __rsi); __rdx = _v24; _t77 = _v32; __rsi = _v24; _t89 = _t77; LMconnection_Disconnect_Related_Links(); } } } _v11 = _v11 + 1; } Radio_SetNextState(); if(_v10 == 0) { _t89 = _v32; Radio_EventCallback(4, __rdx, _v32); } goto L15; } else { if(_t42 == 5) { DebugPrint(0, _v32, __rcx, __rdx, _t89, __rsi); } L15: return; } } RadioState_W4DeleteAllLinksEventHandler() {// addr = 0x004018B5 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 signed long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t40; // _t40 signed char _t72; // _t72 signed long long _t83; // _t83 signed long long _t96; // _t96 _v32 = _t96; _v48 = __rdx; _v36 = _t72; _v10 = 0; _v9 = 0; _t83 = _v32; r8d = _v36 & 255; DebugPrint(0, _t83, __rcx, __rdx, _t96, __rsi); _t40 = _v36 & 255; if(_t40 == 4) { L3: _v11 = 0; while(_v11 <= 6) { __rdx = _v32; _t83 = _t83 * 808 + __rdx + 60208; if(( *(_t83 + 17) & 255) != 0) { _v10 = _v10 + 1; __rdx = _v32; _t83 = *(_t83 * 808 + __rdx + 60656); r8d = *(_t83 + 11) & 0xff; DebugPrint(0, _t83, __rcx, __rdx, _t96, __rsi); } _v11 = _v11 + 1; } if(_v10 == 0) { BT_RadioOffDeinitialize(); RADIO_DeInitialise(); BthRadioOff(); *((char*)(_v32 + 191497)) = 0; *((char*)(_v32 + 190504)) = 0; Radio_SetNextState(); } else { DebugPrint(0, _t83, __rcx, __rdx, _t96, __rsi); } L13: return; } if(_t40 == 5) { DebugPrint(0, _v32, __rcx, __rdx, _t96, __rsi); goto L13; } if(_t40 != 0) { goto L13; } goto L3; } RadioState_RadioOffEventHandler() {// addr = 0x00401A3D char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t37; // _t37 signed char _t64; // _t64 long long _t103; // _t103 long long _t105; // _t105 _v32 = _t105; _v48 = _t103; _v36 = _t64; _v9 = 0; r8d = _v36 & 255; DebugPrint(0, _v32, __rcx, _t103, _t105, __rsi); _t37 = _v36 & 255; if(_t37 == 0) { DebugPrint(0, _v32, __rcx, _t103, _t105, __rsi); } else { if(_t37 == 5) { BthRadioOn(_v32); *((char*)(_v32 + 191497)) = 1; if((DebugPrint(0, _v32, __rcx, _t103, _v32, __rsi) & 1) != 0) { RT_PCI_IO_WRITE32(); } BthEnableInterrupt(); BthEnableRxTx(); if( *pRadioFunc != 0) { *((long long*)( *pRadioFunc))(); } if(( *(_v32 + 190504) & 1) != 0) { LCCMD_InquiryScanRequest(); } if(( *(_v32 + 190504) & 2) == 0) { RADIO_GenerateRadioChangeEvent(); Radio_SetNextState(); } else { Radio_SetNextState(); LCCMD_PageScanRequest(); } } } return; } RadioState_W4PageScanCreatedEventHandler() {// addr = 0x00401BF5 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t19; // _t19 signed char _t33; // _t33 long long _t44; // _t44 _v32 = _t44; _v48 = __rdx; _v36 = _t33; _v9 = 0; r8d = _v36 & 255; DebugPrint(0, _v32, __rcx, __rdx, _t44, __rsi); _t19 = _v36 & 255; if(_t19 == 0) { DebugPrint(0, _v32, __rcx, __rdx, _t44, __rsi); } else { if(_t19 == 2) { RADIO_GenerateRadioChangeEvent(); Radio_SetNextState(); } } return; } RF_Dump_RF_Register( _unknown_ __rax // r53 ) {// addr = 0x00401CA4 long long _v64; // _cfa_ffffffc0 signed char _v73; // _cfa_ffffffb7 signed char _v74; // _cfa_ffffffb6 signed char _v75; // _cfa_ffffffb5 signed char _v76; // _cfa_ffffffb4 signed char _v77; // _cfa_ffffffb3 signed char _v78; // _cfa_ffffffb2 signed char _v79; // _cfa_ffffffb1 signed char _v80; // _cfa_ffffffb0 signed char _v81; // _cfa_ffffffaf signed char _v82; // _cfa_ffffffae signed char _v83; // _cfa_ffffffad signed char _v84; // _cfa_ffffffac signed char _v85; // _cfa_ffffffab signed char _v86; // _cfa_ffffffaa signed char _v87; // _cfa_ffffffa9 signed char _v88; // _cfa_ffffffa8 char _v89; // _cfa_ffffffa7 char _v90; // _cfa_ffffffa6 char* _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 char* _t99; // _t99 signed char* _t102; // _t102 char* _t104; // _t104 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 200; _v112 = _t104; _v64 = *fs:0x28]; _v90 = 0; while(1) { __eflags = _v90 - 7; if(__eflags > 0) { break; } _t99 = &_v88; _t105 = _t99; RtlFillMemory(16, 0, _t99); _v89 = 0; while(1) { __eflags = _v89 - 15; if(_v89 > 15) { break; } _t102 = &((char*)( &_v88)[_t99]); _t99 = _v112; _t105 = _t99; BthReadRFRegister(); _v89 = _v89 + 1; } _v116 = _v75 & 0xff; _v120 = _v76 & 0xff; _v124 = _v77 & 0xff; r15d = _v78 & 0xff; r14d = _v79 & 0xff; r13d = _v80 & 0xff; r12d = _v81 & 0xff; r11d = _v83 & 0xff; r10d = _v84 & 0xff; r9d = _v85 & 0xff; r8d = _v86 & 0xff; _v128 = _v73 & 0xff; _v136 = _v74 & 0xff; _v144 = _v116; _v152 = _v120; _v160 = _v124; _v168 = r15d; _v176 = r14d; _v184 = r13d; _v192 = r12d; _v200 = _v82 & 0xff; _v208 = r11d; _v216 = r10d; _v224 = r9d; *__rsp = r8d; r9d = _v87 & 0xff; r8d = _v88 & 0xff; DebugPrint(0, _t99, __rcx, _t102, _t105, __rsi); _v90 = _v90 + 1; } if(__eflags != 0) { __stack_chk_fail(); } __rsp = &(__rsp[0x32]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } RF_Monitor_Timer_Work( signed int __eax // r0 ) {// addr = 0x00401E45 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed char _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed char _v16; // _cfa_fffffff0 signed int _v18; // _cfa_ffffffee signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v37; // _cfa_ffffffdb signed int _v40; // _cfa_ffffffd8 signed int _v55; // _cfa_ffffffc9 signed int _v56; // _cfa_ffffffc8 signed short* _v64; // _cfa_ffffffc0 _unknown_ _v80; // _cfa_ffffffb0 char* _v88; // _cfa_ffffffa8 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed int _t216; // _t216 signed int _t217; // _t217 signed int _t228; // _t228 signed char _t243; // _t243 signed int _t246; // _t246 signed int _t256; // _t256 signed int _t296; // _t296 _unknown_ _t479; // _t479 long long _t486; // _t486 intOrPtr _t488; // _t488 _v80 = _t486; _v88 = __rsi; _v14 = 0; _v10 = 128; _v64 = _v80 + 30552; _v24 = 0; if((__eax & 1) == 0) { _v24 = 4294967295; _v56 = _v24; } else { _t477 = &_v24; __rsi = &_v24; _t486 = *_v80 + 1832; RT_PCI_IO_READ32(); _v56 = _v24; } _v55 = _v55 & 255 | 1; _t216 = _v55 & 255 | 2; _v55 = _t216; _t217 = _t216 & 1; if(_t217 != 0) { _t486 = *_v80 + 1832; _t217 = RT_PCI_IO_WRITE32(); } _v28 = 0; _v24 = 0; _t396 = *((intOrPtr*)(_v80 + 191488)); if((_t217 & 1) == 0) { _v24 = 4294967295; _v28 = _v24; } else { _t396 = *_v80 + 1832; _t477 = &_v24; __rsi = &_v24; _t486 = *_v80 + 1832; RT_PCI_IO_READ32(); _v28 = _v24; } _t221 = _v28 & 768; if((_v28 & 768) != 768) { _t221 = DebugPrint(0, _t396, _t477, _t479, _t486, __rsi); } rtbt_usec_delay(_t221, _t486); RtbtReadModemRegister(); _t488 = _v80; RtbtReadModemRegister(); _v55 = _v55 & 0xfe; _t228 = _v55 & 0xfd; _v55 = _t228; if((_t228 & 1) != 0) { _t488 = *_v80 + 1832; RT_PCI_IO_WRITE32(); } _v20 = _v16 & 0xff | (_v15 & 0xf) << 8; _v18 = (_v20 & 65535) - ( *_v64 & 65535) + 3308; _v10 = (_v64[1]) & 255; _v13 = 0; while(_v13 <= 26) { if(( *((_v13 & 255) + (_v13 & 255) + _t482 + (_v13 & 255) + (_v13 & 255) + _t482 + &RT3290CompensatedBBP + 2) & 65535) > _v18) { _v13 = _v13 + 1; continue; } else { _v10 = *((_v13 & 255) + (_v13 & 255) + _t482 + (_v13 & 255) + (_v13 & 255) + _t482 + &RT3290CompensatedBBP + 4) & 255; if(((_v64[1]) & 255) != _v10) { _v14 = 1; } L20: if(_v18 <= 3511) { _t243 = 61; } else { _t243 = 45; } _v9 = _t243; if(((_v64[1]) & 255) != _v9) { _v14 = 1; } _v12 = (_v64[2]) & 255; _t246 = (_v64[2]) & 255; _v11 = _t246; _v13 = 0; while(_v13 <= 11) { _t246 = *((_v13 & 255) + (_v13 & 255) + _t482 + (_v13 & 255) + (_v13 & 255) + _t482 + &RT3290RFFrequencyOffset + 2) & 65535; if(_t246 > _v18) { _v13 = _v13 + 1; continue; } _v12 = *((_v13 & 255) + (_v13 & 255) + _t485 + (_v13 & 255) + (_v13 & 255) + _t485 + &RT3290RFFrequencyOffset + 4) & 255; _v11 = *((_v13 & 255) + (_v13 & 255) + _t482 + (_v13 & 255) + (_v13 & 255) + _t482 + &RT3290RFFrequencyOffset + 5) & 255; _t246 = *(_v80 + 30556) & 255; if(_t246 != _v12) { L29: _v14 = 1; L33: L34: if(_v14 != 0) { r8d = _v9 & 255; r9d = _v20 & 65535; r10d = _v15 & 0xff; _v104 = r8d; _v112 = (_v64[1]) & 0xff; _v120 = _v10 & 255; _v128 = (_v64[1]) & 0xff; *__rsp = _v18 & 65535; r8d = r10d; DebugPrint(0, _v64, _t477, _t482, _t488, __rsi); (_v64[1]) = _v10 & 255; (_v64[1]) = _v9 & 255; r8d = (_v64[2]) & 0xff; _v120 = _v11 & 255; _v128 = (_v64[2]) & 0xff; *__rsp = _v12 & 255; r9d = r8d; r8d = _v18 & 65535; DebugPrint(0, _v64, _t477, _t482, _t488, __rsi); (_v64[2]) = _v12 & 255; (_v64[2]) = _v11 & 255; _t296 = (_v9 & 255) << 24 | _v10 & 255 | ( *(_v80 + 30556) & 0xff) << 8 | ( *(_v80 + 30557) & 0xff) << 16; _v28 = _t296; _t246 = _t296 & 1; if(_t246 != 0) { _t488 = *_v80 + 61472; _t246 = RT_PCI_IO_WRITE32(); } } _v40 = 0; _v24 = 0; if((_t246 & 1) == 0) { _v24 = 4294967295; _v40 = _v24; } else { _t477 = &_v24; __rsi = &_v24; _t488 = *_v80 + 800; RT_PCI_IO_READ32(); _v40 = _v24; } if((_v37 & 0x40) != 0) { _v14 = 0; if((_v37 & 0xf) != 0) { _t256 = _v37 & 0xf; if(_t256 != 1) { _t256 = _v37 & 0xf; if(_t256 == 2 && _v20 <= 3645) { _t256 = _v37 & 0xf0 | 1; _v37 = _t256; _v14 = 1; } } else { if(_v20 <= 3684) { if(_v20 <= 3520) { _t256 = _v37 & 0xf0; _v37 = _t256; _v14 = 1; } } else { _t256 = _v37 & 0xf0 | 2; _v37 = _t256; _v14 = 1; } } } else { if(_v20 > 3583) { _t256 = _v37 & 0xf0 | 1; _v37 = _t256; _v14 = 1; } } if(_v14 != 0) { _t420 = *((intOrPtr*)(_v80 + 191488)); if((_t256 & 1) != 0) { _t420 = *_v80 + 800; _t488 = *_v80 + 800; RT_PCI_IO_WRITE32(); } r8d = _v37 & 0xf; DebugPrint(0, _t420, _t477, _t482, _t488, __rsi); } } (_v64[3]) = DM_Set_Timer(); return; } _t246 = *(_v80 + 30557) & 255; if(_t246 == _v11) { goto L33; } goto L29; } goto L34; } } goto L20; } RF_Start_Temperature_Monitor( _unknown_ __eax, // r0 long long __rdi // r57 ) {// addr = 0x004024A9 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; if(( *(_v16 + 41) & 255) != 0) { *((char*)(_v16 + 30554)) = 128; *((char*)(_v16 + 30555)) = 0; *((char*)(_v16 + 30556)) = 0; *((char*)(_v16 + 30557)) = 0; RtbtWriteModemRegister(); *((char*)(_v16 + 30558)) = DM_Set_Timer(); return; } return; } RF_Stop_Temperature_Monitor() {// addr = 0x0040252F long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t20; // _t20 _v16 = _t20; if(( *(_v16 + 41) & 255) == 0 || ( *(_v16 + 30558) & 255) == 0) { return; } else { DM_Clear_Timer(); *(_v16 + 30558) = 0; return; } } RF_Reset_3290() {// addr = 0x0040257F signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t45; // _t45 _unknown_ _t66; // _t66 _unknown_ _t92; // _t92 long long _t98; // _t98 _v32 = _t98; DebugPrint(0, _t66, __rcx, _t92, _t98, __rsi); _v9 = 128; BthReadRFRegister(); BthReadRFRegister(); if(( *(_v32 + 41) & 255) != 0) { L7: _t45 = ( *(_v32 + 30557) & 0xff) << 16 | _v9 & 255 | ( *(_v32 + 30556) & 0xff) << 8 | 1023410176; _v16 = _t45; if((_t45 & 1) == 0) { return; } RT_PCI_IO_WRITE32(); return; } _v10 = 0; while(_v10 <= 13) { if(( *((_v10 & 255) + (_v10 & 255) + _t95 + &RT3290InitBBPRegSeq) & 255) != 59 || ( *((_v10 & 255) + (_v10 & 255) + _t96 + &RT3290InitBBPRegSeq + 2) & 255) == 0) { _v10 = _v10 + 1; continue; } else { _v9 = *((_v10 & 255) + (_v10 & 255) + _t97 + &RT3290InitBBPRegSeq + 1) & 255; goto L7; } } goto L7; } RFMultiStepXoCode() {// addr = 0x004026C5 signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed char _t70; // _t70 signed char _t78; // _t78 _v32 = __rdi; _v36 = sil; _v40 = _t78; _v44 = _t70; _v20 = 0; _v16 = 0; _v9 = _v40 & 0x80; _v40 = _v40 & 127; _v44 = _v44 & 127; if((_v44 & 255) != _v40) { r9d = _v9 & 255; r8d = _v44 & 255; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); if((_v40 & 255) <= _v44) { DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); if(_v9 != 0) { _v40 = _v40 | 128; } __rax = _v32; __rdi = _v32; BthWriteRFRegister(); _v16 = _v16 + 1; L11: r9d = _v16; r8d = _v44 & 255; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return; } _v20 = _v44 & 255; while((_v40 & 255) >= _v20) { __rax = _v32; __rdi = _v32; BthWriteRFRegister(); _v16 = _v16 + 1; _v20 = _v20 + 1; } _v40 = _v40 | 128; goto L11; } if(_v9 != 0) { __rax = _v32; __rdi = _v32; BthWriteRFRegister(); } return; } RF_Initialise_3290() {// addr = 0x00402810 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 unsigned char _v12; // _cfa_fffffff4 signed char _v13; // _cfa_fffffff3 signed char _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed int _v18; // _cfa_ffffffee signed int _v24; // _cfa_ffffffe8 signed short _v28; // _cfa_ffffffe4 signed int _v38; // _cfa_ffffffda signed int _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t303; // _t303 signed int _t324; // _t324 signed int _t331; // _t331 signed int _t332; // _t332 signed int _t333; // _t333 signed int _t334; // _t334 signed int _t335; // _t335 signed int _t336; // _t336 signed int _t344; // _t344 signed int _t345; // _t345 signed int _t521; // _t521 signed int _t524; // _t524 signed int _t730; // _t730 signed int _t800; // _t800 signed int _t801; // _t801 signed int _t803; // _t803 signed int _t804; // _t804 signed int _t808; // _t808 signed int _t810; // _t810 signed int _t811; // _t811 signed int _t818; // _t818 _v64 = _t805; _t631 = _v64 + 30552; _v48 = _v64 + 30552; DebugPrint(0, _v64 + 30552, __rcx, _t789, _t805, __rsi); DebugPrint(0, _v64 + 30552, __rcx, _t789, _t805, __rsi); _v13 = 0; goto L7; do { } while(); L15: while(_v13 <= 13) { _t789 = _v13 & 255; _t631 = _t789 + _t789 + _t789 + &RT3290InitBBPRegSeq; if(( *(_t789 + _t789 + _t789 + &RT3290InitBBPRegSeq + 2) & 255) != 0) { _t805 = _v64; _v18 = Bth_EEPROM_READ16(_v64); _t798 = _v13 & 255; _t803 + _t803 + _t803 = (_v13 & 255) + (_v13 & 255) + (_v13 & 255) + &RT3290InitBBPRegSeq; r9d = *((_v13 & 255) + (_v13 & 255) + _t798 + &RT3290InitBBPRegSeq) & 0xff; r8d = _v18 & 65535; DebugPrint(0, (_v13 & 255) + (_v13 & 255) + (_v13 & 255) + &RT3290InitBBPRegSeq, __rcx, _t789, _v64, __rsi); if(_v18 != 255) { if(( *((_v13 & 255) + (_v13 & 255) + (_v13 & 255) + &RT3290InitBBPRegSeq + 2) & 1) != 0) { _v9 = (_v18 & 65535) >> 8; _t800 = _v13 & 255; _t631 = _t800 + _t800 + _t800; _t789 = _t800 + _t800 + _t800 + &RT3290InitBBPRegSeq; *(_t800 + _t800 + _t800 + &RT3290InitBBPRegSeq + 1) = _v9 & 255; } else { _v9 = _v18 & 65535; _t801 = _v13 & 255; _t631 = _t801 + _t801 + _t801; _t789 = _t801 + _t801 + _t801 + &RT3290InitBBPRegSeq; *(_t801 + _t801 + _t801 + &RT3290InitBBPRegSeq + 1) = _v9 & 255; } } } _v13 = _v13 + 1; } DebugPrint(0, _t631, __rcx, _t789, _t805, __rsi); _v13 = 0; while(_v13 <= 17) { _t789 = _v13 & 255; _t631 = _t789 + _t789 + _t789 + &RT3290InitRFRegSeq; if(( *(_t789 + _t789 + _t789 + &RT3290InitRFRegSeq + 1) & 255) != 0) { _t789 = _v13 & 255; _t631 = _v64; _t805 = _v64; BthWriteRFRegister(); } _v13 = _v13 + 1; } DebugPrint(0, _t631, __rcx, _t789, _t805, __rsi); _v13 = 0; while(_v13 <= 13) { _t789 = _v13 & 255; _t631 = _t789 + _t789 + _t789 + &RT3290InitBBPRegSeq; if(( *(_t789 + _t789 + _t789 + &RT3290InitBBPRegSeq + 1) & 255) != 0) { _t789 = _v13 & 255; _t631 = _v64; _t805 = _v64; RtbtWriteModemRegister(); } _v13 = _v13 + 1; } DebugPrint(0, _t631, __rcx, _t789, _t805, __rsi); _v18 = Bth_EEPROM_READ16(_v64); _v10 = _v18 & 65535 | 128; _t790 = &_v15; BthReadRFRegister(); _t808 = _v64; RFMultiStepXoCode(); _t647 = _v64; if(( *(_v64 + 41) & 255) != 0) { if(( *(_v64 + 41) & 255) != 0) { _t818 = _v64; _v18 = Bth_EEPROM_READ16(_v64); if(_v18 > 3584 || _v18 <= 2815) { _v18 = 3308; } *_v48 = _v18 & 65535; DebugPrint(0, _v48, __rcx, _t790, _t818, __rsi); RtbtWriteModemRegister(); } } else { DebugPrint(0, _t647, __rcx, &_v15, _t808, __rsi); _v18 = Bth_EEPROM_READ16(_v64); _v9 = _v18 & 65535; if(_v9 != 255) { RtbtReadModemRegister(); _v9 = _v9 & 1 | _v14 & 0xfe; RtbtWriteModemRegister(); } } BthReadRFRegister(); _t792 = _v64 + 30557; _t810 = _v64; BthReadRFRegister(); _t303 = ( *(_v64 + 30557) & 0xff) << 16 | ( *(_v64 + 30556) & 0xff) << 8 | 128 | 1023410176; _v24 = _t303; _t656 = *(_v64 + 191488); if((_t303 & 1) != 0) { _t656 = *_v64 + 61472; _t810 = *_v64 + 61472; RT_PCI_IO_WRITE32(); } DebugPrint(0, _t656, __rcx, _t792, _t810, __rsi); if(( *(_v64 + 41) & 255) != 0) { if(( *(_v64 + 41) & 255) == 0) { _v12 = 1; } else { _v18 = Bth_EEPROM_READ16(_v64); if(_v18 == 255) { _v12 = 1; } else { _v15 = (_v18 & 65535) >> 8; _v12 = (_v15 & 255) >> 4; } _v18 = Bth_EEPROM_READ16(_v64); if(_v18 != 255) { gTxPwrTable3290_class1 = _v18 & 65535; *7291273 = (_v18 & 65535) >> 8; } _v18 = Bth_EEPROM_READ16(_v64); if(_v18 != 255) { *7291274 = _v18 & 65535; *7291275 = (_v18 & 65535) >> 8; } _t810 = _v64; _v18 = Bth_EEPROM_READ16(_v64); if(_v18 != 255) { *7291276 = _v18 & 65535; } } goto L61; } else { _t730 = _v64; _t810 = _t730; _v18 = Bth_EEPROM_READ16(_t730); if(_v18 == 255) { _v12 = 1; _v11 = 0; } else { _v15 = _v18 & 65535; _v12 = (_v15 & 255) >> 4; _v11 = _v15 & 0xf; } if(_v12 != 1) { if(_v12 != 2) { goto L61; } _v13 = 0; while(_v13 <= 3) { _t521 = _v11 & 255 | *(_t730 + &gTxPwrTable3290_class2) & 0xf8; _t730 = _v13 & 255; *(_t730 + &gTxPwrTable3290_class2) = _t521; _v13 = _v13 + 1; } goto L61; } else { _v13 = 0; while(_v13 <= 4) { _t524 = _v11 & 255 | ( &gTxPwrTable3290_class1[_t730]) & 0xf8; _t730 = _v13 & 255; ( &gTxPwrTable3290_class1[_t730]) = _t524; _v13 = _v13 + 1; } L61: if(_v12 != 1) { if(_v12 != 2) { gTxPwrTable = &gTxPwrTable3290_class1; } else { gTxPwrTable = &gTxPwrTable3290_class2; } } else { gTxPwrTable = &gTxPwrTable3290_class1; } _t659 = _v64; if(( *(_v64 + 41) & 255) != 0) { BthWriteRFRegister(); BthWriteRFRegister(); RtbtWriteModemRegister(); _t659 = _v64; _t810 = _v64; RtbtWriteModemRegister(); } _v80 = *7291276 & 0xff; *__rsp = *7291275 & 0xff; r9d = *7291274 & 0xff; r8d = *7291273 & 0xff; DebugPrint(0, _t659, __rcx, _t792, _t810, __rsi); *__rsp = *7291280 & 0xff; r9d = *7291279 & 0xff; r8d = *7291278 & 0xff; _t324 = DebugPrint(0, _t659, __rcx, _t792, _t810, __rsi); _t811 = _v64; RF_Dump_RF_Register(_v64); _v13 = 0; while(_v13 <= 13) { _t793 = _v13 & 255; _t792 = _v13 & 255; r8d = *((_v13 & 255) + (_v13 & 255) + _t793 + &RT3290InitBBPRegSeq + 1) & 0xff; _t324 = DebugPrint(0, (_v13 & 255) + (_v13 & 255) + _t792 + &RT3290InitBBPRegSeq, __rcx, _t792, _t811, __rsi); _v13 = _v13 + 1; } _t331 = _t324 & 1; if(_t331 != 0) { _t811 = *_v64 + 1632; _t331 = RT_PCI_IO_WRITE32(); } _t332 = _t331 & 1; if(_t332 != 0) { _t811 = *_v64 + 1644; _t332 = RT_PCI_IO_WRITE32(); } _t333 = _t332 & 1; if(_t333 != 0) { _t811 = *_v64 + 1636; _t333 = RT_PCI_IO_WRITE32(); } _t334 = _t333 & 1; if(_t334 != 0) { _t811 = *_v64 + 1640; _t334 = RT_PCI_IO_WRITE32(); } _t335 = _t334 & 1; if(_t335 != 0) { _t811 = *_v64 + 1648; _t335 = RT_PCI_IO_WRITE32(); } _t336 = _t335 & 1; if(_t336 != 0) { _t811 = *_v64 + 1652; _t336 = RT_PCI_IO_WRITE32(); } if((_t336 & 1) != 0) { _t811 = *_v64 + 1684; RT_PCI_IO_WRITE32(); } if(( *(_v64 + 191597) & 255) == 0) { return; } else { _v40 = 0; _v40 = _v40 & 0xf800 | 4; _t344 = _v38 & 0xf800 | 12; _v38 = _t344; _t345 = _t344 & 1; if(_t345 != 0) { _t811 = *_v64 + 2388; _t345 = RT_PCI_IO_WRITE32(); } _v40 = 0; _v28 = 0; _t687 = *(_v64 + 191488); if((_t345 & 1) == 0) { _v28 = 4294967295; _v40 = _v28; } else { _t687 = *_v64 + 2388; __rcx = &_v28; __rsi = __rcx; _t811 = *_v64 + 2388; RT_PCI_IO_READ32(); _v40 = _v28; } r8d = _v38 & 0x7ff; DebugPrint(0, _t687, __rcx, _t792, _t811, __rsi); return; } } } L7: if(_v13 <= 17) { _t789 = _v13 & 255; _t631 = _t789 + _t789 + _t789 + &RT3290InitRFRegSeq; if(( *(_t789 + _t789 + _t789 + &RT3290InitRFRegSeq + 2) & 255) != 0) { _t789 = _v13 & 255; _t631 = _v64; _t805 = _v64; _v18 = Bth_EEPROM_READ16(_v64); if(_v18 != 255) { if(( *((_v13 & 255) + (_v13 & 255) + (_v13 & 255) + &RT3290InitRFRegSeq + 2) & 1) != 0) { _v10 = (_v18 & 65535) >> 8; _t803 = _v13 & 255; _t631 = _t803 + _t803 + _t803; _t789 = _t803 + _t803 + _t803 + &RT3290InitRFRegSeq; *(_t803 + _t803 + _t803 + &RT3290InitRFRegSeq + 1) = _v10 & 255; } else { _v10 = _v18 & 65535; _t804 = _v13 & 255; _t631 = _t804 + _t804 + _t804; _t789 = _t804 + _t804 + _t804 + &RT3290InitRFRegSeq; *(_t804 + _t804 + _t804 + &RT3290InitRFRegSeq + 1) = _v10 & 255; } } } _v13 = _v13 + 1; goto L7; } else { DebugPrint(0, _t631, __rcx, _t789, _t805, __rsi); _v13 = 0; } goto L15; } RF_DeInitialise_3290() {// addr = 0x00403425 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t35; // _t35 _unknown_ _t41; // _t41 long long _t44; // _t44 _v32 = _t44; DebugPrint(0, _t35, __rcx, _t41, _t44, __rsi); BthReadRFRegister(); _v9 = _v9 & 0x7f; BthWriteRFRegister(); BthReadRFRegister(); _v9 = _v9 & 0x7f; BthWriteRFRegister(); RF_Dump_RF_Register(_v32); return; } RF_Convert_Rssi_3290( signed char __edi, // r4 char __esi // r5 ) {// addr = 0x004034C6 signed char _v9; // _cfa_fffffff7 signed int _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; _v28 = __edi; _v32 = __esi; if(_v32 != 2) { if(_v32 != 1) { if(_v32 != 0) { _v9 = 18; } else { _v9 = 38; } } else { _v9 = 18; } } else { _v9 = 2; } _v28 = ~(_v9 & 255) - (_v28 & 255) - 50; return _v28 & 255; } RF_Get_Link_Rssi_3290() {// addr = 0x0040351A unsigned int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 unsigned int _v28; // _cfa_ffffffe4 signed int _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed char _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t133; // _t133 signed int _t152; // _t152 signed int _t156; // _t156 signed int _t197; // _t197 signed int _t211; // _t211 signed int _t219; // _t219 intOrPtr _t250; // _t250 unsigned int _t257; // _t257 signed int _t269; // _t269 long long _t303; // _t303 signed char* _t308; // _t308 _v48 = _t303; _v56 = _t308; _v20 = 0; _v28 = 0; if(_v56 == 0) { _v10 = 201; L31: return _v10 & 255; } if(( *_v56 & 255) == 0) { _v10 = 201; } else { if(((_v56[8]) & 65535) <= 19) { _v20 = 12; } else { _v20 = 60; } _t133 = _v20 + (( *((_v56[0x68]) + 2) & 0xff) + 912 << 6); _v14 = _t133; _v24 = 0; if((_t133 & 1) == 0) { _v24 = 4294967295; _v28 = _v24; } else { RT_PCI_IO_READ32(); _v28 = _v24; } _v10 = _v28 >> 16; _v9 = _v28 >> 24; _t250 = _v48; __rdx = _t250 + 60216; _t309 = _v56; _t304 = _t250 + 60216; _t211 = LM_SearchConnectionHandleByACL(_v56, _t250 + 60216, _v56) & 65535; if((_v56[0x58]) == 0) { _t197 = 0; } else { _t197 = *((_v56[0x58]) + 11) & 0xff; } _t219 = (_v56[0xb]) & 0xff; _t257 = *((_v56[0x68]) + 16); if(( *(_t257 + 1) & 255) != 0) { } r9d = *((_v56[0x68]) + 2) & 0xff; r8d = *( *((intOrPtr*)((_v56[0x68]) + 24)) + 4) & 0xff; _t299 = *((intOrPtr*)((_v56[0x68]) + 24)); _v64 = _t211; _v72 = _t197; _v80 = _t219; *__rsp = _t257; DebugPrint(0, _t257, *((intOrPtr*)((_v56[0x68]) + 24)), __rdx, _t304, _t309); _v10 = RF_Convert_Rssi_3290(_v10, _v9); if((oldRssiLna & 255) != _v10) { if(((_v56[8]) & 65535) <= 19) { _t286 = _v56; _v72 = _v9; _v80 = _v10; *__rsp = _v20; r9d = *((_v56[0x68]) + 2) & 0xff; r8d = *((_v56[0x60]) + 2) & 0xff; DebugPrint(0, _v56, _t299, __rdx, _t304, _t309); } else { _t286 = _v56; *__rsp = _v9; r9d = _v10; r8d = _v20; DebugPrint(0, _v56, _t299, __rdx, _t304, _t309); } DebugPrint(0, _t286, _t299, __rdx, _t304, _t309); oldRssiLna = _v10 & 255; } if((_v56[0x58]) != 0 && *((intOrPtr*)((_v56[0x58]) + 72)) != 0) { _v12 = *( *((intOrPtr*)((_v56[0x58]) + 72)) + 20) & 65535; if(_v12 == 17 || _v12 == 19) { _t267 = _v48; if(( *(_v48 + 191474) & 255) != ( *(_v48 + 191477) & 255)) { _t152 = DebugPrint(0, _t267, _t299, __rdx, _t304, _t309); _v24 = 0; _t269 = *(_v48 + 191488); if((_t152 & 1) == 0) { _v24 = 4294967295; _v40 = _t269; } else { RT_PCI_IO_READ32(); _v40 = *_v48 + 960; } _t156 = _v40 & 255 | 16; _v40 = _t156; if((_t156 & 1) != 0) { RT_PCI_IO_WRITE32(); } } } } } } RF_Initialise_2001() {// addr = 0x00403904 unsigned short _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed short _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t79; // _t79 signed int _t80; // _t80 signed int _t81; // _t81 signed int _t82; // _t82 signed int _t83; // _t83 signed int _t91; // _t91 signed int _t92; // _t92 long long _t224; // _t224 _v32 = _t224; _v16 = 0; while(_v16 <= 44) { BthWriteRFRegister(); _v16 = _v16 + 1; } _t226 = _v32; _t79 = Bth_EEPROM_READ16(_v32); _v12 = _t79; if(_v12 != 255) { _v9 = _v12 & 65535; BthWriteRFRegister(); DebugPrint(0, _v32, __rcx, __rdx, _v32, __rsi); _v9 = (_v12 & 65535) >> 8; _t226 = _v32; BthWriteRFRegister(); _t79 = DebugPrint(0, _v32, __rcx, __rdx, _v32, __rsi); } gTxPwrTable = "#'26:"; _t80 = _t79 & 1; if(_t80 != 0) { _t226 = *_v32 + 1632; _t80 = RT_PCI_IO_WRITE32(); } _t81 = _t80 & 1; if(_t81 != 0) { _t226 = *_v32 + 1644; _t81 = RT_PCI_IO_WRITE32(); } _t82 = _t81 & 1; if(_t82 != 0) { _t226 = *_v32 + 1636; _t82 = RT_PCI_IO_WRITE32(); } _t83 = _t82 & 1; if(_t83 != 0) { _t226 = *_v32 + 1640; _t83 = RT_PCI_IO_WRITE32(); } if((_t83 & 1) != 0) { _t226 = *_v32 + 1684; RT_PCI_IO_WRITE32(); } if(( *(_v32 + 191597) & 255) != 0) { _v24 = 0; _v24 = _v24 & 0xf800 | 4; _t91 = _v22 & 0xf800 | 11; _v22 = _t91; _t92 = _t91 & 1; if(_t92 != 0) { _t226 = *_v32 + 2388; _t92 = RT_PCI_IO_WRITE32(); } _v24 = 0; _v20 = 0; _t194 = *((intOrPtr*)(_v32 + 191488)); if((_t92 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t194 = *_v32 + 2388; __rcx = &_v20; __rsi = __rcx; _t226 = *_v32 + 2388; RT_PCI_IO_READ32(); _v24 = _v20; } r8d = _v22 & 0x7ff; DebugPrint(0, _t194, __rcx, __rdx, _t226, __rsi); return; } return; } RF_Convert_Rssi_2001( signed char __edi, // r4 char __esi // r5 ) {// addr = 0x00403C35 signed char _v9; // _cfa_fffffff7 signed int _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; _v28 = __edi; _v32 = __esi; _v9 = 0; _v28 = (_v9 & 255) + (_v28 & 255); return _v28 & 255; } RF_Get_Link_Rssi_2001() {// addr = 0x00403C5A unsigned int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 unsigned int _v16; // _cfa_fffffff0 unsigned int _v20; // _cfa_ffffffec _unknown_ _v32; // _cfa_ffffffe0 char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t37; // _t37 intOrPtr* _t61; // _t61 _v32 = __rdi; _v40 = __rsi; _v20 = 0; if(_v40 == 0) { _v10 = 201; } else { if(( *_v40 & 255) == 0) { _v10 = 201; } else { _t37 = (( *((_v40[0x68]) + 2) & 0xff) + 912 << 6) + 12; _v12 = _t37; _v16 = 0; _t59 = *((intOrPtr*)(_v32 + 191488)); if((_t37 & 1) == 0) { _v16 = 4294967295; _v20 = _v16; } else { _t61 = _v32; _t59 = _t61 + *_t61; _t62 = &_v16; __rsi = &_v16; __rdi = _t61 + *_t61; RT_PCI_IO_READ32(); _v20 = _v16; } _v9 = _v20 >> 16; _v10 = _v9 & 255; DebugPrint(0, _t59, _t62, __rdx, __rdi, __rsi); } } return _v10 & 255; } RF_Dump_RF_Register( _unknown_ __rax // r53 ) {// addr = 0x00403D44 long long _v64; // _cfa_ffffffc0 signed char _v73; // _cfa_ffffffb7 signed char _v74; // _cfa_ffffffb6 signed char _v75; // _cfa_ffffffb5 signed char _v76; // _cfa_ffffffb4 signed char _v77; // _cfa_ffffffb3 signed char _v78; // _cfa_ffffffb2 signed char _v79; // _cfa_ffffffb1 signed char _v80; // _cfa_ffffffb0 signed char _v81; // _cfa_ffffffaf signed char _v82; // _cfa_ffffffae signed char _v83; // _cfa_ffffffad signed char _v84; // _cfa_ffffffac signed char _v85; // _cfa_ffffffab signed char _v86; // _cfa_ffffffaa signed char _v87; // _cfa_ffffffa9 signed char _v88; // _cfa_ffffffa8 char _v89; // _cfa_ffffffa7 signed char _v90; // _cfa_ffffffa6 signed int _v91; // _cfa_ffffffa5 char* _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t141; // _t141 char* _t144; // _t144 signed char* _t156; // _t156 char* _t161; // _t161 char* _t163; // _t163 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 200; _v112 = _t161; _v64 = *fs:0x28]; _v89 = 128; _v90 = 0; while(_v90 <= 7) { _t144 = &_v88; _t162 = _t144; RtlFillMemory(16, 0, _t144); _v91 = 0; while((_v91 & 255) <= 15) { _t156 = &((char*)( &_v88)[_t144]); _t144 = _v112; _t162 = _t144; BthReadRFRegister(); _v91 = (_v91 & 255) + 1; } _v116 = _v75 & 0xff; _v120 = _v76 & 0xff; _v124 = _v77 & 0xff; r15d = _v78 & 0xff; r14d = _v79 & 0xff; r13d = _v80 & 0xff; r12d = _v81 & 0xff; r11d = _v83 & 0xff; r10d = _v84 & 0xff; r9d = _v85 & 0xff; r8d = _v86 & 0xff; _v128 = _v73 & 0xff; _v136 = _v74 & 0xff; _v144 = _v116; _v152 = _v120; _v160 = _v124; _v168 = r15d; _v176 = r14d; _v184 = r13d; _v192 = r12d; _v200 = _v82 & 0xff; _v208 = r11d; _v216 = r10d; _v224 = r9d; *__rsp = r8d; r9d = _v87 & 0xff; r8d = _v88 & 0xff; DebugPrint(0, _t144, __rcx, _t156, _t162, __rsi); _v90 = _v90 + 1; } _v90 = 0; while(1) { _t141 = (_v90 & 255) - _v89; if(_t141 >= 0) { break; } _v91 = 0; _t163 = _v112; BthReadRFRegister(); if(( *((_v90 & 255) + (_v90 & 255) + (_v90 & 255) + &TC6004InitRFRegSeq + 1) & 255) != (_v91 & 255)) { _t160 = _v90 & 255; r9d = _v91 & 0xff; r8d = *((_v90 & 255) + _t160 + _t160 + &TC6004InitRFRegSeq + 1) & 0xff; DebugPrint(0, (_v90 & 255) + _t160 + _t160 + &TC6004InitRFRegSeq, __rcx, _t160, _t163, __rsi); } _v90 = _v90 + 1; } if(_t141 != 0) { __stack_chk_fail(); } __rsp = &(__rsp[0x32]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } RF_Dump_BBP_Register() {// addr = 0x00403F98 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t94; // _t94 intOrPtr _t95; // _t95 _v32 = _t94; _v9 = 2; _v10 = 0; while((_v10 & 255) < _v9) { _t87 = _v10 & 255; _t88 = _v10 & 255; r8d = *((_v10 & 255) + _t87 + _t87 + 4929281) & 0xff; DebugPrint(0, (_v10 & 255) + _t88 + _t88 + &TC6004InitBBPRegSeq, __rcx, _t88, _t94, __rsi); _v10 = _v10 + 1; } _v10 = 0; while((_v10 & 255) < _v9) { _v11 = 0; _t95 = _v32; RtbtReadModemRegister(); if(( *((_v10 & 255) + (_v10 & 255) + _t91 + 4929281) & 255) != (_v11 & 255)) { _t92 = _v10 & 255; _t93 = _v10 & 255; r9d = _v11 & 0xff; r8d = *((_v10 & 255) + _t92 + _t92 + 4929281) & 0xff; DebugPrint(0, (_v10 & 255) + _t93 + _t93 + &TC6004InitBBPRegSeq, __rcx, _t93, _t95, __rsi); } _v10 = _v10 + 1; } return; } RF_Reset_TC6004() {// addr = 0x004040E5 signed char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t30; // _t30 long long _t54; // _t54 _v32 = _t54; _v9 = 128; BthReadRFRegister(); BthReadRFRegister(); _t30 = ( *(_v32 + 30557) & 0xff) << 16 | _v9 & 255 | ( *(_v32 + 30556) & 0xff) << 8 | 1023410176; _v16 = _t30; if((_t30 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } RF_Initialise_TC6004() {// addr = 0x0040419C signed char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t124; // _t124 signed int _t125; // _t125 signed int _t126; // _t126 signed int _t127; // _t127 signed int _t128; // _t128 signed int _t129; // _t129 signed int _t130; // _t130 signed int _t131; // _t131 signed int _t139; // _t139 signed int _t140; // _t140 _unknown_ _t311; // _t311 intOrPtr _t317; // _t317 _v32 = _t312; DebugPrint(0, _v32, __rcx, _v9 & 255, _v32, __rsi); _v9 = 0; while((_v9 & 255) >= 0) { _t306 = _v9 & 255; _t220 = _v32; _t312 = _v32; BthWriteRFRegister(); _v9 = _v9 + 1; } DebugPrint(0, _t220, __rcx, _t306, _t312, __rsi); _v9 = 0; while(_v9 <= 1) { RtbtWriteModemRegister(); _v9 = _v9 + 1; } BthReadRFRegister(); _t311 = _v32 + 30557; BthReadRFRegister(); _t124 = ( *(_v32 + 30557) & 0xff) << 16 | ( *(_v32 + 30556) & 0xff) << 8 | 128 | 1023410176; _v16 = _t124; _t125 = _t124 & 1; if(_t125 != 0) { _t125 = RT_PCI_IO_WRITE32(); } gTxPwrTable = &gTxPwrTableTC6004_class1; RF_Dump_RF_Register(_v32); _t317 = _v32; RF_Dump_BBP_Register(); _t126 = _t125 & 1; if(_t126 != 0) { _t317 = *_v32 + 1632; _t126 = RT_PCI_IO_WRITE32(); } _t127 = _t126 & 1; if(_t127 != 0) { _t317 = *_v32 + 1644; _t127 = RT_PCI_IO_WRITE32(); } _t128 = _t127 & 1; if(_t128 != 0) { _t317 = *_v32 + 1636; _t128 = RT_PCI_IO_WRITE32(); } _t129 = _t128 & 1; if(_t129 != 0) { _t317 = *_v32 + 1640; _t129 = RT_PCI_IO_WRITE32(); } _t130 = _t129 & 1; if(_t130 != 0) { _t317 = *_v32 + 1648; _t130 = RT_PCI_IO_WRITE32(); } _t131 = _t130 & 1; if(_t131 != 0) { _t317 = *_v32 + 1652; _t131 = RT_PCI_IO_WRITE32(); } if((_t131 & 1) != 0) { _t317 = *_v32 + 1684; RT_PCI_IO_WRITE32(); } if(( *(_v32 + 191597) & 255) != 0) { _v24 = 0; _v24 = _v24 & 0xf800 | 4; _t139 = _v22 & 0xf800 | 12; _v22 = _t139; _t140 = _t139 & 1; if(_t140 != 0) { _t317 = *_v32 + 2388; _t140 = RT_PCI_IO_WRITE32(); } _v24 = 0; _v20 = 0; _t266 = *((intOrPtr*)(_v32 + 191488)); if((_t140 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t266 = *_v32 + 2388; __rcx = &_v20; __rsi = __rcx; _t317 = *_v32 + 2388; RT_PCI_IO_READ32(); _v24 = _v20; } r8d = _v22 & 0x7ff; DebugPrint(0, _t266, __rcx, _t311, _t317, __rsi); return; } return; } RF_DeInitialise_TC6004() {// addr = 0x004045FF signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t38; // _t38 _v32 = _t38; BthReadRFRegister(); _v9 = _v9 & 0x7f; BthWriteRFRegister(); BthReadRFRegister(); _v9 = _v9 & 0x7f; BthWriteRFRegister(); RF_Dump_RF_Register(_v32); return; } RF_Convert_Rssi_TC6004( signed char __edi, // r4 char __esi // r5 ) {// addr = 0x00404687 signed char _v9; // _cfa_fffffff7 signed int _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; _v28 = __edi; _v32 = __esi; if(_v32 != 2) { if(_v32 != 1) { if(_v32 != 0) { _v9 = 18; } else { _v9 = 38; } } else { _v9 = 18; } } else { _v9 = 2; } _v28 = ~(_v9 & 255) - (_v28 & 255) - 50; return _v28 & 255; } RF_Get_Link_Rssi_TC6004() {// addr = 0x004046DB unsigned int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 unsigned int _v20; // _cfa_ffffffec unsigned int _v24; // _cfa_ffffffe8 unsigned int _v28; // _cfa_ffffffe4 _unknown_ _v48; // _cfa_ffffffd0 char* _v56; // _cfa_ffffffc8 unsigned int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t87; // _t87 signed int _t97; // _t97 intOrPtr _t171; // _t171 _v48 = __rdi; _v56 = __rsi; _v28 = 0; _v24 = 0; if(_v56 == 0) { _v11 = 201; } else { if(( *_v56 & 255) == 0) { _v11 = 201; } else { _t87 = (( *((_v56[0x68]) + 2) & 0xff) + 912 << 6) + 12; _v14 = _t87; _v20 = 0; if((_t87 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t183 = &_v20; __rsi = &_v20; __rdi = _v48 + *_v48; RT_PCI_IO_READ32(); _v24 = _v20; } _v10 = _v24 >> 16; _v11 = _v10 & 255; _t97 = (( *((_v56[0x68]) + 2) & 0xff) + 912 << 6) + 12; _v14 = _t97; _v20 = 0; if((_t97 & 1) == 0) { _v20 = 4294967295; _v28 = _v20; } else { _t183 = &_v20; __rsi = &_v20; __rdi = _v48 + *_v48; RT_PCI_IO_READ32(); _v28 = _v20; } _v9 = _v28 >> 24; _t171 = *((intOrPtr*)((_v56[0x68]) + 16)); if(( *(_t171 + 1) & 255) != 0) { } _t191 = *((intOrPtr*)((_v56[0x68]) + 24)); r9 = _t171; r8d = *( *((intOrPtr*)((_v56[0x68]) + 24)) + 4) & 0xff; DebugPrint(0, _t171, _t183, *((intOrPtr*)((_v56[0x68]) + 24)), __rdi, __rsi); _v11 = RF_Convert_Rssi_TC6004(_v11, _v9); if((oldRssiLna & 255) != _v11) { r8d = *((_v56[0x68]) + 2) & 0xff; _v72 = _v9; _v80 = _v10 & 255; *__rsp = _v24; r9d = r8d; r8d = *((_v56[0x60]) + 2) & 0xff; DebugPrint(0, _v56, _t183, _t191, __rdi, __rsi); DebugPrint(0, _v56, _t183, _t191, __rdi, __rsi); oldRssiLna = _v11 & 255; } } } return _v11 & 255; } RADIO_IncTxPwr( signed char* __rdi // r57 ) {// addr = 0x00404948 signed char* _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(( *_v16 & 255) != 4) { *_v16 = __dl; return 1; } return 0; } RADIO_DecTxPwr( signed char* __rdi // r57 ) {// addr = 0x00404979 signed char* _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(( *_v16 & 255) != 0) { *_v16 = __dl; return 1; } return 0; } RADIO_MinTxPwr( long long __rdi // r57 ) {// addr = 0x004049AA _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 0; return 1; } RADIO_MaxTxPwr( long long __rdi // r57 ) {// addr = 0x004049C0 _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 4; return 1; } RADIO_DirTxPwr( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004049D6 _unknown_ _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *_v16 = __dl; return 1; } casting_int32( signed char* __rdi // r57 ) {// addr = 0x004049F4 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } BthLoadFirmware() {// addr = 0x00404A4A signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char* _v48; // _cfa_ffffffd0 char* _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t121; // _t121 signed int _t122; // _t122 signed int _t123; // _t123 signed int _t134; // _t134 signed int _t149; // _t149 signed int _t153; // _t153 signed int _t239; // _t239 signed int _t249; // _t249 signed int _t261; // _t261 signed int _t264; // _t264 signed int _t270; // _t270 signed int _t274; // _t274 signed int _t291; // _t291 signed int _t296; // _t296 _v96 = __rdi; _v16 = 0; _v48 = 0; _v9 = 0; _v48 = 40958; _v40 = &FirmwareImage; r8 = _t301; __rcx = _v48; _t121 = DebugPrint(0, _v48, __rcx, _t301, __rdi, _t306); _v10 = 0; _t122 = _t121 & 3; _v9 = _t122; _t123 = _t122 & 1; if(_t123 != 0) { __rdi = *_v96 + 1024; _t123 = RT_PCI_IO_WRITE32(); } _v72 = 0; while(1) { _v20 = 0; _t239 = *(_v96 + 191488); if((_t123 & 1) == 0) { _v20 = 4294967295; _t123 = _v20; _v80 = _t239; } else { _t296 = *_v96 + 1024; __rcx = &_v20; _t306 = __rcx; __rdi = _t296; RT_PCI_IO_READ32(); _t123 = _v20; _v80 = _t296; } if(_v80 == 69376) { break; } _v72 = _v72 + 1; KeStallExecutionProcessor(); if(_v72 <= 199) { continue; } L10: _v64 = 0; _v72 = 0; while(_v72 <= 40959) { if(_v72 > 32767 && _v10 == 0) { if((_t123 & 1) != 0) { __rdi = *_v96 + 1024; RT_PCI_IO_WRITE32(); } _v10 = 1; _v64 = 0; } _v32 = _v72 + _v40; if(_v72 >= _v48) { _v56 = 0; } if(_v72 >= _v48 || _v72 + 4 <= _v48) { _t301 = _v32 + 3; _t249 = _v32 + 1; _t134 = _t249; _v56 = _t249; } else { _v56 = _v32 + 1; _t291 = _v72; _t301 = _t291 + 32768; r8 = _t291 + 32768; __rcx = _v56; _t134 = DebugPrint(0, _v56, __rcx, _t291 + 32768, __rdi, _t306); } _t123 = _t134 & 1; if(_t123 != 0) { _t306 = _v64 + 32768; __rdi = *_v96 + _v64 + 32768; _t123 = RT_PCI_IO_WRITE32(); } _v64 = _v64 + 4; _v72 = _v72 + 4; } _t149 = _t123 & 1; if(_t149 != 0) { __rdi = *_v96 + 1024; _t149 = RT_PCI_IO_WRITE32(); } _v20 = 0; _t261 = *(_v96 + 191488); if((_t149 & 1) == 0) { _v20 = 4294967295; _v80 = _t261; } else { _t274 = *_v96 + 1024; __rcx = &_v20; _t306 = __rcx; __rdi = _t274; RT_PCI_IO_READ32(); _v80 = _t274; } r8 = _v80; _t153 = DebugPrint(0, _v80, __rcx, _t301, __rdi, _t306); _v72 = 0; while(1) { _v80 = 0; _v20 = 0; _t264 = *(_v96 + 191488); if((_t153 & 1) == 0) { _v20 = 4294967295; _v80 = _t264; } else { _t270 = *_v96 + 1024; __rcx = &_v20; _t306 = __rcx; __rdi = _t270; RT_PCI_IO_READ32(); _v80 = _t270; } _t265 = _v80; if(_v80 != 0) { break; } KeStallExecutionProcessor(); _t153 = _v72 - 999 < 0; _v72 = _v72 + 1; if(_t153 != 0) { continue; } L39: if(_v72 > 999) { DebugPrint(0, _t265, __rcx, _t301, __rdi, _t306); _v16 = 4294967295; } r8 = _v80; DebugPrint(0, _v80, __rcx, _t301, __rdi, _t306); DebugPrint(0, _v80, __rcx, _t301, __rdi, _t306); return _v16; } goto L39; } goto L10; } MCU_Initialise() {// addr = 0x00404F1E intOrPtr _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t25; // _t25 _unknown_ _t47; // _t47 _unknown_ _t58; // _t58 _unknown_ _t60; // _t60 long long _t63; // _t63 _v64 = _t63; DebugPrint(0, _t47, _t58, _t60, _t63, __rsi); _v12 = 2048; _v16 = 0; while(1) { _t25 = _v16; if(_t25 >= _v12) { break; } if((_t25 & 1) != 0) { RT_PCI_IO_WRITE32(); } _v16 = _v16 + 1; } RtlFillMemory(16, 0, &_v56); RtlFillMemory(12, 0, &_v40); _v56 = 1; _v40 = 1; MCU_Write_Memory(16, &_v56); MCU_Write_Memory(12, &_v40); BthLoadFirmware(); return; } MCU_Reset() {// addr = 0x0040501A intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t22; // _t22 signed int _t23; // _t23 long long _t58; // _t58 _v32 = _t58; _t23 = _t22 & 1; if(_t23 != 0) { _t23 = RT_PCI_IO_WRITE32(); } _v12 = 0; while(_v12 <= 40959) { _t23 = _t23 & 1; if(_t23 != 0) { _t23 = RT_PCI_IO_WRITE32(); } _v12 = _v12 + 4; } if((_t23 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } MCU_Handle_Command_Interrupt() {// addr = 0x004050F6 char _v9; // _cfa_fffffff7 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t21; // _t21 _v32 = _t21; _v9 = 0; ral_spin_lock(_v32 + 30520, &_v24); if(__al != 0) { *((char*)(_v32 + 190500)) = 0; _v9 = 1; } ral_spin_unlock(_v32 + 30520, _v24); return; } MCU_Handle_Event_Interrupt() {// addr = 0x0040515A long long _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 signed char _v35; // _cfa_ffffffdd signed int _v36; // _cfa_ffffffdc signed int _v37; // _cfa_ffffffdb signed int _v38; // _cfa_ffffffda signed int _v39; // _cfa_ffffffd9 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t75; // _t75 signed int _t79; // _t79 _unknown_ _t156; // _t156 long long _t164; // _t164 intOrPtr _t166; // _t166 _unknown_ _t175; // _t175 _v48 = _t164; _v24 = 0; RtlFillMemory(12, 0, &_v40); _t123 = _v48; _t166 = _v48; MCU_Read_Memory(12, &_v40); if((_v40 & 255) != 0) { L12: return; } DebugPrint(0, _t123, _t156, &_v40, _t166, _t175); if((_v38 & 255) == 18 || (_v38 & 255) == 0) { ral_spin_lock(_v48 + 30520, &_v24); *(_v48 + 190500) = 0; DebugPrint(0, _v48, _t156, _v48 + 30520, _v48 + 30520, &_v24); ral_spin_unlock(_v48 + 30520, _v24); } LCEQ_EnqueueRequest(); _v16 = _v48; if(_v16 == 0) { goto L12; } else { *(_v16 + 4) = _v39 & 255; *(_v16 + 3) = _v38 & 255; _t75 = _v37 & 255; _t98 = _t75 - 31 <= 0 ? _t75 : 31; *(_v16 + 5) = _t75 - 31 <= 0 ? _t75 : 31; *(_v16 + 6) = _v36 & 255; if(( *(_v16 + 5) & 255) != 0) { MCU_Read_Memory( *(_v16 + 5) & 0xff, _v16 + 32); } LCEQ_EnqueueCommit(); MCUEVENT_TRACE(); _v40 = 1; _v39 = 0; _v38 = 0; _v37 = 0; _v36 = 0; _v35 = 0; _t79 = *(_v16 + 5) & 1; if(_t79 != 0) { _t79 = RT_PCI_IO_WRITE32(); } if((_t79 & 1) == 0) { goto L12; } else { RT_PCI_IO_WRITE32(); return; } } } MCU_Send_Pending_Command() {// addr = 0x00405393 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 unsigned int _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 signed int _v51; // _cfa_ffffffcd signed int _v52; // _cfa_ffffffcc signed int _v53; // _cfa_ffffffcb signed int _v54; // _cfa_ffffffca signed int _v55; // _cfa_ffffffc9 signed int _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed int _t121; // _t121 signed int _t134; // _t134 signed int _t135; // _t135 signed int _t139; // _t139 _unknown_ _t208; // _t208 _unknown_ _t272; // _t272 long long _t284; // _t284 char* _t298; // _t298 _v64 = _t284; _v40 = 0; DebugPrint(0, _t208, __rcx, _t272, _t284, _t298); if(( *(_v64 + 190499) & 255) != 0) { return; } _t121 = *(_v64 + 190500) & 255; if(_t121 == 0) { _v56 = 1; _v12 = 0; if((_t121 & 1) == 0) { _v12 = 4294967295; _t213 = &_v56; _v56 = _v12; } else { __rcx = &_v12; _t298 = __rcx; _t284 = *_v64 + 65280; RT_PCI_IO_READ32(); _t213 = &_v56; _v56 = _v12; } if((_v56 & 255) == 0) { ral_spin_lock(_v64 + 30456, &_v40); LCCQ_DequeueRequest(); _v32 = _v64 + 30560; if(_v32 == 0) { ral_spin_unlock(_v64 + 30456, _v40); return; } if(( *(_v32 + 16) & 255) != 0) { MCU_Write_Memory( *(_v32 + 16) & 0xff, _v32 + 17); } _v55 = *(_v32 + 3) & 255; _v54 = *(_v32 + 2) & 255; _v56 = 1; _v53 = *(_v32 + 16) & 255; _v52 = *(_v32 + 4) & 255; _v51 = *(_v32 + 5) & 255; _v44 = *((intOrPtr*)(_v32 + 8)); _v48 = *((intOrPtr*)(_v32 + 12)); LCCQ_DequeueCommit(); ral_spin_unlock(_v64 + 30456, _v40); MCUCMD_TRACE(); _v24 = &_v56; MCU_Write_Memory(12, &(_v24[4])); ral_spin_lock(_v64 + 30520, &_v40); *(_v64 + 190500) = 1; _t282 = _v64 + 30520; _t304 = _v40; ral_spin_unlock(_v64 + 30520, _v40); _t294 = _v24; _t134 = casting_int32(_v24); _v16 = _t134; _t135 = _t134 & 1; if(_t135 != 0) { _t294 = *_v64 + 65280; _t135 = RT_PCI_IO_WRITE32(); } _v16 = 0; _v12 = 0; _t243 = *(_v64 + 191488); if((_t135 & 1) == 0) { _v12 = 4294967295; _v16 = _v12; } else { _t243 = *_v64 + 65280; __rcx = &_v12; _t304 = __rcx; _t294 = *_v64 + 65280; RT_PCI_IO_READ32(); _v16 = _v12; } _t139 = _v16 & 255; if(_t139 != 1) { DebugPrint(0, _t243, __rcx, _t282, _t294, _t304); r8d = _v16; r8d = r8d >> 24; r9d = dil & 4294967295L; r10d = dil & 4294967295L; _v88 = (_v24[3]) & 0xff; _v96 = (_v24[2]) & 0xff; _v104 = (_v24[1]) & 0xff; _v112 = *_v24 & 0xff; *__rsp = r8d; r8d = r10d; _t139 = DebugPrint(0, _v24, __rcx, _t282, _t294, _t304); } if((_t139 & 1) != 0) { RT_PCI_IO_WRITE32(); } SetPollMode(); return; } else { DebugPrint(0, _t213, __rcx, _t272, _t284, _t298); return; } } return; } MCU_Send_Command() {// addr = 0x004057B4 signed char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 char* _v32; // _cfa_ffffffe0 char* _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v51; // _cfa_ffffffcd signed int _v52; // _cfa_ffffffcc signed int _v53; // _cfa_ffffffcb signed int _v54; // _cfa_ffffffca signed int _v55; // _cfa_ffffffc9 signed int _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 char* _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac _unknown_ __rbp; // r59 signed int _t90; // _t90 signed int _t98; // _t98 signed int _t99; // _t99 signed int _t103; // _t103 signed int _t127; // _t127 long long _t206; // _t206 _v64 = _t206; _t90 = _t127; _v80 = __rcx; _v68 = sil; _v72 = _t90; _v84 = r8d; _v9 = 0; _v16 = 0; _v56 = 1; RtlFillMemory(4, 0, &_v56); while(1) { _v20 = 0; if((_t90 & 1) == 0) { _v20 = 4294967295; _v56 = _v20; } else { __rcx = &_v20; RT_PCI_IO_READ32(); _v56 = _v20; } _t90 = _v56 & 255; if(_t90 == 0) { break; } _v16 = _v16 + 1; KeStallExecutionProcessor(); if(_v16 <= 199) { continue; } else { } L8: if((_v56 & 255) == 0) { if(_v84 != 0) { MCU_Write_Memory(_v84 & 255, _v80); } _v55 = _v68 & 255; _v54 = _v72 & 255; _v56 = 1; _v53 = _v84 & 255; _v52 = 0; _v51 = 0; _v44 = 0; _v48 = 0; MCUCMD_TRACE(); _v32 = &_v56; MCU_Write_Memory(12, &(_v32[4])); ral_spin_lock(_v64 + 30520, &_v40); *(_v64 + 190500) = 1; _t204 = _v64 + 30520; _t219 = _v40; ral_spin_unlock(_v64 + 30520, _v40); _t213 = _v32; _t98 = casting_int32(_v32); _v24 = _t98; _t99 = _t98 & 1; if(_t99 != 0) { _t213 = *_v64 + 65280; _t99 = RT_PCI_IO_WRITE32(); } _v24 = 0; _v20 = 0; if((_t99 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { __rcx = &_v20; _t219 = __rcx; _t213 = *_v64 + 65280; RT_PCI_IO_READ32(); _v24 = _v20; } _t103 = _v24 & 255; if(_t103 != 1) { *__rsp = (_v32[3]) & 0xff; r9d = (_v32[2]) & 0xff; r8d = (_v32[1]) & 0xff; _t103 = DebugPrint(0, _v32, __rcx, _t204, _t213, _t219); } if((_t103 & 1) != 0) { RT_PCI_IO_WRITE32(); } _v9 = 1; } return _v9 & 255; } goto L8; } MCU_Read_Memory( signed short __ecx, // r2 long long __rdx // r56 ) {// addr = 0x00405AA3 intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed short _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t29; // _t29 long long _t37; // _t37 long long _t40; // _t40 _t37 = __rdx; __ecx = __ecx; _v32 = _t40; _v36 = _t29; _v48 = __rdx; _v40 = __ecx; _v24 = &mcuread; RtlFillMemory(24, 0, _v24); *_v24 = _t37; *(_v24 + 8) = _v40 & 65535; *((long long*)(_v24 + 16)) = _v48; ioctl(); _v12 = 0; if(_v12 < 0) { perror(); return 0; } return 0; } MCU_Write_Memory( signed short __ecx, // r2 long long __rdx // r56 ) {// addr = 0x00405B35 intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed short _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t29; // _t29 long long _t37; // _t37 long long _t40; // _t40 _t37 = __rdx; __ecx = __ecx; _v32 = _t40; _v36 = _t29; _v48 = __rdx; _v40 = __ecx; _v24 = &mcuwrite; RtlFillMemory(24, 0, _v24); *_v24 = _t37; *(_v24 + 8) = _v40 & 65535; *((long long*)(_v24 + 16)) = _v48; ioctl(); _v12 = 0; if(_v12 < 0) { perror(); return 0; } return 0; } MCU_SanityCheck() {// addr = 0x00405BC7 signed char _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v21; // _cfa_ffffffeb signed int _v24; // _cfa_ffffffe8 char* _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 _unknown_ _v52; // _cfa_ffffffcc signed char _v53; // _cfa_ffffffcb _unknown_ _v54; // _cfa_ffffffca signed int _v55; // _cfa_ffffffc9 char _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ _v68; // _cfa_ffffffbc signed char _v69; // _cfa_ffffffbb _unknown_ _v70; // _cfa_ffffffba signed char _v71; // _cfa_ffffffb9 signed char _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t84; // _t84 signed int _t86; // _t86 signed int _t88; // _t88 signed int _t89; // _t89 long long _t250; // _t250 _v80 = _t250; if(( *(_v80 + 190499) & 255) == 1) { return; } if(( *(_v80 + 191499) & 255) == 0) { L24: L25: return; } _t84 = *(_v80 + 191498) & 255; if(_t84 == 0) { goto L24; } RtlFillMemory(16, 0, &_v72); _t252 = &_v56; RtlFillMemory(12, 0, &_v56); _v12 = 0; if((_t84 & 1) == 0) { _v12 = 4294967295; _t86 = _v12; _v24 = _t86; } else { __rcx = &_v12; __rsi = __rcx; _t252 = *_v80 + 544; RT_PCI_IO_READ32(); _t86 = _v12; _v24 = _t86; } _v12 = 0; if((_t86 & 1) == 0) { _v12 = 4294967295; _t88 = _v12; _v16 = _t88; } else { __rcx = &_v12; __rsi = __rcx; _t252 = *_v80 + 552; RT_PCI_IO_READ32(); _t88 = _v12; _v16 = _t88; } _v12 = 0; _t89 = _t88 & 1; if(_t89 == 0) { _v12 = 4294967295; _v72 = _v12; } else { __rcx = &_v12; __rsi = __rcx; _t252 = *_v80 + 65280; _t89 = RT_PCI_IO_READ32(); _v72 = _v12; } _v12 = 0; if((_t89 & 1) == 0) { _v12 = 4294967295; _t223 = &_v56; _v56 = _v12; } else { __rcx = &_v12; __rsi = __rcx; _t252 = *_v80 + 65408; RT_PCI_IO_READ32(); _t223 = &_v56; _v56 = _v12; } if((_v21 & 2) != 0) { DebugPrint(0, _t223, __rcx, __rdx, _t252, __rsi); DebugPrint(0, _t223, __rcx, __rdx, _t252, __rsi); DebugPrint(0, _t223, __rcx, __rdx, _t252, __rsi); } if((_v56 & 255) == 0 && (_v55 & 255) != 0 && (_v21 & 2) == 0) { _v32 = &_v56; _t232 = _v32; *__rsp = (_v32[3]) & 0xff; r9d = (_v32[2]) & 0xff; r8d = (_v32[1]) & 0xff; DebugPrint(0, _v32, __rcx, __rdx, _t252, __rsi); r9d = _v53 & 0xff; r8d = _v55 & 0xff; DebugPrint(0, _v32, __rcx, __rdx, _t252, __rsi); r8d = _v48; DebugPrint(0, _t232, __rcx, __rdx, _t252, __rsi); } _t224 = _v80; if(( *(_v80 + 190500) & 255) == 0) { goto L25; } else { DebugPrint(0, _t224, __rcx, __rdx, _t252, __rsi); r9d = _v69 & 0xff; r8d = _v71 & 0xff; DebugPrint(0, _t224, __rcx, __rdx, _t252, __rsi); r8d = _v60; DebugPrint(0, _t224, __rcx, __rdx, _t252, __rsi); return; } } MCU_Dump_FError() {// addr = 0x00405F7B intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 intOrPtr _t12; // _t12 long long _t14; // _t14 long long _t16; // _t16 _v12 = _t12; _v24 = __rsi; _v32 = _t16; _v40 = _t14; r9 = _v32; r8 = _v24; DebugPrint(0, __rax, _v32, _v24, __rdi, __rsi); return; } MCU_Handle_FError_Interrupt() {// addr = 0x00405FC5 long long _v16; // _cfa_fffffff0 intOrPtr _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac signed int _v86; // _cfa_ffffffaa signed char _v87; // _cfa_ffffffa9 char _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 long long _v112; // _cfa_ffffff90 intOrPtr _v136; // _cfa_ffffff78 intOrPtr _v144; // _cfa_ffffff70 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed int _t55; // _t55 signed int _t79; // _t79 long long _t98; // _t98 _v112 = _t98; _v16 = *fs:0x28]; _v96 = 0; _t39 = *(_v112 + 190499) & 255; if(_t39 != 1) { _v92 = 0; if((_t39 & 1) == 0) { _v92 = 4294967295; _v96 = _v92; } else { __rcx = &_v92; __rsi = __rcx; RT_PCI_IO_READ32(); _v96 = _v92; } _v96 = _v96 & 255; if(_v96 != 0) { __rdx = &_v88; MCU_Read_Memory(64, __rdx); r8d = _v86 & 0xff; _v136 = _v80; _v144 = _v84; *__rsp = (_v86 & 65535) >> 8 & 0xff; r9d = r8d; r8d = _v87 & 0xff; _t55 = DebugPrint(0, _v112, __rcx, __rdx, _v112, __rsi); r8d = MCU_Dump_FError; Bth_Dbg_DumpBuffer(__rcx, __rdx, &_v88, __rsi); _t79 = _t55 & 1; if(_t79 != 0) { RT_PCI_IO_WRITE32(); } } } if(_t79 == 0) { return; } else { __stack_chk_fail(); return; } } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00406154 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00406183 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } ConvertSniffModeToStr( signed char __edi // r4 ) {// addr = 0x004061D9 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 5) { return "sniff transition"; } if(_t4 == 12) { return "sniff subrating"; } if(_t4 != 4) { return "unknown"; } return "sniff"; } ConvertEncryptionModeToStr( signed char __edi // r4 ) {// addr = 0x00406211 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t5; // _t5 __edi = __edi; _v12 = __edi; _t5 = _v12 & 3; if(_t5 == 1) { return "Encryption P2P"; } if(_t5 > 1) { if(_t5 == 2) { return "Encryption P2P+BROADCAST"; } if(_t5 == 3) { return "Encryption Hardware"; } L11: return "unknown"; } if(_t5 == 0) { return "No Encryption"; } goto L11; } ConvertEncryptionDirectionToStr( signed char __edi // r4 ) {// addr = 0x00406260 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t5; // _t5 __edi = __edi; _v12 = __edi; _t5 = _v12 & 0xc; if(_t5 == 4) { return "RX"; } if(_t5 > 4) { if(_t5 == 8) { return "TX"; } if(_t5 == 12) { return "TX+RX"; } L11: return "unknown"; } if(_t5 == 0) { return "None"; } goto L11; } ConvertLinkLindexToStr( char __edi // r4 ) {// addr = 0x004062AF char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; if(_v12 == 0) { return "Inquiry"; } if(_v12 != 1) { if(_v12 != 2) { if(_v12 != 3) { if(_v12 != 4) { if(_v12 <= 4 || _v12 > 7) { if(_v12 <= 7 || _v12 > 14) { if(_v12 <= 14 || _v12 > 26) { return "unknown"; } else { return "ACLC"; } } else { return "ACLU"; } } else { return "SYNC"; } } return "PSBC"; } return "PSBU"; } return "ASBU"; } else { return "Inquiry Scan"; } } LCCommandTraceSetTestModeRequest() {// addr = 0x00406339 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t4; // _t4 _v16 = __rdi; if(_v16 != 0) { __rax = _v16; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return; } return; } LCCommandTraceLinkCreateRequest() {// addr = 0x00406373 signed char* _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t5; // _t5 signed char* _t15; // _t15 _v16 = __rdi; if(_v16 != 0) { _t15 = _v16; ConvertLinkLindexToStr( *_t15 & 0xff); __rdx = _t15; r8 = __rdx; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return; } return; } LCCommandTraceSetEncryption() {// addr = 0x004063C4 signed char* _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed char* __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t94; // _t94 _unknown_ _t128; // _t128 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 136; _v64 = __rdi; if(_v64 != 0) { DebugPrint(0, &(_v64[1]), _t128, __rdx, __rdi, __rsi); r12d = *_v64 & 0xff; _t94 = _v64; ConvertEncryptionModeToStr( *_t94 & 0xff); __rbx = _t94; _t95 = _v64; ConvertEncryptionDirectionToStr( *_v64 & 0xff); r9d = r12d; r8 = _t94; DebugPrint(0, _t95, _t95, __rdx, __rdi, __rsi); _v68 = (_v64[0x10]) & 0xff; r15d = (_v64[0xf]) & 0xff; r14d = (_v64[0xe]) & 0xff; r13d = (_v64[0xd]) & 0xff; r12d = (_v64[0xc]) & 0xff; r11d = (_v64[0xa]) & 0xff; r10d = (_v64[9]) & 0xff; r9d = (_v64[8]) & 0xff; r8d = (_v64[7]) & 0xff; _v72 = (_v64[4]) & 0xff; _v72 = (_v64[0x11]) & 0xff; _v80 = _v68; _v88 = r15d; _v96 = r14d; _v104 = r13d; _v112 = r12d; _v120 = (_v64[0xb]) & 0xff; _v128 = r11d; _v136 = r10d; _v144 = r9d; _v152 = r8d; _v160 = (_v64[6]) & 0xff; *__rsp = (_v64[5]) & 0xff; r9d = _v72; r8d = (_v64[3]) & 0xff; DebugPrint(0, &(_v64[2]), _t95, __rdx, __rdi, __rsi); } __rsp = &(__rsp[0x22]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } LCCommandTraceSetACLUPktType() {// addr = 0x004065C2 signed char* _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t5; // _t5 signed int _t12; // _t12 signed char* _t17; // _t17 _v16 = __rdi; if(_v16 != 0) { _t12 = *_v16 & 0xff; _t17 = _v16; if(( *_t17 & 255) != 2) { } r8d = _t12; __rcx = _t17; DebugPrint(0, _t17, _t17, __rdx, __rdi, __rsi); return; } return; } LCCommandTraceLinkFlowControl() {// addr = 0x00406617 signed char* _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t5; // _t5 signed int _t12; // _t12 signed char* _t17; // _t17 _v16 = __rdi; if(_v16 != 0) { _t12 = *_v16 & 0xff; _t17 = _v16; if(( *_t17 & 255) != 1) { } r8d = _t12; __rcx = _t17; DebugPrint(0, _t17, _t17, __rdx, __rdi, __rsi); return; } return; } LCCommandTraceConfigEIR() {// addr = 0x0040666C long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t4; // _t4 _v16 = __rdi; if(_v16 != 0) { __rax = _v16; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return; } return; } LCCommandTraceHoldRequest() {// addr = 0x004066A6 short _v10; // _cfa_fffffff6 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t6; // _t6 long long _t11; // _t11 _v32 = _t11; if(_v32 != 0) { __rax = _v32; _v10 = casting_uint16(_v32); DebugPrint(0, __rax, __rcx, __rdx, _v32, __rsi); return; } return; } LCCommandTraceSniffRequest() {// addr = 0x004066EA signed int _v25; // _cfa_ffffffe7 unsigned short _v28; // _cfa_ffffffe4 unsigned int _v30; // _cfa_ffffffe2 unsigned int _v32; // _cfa_ffffffe0 short _v34; // _cfa_ffffffde signed int _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t23; // _t23 signed char* _t64; // _t64 signed char* _t65; // _t65 _v48 = _t65; if(_v48 != 0) { _v34 = casting_uint16( &(_v48[1])); _v32 = casting_uint32( &(_v48[3])) >> 2; _v30 = casting_uint32( &(_v48[7])) >> 2; _v25 = *_v48 & 255; _v40 = casting_uint32( &(_v48[0xf])) & 16777215; _t64 = &(_v48[0x12]); _t70 = _t64; _v28 = casting_uint16(_t64) >> 1; ConvertSniffModeToStr(_v25 & 255); _v64 = _v25 & 255; *__rsp = _t64; r9d = _v30 & 65535; r8d = _v32 & 65535; DebugPrint(0, _t64, __rcx, __rdx, _t64, __rsi); r8d = _v28 & 65535; DebugPrint(0, _t64, __rcx, __rdx, _t70, __rsi); return; } return; } LCCommandTraceParkRequest() {// addr = 0x004067ED signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed int _v29; // _cfa_ffffffe3 signed int _v30; // _cfa_ffffffe2 signed int _v31; // _cfa_ffffffe1 signed int _v32; // _cfa_ffffffe0 signed int _v33; // _cfa_ffffffdf short _v36; // _cfa_ffffffdc _unknown_ _v48; // _cfa_ffffffd0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t48; // _t48 long long _t80; // _t80 _v48 = _t80; if(_v48 != 0) { _v36 = casting_uint16(_v48); _v33 = *(_v48 + 2) & 255; _v32 = *(_v48 + 3) & 255; _v31 = *(_v48 + 4) & 255; _v30 = *(_v48 + 5) & 255; _v29 = *(_v48 + 6) & 255; _v28 = *(_v48 + 7) & 255; _v27 = *(_v48 + 8) & 255; _v26 = *(_v48 + 9) & 255; _v25 = *(_v48 + 10) & 255; r10d = _v25 & 255; r9d = _v26 & 255; r8d = _v27 & 255; r11d = _v33 & 255; _v72 = r10d; _v80 = r9d; _v88 = r8d; _v96 = _v28 & 255; _v104 = _v29 & 255; _v112 = _v30 & 255; *__rsp = _v31 & 255; r9d = _v32 & 255; r8d = r11d; DebugPrint(0, _v48, __rcx, __rdx, _v48, __rsi); return; } return; } LCCommandTraceBeaconScanRequest() {// addr = 0x004068EA signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed int _v29; // _cfa_ffffffe3 signed int _v30; // _cfa_ffffffe2 signed int _v31; // _cfa_ffffffe1 signed int _v32; // _cfa_ffffffe0 signed int _v33; // _cfa_ffffffdf signed int _v34; // _cfa_ffffffde intOrPtr _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v60; // _cfa_ffffffc4 signed int _v68; // _cfa_ffffffbc signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t86; // _t86 _push(r12); _push(__rbx); __rsp = __rsp - 96; _v48 = _t86; if(_v48 != 0) { _v40 = casting_uint32(_v48); _v34 = *(_v48 + 4) & 255; _v33 = *(_v48 + 5) & 255; _v32 = *(_v48 + 6) & 255; _v31 = *(_v48 + 7) & 255; _v30 = *(_v48 + 8) & 255; _v29 = *(_v48 + 9) & 255; _v28 = *(_v48 + 10) & 255; _v27 = *(_v48 + 11) & 255; _v26 = *(_v48 + 12) & 255; _v25 = *(_v48 + 13) & 255; r11d = _v25 & 255; r10d = _v26 & 255; r9d = _v27 & 255; r8d = _v28 & 255; r12d = _v33 & 255; _v60 = r11d; _v68 = r10d; _v76 = r9d; _v84 = r8d; _v92 = _v29 & 255; _v100 = _v30 & 255; _v108 = _v31 & 255; *__rsp = _v32 & 255; r9d = r12d; r8d = _v34 & 255; DebugPrint(0, _v48, __rcx, __rdx, _v48, __rsi); } __rsp = &(__rsp[0x18]); _pop(__rbx); _pop(r12); return; } CovertPacketStatusFlagToStr( signed char __edi // r4 ) {// addr = 0x004069FE signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "Possibly invalid data"; } if(_t4 > 1) { if(_t4 == 2) { return "No data received"; } if(_t4 == 3) { return "Data partially lost"; } L11: return "Unknown"; } if(_t4 == 0) { return "Correctly received data"; } goto L11; } ConvertLCErrorCodeToStr( signed char __edi // r4 ) {// addr = 0x00406A4A signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 5) { goto __rax; } return "unknown error"; } ConverLCCommandToStr( signed char __edi // r4 ) {// addr = 0x00406A99 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 58) { goto __rax; } return "unknown"; } ConverLCEventToStr( signed char __edi // r4 ) {// addr = 0x00406C9E signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 37) { goto __rax; } return "unknown event"; } CovertBBAckTagToStr( signed short __edi // r4 ) {// addr = 0x00406D95 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 65535) <= 34) { goto __rax; } return "Unknown BB Ack"; } MCUCMD_TRACE() {// addr = 0x00406EE7 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t126; // _t126 signed int _t128; // _t128 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 40; _v48 = _t128; _v56 = __rsi; if(( *(_v48 + 2) & 255) == 11 || ( *(_v48 + 2) & 255) == 26) { r13d = *(_v48 + 1) & 0xff; r12d = *(_v48 + 2) & 0xff; _t107 = _v48; ConverLCCommandToStr( *(_v48 + 2) & 0xff); *__rsp = *(_v48 + 3) & 0xff; r9d = r13d; r8d = r12d; DebugPrint(0, _v48, _v48, _t126, _t128, __rsi); r9d = *(_v48 + 12); r8d = *(_v48 + 8); DebugPrint(0, _v48, _t107, _t126, _t128, __rsi); } else { r13d = *(_v48 + 1) & 0xff; r12d = *(_v48 + 2) & 0xff; _t120 = _v48; ConverLCCommandToStr( *(_v48 + 2) & 0xff); *__rsp = *(_v48 + 3) & 0xff; r9d = r13d; r8d = r12d; DebugPrint(0, _v48, _v48, _t126, _t128, __rsi); r9d = *(_v48 + 12); r8d = *(_v48 + 8); DebugPrint(0, _v48, _t120, _t126, _t128, __rsi); } if(( *(_v48 + 2) & 255) <= 53 && *((intOrPtr*)(_v48 * 8 + &UdmCommandTraceTable)) != 0) { *((long long*)( *((intOrPtr*)(_v48 * 8 + &UdmCommandTraceTable))))(); } __rsp = &(__rsp[0xa]); _pop(__rbx); _pop(r12); _pop(r13); return; } LCEventTraceCommandStatus() {// addr = 0x00407098 char _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t15; // _t15 signed char* _t20; // _t20 signed char* _t21; // _t21 _v40 = __rsi; _v28 = _t15; if(_v40 != 0) { _t20 = &(_v40[1]); ConvertLCErrorCodeToStr( *_t20 & 0xff); _t21 = _v40; ConverLCCommandToStr( *_t21 & 0xff); r8 = _t20; __rcx = _t21; DebugPrint(0, _t21, _t21, __rdx, __rdi, __rsi); return; } return; } LCEventTraceDataArrival() {// addr = 0x00407100 char _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 char _t15; // _t15 signed char* _t19; // _t19 _v40 = __rsi; _v28 = _t15; if(_v40 != 0) { _t19 = _v40; CovertBBAckTagToStr( *_t19 & 0xff); __rdx = _t19; r9d = *_v40 & 0xff; r8 = __rdx; DebugPrint(0, _t19, __rcx, __rdx, __rdi, __rsi); return; } return; } LCEventTraceRoleSwitchStatus() {// addr = 0x00407163 char _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 char _t11; // _t11 _v24 = __rsi; _v12 = _t11; if(_v24 != 0) { __rax = _v24; ConvertLCErrorCodeToStr( *__rax & 0xff); __rcx = __rax; DebugPrint(0, __rax, __rax, __rdx, __rdi, __rsi); return; } return; } LCEventTraceModeChange() {// addr = 0x004071AA char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 char _t9; // _t9 _v24 = __rsi; _v12 = _t9; if(_v24 != 0) { DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return; } return; } LCEventTraceErroneousSyncDataReporting() {// addr = 0x004071E3 char _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 char _t19; // _t19 signed char* _t25; // _t25 _v40 = __rsi; _v28 = _t19; if(_v40 != 0) { _t25 = &(_v40[1]); CovertPacketStatusFlagToStr( *_t25 & 0xff); __rdx = _t25; *__rsp = (_v40[1]) & 0xff; r9 = __rdx; r8d = *_v40 & 0xff; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return; } return; } LCEventTraceCommandComplete() {// addr = 0x0040725B char _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 signed char* __rbx; // r54 _unknown_ __rbp; // r59 char _t33; // _t33 signed char* _t49; // _t49 signed char* _t55; // _t55 _push(r12); _push(__rbx); __rsp = __rsp - 16; _v40 = __rsi; _v28 = _t33; if(_v40 != 0) { if(( *_v40 & 255) == 11 || ( *_v40 & 255) == 26) { r12d = (_v40[1]) & 0xff; _t49 = &(_v40[1]); ConvertLCErrorCodeToStr( *_t49 & 0xff); __rbx = _t49; _t50 = _v40; ConverLCCommandToStr( *_v40 & 0xff); r9d = r12d; r8 = _t49; _t12 = DebugPrint(0, _t50, _t50, __rdx, __rdi, __rsi); } else { r12d = (_v40[1]) & 0xff; _t55 = &(_v40[1]); ConvertLCErrorCodeToStr( *_t55 & 0xff); __rbx = _t55; _t56 = _v40; ConverLCCommandToStr( *_v40 & 0xff); r9d = r12d; r8 = _t55; DebugPrint(0, _t56, _t56, __rdx, __rdi, __rsi); } } __rsp = __rsp + 16; _pop(__rbx); _pop(r12); return; } LCEventTraceErrorReport() {// addr = 0x0040734F char _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 char _t13; // _t13 _v24 = __rsi; _v12 = _t13; if(_v24 != 0) { __rax = _v24; r8d = *__rax & 0xff; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return; } return; } LCEventTraceLinkFlushComplete() {// addr = 0x00407395 char _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 char _t13; // _t13 _v24 = __rsi; _v12 = _t13; if(_v24 != 0) { __rax = _v24; r8d = *__rax & 0xff; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return; } return; } MCUEVENT_TRACE() {// addr = 0x004073DB signed int _v48; // _cfa_ffffffd0 signed int _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t113; // _t113 _unknown_ _t182; // _t182 signed char* _t184; // _t184 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 64; _v64 = __rdi; _v72 = _t184; _v76 = _t113; _v48 = _v64; if(( *_v72 & 255) == 11 || ( *_v72 & 255) == 26) { r12d = _v76 & 255; r14d = *(_v64 + 1) & 0xff; r13d = *(_v64 + 2) & 0xff; _t150 = _v64; ConverLCEventToStr( *(_v64 + 2) & 0xff); _v84 = r12d; *__rsp = *(_v64 + 3) & 0xff; r9d = r14d; r8d = r13d; DebugPrint(0, _t150, _t150, _t182, __rdi, _t184); *__rsp = *(_v48 + 3) & 0xff; r9d = *(_v48 + 2) & 0xff; r8d = *(_v48 + 1) & 0xff; DebugPrint(0, _v48, _t150, _t182, __rdi, _t184); r8d = *(_v64 + 8); DebugPrint(0, _v64, _t150, _t182, __rdi, _t184); } else { r12d = _v76 & 255; r14d = *(_v64 + 1) & 0xff; r13d = *(_v64 + 2) & 0xff; _t169 = _v64; ConverLCEventToStr( *(_v64 + 2) & 0xff); _v84 = r12d; *__rsp = *(_v64 + 3) & 0xff; r9d = r14d; r8d = r13d; DebugPrint(0, _t169, _t169, _t182, __rdi, _t184); *__rsp = *(_v48 + 3) & 0xff; r9d = *(_v48 + 2) & 0xff; r8d = *(_v48 + 1) & 0xff; DebugPrint(0, _v48, _t169, _t182, __rdi, _t184); r8d = *(_v64 + 8); DebugPrint(0, _v64, _t169, _t182, __rdi, _t184); } if(( *(_v64 + 2) & 255) <= 20 && *((intOrPtr*)(_v64 * 8 + "[r")) != 0) { *((long long*)( *((intOrPtr*)(_v64 * 8 + "[r"))))(); } __rsp = &(__rsp[0x10]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } PDMA_Transmit_LE_TxRing() {// addr = 0x00407658 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac signed char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 intOrPtr _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 _unknown_ __rbp; // r59 signed int _t99; // _t99 signed char _t114; // _t114 long long _t192; // _t192 signed int _t207; // _t207 _v80 = _t207; _v96 = _t192; _v104 = r8; _v84 = sil; _v88 = _t114; _v108 = r9d; _v9 = BthGetTxRingSize(); ral_spin_lock(_v80 + 30424, &_v64); _v56 = _v80 * 1176 + _v80 + 616; _v48 = *((intOrPtr*)(_v56 + 1152)); _v40 = *((intOrPtr*)((_v48 + _v48 + _v48 << 4) + _v56 + 8)); _v32 = *((intOrPtr*)((_v48 + _v48 + _v48 << 4) + _v56 + 32)); _v24 = _v32; *(_v40 + 7) = *(_v40 + 7) & 255 | 128; *(_v40 + 7) = *(_v40 + 7) & 255 | 64; *(_v40 + 5) = *(_v40 + 5) & 255 | 64; *(_v40 + 15) = *(_v40 + 15) & 0xe0 | _v88 & 0x1f; *(_v40 + 6) = *(_v40 + 6) & 0xc000 | (_v108 & 0xff) << 2 & 0x3fff; *(_v40 + 4) = *(_v40 + 4) & 0xc000; *(_v40 + 5) = *(_v40 + 5) & 0x7f; RtlCopyMemory(16, _v24, _v96); if(_v108 != 0) { _v32 = _v32 + 16; RtlCopyMemory(_v108 & 255, _v32, _v104); } *((long long*)(_v56 + 1152)) = *((intOrPtr*)(_v56 + 1152)) + 1; _t99 = _v9 & 255; if( *((intOrPtr*)(_v56 + 1152)) >= _v56) { *((long long*)(_v56 + 1152)) = 0; } if((_t99 & 1) != 0) { RT_PCI_IO_WRITE32(); } *(_v40 + 7) = *(_v40 + 7) & 0x7f; ral_spin_unlock(_v80 + 30424, _v64); r8d = _v108 & 255; PDMA_LE_TX_TRACE(); return; } PDMA_Transmit_TxRing( signed int _a8, // _cfa_8 signed int _a16, // _cfa_10 signed int _a24, // _cfa_18 signed int _a32, // _cfa_20 signed int _a40, // _cfa_28 _unknown_ _a48, // _cfa_30 signed char _a56 // _cfa_38 ) {// addr = 0x004078C8 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed int* _v56; // _cfa_ffffffc8 signed int* _v64; // _cfa_ffffffc0 char _v88; // _cfa_ffffffa8 char _v104; // _cfa_ffffff98 char _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 signed int _v148; // _cfa_ffffff6c signed int _v152; // _cfa_ffffff68 signed int _v156; // _cfa_ffffff64 signed int _v160; // _cfa_ffffff60 signed int _v164; // _cfa_ffffff5c signed int _v168; // _cfa_ffffff58 signed int _v172; // _cfa_ffffff54 signed int _v176; // _cfa_ffffff50 signed int _v180; // _cfa_ffffff4c signed int _v184; // _cfa_ffffff48 signed int _v188; // _cfa_ffffff44 signed int _v204; // _cfa_ffffff34 signed int _v212; // _cfa_ffffff2c signed int _v220; // _cfa_ffffff24 signed int _v228; // _cfa_ffffff1c signed int _v236; // _cfa_ffffff14 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t154; // _t154 signed char _t187; // _t187 signed char _t208; // _t208 signed int _t252; // _t252 intOrPtr _t299; // _t299 _unknown_ _t318; // _t318 signed int* _t322; // _t322 signed long long _t324; // _t324 long long _t325; // _t325 _unknown_ _t329; // _t329 _push(r12); _push(__rbx); __rsp = __rsp - 224; _v144 = _t325; r12d = r8d; r11d = _a8; r10d = _a24; r9d = _a32; r8d = _a40; _v148 = sil; _v152 = _t208; _v156 = _t187; _v160 = r12b; _v164 = __bl; _v168 = r11w; _v172 = r10w; _v176 = r9b; _v180 = r8b; _v184 = dil; _v188 = _a56; _v64 = &_v104; _v56 = &_v136; *_v64 = 0; (_v64[1]) = 24; (_v64[2]) = _v56; *_v56 = _v148 & 255; (_v56[0]) = _v152 & 255; (_v56[0]) = _v156 & 255; (_v56[0]) = _v160 & 255; (_v56[1]) = _v164 & 255; (_v56[1]) = _v168 & 65535; (_v56[2]) = _a16; (_v56[4]) = _v172 & 65535; (_v56[4]) = _v176 & 255; (_v56[4]) = _v180 & 255; (_v56[5]) = _v184 & 255; (_v56[5]) = _v188 & 255; _t299 = _v144; _t322 = _v64; ioctl(); _v28 = 0; if(_v28 >= 0) { r9d = _v188 & 255; r8d = _v180 & 255; r11d = _v156 & 255; r10d = _v152 & 255; _v204 = r9d; _v212 = r8d; _v220 = _v172 & 65535; _v228 = _v168 & 65535; _v236 = _v164 & 255; *__rsp = _v160 & 255; r9d = r11d; r8d = r10d; _t154 = DebugPrint(0, _t299, _t318, _t322, _t325, _t329); } else { DebugPrint(0, _t299, _t318, _t322, _t325, _t329); _t154 = 0; perror(); } _v48 = &_v88; _v40 = 0; _v32 = 0; if((_t154 & 1) == 0) { _v32 = 4294967295; _v40 = _v32; } else { RT_PCI_IO_READ32(); _v40 = _v32; } RtlZeroMemory(16, _v48); *_v48 = *_v48 & 0xf000 | _v172 & 0xfff; *(_v48 + 1) = *(_v48 + 1) & 0xf | (_v156 & 0xf) << 4; _t324 = _v48; *(_t324 + 2) = *(_t324 + 2) & 0xfc | (_v156 & 255) >> 4 & 3; *(_v48 + 2) = *(_v48 + 2) & 0xcf | (_v160 & 3) << 4; *(_v48 + 3) = *(_v48 + 3) & 0xfd | _t324 + _t324; *(_v48 + 8) = *(_v48 + 8) & 4026531840 | _v40 & 0xfffffff; *(_v48 + 13) = _v168 & 65535; *(_v48 + 4) = *(_v48 + 4) & 0xfe | _v176 & 1; *(_v48 + 12) = _v180 & 255; if(_v148 <= 4 || _v148 > 7) { _t252 = _v184 & 3; } else { _t252 = (_v148 & 255) - 5 & 3; } *(_v48 + 3) = *(_v48 + 3) & 0x9f | (_t252 & 3) << 5; *(_v48 + 3) = *(_v48 + 3) & 0xe7 | 0 + _t324 * 8; PDMA_TX_TRACE(); __rsp = &(__rsp[0x38]); _pop(__rbx); _pop(r12); return; } PDMA_Reset_TxRing() {// addr = 0x00407D28 signed int _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 signed char _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char* _v64; // _cfa_ffffffc0 signed char _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 char _v84; // _cfa_ffffffac _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t78; // _t78 signed int _t82; // _t82 signed int _t89; // _t89 signed int _t90; // _t90 char _t135; // _t135 _unknown_ _t190; // _t190 _unknown_ _t192; // _t192 signed int _t199; // _t199 signed int _t200; // _t200 _unknown_ _t207; // _t207 _v80 = _t199; _v84 = _t135; _v26 = 0; _v72 = 0; _t143 = _v80; _t200 = _v80; _t78 = BthGetTxRingSize(); _v25 = _t78; if(_v84 <= 21) { goto L2; } else { DebugPrint(0, _t143, _t190, _t192, _t200, _t207); return; } do { goto L2; L16: _v26 = _v26 + 1; KeStallExecutionProcessor(); } while(_v26 <= 4); L19: if((_v40 & 2) != 0) { DebugPrint(0, _t148, _t191, _t195, _t202, _t209); return; } return; L2: ral_spin_lock(_v80 + 30424, &_v72); _v32 = 0; if((_t78 & 1) == 0) { _v32 = 4294967295; _v40 = _v32; } else { _t191 = &_v32; RT_PCI_IO_READ32(); _v40 = _v32; } _t82 = _v40 & 2; if(_t82 != 0) { } else { _t89 = _t82 & 1; if(_t89 != 0) { _t89 = RT_PCI_IO_WRITE32(); } _t90 = _t89 & 1; if(_t90 != 0) { _t90 = RT_PCI_IO_WRITE32(); } if((_t90 & 1) != 0) { _t191 = *_v80; RT_PCI_IO_WRITE32(); } _v64 = _v80 * 1176 + _v80 + 616; (_v64[0x488]) = 0; (_v64[0x490]) = 0; (_v64[0x480]) = 0; _v27 = 0; while((_v27 & 255) < _v25) { _v56 = ((_v27 & 255) + (_v27 & 255) + (_v27 & 255) << 4) + 16 + _v64 + 8; _t191 = _v64; _v48 = *((intOrPtr*)(_v64 + ((_v27 & 255) + (_v27 & 255) + (_v27 & 255) << 4) + 8)); *(_v48 + 7) = *(_v48 + 7) & 255 | 128; _v27 = _v27 + 1; } } _t148 = _v72; _t195 = _v80 + 30424; _t209 = _v72; _t202 = _v80 + 30424; ral_spin_unlock(_v80 + 30424, _v72); _t78 = _v40 & 2; if(_t78 != 0) { goto L16; } goto L19; } PDMA_Is_TxRing_Empty( signed char __esi, // r5 long long __rdi // r57 ) {// addr = 0x00408000 signed char _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 __rdi = __rdi; _v64 = __rdi; _v68 = __esi; _v40 = &_v56; *_v40 = 3; *((short*)(_v40 + 4)) = 2; *(_v40 + 8) = &_v24; _v24 = _v68 & 255; ioctl(); _v28 = 0; if(_v28 >= 0) { return _v23 & 255; } perror(); return 0; } PDMA_Get_Txring_Freeno( signed char __esi, // r5 long long __rdi // r57 ) {// addr = 0x00408084 intOrPtr _v12; // _cfa_fffffff4 signed short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 __rdi = __rdi; _v64 = __rdi; _v68 = __esi; _v32 = &_v56; *_v32 = 2; *((short*)(_v32 + 4)) = 4; *(_v32 + 8) = &_v24; _v24 = _v68 & 255; ioctl(); _v12 = 0; if(_v12 >= 0) { return _v22 & 0xffff; } perror(); return 0; } RF_Convert_LE_Rssi( signed char __edi, // r4 char __esi // r5 ) {// addr = 0x0040810C signed char _v9; // _cfa_fffffff7 signed int _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; _v28 = __edi; _v32 = __esi; if(_v32 != 2) { if(_v32 != 1) { if(_v32 != 0) { _v9 = 18; } else { _v9 = 38; } } else { _v9 = 18; } } else { _v9 = 2; } _v28 = ~(_v9 & 255) - (_v28 & 255) - 50; return _v28 & 255; } ConvertLLIDToStr( signed char __edi // r4 ) {// addr = 0x00408160 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "ACLU Continue"; } if(_t4 > 1) { if(_t4 == 2) { return "ACLU Start"; } if(_t4 == 3) { return "ACLC"; } L11: return "unknown"; } if(_t4 == 0) { return "reserved"; } goto L11; } ConverPacketTypeToStr( signed char __edi, // r4 _unknown_ __rax // r53 ) {// addr = 0x004081AC signed int _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _t26 = __rax; __edi = __edi; _v12 = __edi; if(((_v12 & 255) >> 4 & 3) != 2 || ( *(__rax + (((_v12 & 255) >> 4 & 255) << 4) + __rax + (((_v12 & 255) >> 4 & 255) << 4) + &ptype) & 65535) != 12801) { if((_v12 & 255) > 128) { return "unknown"; } goto __rax; } else { return "DM1(EDR)"; } } ConvertAdvertisePDUTypeToStr( signed char __edi // r4 ) {// addr = 0x00408300 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 6) { goto __rax; } return "reserved"; } ConvertDataPDULLIDToStr( signed char __edi // r4 ) {// addr = 0x00408356 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 2) { return "LL Data Start"; } if(_t4 == 3) { return "LL Control"; } if(_t4 != 1) { return "reserved"; } return "LL Data Continue"; } GetConnectionIdxByLLIdx( char __esi, // r5 signed int __rax, // r53 long long __rdi // r57 ) {// addr = 0x0040838E signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed long long _t51; // _t51 signed long long _t55; // _t55 signed long long _t59; // _t59 signed long long _t64; // _t64 signed long long _t69; // _t69 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v9 = 0; if(_v36 <= 26) { _t51 = __rax * 184 + _v32 + 33792; if(( *(_t51 + 8) & 255) != 0) { _t55 = *(_t51 * 184 + _v32 + 33896); if(_t55 != 0) { _t59 = *(_t55 * 184 + _v32 + 33896); if(( *_t59 & 255) != 0) { _t64 = *( *((intOrPtr*)(_t59 * 184 + _v32 + 33896)) + 32); if(_t64 != 0) { _t69 = *( *((intOrPtr*)(_t64 * 184 + _v32 + 33896)) + 32); if(( *_t69 & 255) != 0) { _v9 = *( *((intOrPtr*)( *((intOrPtr*)(_t69 * 184 + _v32 + 33896)) + 32)) + 2) & 255; } } } } } } return _v9 & 255; } PDMA_TraceDataDumpBuffer() {// addr = 0x00408495 signed int _v9; // _cfa_fffffff7 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 intOrPtr _t27; // _t27 _unknown_ _t32; // _t32 signed char* _t34; // _t34 long long _t36; // _t36 long long _t39; // _t39 _v28 = _t27; _v40 = _t39; _v48 = _t36; _v56 = _t34; if(_v56 == 0) { r9 = _v48; r8 = _v40; DebugPrint(0, _t32, _v48, _v40, __rdi, _t39); return; } _v9 = *_v56 & 255; *__rsp = _v48; r9 = _v40; r8d = _v28; DebugPrint(0, _v56, _t34, _v48, __rdi, _v40); return; } ConvertMajorDeviceClassToStr( signed char __edi // r4 ) {// addr = 0x00408521 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 9) { goto __rax; } return "Uncategorized"; } PDMA_TraceClassOfDevice() {// addr = 0x0040858C signed int _v9; // _cfa_fffffff7 char _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 char _t111; // _t111 signed int _t125; // _t125 _unknown_ _t147; // _t147 _v32 = _t125; _v28 = _t111; _v9 = _v32 >> 8 & 31; DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); if((_v32 & 8192) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } if((_v32 & 65536) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } if((_v32 & 131072) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } if((_v32 & 262144) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } if((_v32 & 524288) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } if((_v32 & 1048576) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } if((_v32 & 2097152) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } if((_v32 & 4194304) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } if((_v32 & 8388608) != 0) { DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); } DebugPrint(0, __rax, __rcx, _t147, __rdi, __rsi); ConvertMajorDeviceClassToStr(_v9 & 255); r8 = __rax; DebugPrint(0, __rax, __rcx, __rax, __rdi, __rsi); return; } PDMA_DumpFHSPacket() {// addr = 0x0040879B intOrPtr _v60; // _cfa_ffffffc4 signed int* _v72; // _cfa_ffffffb8 char _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed int* _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 intOrPtr _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 intOrPtr _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t76; // _t76 char _t127; // _t127 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 168; _v88 = __rsi; _v76 = _t127; _v72 = _v88; _v60 = LCFHS_GetClassOfDevice(_v88); r9d = (_v72[1]); r8d = *_v72; _v176 = (_v72[5]); _v184 = (_v72[4]); _v192 = (_v72[3]); *__rsp = (_v72[2]); DebugPrint(0, _v72, __rcx, __rdx, _v88, __rsi); _t76 = LCFHS_GetClock(_v88); r14d = (_v88[4]) & 0x1fff; r13d = ((_v88[3]) & 65535) >> 3 & 65535; r12d = (_v88[3]) & 7; r11d = ((_v88[1]) & 255) >> 4 & 3; r10d = ((_v88[1]) & 255) >> 3 & 1; r9d = ((_v88[1]) & 255) >> 6 & 255; r8d = ((_v88[1]) & 255) >> 2 & 1; _v80 = (_v88[1]) >> 2 & 0xff; _v92 = ((_v88[1]) >> 2 & 16777215) >> 8 & 255; _v96 = ((_v88[1]) >> 2 & 16777215) >> 16 & 255; r15d = (_v88[2]) & 0xff; _v96 = ((_v88[4]) & 255) >> 5 & 255; _v104 = _t76; _v112 = r14d; _v120 = r13d; _v128 = r12d; _v136 = _v60; _v144 = r11d; _v152 = r10d; _v160 = r9d; _v168 = r8d; _v176 = _v80; _v184 = _v92; _v192 = _v96; *__rsp = (_v88[2]) & 0xff; r9d = r15d; r8d = (_v88[2]) & 0xff; DebugPrint(0, _v88, __rcx, __rdx, _v88, __rsi); PDMA_TraceClassOfDevice(); __rsp = &(__rsp[0x2a]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } PDMA_DumpRxBI() {// addr = 0x004089C5 signed short* _v64; // _cfa_ffffffc0 char _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed short* _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 char _t238; // _t238 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 168; _v88 = __rsi; _v76 = _t238; _v64 = _v88; _v80 = (_v64[0xd]) & 0xff; _v92 = (_v64[0xc]) & 0xff; _v96 = (_v64[0xb]) & 0xff; r15d = (_v64[0xa]) & 0xff; r14d = (_v64[9]) & 0xff; r13d = (_v64[8]) & 0xff; r12d = (_v64[7]) & 0xff; r11d = (_v64[5]) & 0xff; r10d = (_v64[4]) & 0xff; r9d = (_v64[3]) & 0xff; r8d = (_v64[2]) & 0xff; _v96 = (_v64[0xf]) & 0xff; _v104 = (_v64[0xe]) & 0xff; _v112 = _v80; _v120 = _v92; _v128 = _v96; _v136 = r15d; _v144 = r14d; _v152 = r13d; _v160 = r12d; _v168 = (_v64[6]) & 0xff; _v176 = r11d; _v184 = r10d; _v192 = r9d; *__rsp = r8d; r9d = (_v64[1]) & 0xff; r8d = *_v64 & 0xff; DebugPrint(0, _v64, __rcx, __rdx, __rdi, __rsi); if(((_v88[0]) & 0xf0) == 32 || ((_v88[1]) & 2) != 0) { if(((_v88[1]) & 1) == 0) { r10d = ((_v88[1]) & 255) >> 7 & 255; r9d = ((_v88[1]) & 255) >> 1 & 1; if(((_v88[1]) & 1) != 0) { } r8d = ((_v88[1]) & 255) >> 6 & 255; r11d = *_v88 & 0xfff; _v152 = r10d; _v160 = r9d; _v168 = __rdx; _v176 = r8d; _v184 = ((_v88[1]) & 255) >> 4 & 3; _v192 = ((_v88[1]) & 255) >> 2 & 3; *__rsp = (_v88[1]) & 3; r9d = ((_v88[0]) & 255) >> 4 & 255; r8d = r11d; DebugPrint(0, _v88, __rcx, __rdx, __rdi, __rsi); goto L11; } goto L3; } else { L3: r10d = ((_v88[1]) & 255) >> 7 & 255; r9d = ((_v88[1]) & 255) >> 1 & 1; if(((_v88[1]) & 1) != 0) { } r8d = ((_v88[1]) & 255) >> 6 & 255; r11d = *_v88 & 0xfff; _v152 = r10d; _v160 = r9d; _v168 = __rdx; _v176 = r8d; _v184 = ((_v88[1]) & 255) >> 4 & 3; _v192 = ((_v88[1]) & 255) >> 2 & 3; *__rsp = (_v88[1]) & 3; r9d = ((_v88[0]) & 255) >> 4 & 255; r8d = r11d; DebugPrint(0, _v88, __rcx, __rdx, __rdi, __rsi); L11: *__rsp = (_v88[3]) & 0x7ff; r9d = (_v88[2]) & 0x1f; r8d = (_v88[2]) & 0x7f; DebugPrint(0, _v88, __rcx, __rdx, __rdi, __rsi); r8d = (_v88[4]) & 268435455; DebugPrint(0, _v88, __rcx, __rdx, __rdi, __rsi); *__rsp = (_v88[7]) & 0xff; r9d = (_v88[6]) & 3; r8d = (_v88[6]) & 255; DebugPrint(0, _v88, __rcx, __rdx, __rdi, __rsi); __rsp = &(__rsp[0x2a]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } } PDMA_DumpLERxBI() {// addr = 0x00408E11 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 152; _v80 = __rdi; _v64 = _v80; _v84 = *(_v64 + 14) & 0xff; r15d = *(_v64 + 13) & 0xff; r14d = *(_v64 + 12) & 0xff; r13d = *(_v64 + 11) & 0xff; r12d = *(_v64 + 10) & 0xff; r11d = *(_v64 + 8) & 0xff; r10d = *(_v64 + 7) & 0xff; r9d = *(_v64 + 6) & 0xff; r8d = *(_v64 + 5) & 0xff; _v88 = *(_v64 + 2) & 0xff; _v88 = *(_v64 + 15) & 0xff; _v96 = _v84; _v104 = r15d; _v112 = r14d; _v120 = r13d; _v128 = r12d; _v136 = *(_v64 + 9) & 0xff; _v144 = r11d; _v152 = r10d; _v160 = r9d; _v168 = r8d; _v176 = *(_v64 + 4) & 0xff; *__rsp = *(_v64 + 3) & 0xff; r9d = _v88; r8d = *(_v64 + 1) & 0xff; DebugPrint(0, _v64, __rcx, __rdx, __rdi, __rsi); if(( *(_v80 + 3) & 1) == 0) { *__rsp = ( *(_v80 + 3) & 255) >> 1 & 1; r9d = *(_v80 + 3) & 1; r8d = ( *(_v80 + 1) & 255) >> 4 & 255; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r9d = *(_v80 + 6) & 0x7ff; r8d = *(_v80 + 5) & 0x1f; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r9d = *(_v80 + 13) & 3; r8d = *(_v80 + 12) & 0xff; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r8d = ( *(_v80 + 14) & 65535) >> 8 & 0xff; _t142 = DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); } else { *__rsp = ( *(_v80 + 3) & 255) >> 1 & 1; r9d = *(_v80 + 3) & 1; r8d = ( *(_v80 + 1) & 255) >> 4 & 255; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r9d = *(_v80 + 6) & 0x7ff; r8d = *(_v80 + 5) & 0x1f; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r9d = *(_v80 + 13) & 3; r8d = *(_v80 + 12) & 0xff; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r8d = ( *(_v80 + 14) & 65535) >> 8 & 0xff; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); } __rsp = &(__rsp[0x26]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } PDMA_DumpLEDataRxBI() {// addr = 0x00409205 char _v57; // _cfa_ffffffc7 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 152; _v80 = __rdi; _v72 = _v80; _v84 = *(_v72 + 14) & 0xff; r15d = *(_v72 + 13) & 0xff; r14d = *(_v72 + 12) & 0xff; r13d = *(_v72 + 11) & 0xff; r12d = *(_v72 + 10) & 0xff; r11d = *(_v72 + 8) & 0xff; r10d = *(_v72 + 7) & 0xff; r9d = *(_v72 + 6) & 0xff; r8d = *(_v72 + 5) & 0xff; _v88 = *(_v72 + 2) & 0xff; _v88 = *(_v72 + 15) & 0xff; _v96 = _v84; _v104 = r15d; _v112 = r14d; _v120 = r13d; _v128 = r12d; _v136 = *(_v72 + 9) & 0xff; _v144 = r11d; _v152 = r10d; _v160 = r9d; _v168 = r8d; _v176 = *(_v72 + 4) & 0xff; *__rsp = *(_v72 + 3) & 0xff; r9d = _v88; r8d = *(_v72 + 1) & 0xff; DebugPrint(0, _v72, __rcx, __rdx, __rdi, __rsi); _v57 = RF_Convert_LE_Rssi( *(_v80 + 12) & 255, *(_v80 + 13) & 3); if(( *(_v80 + 3) & 1) == 0) { *__rsp = ( *(_v80 + 3) & 255) >> 1 & 1; r9d = *(_v80 + 3) & 1; r8d = ( *(_v80 + 1) & 255) >> 4 & 255; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r9d = *(_v80 + 6) & 0xffff; r8d = *(_v80 + 5) & 0x1f; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); *__rsp = ( *(_v80 + 13) & 255) >> 4 & 255; r9d = *(_v80 + 13) & 3; r8d = *(_v80 + 12) & 0xff; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r8d = ( *(_v80 + 14) & 65535) >> 8 & 0xff; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); _t162 = DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); } else { *__rsp = ( *(_v80 + 3) & 255) >> 1 & 1; r9d = *(_v80 + 3) & 1; r8d = ( *(_v80 + 1) & 255) >> 4 & 255; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r9d = *(_v80 + 6) & 0xffff; r8d = *(_v80 + 5) & 0x1f; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); *__rsp = ( *(_v80 + 13) & 255) >> 4 & 255; r9d = *(_v80 + 13) & 3; r8d = *(_v80 + 12) & 0xff; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); r8d = ( *(_v80 + 14) & 65535) >> 8 & 0xff; DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); DebugPrint(0, _v80, __rcx, __rdx, __rdi, __rsi); } __rsp = &(__rsp[0x26]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } RXBI_TRACE() {// addr = 0x00409676 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t152; // _t152 _v48 = _t152; _v56 = __rsi; _v32 = _v56; *__rsp = *(_v32 + 12); r9d = *(_v32 + 8); r8d = *(_v32 + 4); DebugPrint(0, _v48, __rcx, __rdx, _v48, __rsi); r10d = ( *(_v56 + 3) & 255) >> 7 & 255; r9d = ( *(_v56 + 3) & 255) >> 1 & 1; if(( *(_v56 + 3) & 1) != 0) { } r8d = ( *(_v56 + 2) & 255) >> 6 & 255; r11d = ( *(_v56 + 1) & 255) >> 4 & 255; _v64 = r10d; _v72 = r9d; _v80 = __rdx; _v88 = r8d; _v96 = ( *(_v56 + 2) & 255) >> 4 & 3; *__rsp = ( *(_v56 + 2) & 255) >> 2 & 3; r9d = *(_v56 + 2) & 3; r8d = r11d; DebugPrint(0, _v48, __rcx, __rdx, _v48, __rsi); r9d = *(_v56 + 6) & 0x7ff; r8d = *(_v56 + 5) & 0x1f; DebugPrint(0, _v48, __rcx, __rdx, _v48, __rsi); DebugPrint(0, _v48, __rcx, __rdx, _v48, __rsi); r9d = *(_v56 + 15) & 0xff; r8d = *(_v56 + 13) & 3; DebugPrint(0, _v48, __rcx, __rdx, _v48, __rsi); return; } PDMA_BR_RX_TRACE() {// addr = 0x00409873 signed int _v41; // _cfa_ffffffd7 char _v42; // _cfa_ffffffd6 char _v43; // _cfa_ffffffd5 _unknown_ _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int* _v80; // _cfa_ffffffb0 signed int* _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t220; // _t220 signed int _t262; // _t262 signed int* _t282; // _t282 signed int* _t283; // _t283 _unknown_ _t284; // _t284 signed int* _t285; // _t285 signed int* _t296; // _t296 long long _t320; // _t320 _unknown_ _t322; // _t322 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 96; _v64 = _t320; _v68 = _t262; _v80 = _t296; _v88 = r8; _v96 = r9; _v72 = _t220; _v43 = 0; _t321 = _v64; _v42 = GetConnectionIdxByLLIdx(_v72 & 255, _v64, _v64); _t282 = _v80; _v41 = ((_t282[0]) & 255) >> 4 | ((_v80[0]) & 3) << 4; if((_v41 & 255) >= 0) { L2: if((_v41 & 255) >= 0) { L5: if(_v43 == 0) { if(_v41 != 2) { r12d = _v41 & 255; ConverPacketTypeToStr(_v41 & 255, _t282); _v108 = _v96; _v116 = _v72 & 255; *__rsp = _v68; r9d = r12d; r8 = _t282; DebugPrint(0, _t282, _v96, _t282, _t321, _t322); PDMA_DumpRxBI(); } else { r12d = _v41 & 255; ConverPacketTypeToStr(_v41 & 255, _t282); _v108 = _v96; _v116 = _v72 & 255; *__rsp = _v68; r9d = r12d; r8 = _t282; DebugPrint(0, _t282, _v96, _t282, _t321, _t322); PDMA_DumpRxBI(); PDMA_DumpFHSPacket(); } L16: __rsp = &(__rsp[0x18]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } if(_v41 != 8) { if(SCOPacketCount.6363 - (SCOPacketCount.6363 * 274877907 >> 32 >> 5) * 500 != 1) { r13d = SCOPacketCount.6363; _t283 = _v80; r12d = (_t283[3]) & 0xff; r14d = _v41 & 255; ConverPacketTypeToStr(_v41 & 255, _t283); _v100 = r13d; _v108 = r12d; _v116 = _v72 & 255; *__rsp = _v68; r9d = r14d; r8 = _t283; DebugPrint(0, _t283, _t296, _t283, _t321, _t322); _t326 = _v80; PDMA_DumpRxBI(); } else { r13d = SCOPacketCount.6363; _t283 = _v80; r12d = (_t283[3]) & 0xff; r14d = _v41 & 255; ConverPacketTypeToStr(_v41 & 255, _t283); _v108 = r13d; _v116 = r12d; *__rsp = _v72 & 255; r9d = _v68; r8d = r14d; DebugPrint(0, _t283, _t283, _t301, _t321, _t322); _t326 = _v80; PDMA_DumpRxBI(); } } else { SCOPacketCount.6363 = SCOPacketCount.6363 + 1; *__rsp = _v96; r9d = _v72 & 255; r8d = _v68; DebugPrint(0, _t282, _t296, _v96, _t321, _t322); _t326 = _v80; PDMA_DumpRxBI(); r9d = (_v88[1]); _t283 = _v88; r8d = *_t283; _v100 = (_v88[5]); _v108 = (_v88[4]); _v116 = (_v88[3]); *__rsp = (_v88[2]); DebugPrint(0, _t283, _t296, _v80, _t321, _v80); } _t284 = _t283 + (((_v41 & 255) >> 4 & 3) << 4); if(_t284 < _v96) { _t285 = _t284 + (((_v41 & 255) >> 4 & 3) << 4); r12d = *(_t285 + _t285 + &gMaxDataLenTable) & 0xffff; r13d = _v41 & 255; ConverPacketTypeToStr(_v41 & 255, _t285); _v100 = r12d; _v108 = _v96; _v116 = _v72 & 255; *__rsp = _v68; r9d = r13d; r8 = _t285; DebugPrint(0, _t285, _v96, _t285, _t321, _t326); PDMA_DumpRxBI(); } goto L16; } _t301 = ((_v41 & 255) >> 4 & 255) << 4; _t282 = _t282 + (((_v41 & 255) >> 4 & 255) << 4); if(( *(_t282 + _t282 + &ptype) & 0x10) == 0) { goto L5; } L4: _v43 = 1; SCOPacketCount.6363 = SCOPacketCount.6363 + 1; goto L5; } _t301 = ((_v41 & 255) >> 4 & 255) << 4; _t282 = _t282 + (((_v41 & 255) >> 4 & 255) << 4); if(( *(_t282 + _t282 + &ptype) & 4) != 0) { goto L4; } goto L2; } PDMA_LE_RX_TRACE() {// addr = 0x00409CED signed int _v71; // _cfa_ffffffb9 signed int _v72; // _cfa_ffffffb8 signed int _v87; // _cfa_ffffffa9 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 char _v108; // _cfa_ffffff94 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 char _t145; // _t145 long long _t177; // _t177 long long _t182; // _t182 long long _t188; // _t188 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 168; _v120 = _t188; _v128 = _t182; _v136 = _t177; _v108 = _t145; r8d = PDMA_TraceDataDumpBuffer; Bth_Dbg_DumpBuffer(_t177, _t182, _v120, _t188); _t189 = _v136; r8d = PDMA_TraceDataDumpBuffer; _t186 = _v128; Bth_Dbg_DumpBuffer(_t177, _t182, _v128, _v136); if(( *(_v120 + 3) & 2) == 0) { _v96 = _v120; _t183 = _v120; _v72 = *(_v120 + 14) & 65535; r9 = _v136; r8d = _v71 & 0x1f; DebugPrint(0, &_v72, _v136, _v120, _t186, _t189); _t173 = _v96; PDMA_DumpLEDataRxBI(); r8d = (_v72 & 65535) >> 8 & 0xff; DebugPrint(0, _v96, _v136, _v120, _v96, _t189); r13d = _v71 & 0x1f; r12d = (_v72 & 255) >> 4 & 1; r15d = (_v72 & 255) >> 2 & 1; r14d = _v72 & 3; ConvertDataPDULLIDToStr(_v72 & 3); _v184 = r13d; _v192 = r12d; *__rsp = (_v72 & 255) >> 3 & 1; r9d = r15d; r8d = r14d; DebugPrint(0, _t173, _t173, _t183, _v96, _t189); _t88 = _v72 & 3; if(_t88 < 1) { L9: } else { if(_t88 <= 2) { } else { if(_t88 != 3) { goto L9; } else { _t88 = LLCP_TRACE(_t173); } } } } else { _v88 = *(_v120 + 14) & 65535; r9 = _v136; r8d = _v87 & 0x3f; DebugPrint(0, _v120, _v136, _t182, _t186, _t189); _t175 = _v120; _t186 = _v120; PDMA_DumpLERxBI(); r8d = (_v88 & 65535) >> 8 & 0xff; DebugPrint(0, _v120, _v136, _t182, _v120, _t189); r12d = _v87 & 0x3f; r14d = (_v88 & 255) >> 6 & 1; r13d = _v88 & 0xf; ConvertAdvertisePDUTypeToStr(_v88 & 0xf); _v192 = r12d; *__rsp = (_v88 & 255) >> 7 & 255; r9d = r14d; r8d = r13d; DebugPrint(0, _t175, _t175, _t182, _v120, _t189); _t88 = _v88 & 0xf; if((_v88 & 0xf) <= 6) { goto __rax; } } __rsp = &(__rsp[0x2a]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } PDMA_RX_TRACE() {// addr = 0x0040A570 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v40; // _cfa_ffffffd8 intOrPtr _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 char _t20; // _t20 intOrPtr _t22; // _t22 long long _t24; // _t24 long long _t27; // _t27 _v16 = _t27; _v20 = _t22; _v32 = _t24; _v40 = r8; _v48 = r9; _v24 = _t20; if(_v24 > 22) { PDMA_LE_RX_TRACE(); return; } r8 = _v48; r9 = r8; r8 = _v40; PDMA_BR_RX_TRACE(); return; } PDMA_LE_TX_TRACE() {// addr = 0x0040A5D6 signed char _v23; // _cfa_ffffffe9 signed char _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed char _v32; // _cfa_ffffffe0 signed short* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed int _t50; // _t50 signed char _t60; // _t60 _unknown_ _t85; // _t85 _v40 = __rsi; _v48 = __rcx; _v28 = dil; _v32 = _t60; _v52 = r8d; _v24 = (_v40[7]) & 65535; *__rsp = ((_v40[6]) & 255) >> 4 & 255; r9d = *_v40 & 0xfff; r8d = _v32 & 255; DebugPrint(0, _v40, __rcx, _t85, __rdi, __rsi); _t84 = _v40; r8d = ((_v40[7]) & 65535) >> 8 & 0xff; DebugPrint(0, _v40, __rcx, _t85, __rdi, __rsi); r8d = _v23 & 0x1f; DebugPrint(0, _v40, __rcx, _t85, __rdi, __rsi); _t50 = _v24 & 3; if(_t50 < 1) { L5: return; } if(_t50 > 2) { if(_t50 != 3) { goto L5; } LLCP_TRACE(_t84); return; } return; } PDMA_TX_TRACE() {// addr = 0x0040A6FB signed int _v57; // _cfa_ffffffc7 char _v58; // _cfa_ffffffc6 char _v59; // _cfa_ffffffc5 _unknown_ _v80; // _cfa_ffffffb0 signed short* _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed short* _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed short* _v144; // _cfa_ffffff70 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t169; // _t169 signed char _t178; // _t178 signed short* _t241; // _t241 signed short* _t243; // _t243 signed short* _t248; // _t248 signed short* _t252; // _t252 _unknown_ _t253; // _t253 long long _t259; // _t259 _push(r15); _push(r14); _push(r13); _push(r12); _push(_t253); __rsp = __rsp - 120; _v80 = _t259; _v88 = __rsi; _v92 = _t178; _v96 = _t169; _v59 = 0; _t260 = _v80; _v58 = GetConnectionIdxByLLIdx(_v92 & 255, _v80, _v80); _v57 = ((_v88[0]) & 255) >> 4 | ((_v88[1]) & 3) << 4; if(_v57 == 5 || _v57 == 6 || _v57 == 7 || _v57 == 23 || _v57 == 8 || _v57 == 28 || _v57 == 29 || _v57 == 54 || _v57 == 55 || _v57 == 60 || _v57 == 61) { _v59 = 1; } if(_v59 == 0) { if(_v57 != 3 || ((_v88[1]) & 0x30) != 48) { if(((_v88[1]) & 2) != 0) { r15d = (_v88[6]) & 0xff; r14d = (_v88[2]) & 1; r13d = *_v88 & 0xfff; _t241 = _v88; ConvertLLIDToStr(((_t241[1]) & 255) >> 4 & 3); r12d = _v57 & 255; ConverPacketTypeToStr(_v57 & 255, _t241); _v104 = r15d; _v112 = r14d; _v120 = r13d; _v128 = _t241; _v136 = r12d; _v144 = _t241; *__rsp = (_v88[4]) & 268435455; r9d = _v96 & 255; r8d = _v92 & 255; _t130 = DebugPrint(0, _t241, __rcx, _v88, _t260, __rsi); } else { r13d = *_v88 & 0xfff; _t243 = _v88; ConvertLLIDToStr(((_t243[1]) & 255) >> 4 & 3); r12d = _v57 & 255; ConverPacketTypeToStr(_v57 & 255, _t243); _v120 = r13d; _v128 = _t243; _v136 = r12d; _v144 = _t243; *__rsp = (_v88[4]) & 268435455; r9d = _v96 & 255; r8d = _v92 & 255; _t130 = DebugPrint(0, _t243, __rcx, _v88, _t260, __rsi); } } else { r15d = (_v88[6]) & 0xff; r14d = (_v88[2]) & 1; r13d = *_v88 & 0xfff; _t248 = _v88; ConvertLLIDToStr(((_t248[1]) & 255) >> 4 & 3); r12d = _v57 & 255; ConverPacketTypeToStr(_v57 & 255, _t248); _v104 = r15d; _v112 = r14d; _v120 = r13d; _v128 = _t248; _v136 = r12d; _v144 = _t248; *__rsp = (_v88[4]) & 268435455; r9d = _v96 & 255; r8d = _v92 & 255; _t130 = DebugPrint(0, _t248, __rcx, _v88, _t260, __rsi); } } else { r15d = (_v88[6]) & 0xff; r14d = (_v88[2]) & 1; r13d = *_v88 & 0xfff; _t252 = _v88; ConvertLLIDToStr(((_t252[1]) & 255) >> 4 & 3); r12d = _v57 & 255; ConverPacketTypeToStr(_v57 & 255, _t252); _v104 = r15d; _v112 = r14d; _v120 = r13d; _v128 = _t252; _v136 = r12d; _v144 = _t252; *__rsp = (_v88[4]) & 268435455; r9d = _v96 & 255; r8d = _v92 & 255; DebugPrint(0, _t252, __rcx, _v88, _t260, __rsi); } __rsp = &(__rsp[0x1e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } Tmr_Start_Timer() {// addr = 0x0040AA9C signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 signed int _v37; // _cfa_ffffffdb signed int _v40; // _cfa_ffffffd8 char _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 intOrPtr _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 signed int _t51; // _t51 signed int _t74; // _t74 intOrPtr _t105; // _t105 long long _t130; // _t130 _v64 = _t130; _v68 = _t105; _v24 = 0; _v16 = 0; if((_t51 & 1) == 0) { _v16 = 4294967295; _v24 = _v16; } else { __rcx = &_v16; RT_PCI_IO_READ32(); _v24 = _v16; } if((_v24 & 268435455) > _v68) { _v12 = _v68 - (_v24 & 268435455) + 268435456; } else { _v12 = _v68 - (_v24 & 268435455); } _v40 = 0; _v40 = _v40 & 4227858432 | _v12 * 625 >> 1 & 0x3ffffff; _v37 = _v37 & 0xef; _v37 = _v37 & 255 | 32; _v37 = _v37 & 255 | 64; _t74 = _v37 & 255 | 128; _v37 = _t74; ral_spin_lock(_v64 + 30520, &_v48); if((_t74 & 1) != 0) { RT_PCI_IO_WRITE32(); } ral_spin_unlock(_v64 + 30520, _v48); *__rsp = _v40 & 67108863; r9d = _v12; r8d = _v68; DebugPrint(0, _v48, __rcx, _v64 + 30520, _v64 + 30520, _v48); return; } Tmr_Stop_Timer() {// addr = 0x0040AC48 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 signed int _v37; // _cfa_ffffffdb signed int _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed int _t41; // _t41 signed int _t51; // _t51 long long _t89; // _t89 _v48 = _t89; _v24 = 0; _v12 = 0; if((_t39 & 1) == 0) { _v12 = 4294967295; _t41 = _v12; _v24 = _t41; } else { __rcx = &_v12; __rsi = __rcx; _t89 = *_v48 + 1568; RT_PCI_IO_READ32(); _t41 = _v12; _v24 = _t41; } _v40 = 0; _v12 = 0; _t75 = *((intOrPtr*)(_v48 + 191488)); if((_t41 & 1) == 0) { _v12 = 4294967295; _v40 = _v12; } else { _t75 = *_v48 + 972; __rcx = &_v12; __rsi = __rcx; _t89 = *_v48 + 972; RT_PCI_IO_READ32(); _v40 = _v12; } r8d = _v40 & 67108863; DebugPrint(0, _t75, __rcx, __rdx, _t89, __rsi); _v40 = 0; _t51 = _v37 & 255 | 64; _v37 = _t51; if((_t51 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } BthReadRFRegister() {// addr = 0x0040AD94 intOrPtr _v12; // _cfa_fffffff4 signed int* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed int* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t26; // _t26 signed int* _t34; // _t34 long long _t36; // _t36 _v32 = _t36; _v48 = _t34; _v36 = _t26; _v24 = &rfread; RtlFillMemory(2, 0, _v24); *_v24 = _v36 & 255; ioctl(); _v12 = 0; if(_v12 >= 0) { *_v48 = (_v24[0]) & 255; } else { perror(); } return 0; } BthWriteRFRegister() {// addr = 0x0040AE1F intOrPtr _v12; // _cfa_fffffff4 signed int* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char _t21; // _t21 _unknown_ _t27; // _t27 long long _t34; // _t34 _v32 = _t34; _v36 = __cl; _v40 = _t21; _v24 = &rfwrite; RtlFillMemory(2, 0, _v24); *_v24 = _v36 & 255; (_v24[0]) = _v40 & 255; ioctl(); _v12 = 0; if(_v12 < 0) { perror(); } return 0; } RtbtReadModemRegister() {// addr = 0x0040AEA8 intOrPtr _v12; // _cfa_fffffff4 signed int* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed int* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t25; // _t25 signed int* _t33; // _t33 long long _t35; // _t35 _v32 = _t35; _v48 = _t33; _v36 = _t25; _v24 = &bbread; RtlFillMemory(2, 0, _v24); *_v24 = _v36 & 255; ioctl(); _v12 = 0; if(_v12 >= 0) { *_v48 = (_v24[0]) & 255; return; } perror(); return; } RtbtWriteModemRegister() {// addr = 0x0040AF2E intOrPtr _v12; // _cfa_fffffff4 signed int* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char _t20; // _t20 _unknown_ _t26; // _t26 long long _t33; // _t33 _v32 = _t33; _v36 = __cl; _v40 = _t20; _v24 = &bbwrite; RtlFillMemory(2, 0, _v24); *_v24 = _v36 & 255; (_v24[0]) = _v40 & 255; ioctl(); _v12 = 0; if(_v12 < 0) { perror(); return 0; } return 0; } BthInitializeAsic() {// addr = 0x0040AFB0 signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 signed int _v54; // _cfa_ffffffca signed int _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t126; // _t126 signed int _t137; // _t137 signed int _t149; // _t149 signed int _t153; // _t153 signed int _t157; // _t157 signed int _t158; // _t158 signed int _t162; // _t162 signed int _t178; // _t178 signed int _t182; // _t182 _unknown_ _t261; // _t261 long long _t334; // _t334 _v64 = _t334; _t126 = DebugPrint(0, _t261, __rcx, __rdx, _t334, __rsi) & 1; if(_t126 != 0) { _t126 = RT_PCI_IO_WRITE32(); } if((_t126 & 1) != 0) { RT_PCI_IO_WRITE32(); } _v9 = 32; _t137 = _v9 & 255 | (_v9 & 255) + 6 << 24 | (_v9 & 255) + 4 << 16 | (_v9 & 255) + 2 << 8; _v16 = _t137; if((_t137 & 1) != 0) { RT_PCI_IO_WRITE32(); } _t149 = (_v9 & 255) + 8 | (_v9 & 255) + 14 << 24 | (_v9 & 255) + 12 << 16 | (_v9 & 255) + 10 << 8; _v16 = _t149; if((_t149 & 1) != 0) { RT_PCI_IO_WRITE32(); } _v56 = *(_v64 + 32); if((_v54 & 65535) != 12944 || (_v56 & 65535) > 2) { if((_v54 & 65535) != 12944 || (_v56 & 65535) > 16) { _t335 = _v64; _t153 = RtbtWriteModemRegister(); _v20 = 0; if((_t153 & 1) == 0) { _v20 = 4294967295; _v40 = _v20; } else { __rcx = &_v20; __rsi = __rcx; _t335 = *_v64 + 2080; RT_PCI_IO_READ32(); _v40 = _v20; } _t157 = _v40 & 255 | 1; _v40 = _t157; _t158 = _t157 & 1; if(_t158 != 0) { _t335 = *_v64 + 2080; _t158 = RT_PCI_IO_WRITE32(); } *(_v64 + 191597) = 1; _v24 = 0; _v20 = 0; if((_t158 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { __rcx = &_v20; __rsi = __rcx; _t335 = *_v64 + 800; RT_PCI_IO_READ32(); _v24 = _v20; } _t162 = _v24 & 65535 | 128; _v24 = _t162; if((_t162 & 1) != 0) { _t335 = *_v64 + 800; RT_PCI_IO_WRITE32(); } *(_v64 + 191598) = 1; _t283 = _v64; *(_v64 + 191596) = 1; DebugPrint(0, _v64, __rcx, __rdx, _t335, __rsi); } else { _t335 = _v64; _t178 = RtbtWriteModemRegister(); _v20 = 0; if((_t178 & 1) == 0) { _v20 = 4294967295; _v40 = _v20; } else { __rcx = &_v20; __rsi = __rcx; _t335 = *_v64 + 2080; RT_PCI_IO_READ32(); _v40 = _v20; } _t182 = _v40 & 255 | 1; _v40 = _t182; if((_t182 & 1) != 0) { _t335 = *_v64 + 2080; RT_PCI_IO_WRITE32(); } *(_v64 + 191597) = 0; *(_v64 + 191598) = 0; _t283 = _v64; *(_v64 + 191596) = 0; DebugPrint(0, _v64, __rcx, __rdx, _t335, __rsi); } } else { _t335 = _v64; RtbtWriteModemRegister(); *(_v64 + 191597) = 0; *(_v64 + 191598) = 0; _t283 = _v64; *(_v64 + 191596) = 0; DebugPrint(0, _v64, __rcx, __rdx, _v64, __rsi); } DebugPrint(0, _t283, __rcx, __rdx, _t335, __rsi); return; } BthDisableBtFunc() {// addr = 0x0040B45E signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t27; // _t27 _unknown_ _t42; // _t42 _unknown_ _t44; // _t44 long long _t47; // _t47 _unknown_ _t50; // _t50 _v32 = _t47; DebugPrint(0, _t27, _t42, _t44, _t47, _t50); *(_v32 + 191488) = *(_v32 + 191488) & 254; RT_PCI_IO_READ32(); _v16 = _v16 & 254; RT_PCI_IO_WRITE32(); return; } BthEnableBtFunc( _unknown_ __rax // r53 ) {// addr = 0x0040B505 char _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t56; // _t56 signed int _t105; // _t105 _unknown_ _t124; // _t124 long long _t131; // _t131 _v48 = _t131; _v32 = *(_v48 + 191488); _v24 = 0; if((DebugPrint(0, *(_v48 + 191488), *(_v48 + 191488), _t124, _t131, __rsi) & 1) == 0) { _v32 = _v32 | 5; _v32 = _v32 & 253; _t56 = RT_PCI_IO_WRITE32(); *(_v48 + 191488) = *(_v48 + 191488) | 5; *(_v48 + 191488) = *(_v48 + 191488) & 253; while(1) { _v24 = _v24 + 1; _v32 = 0; _v12 = 0; _t105 = *(_v48 + 191488); if((_t56 & 1) == 0) { _v12 = 4294967295; _v32 = _t105; } else { __rsi = &_v12; RT_PCI_IO_READ32(); _v32 = *_v48 + 800; } if(_v24 > 1000) { break; } if(_v32 == 0) { continue; } L10: *(_v48 + 191488) = *(_v48 + 191488) | 7; RT_PCI_IO_WRITE32(); DebugPrint(0, _v24, _v24, *(_v48 + 191488) | 7, *_v48 + 960, __rsi); return; } goto L10; } return; } BthWaitForDmaIdle() {// addr = 0x0040B6DF signed int _v12; // _cfa_fffffff4 signed char _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t26; // _t26 intOrPtr _t56; // _t56 _v32 = __rdi; _v36 = _t56; _v12 = 0; while(1) { _v16 = 0; _t62 = *((intOrPtr*)(_v32 + 191488)); if((_t26 & 1) == 0) { _v16 = 4294967295; _v24 = _v16; } else { _t62 = *_v32 + 516; __rcx = &_v16; __rsi = __rcx; __rdi = *_v32 + 516; RT_PCI_IO_READ32(); _v24 = _v16; } if((_v24 & 2) == 0 && (_v24 & 8) == 0) { break; } _v12 = _v12 + 1; KeStallExecutionProcessor(); _t26 = _v12; if(_t26 < _v36) { continue; } if((_v24 & 2) != 0 || (_v24 & 8) != 0) { r8d = (_v24 & 255) >> 3 & 1; DebugPrint(0, _t62, __rcx, __rdx, __rdi, __rsi); } return 0; } return 1; } BthDmaCfg() {// addr = 0x0040B7D9 signed char _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 _unknown_ _v48; // _cfa_ffffffd0 char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t94; // _t94 signed int _t95; // _t95 signed int _t103; // _t103 signed int _t104; // _t104 signed int _t135; // _t135 signed int _t137; // _t137 signed int _t141; // _t141 char* _t189; // _t189 long long _t232; // _t232 intOrPtr _t233; // _t233 intOrPtr _t234; // _t234 _v48 = _t232; _v56 = __rsi; __rcx = _v56; _t94 = DebugPrint(0, _v56, __rcx, __rdx, _t232, __rsi); _v24 = 0; _v32 = 0; _t189 = _v56; if(_t189 != 1) { if(_t189 < 1) { _v12 = 0; if((_t94 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { __rcx = &_v12; __rsi = __rcx; RT_PCI_IO_READ32(); _v24 = _v12; } _v24 = _v24 & 0xfb; _t135 = _v24 & 0xfe; _v24 = _t135; if((_t135 & 1) != 0) { RT_PCI_IO_WRITE32(); } _t234 = _v48; _t137 = BthWaitForDmaIdle(); _v12 = 0; if((_t137 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { __rcx = &_v12; __rsi = __rcx; _t234 = *_v48 + 516; RT_PCI_IO_READ32(); _v24 = _v12; } _t141 = _v24 & 4080; _v24 = _t141; _t216 = *((intOrPtr*)(_v48 + 191488)); if((_t141 & 1) != 0) { _t216 = *_v48 + 516; _t234 = *_v48 + 516; RT_PCI_IO_WRITE32(); } DebugPrint(0, _t216, __rcx, __rdx, _t234, __rsi); return; } return; } _t233 = _v48; _t95 = BthWaitForDmaIdle(); _v12 = 0; if((_t95 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { __rcx = &_v12; __rsi = __rcx; _t233 = *_v48 + 516; RT_PCI_IO_READ32(); _v24 = _v12; } _v24 = _v24 & 255 | 64; _v24 = _v24 & 255 | 4; _t103 = _v24 & 255 | 1; _v24 = _t103; _t104 = _t103 & 1; if(_t104 != 0) { _t233 = *_v48 + 516; _t104 = RT_PCI_IO_WRITE32(); } _v24 = 0; _v12 = 0; _t196 = *((intOrPtr*)(_v48 + 191488)); if((_t104 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { _t196 = *_v48 + 516; __rcx = &_v12; __rsi = __rcx; _t233 = *_v48 + 516; RT_PCI_IO_READ32(); _v24 = _v12; } DebugPrint(0, _t196, __rcx, __rdx, _t233, __rsi); if((_v24 & 2) != 0 || (_v24 & 8) != 0) { r8d = (_v24 & 255) >> 3 & 1; DebugPrint(0, _t196, __rcx, __rdx, _t233, __rsi); } return; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x0040BB3C signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } casting_uint24( signed char* __rdi // r57 ) {// addr = 0x0040BB55 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff) << 8) << 8; } HCI_Param_Get_Bd_Addr( signed char* __rdi, // r57 signed int* __rsi // r58 ) {// addr = 0x0040BB97 signed char* _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v24 = *_v16 & 255; (_v24[0]) = (_v16[1]) & 255; (_v24[0]) = (_v16[2]) & 255; (_v24[0]) = (_v16[3]) & 255; (_v24[1]) = (_v16[4]) & 255; (_v24[1]) = (_v16[5]) & 255; return; } EG_Event_Filter_Initialise() {// addr = 0x0040BBFD long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; __edx = 32; __esi = 0; RtlFillMemory(32, 0, _v16); return; } EG_Set_Event_Filter_Command( _unknown_ __eax // r0 ) {// addr = 0x0040BC21 _unknown_ _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t51; // _t51 char _t60; // _t60 long long _t100; // _t100 _v16 = _t100; _v32 = __rcx; _v20 = sil; _v24 = _t60; _t51 = _v20 & 255; if(_t51 == 1) { if(_v24 != 0) { if(_v24 != 1) { if(_v24 == 2) { *((char*)(_v16 + 15)) = 1; HCI_Param_Get_Bd_Addr(_v32, _v16 + 8); } } else { *((char*)(_v16 + 15)) = 1; *_v16 = casting_uint24(_v32); *((intOrPtr*)(_v16 + 4)) = casting_uint24(_v32 + 3); } } else { RtlFillMemory(16, 0, _v16); } goto L19; } else { if(_t51 == 2) { if(_v24 != 0) { if(_v24 != 1) { if(_v24 == 2) { *((char*)(_v16 + 31)) = 1; HCI_Param_Get_Bd_Addr(_v32, _v16 + 24); *((char*)(_v16 + 30)) = casting_uint8(_v32 + 6); } } else { *((char*)(_v16 + 31)) = 1; *((intOrPtr*)(_v16 + 16)) = casting_uint24(_v32); *((intOrPtr*)(_v16 + 20)) = casting_uint24(_v32 + 3); *((char*)(_v16 + 30)) = casting_uint8(_v32 + 6); } } else { RtlFillMemory(16, 0, _v16 + 16); *((char*)(_v16 + 30)) = casting_uint8(_v32); } } else { if(_t51 == 0) { EG_Event_Filter_Initialise(); } } L19: return 0; } } EG_Filter_Event( char __ecx // r2 ) {// addr = 0x0040BDC4 signed char _v9; // _cfa_fffffff7 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed int* _t86; // _t86 intOrPtr _t88; // _t88 _unknown_ _t90; // _t90 signed long long _t95; // _t95 signed int* _t99; // _t99 signed int* _t104; // _t104 long long _t117; // _t117 long long _t119; // _t119 _v32 = _t117; _v40 = _t119; _v48 = _t104; _v52 = __ecx; _t86 = _v48; _v24 = *_t86; _v9 = 0; _t88 = _v32 + (_t86 - 1 << 4); if(( *(_t88 + 15) & 255) == 0) { _v9 = 1; goto L8; } else { _t95 = _v32 + (_t88 - 1 << 4); if( *(_t95 + 4) != 0 && _v48 != 0) { _t99 = _v32 + (_t95 - 1 << 4); _t95 = _v32 + (_t99 - 1 << 4); if(( *(_t95 + 4) & (_v24 ^ *_t99)) == 0) { _v9 = 1; } } _t88 = _v40; RtlCompareMemory(6, (_t95 << 4) + _v32 + 8, _t88); if(_t95 == 0) { _v9 = 1; } L8: if(_v9 != 0) { if(_v52 != 2) { return 1; } _t90 = _v32 + (_t88 - 1 << 4); if(( *(_t90 + 14) & 255) == 0) { _t90 = _v32 + (_t90 - 1 << 4); *(_t90 + 14) = 1; } return *(_v32 + (_t90 - 1 << 4) + 14) & 0xff; } return 0; } } du_size_of( long long __rdi // r57 ) {// addr = 0x0040BF14 intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v24 = _v32; _v12 = 0; while(_v24 != 0) { _v12 = _v12 + *((intOrPtr*)(_v24 + 16)); _v24 = *_v24; } return _v12; } EG_Initialise() {// addr = 0x0040BF4E long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; EG_EventMaskInitialise(_v16); EG_Event_Filter_Initialise(); EG_LEEventMaskInitialise(_v16); return; } HCI_Fill_Data_Unit( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040BF80 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; return; } EG_Generate_Command_Complete_Event() {// addr = 0x0040BFB6 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 signed short* _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 long long _t49; // _t49 long long _t53; // _t53 signed short* _t57; // _t57 _v96 = _t53; _v104 = _t57; _v112 = _t49; _v9 = 1; _v32 = &_v88; _v24 = _v96 - 190168; HCI_Fill_Data_Unit(1, &_v9, _v32, _v32 + 24); _v32 = _v32 + 24; HCI_Fill_Data_Unit(2, _v104, _v32, _v112); r8d = *_v104 & 0x3ff; DebugPrint(0, _v104, __rcx, _v104, _v32, _v112); EG_Generate_Event(); return; } EG_Generate_Command_Status_Event() {// addr = 0x0040C07C char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 long long _t42; // _t42 long long _t47; // _t47 long long _t52; // _t52 _v112 = _t47; _v120 = _t52; _v128 = _t42; _v9 = 1; _v32 = &_v104; _v24 = _v112 - 190168; HCI_Fill_Data_Unit(1, _v120, _v32, _v32 + 24); _v32 = _v32 + 24; HCI_Fill_Data_Unit(1, &_v9, _v32, _v32 + 24); _v32 = _v32 + 24; HCI_Fill_Data_Unit(2, _v128, _v32, _v32 + 24); EG_Generate_Event(); return; } EG_Generate_Hardware_Error_Event() {// addr = 0x0040C12B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t30; // _t30 _v64 = _t30; _v72 = __rsi; if(( *(_v64 + 33) & 0x80) != 0) { _v24 = &_v56; _v16 = _v64 - 190168; HCI_Fill_Data_Unit(1, _v72, _v24, __rsi); EG_Generate_Event(); return; } return; } EG_Generate_Loopback_Command_Event() {// addr = 0x0040C1A4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t42; // _t42 long long _t46; // _t46 long long _t50; // _t50 _v80 = _t46; _v88 = _t50; _v96 = _t42; if(( *(_v80 + 35) & 1) != 0) { _v24 = &_v72; _v16 = _v80 - 190168; HCI_Fill_Data_Unit(3, _v88, _v24, _v24 + 24); _v24 = _v24 + 24; HCI_Fill_Data_Unit( *(_v88 + 2) & 0xff, _v96, _v24, _v24 + 24); EG_Generate_Event(); return; } return; } EG_Generate_Number_Of_Complete_Event() {// addr = 0x0040C249 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 long long _t42; // _t42 long long _t47; // _t47 long long _t52; // _t52 _v112 = _t47; _v120 = _t52; _v128 = _t42; _v9 = 1; _v32 = &_v104; _v24 = _v112 - 190168; HCI_Fill_Data_Unit(1, &_v9, _v32, _v32 + 24); _v32 = _v32 + 24; HCI_Fill_Data_Unit(2, _v120, _v32, _v32 + 24); _v32 = _v32 + 24; HCI_Fill_Data_Unit(2, _v128, _v32, _v32 + 24); EG_Generate_Event(); return; } EG_Generate_Flush_Occured_Event() {// addr = 0x0040C2F8 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t26; // _t26 _v64 = _t26; _v72 = __rsi; _v24 = &_v56; _v16 = _v64 - 190168; HCI_Fill_Data_Unit(2, _v72, _v24, __rsi); _v24 = _v24 + 24; EG_Generate_Event(); return; } EG_Generate_Enhanced_Flush_Complete_Event() {// addr = 0x0040C360 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t26; // _t26 _v64 = _t26; _v72 = __rsi; _v24 = &_v56; _v16 = _v64 - 190168; HCI_Fill_Data_Unit(2, _v72, _v24, __rsi); _v24 = _v24 + 24; EG_Generate_Event(); return; } EG_Generate_Radio_Change_Event() {// addr = 0x0040C3C8 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 intOrPtr _v76; // _cfa_ffffffb4 _unknown_ __rbp; // r59 long long _t26; // _t26 _v64 = _t26; _v72 = __rsi; _v76 = __edx; _v24 = &_v56; _v16 = _v64 - 190168; HCI_Fill_Data_Unit(_v76, _v72, _v24, __rsi); EG_Generate_Event(); return; } EG_Generate_Vendor_Specific_Event() {// addr = 0x0040C42C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 intOrPtr _v76; // _cfa_ffffffb4 _unknown_ __rbp; // r59 _unknown_ _t15; // _t15 long long _t31; // _t31 _v64 = _t31; _v72 = __rsi; _v76 = __edx; _v24 = &_v56; _v16 = _v64 - 190168; EC_CheckEventPermission(); if(_t15 != 0) { HCI_Fill_Data_Unit(_v76, _v72, _v24, __rsi); EG_Generate_Event(); return; } return; } EG_Generate_Event() {// addr = 0x0040C4AC signed int _v9; // _cfa_fffffff7 signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 signed char _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed int* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int* _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 signed int* _v80; // _cfa_ffffffb0 signed char _v84; // _cfa_ffffffac long long _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed char _t95; // _t95 _unknown_ _t103; // _t103 signed int* _t105; // _t105 signed int* _t108; // _t108 long long _t122; // _t122 signed int* _t124; // _t124 signed int* _t126; // _t126 _v80 = _t124; _v96 = _t122; _v104 = __rcx; _v84 = _t95; _v36 = 0; _v9 = 0; _v32 = 0; DebugPrint(0, _t103, __rcx, _t122, _t124, __rsi); _v9 = du_size_of(_v96); _v24 = _v84 & 255; _v23 = _v9 & 255; _t105 = _v80; _t126 = _t105; QUEUE_EnqueueRequest(); _v48 = _t105; if(_v48 == 0) { DebugPrint(0, _t105, __rcx, _t122, _t126, __rsi); _v36 = 9; L14: return; } _t123 = _v104; (_v48[0xe]) = _v104; _v72 = _v96; _t108 = _v48; QUEUE_GetDataBuf(_t108); _v64 = _t108; while(_v72 != 0) { _v56 = *(_v72 + 8); if(_v56 != 0) { if( *((intOrPtr*)(_v72 + 16)) + _v32 <= (_v9 & 255)) { _v32 = _v32 + *((intOrPtr*)(_v72 + 16)); _v28 = 0; while( *((intOrPtr*)(_v72 + 16)) > _v28) { *_v64 = *_v56 & 255; _v64 = &(_v64[0]); _v56 = &(_v56[1]); _v28 = _v28 + 1; } _v72 = *_v72; continue; } _v36 = 10; QUEUE_EnqueueCancel(); r8d = *((intOrPtr*)(_v72 + 16)); DebugPrint(0, _v72, __rcx, _t123, _v80, __rsi); break; } _v36 = 10; QUEUE_EnqueueCancel(); break; } if(_v36 == 0) { QUEUE_EnqueueCommit(); } goto L14; } EG_Event_Composer( _unknown_ __eax, // r0 char _a8 // _cfa_8 ) {// addr = 0x0040C667 intOrPtr _v144; // _cfa_ffffff70 intOrPtr _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 char _v184; // _cfa_ffffff48 signed int _v185; // _cfa_ffffff47 signed char _v186; // _cfa_ffffff46 long long _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 long long _v216; // _cfa_ffffff28 long long _v224; // _cfa_ffffff20 long long _v232; // _cfa_ffffff18 intOrPtr _v236; // _cfa_ffffff14 intOrPtr _v240; // _cfa_ffffff10 char _v456; // _cfa_fffffe38 long long _v464; // _cfa_fffffe30 signed int _v468; // _cfa_fffffe2c _unknown_ __rbp; // r59 signed char _t56; // _t56 signed int _t60; // _t60 signed char _t76; // _t76 long long _t91; // _t91 intOrPtr* _t92; // _t92 long long _t105; // _t105 long long _t107; // _t107 intOrPtr* _t109; // _t109 long long _t115; // _t115 _v464 = _t115; _v168 = _t107; _v160 = _t105; _v152 = r8; _v144 = r9; if(__eax != 0) { asm("movaps [ebp-0x80], xmm0"); asm("movaps [ebp-0x70], xmm1"); asm("movaps [ebp-0x60], xmm2"); asm("movaps [ebp-0x50], xmm3"); asm("movaps [ebp-0x40], xmm4"); asm("movaps [ebp-0x30], xmm5"); asm("movaps [ebp-0x20], xmm6"); asm("movaps [ebp-0x10], xmm7"); } _t56 = _t76; _v468 = _t56; _v186 = 0; _v185 = 0; _v216 = &_v456; _v208 = _v464 - 190168; EC_CheckEventPermission(); if(_t56 != 0) { if(_v468 == 14 || _v468 == 15 || _v468 == 25) { return 11; } else { if(_v468 <= 61) { _v185 = *(((_v468 & 255) << 2) + (_v468 & 255) + ((_v468 & 255) << 2) + (_v468 & 255) + &event_param_table) & 255; if(_v185 <= 9) { _v240 = 16; _v236 = 48; _v232 = &_a8; _t91 = &_v184; _v224 = _t91; _v186 = 0; while(1) { _t60 = _v186 & 255; if(_t60 >= _v185) { break; } if(_v240 >= 48) { _t109 = _v232; _t92 = _t109; _v232 = _t109 + 8; } else { _t92 = _t91 + _v224; _v240 = _v240 + 8; } _v200 = *_t92; if(_v200 != 0) { __rsi = _v216 + 24; _t91 = _v216; HCI_Fill_Data_Unit( *(((_v468 & 255) << 2) + (_v468 & 255) + ((_v468 & 255) << 2) + (_v468 & 255) + (_v186 & 255) + 1 + &event_param_table) & 0xff, _v200, _t91, _v216 + 24); _v186 = _v186 + 1; _v216 = _v216 + 24; continue; } else { return 11; } } *(_v216 - 24) = 0; EG_Generate_Event(); return _t60; } return 11; } return 12; } } return 12; } EG_Event_Composer_With_Callback( _unknown_ __eax, // r0 signed char __edx, // r3 char _a8 // _cfa_8 ) {// addr = 0x0040C8D5 intOrPtr _v144; // _cfa_ffffff70 intOrPtr _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 char _v184; // _cfa_ffffff48 signed int _v185; // _cfa_ffffff47 signed char _v186; // _cfa_ffffff46 long long _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 long long _v216; // _cfa_ffffff28 long long _v224; // _cfa_ffffff20 long long _v232; // _cfa_ffffff18 intOrPtr _v236; // _cfa_ffffff14 intOrPtr _v240; // _cfa_ffffff10 char _v456; // _cfa_fffffe38 long long _v464; // _cfa_fffffe30 long long _v472; // _cfa_fffffe28 signed int _v476; // _cfa_fffffe24 _unknown_ __rbp; // r59 signed char _t57; // _t57 signed int _t61; // _t61 signed char _t70; // _t70 long long _t90; // _t90 intOrPtr* _t91; // _t91 long long _t104; // _t104 intOrPtr* _t108; // _t108 long long _t114; // _t114 long long _t118; // _t118 _t70 = __edx; _v464 = _t114; _v472 = _t118; _v160 = _t104; _v152 = r8; _v144 = r9; if(__eax != 0) { asm("movaps [ebp-0x80], xmm0"); asm("movaps [ebp-0x70], xmm1"); asm("movaps [ebp-0x60], xmm2"); asm("movaps [ebp-0x50], xmm3"); asm("movaps [ebp-0x40], xmm4"); asm("movaps [ebp-0x30], xmm5"); asm("movaps [ebp-0x20], xmm6"); asm("movaps [ebp-0x10], xmm7"); } _t57 = _t70; _v476 = _t57; _v186 = 0; _v185 = 0; _v216 = &_v456; _v208 = _v464 - 190168; EC_CheckEventPermission(); if(_t57 != 0) { if(_v476 == 14 || _v476 == 15 || _v476 == 25) { return 11; } else { if(_v476 <= 61) { _v185 = *(((_v476 & 255) << 2) + (_v476 & 255) + ((_v476 & 255) << 2) + (_v476 & 255) + &event_param_table) & 255; if(_v185 <= 9) { _v240 = 24; _v236 = 48; _v232 = &_a8; _t90 = &_v184; _v224 = _t90; _v186 = 0; while(1) { _t61 = _v186 & 255; if(_t61 >= _v185) { break; } if(_v240 >= 48) { _t108 = _v232; _t91 = _t108; _v232 = _t108 + 8; } else { _t91 = _t90 + _v224; _v240 = _v240 + 8; } _v200 = *_t91; if(_v200 != 0) { __ecx = *(((_v476 & 255) << 2) + (_v476 & 255) + ((_v476 & 255) << 2) + (_v476 & 255) + (_v186 & 255) + 1 + &event_param_table) & 0xff; _t90 = _v216; HCI_Fill_Data_Unit( *(((_v476 & 255) << 2) + (_v476 & 255) + ((_v476 & 255) << 2) + (_v476 & 255) + (_v186 & 255) + 1 + &event_param_table) & 0xff, _v200, _t90, _v216 + 24); _v186 = _v186 + 1; _v216 = _v216 + 24; continue; } else { return 11; } } *(_v216 - 24) = 0; EG_Generate_Event(); return _t61; } return 11; } return 12; } } return 12; } EC_CheckEventPermission() {// addr = 0x0040CB45 long long _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed char _t7; // _t7 long long _t9; // _t9 _v16 = _t9; _v20 = _t7; EG_SelectEventFilter(_v20 & 255, _v16); return; } EG_Generate_LE_Event() {// addr = 0x0040CB6A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t28; // _t28 _v16 = _t28; _v24 = __rsi; if(EG_SelectEventFilter(62, _v16 + 190168) != 0) { if(EG_SelectLEEventFilter( *( *(_v24 + 8)) & 0xff, _v16 + 190168) != 0) { EG_Generate_Event(); return; } return; } return; } EG_EventMaskInitialise( long long __rdi // r57 ) {// addr = 0x0040CBF0 long long _v24; // _cfa_ffffffe8 intOrPtr* __rbx; // r54 _unknown_ __rbp; // r59 __rdi = __rdi; _v24 = __rdi; __rbx = _v24 + 32; *__rbx = 4294967295; *((intOrPtr*)(__rbx + 4)) = 1073741823; return; } EG_SetEventMaskCommand( intOrPtr __edx, // r3 intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x0040CC11 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr* __rbx; // r54 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; __edx = __edx; _v24 = __rdi; _v28 = __esi; _v32 = __edx; __rbx = _v24 + 32; *__rbx = _v28; *((intOrPtr*)(__rbx + 4)) = _v32; return 0; } EG_SelectEventFilter( signed char __esi, // r5 signed long long __rdi // r57 ) {// addr = 0x0040CC3E signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t19; // _t19 __rdi = __rdi; __esi = __esi; _push(r13); _push(r12); _push(__rbx); _v40 = __rdi; _v44 = __esi; _t19 = _v40; r12 = _t19 + 32; r13d = (_v44 & 255) - 1; r13d = r13d >> 5; _pop(__rbx); _pop(r12); _pop(r13); return *((_t19 << 2) + r12) >> __cl & 1; } EG_LEEventMaskInitialise( long long __rdi // r57 ) {// addr = 0x0040CC8F long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rdi = __rdi; _v24 = __rdi; *((long long*)(_v24 + 40)) = 31; return; } EG_SetLEEventMaskCommand( intOrPtr __edx, // r3 intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x0040CCAA long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr* __rbx; // r54 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; __edx = __edx; _v24 = __rdi; _v28 = __esi; _v32 = __edx; __rbx = _v24 + 40; *__rbx = _v28; *((intOrPtr*)(__rbx + 4)) = _v32; return 0; } EG_SelectLEEventFilter( signed char __esi, // r5 signed long long __rdi // r57 ) {// addr = 0x0040CCD7 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t19; // _t19 __rdi = __rdi; __esi = __esi; _push(r13); _push(r12); _push(__rbx); _v40 = __rdi; _v44 = __esi; _t19 = _v40; r12 = _t19 + 40; r13d = (_v44 & 255) - 1; r13d = r13d >> 5; _pop(__rbx); _pop(r12); _pop(r13); return *((_t19 << 2) + r12) >> __cl & 1; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x0040CD28 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x0040CD41 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint24( signed char* __rdi // r57 ) {// addr = 0x0040CD70 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff) << 8) << 8; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0040CDB2 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040CE08 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040CE47 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } end_du( long long __rdi // r57 ) {// addr = 0x0040CE79 _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 0; return; } HCI_Param_Get_Bd_Addr( signed char* __rdi, // r57 signed int* __rsi // r58 ) {// addr = 0x0040CE8E signed char* _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v24 = *_v16 & 255; (_v24[0]) = (_v16[1]) & 255; (_v24[0]) = (_v16[2]) & 255; (_v24[0]) = (_v16[3]) & 255; (_v24[1]) = (_v16[4]) & 255; (_v24[1]) = (_v16[5]) & 255; return; } HCI_Param_Get_Link_Key( signed int* __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040CEF4 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int* _t11; // _t11 __rsi = __rsi; __rdi = __rdi; __rax = __rax; _v32 = __rdi; _v40 = __rsi; _v12 = 0; while(_v12 <= 15) { _t11 = __rax; __rax = __rax + _v40; *__rax = *(_v12 + _v32) & 255; _v12 = _v12 + 1; } return _t11; } HCI_Param_Get_Pdu_Bytes( intOrPtr __edx, // r3 signed int* __rax, // r53 signed char* __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040CF2D intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; __rax = __rax; _v32 = __rdi; _v40 = __rsi; _v44 = __edx; _v12 = 0; while(_v12 < _v44) { __rax = __rax + _v40; __rdx = &(__rdx[_v32]); *__rax = *__rdx & 255; _v12 = _v12 + 1; } return; } Dispatch_Baseband_Command() {// addr = 0x0040CF66 signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v184; // _cfa_ffffff48 long long _v192; // _cfa_ffffff40 _unknown_ _v198; // _cfa_ffffff3a signed short _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 _unknown_ __rbp; // r59 signed int _t41; // _t41 signed long long _t51; // _t51 long long _t52; // _t52 long long _t58; // _t58 long long _t62; // _t62 _v192 = _t62; _v200 = __esi; _v208 = _t58; _v10 = _v200 & 0x3ff; _v32 = &_v184; _v16 = 31; _t51 = _v32; __ecx = 1; write_du(1, &_v16, _t51, _v32 + 24); if(_v10 <= 109) { _t52 = *((intOrPtr*)(_t51 * 8 + &bb_dispatch_func_table)); _v24 = _t52; if(_v24 != 0) { _t41 = *(_t52 + &hc_bb_command_len) & 255; if(__dl == _t41) { L7: r8 = _v24; r8(); _v16 = _t41; if(_v16 == 0) { EG_Generate_Command_Complete_Event(); } return _v16; } _t41 = *(_t52 + &hc_bb_command_len) & 255; if(_t41 == 255) { goto L7; } return 18; } return 1; } return 1; } HCI_Set_Event_Mask_Command() {// addr = 0x0040D079 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t23; // _t23 _v32 = _t23; _v40 = __rsi; _v48 = __rdx; _v16 = casting_uint32(_v40); _v12 = casting_uint32(_v40 + 4); end_du( *_v48); __edx = _v12; __esi = _v16; EG_SetEventMaskCommand(_v12, _v16, _v32 + 190168); return; } HCI_Reset_Command() {// addr = 0x0040D0DB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 long long _t13; // _t13 _v16 = _t13; _v24 = __rsi; _v32 = __rdx; DebugPrint(0, _t9, __rcx, __rdx, _t13, __rsi); LM_SoftReset(); end_du( *_v32); return 127; } HCI_Set_Event_Filter_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D12A char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t35; // _t35 long long _t59; // _t59 long long _t67; // _t67 _v32 = _t59; _v40 = _t67; _v48 = __rdx; _v11 = casting_uint8(_v40); _v10 = casting_uint8(_v40 + 1); _v16 = 12; if(_v11 <= 2) { if(_v10 <= 2) { _t35 = _v11 & 255; if(_t35 == 1) { L17: _v16 = EG_Set_Event_Filter_Command(_v11 & 255); end_du( *_v48); return _v16; } if(_t35 != 2) { goto L17; } if(_v10 != 0) { if(_v10 != 1) { _v9 = casting_uint8(_v40 + 8); if(_v9 <= 3) { L16: goto L17; } return 18; } _v9 = casting_uint8(_v40 + 8); if(_v9 <= 3) { goto L16; } return 18; } _v9 = casting_uint8(_v40 + 2); if(_v9 <= 3) { goto L16; } return 18; } return 18; } return 18; } HCI_Flush_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D243 short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t23; // _t23 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t23; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { _v16 = DM_Flush_Command(); return _v16; } return 18; } HCI_Read_PIN_Type_Command() {// addr = 0x0040D2A2 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; LMconfig_Read_Pin_Code_Type(); return; } HCI_Write_PIN_Type_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D2D8 signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t22; _v16 = 0; _v9 = casting_uint8(_v40); if(_v9 <= 1) { __esi = _v9 & 255; _v16 = LMconfig_Set_Pin_Code_Type(_v9 & 255, _v32 + 60216); end_du( *_v48); return _v16; } return 18; } HCI_Create_New_Unit_Key_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D33F intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t19; // _t19 long long _t21; // _t21 long long _t24; // _t24 _v32 = _t21; _v40 = _t24; _v48 = _t19; _v12 = 12; _v12 = LMsec_HCI_LM_Create_New_Unit_Key(__eflags); end_du( *_v48); return _v12; } HCI_Read_Stored_Link_Key_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D391 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 char _t21; // _t21 long long _t42; // _t42 long long _t44; // _t44 long long _t50; // _t50 _v32 = _t44; _v40 = _t50; _v48 = _t42; _v16 = 12; _v9 = 0; HCI_Param_Get_Bd_Addr(_v40, ?_? ( &_v24)); _t21 = casting_uint8(_v40 + 6); _v9 = _t21; if(_v9 <= 1) { r8d = &num_keys_read.7862; LMkeydb_LM_Read_Stored_Link_Key(_v32); _v16 = _t21; write_du(2, ?_? ( &_v24), *_v48 + 24, *_v48 + 48); write_du(2, &_v24, *_v48 + 48, *_v48 + 48); return _v16; } return 18; } HCI_Write_Stored_Link_Key_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D454 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 intOrPtr _v48; // _cfa_ffffffd0 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 intOrPtr _t27; // _t27 _unknown_ _t32; // _t32 long long _t43; // _t43 long long _t49; // _t49 long long _t55; // _t55 _v64 = _t49; _v72 = _t55; _v80 = _t43; _v16 = *fs:0x28]; _v48 = 0; _v41 = casting_uint8(_v72); if(_v41 == 0) { L2: _t27 = 18; L6: if(_t32 == 0) { return _t27; } __stack_chk_fail(); return _t27; } _t32 = _v41 - 11; if(_t32 <= 0) { if(_v41 <= 1) { HCI_Param_Get_Bd_Addr(_v72 + 1, &_v56); HCI_Param_Get_Link_Key( ?_? ( &_v40), _v72 + 7, &_v40); _v48 = LMkeydb_Write_Link_Key(); num_keys_written.7871 = _v48 == 0; __ecx = 1; write_du(1, ?_? ( &_v40), *_v80 + 24, &_v40); _t27 = _v48; } else { _t27 = 12; } goto L6; } goto L2; } HCI_Delete_Stored_Link_Key_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D53C signed char _v9; // _cfa_fffffff7 signed char _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t18; // _t18 long long _t33; // _t33 long long _t35; // _t35 long long _t40; // _t40 _v32 = _t35; _v40 = _t40; _v48 = _t33; _v9 = 0; HCI_Param_Get_Bd_Addr(_v40, ?_? ( &_v24)); _t18 = casting_uint8(_v40 + 6); _v9 = _t18; if(_v9 <= 1) { LMkeydb_LM_Delete_Stored_Link_Key(_v9 & 255, ?_? ( &_v24), __rcx); _v16 = _t18; write_du(2, &_v24, *_v48 + 24, &_v24); return _v16; } return 18; } HCI_Write_Local_Name_Command( _unknown_ __eax, // r0 _unknown_ __eflags // r9 ) {// addr = 0x0040D5D1 long long _v16; // _cfa_fffffff0 char _v264; // _cfa_fffffef8 intOrPtr _v268; // _cfa_fffffef4 long long _v288; // _cfa_fffffee0 _unknown_ _v296; // _cfa_fffffed8 _unknown_ _v304; // _cfa_fffffed0 _unknown_ __rbp; // r59 intOrPtr _t18; // _t18 signed char* _t29; // _t29 long long _t32; // _t32 long long _t36; // _t36 __eflags = __eflags; _v288 = _t32; _v296 = _t36; _v304 = _t29; _v16 = *fs:0x28]; _v268 = 12; HCI_Param_Get_Pdu_Bytes(248, _v296, _t29, _v296, &_v264); _v268 = BTCFG_WriteLocalName(); end_du( *_v304); _t18 = _v268; if(__eflags != 0) { __stack_chk_fail(); return _t18; } return _t18; } HCI_Read_Local_Name_Command() {// addr = 0x0040D681 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadLocalName(); return; } HCI_Read_Connection_Accept_Timeout_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D6B7 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadConnectionAcceptTimeout(); return _v12; } HCI_Write_Connection_Accept_Timeout_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D6FA signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t25; // _t25 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = _t25; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 == 0 || _v10 > 46400) { return 18; } else { __esi = _v10 & 65535; _v16 = BTCFG_WriteConnectionAcceptTimeout(_v10 & 65535, _v32 + 190504); end_du( *_v48); return _v16; } } HCI_Read_Page_Timeout_Command() {// addr = 0x0040D76B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadPageTimeout(); return; } HCI_Write_Page_Timeout_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D7A1 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t25; // _t25 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = _t25; _v16 = 12; _v10 = casting_uint16(_v40); end_du( *_v48); if(_v10 == 0) { _v16 = 18; } if(_v16 != 18) { __esi = _v10 & 65535; _v16 = BTCFG_WritePageTimeout(_v10 & 65535, _v32 + 190504); } return _v16; } HCI_Read_Scan_Enable_Command() {// addr = 0x0040D810 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadScanEnable(); return; } HCI_Write_Scan_Enable_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D846 signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 _v32 = _t26; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v9 = *_v40 & 255; end_du( *_v48); if(_v9 > 3) { _v16 = 18; } if(_v16 != 18) { _v16 = BTCFG_WriteScanEnable(); } return _v16 | 127; } HCI_Read_Page_Scan_Activity_Command() {// addr = 0x0040D8AA long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadPageScanActivity(_v16 + 190504); return; } HCI_Write_Page_Scan_Activity_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D8E0 short _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 short _t24; // _t24 long long _t35; // _t35 _v32 = _t35; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v12 = casting_uint16(_v40); _t24 = casting_uint16(_v40 + 2); _v10 = _t24; end_du( *_v48); if(_v12 <= 17 || _v12 > 4096) { _v16 = 18; } else { if(_v10 <= 16 || _v10 > 4096) { _v16 = 18; } } if(_v16 != 18) { LMscan_Change_Page_Scan_Activity(); _v16 = _t24; } return _v16; } HCI_Read_Inquiry_Scan_Activity_Command() {// addr = 0x0040D980 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadInquiryScanActivity(_v16 + 190504); return; } HCI_Write_Inquiry_Scan_Activity_Command( _unknown_ __eax // r0 ) {// addr = 0x0040D9B6 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t38; // _t38 _v32 = _t38; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); end_du( *_v48); if(_v12 <= 17 || _v12 > 4096) { _v16 = 18; } else { if(_v10 <= 16 || _v10 > 4096) { _v16 = 18; } } if(_v16 != 18) { __edx = _v10 & 65535; __esi = _v12 & 65535; _v16 = BTCFG_WriteInquiryScanActivity(_v10 & 65535, _v12 & 65535, _v32 + 190504); } return _v16; } HCI_Read_Authentication_Enable_Command() {// addr = 0x0040DA5D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t11; // _t11 long long _t13; // _t13 _v16 = _t11; _v24 = _t13; _v32 = _t8; LMsec_HCI_Read_Authentication_Enable(); return; } HCI_Write_Authentication_Enable_Command( _unknown_ __eax // r0 ) {// addr = 0x0040DA90 signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t22; _v16 = 0; _v9 = casting_uint8(_v40); if(_v9 <= 1) { __esi = _v9 & 255; _v16 = LMsec_HCI_Write_Authentication_Enable(_v9 & 255, _v32 + 60216); end_du( *_v48); return _v16; } return 18; } HCI_Read_Encryption_Mode_Command() {// addr = 0x0040DAF7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t11; // _t11 long long _t13; // _t13 _v16 = _t11; _v24 = _t13; _v32 = _t8; LMconfig_Read_Encryption_Mode(); return; } HCI_Write_Encryption_Mode_Command() {// addr = 0x0040DB2A signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t15; // _t15 long long _t18; // _t18 _v32 = _t18; _v40 = __rsi; _v48 = _t15; _v9 = casting_uint8(_v40); end_du( *_v48); __esi = _v9 & 255; LMconfig_Write_Encryption_Mode(_v9 & 255, _v32 + 60216); return; } HCI_Read_Class_of_Device_Command() {// addr = 0x0040DB77 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadClassOfDevice(); return; } HCI_Write_Class_of_Device_Command() {// addr = 0x0040DBAD intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t15; // _t15 _v32 = _t15; _v40 = __rsi; _v48 = __rdx; _v12 = casting_uint24(_v40); end_du( *_v48); BTCFG_WriteClassOfDevice(); return; } HCI_Read_Voice_Setting_Command( _unknown_ __eax // r0 ) {// addr = 0x0040DBF2 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadVoiceSetting(); return _v12; } HCI_Write_Voice_Setting_Command( _unknown_ __eax // r0 ) {// addr = 0x0040DC35 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t20; // _t20 long long _t23; // _t23 _v32 = _t23; _v40 = __rsi; _v48 = _t20; _v16 = 12; _v10 = casting_uint16(_v40); __esi = _v10 & 65535; _v16 = BTCFG_WriteVoiceSetting(_v10 & 65535, _v32 + 190504); end_du( *_v48); return _v16; } HCI_Read_Automatic_Flush_Timeout_Command() {// addr = 0x0040DC90 short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t18; // _t18 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v48 = _t18; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { LM_ReadFlushTimeoutRequest(); return; } return; } HCI_Write_Automatic_Flush_Timeout_Command() {// addr = 0x0040DCE2 signed short _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t78; // _t78 long long _t81; // _t81 long long _t84; // _t84 long long _t90; // _t90 _v32 = _t84; _v40 = _t90; _v48 = _t81; _v16 = 31; _v10 = casting_uint16(_v40); _t69 = _v40 + 2; _v12 = casting_uint16(_t69); if(_v10 <= 3839) { if(_v12 <= 2047) { _t83 = _v32 + 60216; _t87 = _v32 + 60216; LM_Find_Link_Table_Entry_By_Connection_Handle(_v10 & 65535, _t69, _v32 + 60216); _v24 = _t69; if(_v12 == 0) { L7: DebugPrint(0, _t69, _t78, _t83, _t87, _t90); L9: if(_v24 != 0 && LCCMD_SetFlushTimeoutRequest() != 0) { _v16 = 0; } write_end_du(2, *_v48 + 24, _v24 + 626); return _v16; } _t69 = _v32; if(( *(_v32 + 191098) & 65535) == _v12) { goto L7; } _t69 = _v32; if(( *(_v32 + 191098) & 65535) <= 2047) { r8d = *(_v32 + 191098) & 0xffff; DebugPrint(0, _v32, _t78, _t83, _t87, _t90); _v12 = *(_v32 + 191098) & 65535; goto L9; } goto L7; } return 18; } return 18; } HCI_Read_Num_Broadcast_Retransmissions_Command( _unknown_ __eax // r0 ) {// addr = 0x0040DE46 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadNumOfBroadcastRetransmissions(); return _v12; } HCI_Write_Num_Broadcast_Retransmissions_Command( _unknown_ __eax // r0 ) {// addr = 0x0040DE89 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 _v32 = _t22; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v9 = casting_uint8(_v40); if(_v9 != 255) { _v16 = BTCFG_WriteNumOfBroadcastRetransmissions(_t14); end_du( *_v48); return _v16; } return 18; } HCI_Read_Hold_Mode_Activity_Command( _unknown_ __eax // r0 ) {// addr = 0x0040DEE9 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadHoldModeActivity(); return _v12; } HCI_Write_Hold_Mode_Activity_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040DF2C intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; _v12 = 12; return _v12; } HCI_Read_Transmit_Power_Level_Command() {// addr = 0x0040DF48 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 _v32 = _t26; _v40 = __rsi; _v48 = __rdx; _v12 = casting_uint16(_v40); _v9 = casting_uint8(_v40 + 2); if(_v12 <= 3839) { if(_v9 <= 1) { LMdm_Read_Transmit_Power_Level(_t16, _v32); return; } return; } return; } HCI_Read_Synchronous_Flow_Control_Enable_Command( _unknown_ __eax // r0 ) {// addr = 0x0040DFBC intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadSynchronousFlowControlEnable(); return _v12; } HCI_Write_Synchronous_Flow_Control_Enable_Command( _unknown_ __eax // r0 ) {// addr = 0x0040DFFF signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t22; _v16 = 12; _v9 = casting_uint8(_v40); if(_v9 <= 1) { __esi = _v9 & 255; _v16 = BTCFG_WriteSynchronousFlowControlEnable(_v9 & 255, _v32 + 190504); end_du( *_v48); return _v16; } return 18; } HCI_Set_Controller_to_Host_Flow_Control_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E066 signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t25; // _t25 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = _t25; _v16 = 12; _v9 = *_v40 & 255; end_du( *_v48); if(_v9 > 3) { _v16 = 18; } if(_v16 != 18) { __esi = _v9 & 255; _v16 = HCI_Set_Controller_To_Host_Flow_Control(_v9 & 255, _v32 + 190168); } return _v16; } HCI_Host_Buffer_Size_Command() {// addr = 0x0040E0CE signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t35; // _t35 _v32 = _t35; _v40 = __rsi; _v48 = __rdx; _v16 = casting_uint16(_v40); _v9 = casting_uint8(_v40 + 2); _v14 = casting_uint16(_v40 + 3); _v12 = casting_uint16(_v40 + 5); end_du( *_v48); __ecx = _v14 & 65535; __edx = _v9 & 255; r8d = _v12 & 65535; HCI_Set_Host_Buffer_Size(_v14 & 65535, _v9 & 255, _v16 & 65535, _v32 + 190168); return; } HCI_Host_Number_of_Completed_Packets_Command() {// addr = 0x0040E163 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v32 = __rdx; end_du( *_v32); return 0; } HCI_Read_Link_Supervision_Timeout_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E18D short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t23; // _t23 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t23; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { _v16 = LMqos_LM_Read_Supervision_Timeout(_v32); return _v16; } return 18; } HCI_Write_Link_Supervision_Timeout_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E1EC short _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); if(_v12 <= 3839) { _v16 = LMqos_LM_Write_Supervision_Timeout(_v32); return 127; } return 18; } HCI_Read_Number_of_Supported_IAC_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E263 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v48 = __rdx; _v12 = 12; _v12 = BTCFG_ReadNumberOfSupportedIAC(); return _v12; } HCI_Read_Current_IAC_LAP_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E299 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTSTS_ReadCurrentIACLAP(_v32 + 191308); return _v12; } HCI_Write_Current_IAC_LAP_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E2DC signed char _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 intOrPtr _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t58; // _t58 long long _t65; // _t65 long long _t68; // _t68 _v48 = _t68; _v56 = __rsi; _v64 = _t65; _v32 = 12; _t58 = _v56; _v25 = casting_uint8(_t58); if(_v25 == 0 || _v25 > 64) { return 18; } if(_v25 > 2) { _v25 = 2; } _v26 = 0; while((_v26 & 255) < _v25) { _t58 = _t58 + 1 + _v56; *((intOrPtr*)(__rbp + (_v26 & 255) * 4 - 32)) = casting_uint24(_t58); if( *((intOrPtr*)(__rbp + _t58 * 4 - 32)) <= 10390271 || *((intOrPtr*)(__rbp + _t58 * 4 - 32)) > 10390335) { return 18; } else { _v26 = _v26 + 1; continue; } } end_du( *_v64); _v32 = BTSTS_WriteCurrentIACLAP(_v25 & 255, _v56 + 1); return _v32; } HCI_Read_Page_Scan_Period_Mode_Command() {// addr = 0x0040E3C7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v32 = __rdx; end_du( *_v32); return 12; } HCI_Write_Page_Scan_Period_Mode_Command() {// addr = 0x0040E3F1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v32 = __rdx; end_du( *_v32); return 12; } HCI_Read_Page_Scan_Mode_Command() {// addr = 0x0040E41B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v32 = __rdx; end_du( *_v32); return 12; } HCI_Write_Page_Scan_Mode_Command() {// addr = 0x0040E445 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v32 = __rdx; end_du( *_v32); return 12; } HCI_Set_AFH_Host_Channel_Classification_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E46F long long _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 char _v57; // _cfa_ffffffc7 char _v58; // _cfa_ffffffc6 intOrPtr _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 _unknown_ _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t40; // _t40 _unknown_ _t46; // _t46 signed int* _t48; // _t48 signed char* _t52; // _t52 long long _t56; // _t56 long long _t60; // _t60 _v80 = _t56; _v88 = _t60; _v96 = _t52; _v32 = *fs:0x28]; _v58 = 0; _v57 = 0; _v64 = 12; _t48 = _v88; HCI_Param_Get_Pdu_Bytes(10, _t48, _t52, _t48, &_v56); _v58 = 0; while(_v58 <= 78) { _v57 = _v57 + (( *(__rbp + _t48 - 48) & 0xff) >> __cl != 0); if(_v57 != 20) { _v58 = _v58 + 1; continue; } L6: _t46 = _v57 - 19; if(_t46 > 0) { _v64 = LMafh_LM_Set_AFH_Channel_Classification(); end_du( *_v96); _t40 = _v64; } else { _t40 = 18; } if(_t46 != 0) { __stack_chk_fail(); return _t40; } return _t40; } goto L6; } HCI_ReadInquiryScanTypeCommand() {// addr = 0x0040E54E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadInquiryScanType(); return; } HCI_WriteInquiryScanTypeCommand( _unknown_ __eax // r0 ) {// addr = 0x0040E584 signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t29; // _t29 _v32 = _t29; _v40 = __rsi; _v48 = _t26; _v16 = 12; _v9 = casting_uint8(_v40); if(_v9 <= 1 || (_v9 & 255) <= 1) { __esi = _v9 & 255; _v16 = BTCFG_WriteInquiryScanType(_v9 & 255, _v32 + 190504); } else { _v16 = 18; } end_du( *_v48); return _v16; } HCI_Read_Inquiry_Mode_Command() {// addr = 0x0040E5F6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadInquiryMode(); return; } HCI_Write_Inquiry_Mode_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E62C signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t25; // _t25 long long _t27; // _t27 _v32 = _t27; _v40 = __rsi; _v48 = _t25; _v16 = 12; _v12 = casting_uint8(_v40) & 255; if(_v12 <= 2) { __esi = _v12; _v16 = BTCFG_WriteInquiryMode(_v12, _v32 + 190504); end_du( *_v48); return _v16; } return 18; } HCI_ReadPageScanTypeCommand() {// addr = 0x0040E695 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadPageScanType(); return; } HCI_WritePageScanTypeCommand( _unknown_ __eax // r0 ) {// addr = 0x0040E6CB signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t29; // _t29 _v32 = _t29; _v40 = __rsi; _v48 = _t26; _v16 = 12; _v9 = casting_uint8(_v40); if(_v9 <= 1 || (_v9 & 255) <= 1) { __esi = _v9 & 255; _v16 = BTCFG_WritePageScanType(_v9 & 255, _v32 + 190504); } else { _v16 = 18; } end_du( *_v48); return _v16; } HCI_Read_AFH_Channel_Assessment_Mode_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E73D intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadAFHChannelAssessmentMode(); return _v12; } HCI_Write_AFH_Channel_Assessment_Mode_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E780 char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t30; // _t30 _v32 = _t26; _v40 = _t30; _v48 = __rdx; _v16 = 12; _v10 = casting_uint8(_v40); _v9 = 0; if(_v9 <= 1) { __edx = _v10 & 255; _v16 = BTCFG_WriteAFHChannelAssessmentMode(_v10 & 255); end_du( *_v48); return _v16; } return 18; } HCI_Read_Extended_Inquiry_Response_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E7F0 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadExtendedInquiryResponse(_v32 + 190504); return _v12; } HCI_Write_Extended_Inquiry_Response_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E833 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = _t26; _v16 = 12; _v9 = casting_uint8(_v40); _v24 = _v40 + 1; if(_v9 <= 1) { _v16 = BTCFG_WriteExtendedInquiryResponse(_t16); end_du( *_v48); return 127; } return 18; } HCI_Refresh_Encryption_Key_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E8A5 short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 _v32 = _t22; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { _v16 = LMsec_HCI_Refresh_Enc_Key(_v32); end_du( *_v48); return _v16; } return 18; } HCI_Read_Simple_Pairing_Mode_Command() {// addr = 0x0040E908 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; LMconfig_Read_Simple_Pairing_Mode(); return; } HCI_Write_Simple_Pairing_Mode_Command() {// addr = 0x0040E93E char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t24; // _t24 _v32 = _t24; _v40 = __rsi; _v48 = _t22; _v9 = casting_uint8(_v40); if(_v9 <= 1) { end_du( *_v48); if(_v9 != 0) { LMconfig_Write_Simple_Pairing_Mode(); return; } return; } return; } HCI_Read_Local_OOB_Data_Command( _unknown_ __eax, // r0 long long __rdx // r56 ) {// addr = 0x0040E9A9 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t18; // _t18 long long _t20; // _t20 _v32 = _t18; _v40 = _t20; _v48 = __rdx; _v12 = 12; _v12 = LMssp_LM_Read_Local_OOB_Data(); return _v12; } HCI_Read_Inquiry_Response_Transmit_Power_Level_Command( _unknown_ __eax // r0 ) {// addr = 0x0040E9E6 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t28; // _t28 long long _t34; // _t34 long long _t37; // _t37 long long _t42; // _t42 _v80 = _t37; _v88 = _t42; _v96 = _t34; _v16 = 0; _v12 = 3160; _v24 = &_v72; _v9 = BTCFG_ReadInquiryResponseTxPowerLevel(_v80 + 190504); _t28 = _v24; __ecx = 1; write_du(1, &_v16, _t28, _v24 + 24); _v24 = _t28; __edx = 1; write_end_du(1, _v24, &_v9); EG_Generate_Command_Complete_Event(); return 127; } HCI_Write_Inquiry_Transmit_Power_Level_Command( _unknown_ __eax // r0 ) {// addr = 0x0040EA82 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t25; // _t25 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = _t25; _v16 = 12; _v9 = casting_uint8(_v40); if(_v9 < 186 || _v9 > 20) { return 18; } else { __esi = _v9; _v16 = BTCFG_WriteInquiryTxPowerLevel(_v9, _v32 + 190504); end_du( *_v48); return _v16; } } HCI_Send_Keypress_Notification_Command( _unknown_ __eax // r0 ) {// addr = 0x0040EAEF char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t29; // _t29 long long _t31; // _t31 long long _t35; // _t35 _v32 = _t31; _v40 = _t35; _v48 = _t29; _v16 = 12; _v9 = 0; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v9 = casting_uint8(_v40 + 6); if(_v9 <= 4) { __rcx = *_v48 + 24; _v16 = LMsec_HCI_Send_Keypress_Notification(_v32, *_v48 + 24); return _v16; } return 18; } HCI_Read_Enhance_Transmit_Power_Level_Command() {// addr = 0x0040EB68 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t9; // _t9 _v32 = _t9; _v40 = __rsi; _v48 = __rdx; _v12 = 12; end_du( *_v48); return _v12; } HCI_Read_DEFAULT_ERRONEOUS_DATA_REPORTING_Command( _unknown_ __eax // r0 ) {// addr = 0x0040EB97 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadDefaultErroneousDataReporting(); return _v12; } HCI_Write_DEFAULT_ERRONEOUS_DATA_REPORTING_Command( _unknown_ __eax // r0 ) {// addr = 0x0040EBDA signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t22; _v16 = 12; _v9 = casting_uint8(_v40); if(_v9 <= 1) { __esi = _v9 & 255; _v16 = BTCFG_WriteDefaultErroneousDataReporting(_v9 & 255, _v32 + 190504); end_du( *_v48); return _v16; } return 18; } HCI_Enhanced_Flush_Command( _unknown_ __eax // r0 ) {// addr = 0x0040EC41 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t30; // _t30 _v32 = _t30; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v12 = casting_uint16(_v40); _v9 = casting_uint8(_v40 + 2); if(_v12 <= 3839) { if(_v9 == 0) { _v16 = DM_EnHanced_Flush_Command(_v32); end_du( *_v48); return _v16 | 128; } return 18; } return 18; } HCI_Read_LE_Host_Support_Command() {// addr = 0x0040ECC6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t10; // _t10 _v16 = _t10; _v24 = __rsi; _v32 = __rdx; BTCFG_ReadLEHostSupport(); *_v32 = 0; return 127; } HCI_Write_LE_Host_Support_Command() {// addr = 0x0040ECF8 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = __rdx; _v10 = *_v40 & 255; _v9 = (_v40[1]) & 255; if(_v10 <= 1) { if(_v9 <= 1) { __edx = _v9 & 255; __esi = _v10 & 255; BTCFG_WriteLEHostSupport(_v9 & 255, _v10 & 255, _v32 + 190504); end_du( *_v48); return 0; } return 18; } return 18; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x0040ED70 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0040ED9F signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040EDF5 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040EE34 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } end_du( long long __rdi // r57 ) {// addr = 0x0040EE66 _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 0; return; } Dispatch_Le_Control_Command() {// addr = 0x0040EE7B signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v184; // _cfa_ffffff48 signed long long _v192; // _cfa_ffffff40 _unknown_ _v198; // _cfa_ffffff3a signed short _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 _unknown_ __rbp; // r59 signed int _t42; // _t42 signed long long _t52; // _t52 long long _t53; // _t53 long long _t59; // _t59 signed long long _t63; // _t63 _v192 = _t63; _v200 = __esi; _v208 = _t59; _v16 = 31; _v10 = _v200 & 0x3ff; _v32 = &_v184; __ecx = 1; write_du(1, &_v16, _v32, _v32 + 24); _t52 = _v192; if(( *(_t52 + 191597) & 255) != 0) { if(_v10 <= 31) { _t53 = *((intOrPtr*)(_t52 * 8 + &le_ctrl_dispatch_func_table)); _v24 = _t53; if(_v24 != 0) { _t42 = *(_t53 + &le_control_command_len) & 255; if(__dl == _t42) { r8 = _v24; r8(); _v16 = _t42; if(_v16 == 0) { EG_Generate_Command_Complete_Event(); } return _v16; } return 18; } return 1; } return 1; } return 12; } HCI_LE_Set_Event_Mask_Command() {// addr = 0x0040EF96 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t23; // _t23 _v32 = _t23; _v40 = __rsi; _v48 = __rdx; _v16 = casting_uint32(_v40); _v12 = casting_uint32(_v40 + 4); end_du( *_v48); __edx = _v12; __esi = _v16; EG_SetLEEventMaskCommand(_v12, _v16, _v32 + 190168); return; } HCI_LE_Read_Buffer_Size_Command( _unknown_ __rax // r53 ) {// addr = 0x0040EFF8 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 _unknown_ _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 long long _t32; // _t32 long long _t34; // _t34 long long _t35; // _t35 long long _t39; // _t39 long long _t42; // _t42 long long _t47; // _t47 _v112 = _t42; _v120 = _t47; _v128 = _t39; _v9 = 0; _v12 = 8194; _v24 = &_v104; _t32 = _v24; write_du(1, ?_? ( &_v9), _t32, _v24 + 24); _v24 = _t32; _t34 = _v24; write_du(2, ?_? ( &_v9), _t34, _v24 + 24); _v24 = _t34; _t35 = _v24; write_du(1, &_v9, _t35, _v24 + 24); _v24 = _t35; EG_Generate_Command_Complete_Event(); *_v128 = 0; return 127; } HCI_LE_Read_Local_Supported_Features_Command() {// addr = 0x0040F0B0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t10; // _t10 long long _t12; // _t12 long long _t14; // _t14 _v16 = _t12; _v24 = _t14; _v32 = _t10; LECFG_ReadLocalSupportedFeatures(); return; } HCI_LE_Set_Random_Address_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F0E0 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t15; // _t15 long long _t17; // _t17 long long _t20; // _t20 _v32 = _t17; _v40 = _t20; _v48 = _t15; _v12 = LECFG_SetRandomAddress(); end_du( *_v48); return _v12; } HCI_LE_Set_Advertising_Parameters_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F11E signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 short _v16; // _cfa_fffffff0 signed int _v18; // _cfa_ffffffee intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t93; // _t93 long long _t95; // _t95 long long _t100; // _t100 _v32 = _t95; _v40 = _t100; _v48 = _t93; _v18 = casting_uint16(_v40); _v16 = casting_uint16(_v40 + 2); _v13 = *(_v40 + 4) & 255; _v12 = *(_v40 + 5) & 255; _v11 = *(_v40 + 6) & 255; _v10 = *(_v40 + 13) & 255; _v9 = *(_v40 + 14) & 255; if(_v13 > 3) { return 18; } if(_v12 > 1) { return 18; } if(_v11 > 1) { return 18; } if(_v10 <= 7) { if(_v9 <= 3) { if(_v13 != 0) { if(_v13 == 1) { L38: _v24 = LECFG_SetAdvertiseParameter(); end_du( *_v48); return _v24; } if(_v13 != 2) { if(_v13 != 3) { goto L38; } if(_v16 <= 159 || _v16 > 16384) { return 18; } else { if(_v18 <= 159 || _v18 > 16384) { return 18; } else { if((_v18 & 65535) <= _v16) { goto L38; } return 18; } } } if(_v16 <= 159 || _v16 > 16384) { return 18; } else { if(_v18 <= 159 || _v18 > 16384) { return 18; } else { if((_v18 & 65535) <= _v16) { goto L38; } return 18; } } } if(_v16 <= 31 || _v16 > 16384) { return 18; } else { if(_v18 <= 31 || _v18 > 16384) { return 18; } else { if((_v18 & 65535) <= _v16) { goto L38; } return 18; } } } return 18; } return 18; } HCI_LE_Read_Advertising_Channel_Tx_Power_Command() {// addr = 0x0040F2EE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; _v32 = __rdx; LLCFG_ReadAdvertisingChannelTxPower(); *_v32 = 0; return 127; } HCI_LE_Set_Advertising_Data_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F320 signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = _t26; _v9 = *_v40 & 255; _v24 = &(_v40[1]); if(_v9 <= 31) { _v16 = LECFG_SetAvertisingData(); end_du( *_v48); return _v16; } return 18; } HCI_HCI_LE_Set_Scan_Response_Data_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F384 signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = _t26; _v9 = *_v40 & 255; _v24 = &(_v40[1]); if(_v9 <= 31) { _v16 = LECFG_SetScanResponseData(); end_du( *_v48); return _v16; } return 18; } HCI_LE_Set_Advertise_Enable_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F3E8 signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t21; // _t21 long long _t23; // _t23 signed char* _t25; // _t25 _v32 = _t23; _v40 = _t25; _v48 = _t21; _v9 = *_v40 & 255; if(_v9 <= 1) { _v16 = LL_SetAdvertiseEnable(); *_v48 = 0; return _v16 | 127; } return 18; } HCI_LE_Set_Scan_Parameters_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F43C signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 short _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t55; // _t55 long long _t57; // _t57 signed char* _t62; // _t62 _v32 = _t57; _v40 = _t62; _v48 = _t55; _v11 = *_v40 & 255; _v16 = casting_uint16( &(_v40[1])); _v14 = casting_uint16( &(_v40[3])); _v10 = (_v40[5]) & 255; _v9 = (_v40[6]) & 255; if(_v11 > 1) { return 18; } if(_v16 <= 3 || _v16 > 16384) { return 18; } else { if(_v14 <= 3 || _v14 > 16384) { return 18; } else { _t38 = _v14 & 65535; if((_v14 & 65535) <= _v16) { if(_v10 <= 1) { if(_v9 <= 1) { _v20 = LECFG_SetScanParameter(_t38); end_du( *_v48); return _v20; } return 18; } return 18; } return 18; } } } HCI_LE_Set_Scan_Enable_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F526 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t28; // _t28 long long _t30; // _t30 signed char* _t32; // _t32 _v32 = _t30; _v40 = _t32; _v48 = _t28; _v10 = *_v40 & 255; _v9 = (_v40[1]) & 255; if(_v10 <= 1) { if(_v9 <= 1) { _v16 = LL_SetScanEnable(); *_v48 = 0; return _v16 | 127; } return 18; } return 18; } HCI_LE_Create_Connection_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F592 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 short _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 short _v18; // _cfa_ffffffee short _v20; // _cfa_ffffffec short _v22; // _cfa_ffffffea signed short _v24; // _cfa_ffffffe8 signed short _v26; // _cfa_ffffffe6 short _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t106; // _t106 long long _t108; // _t108 long long _t118; // _t118 _v48 = _t108; _v56 = _t118; _v64 = _t106; _v28 = casting_uint16(_v56); _v26 = casting_uint16(_v56 + 2); _v11 = *(_v56 + 4) & 255; _v10 = *(_v56 + 5) & 255; _v9 = *(_v56 + 12) & 255; _v24 = casting_uint16(_v56 + 13); _v22 = casting_uint16(_v56 + 15); _v20 = casting_uint16(_v56 + 17); _v18 = casting_uint16(_v56 + 19); _v16 = casting_uint16(_v56 + 21); _v14 = casting_uint16(_v56 + 23); if(_v28 <= 3 || _v28 > 16384) { return 18; } else { if(_v26 <= 3 || _v26 > 16384) { return 18; } if((_v26 & 65535) > _v28) { return 18; } if(_v11 <= 1) { if(_v10 <= 1) { if(_v9 <= 1) { if(_v24 <= 5 || _v24 > 3200) { return 18; } else { if(_v22 <= 5 || _v22 > 3200) { return 18; } else { if((_v24 & 65535) <= _v22) { if(_v20 <= 500) { if(_v18 <= 9 || _v18 > 3200) { return 18; } else { _t73 = _v16 & 65535; if((_v16 & 65535) <= _v14) { _v32 = LL_CreateConnection(_t73); *_v64 = 0; return _v32 | 127; } return 18; } } return 18; } return 18; } } } return 18; } return 18; } else { return 18; } } } HCI_LE_Create_Connection_Cancel_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F778 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v48 = __rdx; _v12 = LL_CreateConnectionCancel(__eax); *_v48 = 0; return _v12 | 127; } HCI_LE_Read_White_List_Size_Command() {// addr = 0x0040F7AE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t10; // _t10 long long _t12; // _t12 long long _t14; // _t14 _v16 = _t12; _v24 = _t14; _v32 = _t10; LECFG_ReadWhilteListSize(); return 0; } HCI_LE_Clear_White_List_Command() {// addr = 0x0040F7E3 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t9; // _t9 _v16 = _t9; _v24 = __rsi; _v32 = __rdx; LECFG_ClearWhiteList(); end_du( *_v32); return 0; } HCI_LE_Add_Device_To_White_List_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F819 signed int _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t34; // _t34 long long _t37; // _t37 signed char* _t41; // _t41 _v64 = _t37; _v72 = _t41; _v80 = _t34; _v9 = *_v72 & 255; _v12 = 8209; _v24 = &_v56; if(_v9 <= 1) { _v16 = LECFG_AddWhiteList(); __edx = 1; write_end_du(1, _v24, &_v16); EG_Generate_Command_Complete_Event(); *_v80 = 0; return 127; } return 18; } HCI_LE_Remove_Device_From_White_List_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F8B0 signed int _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t34; // _t34 long long _t37; // _t37 signed char* _t41; // _t41 _v64 = _t37; _v72 = _t41; _v80 = _t34; _v9 = *_v72 & 255; _v12 = 8210; _v24 = &_v56; if(_v9 <= 1) { _v16 = LECFG_RemoveWhiteList(); __edx = 1; write_end_du(1, _v24, &_v16); EG_Generate_Command_Complete_Event(); *_v80 = 0; return 127; } return 18; } HCI_LE_Connection_Update_Command( _unknown_ __eax // r0 ) {// addr = 0x0040F947 short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 short _v16; // _cfa_fffffff0 short _v18; // _cfa_ffffffee signed short _v20; // _cfa_ffffffec short _v22; // _cfa_ffffffea long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t66; // _t66 long long _t68; // _t68 long long _t77; // _t77 _v32 = _t68; _v40 = _t77; _v48 = _t66; _v22 = casting_uint16(_v40); _v20 = casting_uint16(_v40 + 2); _v18 = casting_uint16(_v40 + 4); _v16 = casting_uint16(_v40 + 6); _v14 = casting_uint16(_v40 + 8); _v12 = casting_uint16(_v40 + 10); _v10 = casting_uint16(_v40 + 12); if(_v22 > 3839) { return 18; } if(_v20 <= 5 || _v20 > 3200) { return 18; } else { if(_v18 <= 5 || _v18 > 3200) { return 18; } else { if((_v20 & 65535) <= _v18) { if(_v16 <= 1000) { if(_v14 <= 9 || _v14 > 3200) { return 18; } else { if((_v12 & 65535) <= _v10) { LL_ConnectionUpdate(); *_v48 = 0; return 127; } return 18; } } return 18; } return 18; } } } HCI_LE_Set_Host_Channel_Classification_Command( _unknown_ __eax // r0 ) {// addr = 0x0040FA90 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t31; // _t31 long long _t33; // _t33 signed char* _t35; // _t35 _v32 = _t33; _v40 = _t35; _v48 = _t31; if(((_v40[4]) & 255) <= 31) { _t15 = *_v40 & 255; if(( *_v40 & 255) != 0) { L7: _v12 = LL_SetHostChannelClassification(_t15); *_v48 = 0; return 127; } _t15 = (_v40[1]) & 255; if(((_v40[1]) & 255) != 0) { goto L7; } _t15 = (_v40[2]) & 255; if(((_v40[2]) & 255) != 0) { goto L7; } _t15 = (_v40[3]) & 255; if(((_v40[3]) & 255) != 0) { goto L7; } return 18; } return 18; } HCI_LE_Read_Channel_Map_Command( _unknown_ __eax // r0 ) {// addr = 0x0040FB21 short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t24; // _t24 _v32 = _t24; _v40 = __rsi; _v48 = _t22; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { _v16 = LL_ReadChannelMap(_v32); return _v16; } return 18; } HCI_LE_Read_Remote_Used_Features_Command( _unknown_ __eax // r0 ) {// addr = 0x0040FB79 short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 _v32 = _t17; _v40 = __rsi; _v48 = __rdx; _v10 = casting_uint16(_v40); if(_v10 <= 61184) { LL_ReadRemoteUsedFeatures(); *_v48 = 0; return 127; } return 18; } HCI_LE_Encrypt_Command() {// addr = 0x0040FBD0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t9; // _t9 long long _t11; // _t11 long long _t13; // _t13 _v16 = _t11; _v24 = _t13; _v32 = _t9; LL_Encrypt(_v16); *_v32 = 0; return 127; } HCI_LE_Rand_Command() {// addr = 0x0040FC09 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; _v32 = __rdx; LL_Rand(__eflags, _v16); *_v32 = 0; return 127; } HCI_LE_Start_Encryption_Command( _unknown_ __eax // r0 ) {// addr = 0x0040FC3B short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t22; // _t22 _v32 = _t19; _v40 = _t22; _v48 = _t17; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { LL_Start_Encrypt(); *_v48 = 0; return 127; } return 18; } HCI_LE_Long_Term_Key_Request_Command( _unknown_ __eax // r0 ) {// addr = 0x0040FC93 short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t22; // _t22 _v32 = _t19; _v40 = _t22; _v48 = _t17; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { LL_LongTermKeyRequestReply(); *_v48 = 0; return 127; } return 18; } HCI_LE_Long_Term_Key_Request_Negative_Reply_Command( _unknown_ __eax // r0 ) {// addr = 0x0040FCEB short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t22; // _t22 _v32 = _t19; _v40 = _t22; _v48 = _t17; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { LL_LongTermKeyRequestNegativeReply(); *_v48 = 0; return 127; } return 18; } HCI_LE_Read_Supported_States_Command() {// addr = 0x0040FD43 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; _v32 = __rdx; LECFG_ReadSupportedStates(__eflags, _v16); *_v32 = 0; return 127; } HCI_LE_Receiver_Test_Command() {// addr = 0x0040FD75 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t16; // _t16 _v32 = _t16; _v40 = __rsi; _v48 = __rdx; _v9 = *_v40 & 255; if(_v9 <= 39) { LL_ReceiverTest(); *_v48 = 0; return 127; } return 18; } HCI_LE_Transmitter_Test_Command() {// addr = 0x0040FDC4 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t32; // _t32 _v32 = _t32; _v40 = __rsi; _v48 = __rdx; _v11 = *_v40 & 255; _v10 = (_v40[1]) & 255; _v9 = (_v40[2]) & 255; if(_v11 <= 39) { if(_v10 <= 37) { if(_v9 <= 7) { LL_TransmitterTest(); *_v48 = 0; return 127; } return 18; } return 18; } return 18; } HCI_LE_Test_End_Command() {// addr = 0x0040FE49 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; _v32 = __rdx; LL_TestEnd(); *_v32 = 0; return 127; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x0040FE7C signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040FE95 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0040FED4 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } Dispatch_Info_Command() {// addr = 0x0040FF06 signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v184; // _cfa_ffffff48 long long _v192; // _cfa_ffffff40 _unknown_ _v198; // _cfa_ffffff3a signed short _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed long long _t47; // _t47 long long _t48; // _t48 long long _t54; // _t54 long long _t58; // _t58 _v192 = _t58; _v200 = __esi; _v208 = _t54; _v16 = 31; _v10 = _v200 & 0x3ff; _v32 = &_v184; _t47 = _v32; __ecx = 1; write_du(1, &_v16, _t47, _v32 + 24); if(_v10 <= 9) { _t48 = *((intOrPtr*)(_t47 * 8 + &info_dispatch_func_table)); _v24 = _t48; if(_v24 != 0) { _t39 = *(_t48 + &information_command_len) & 255; if(__dl == _t39) { r8 = _v24; r8(); _v16 = _t39; if(_v16 == 0) { EG_Generate_Command_Complete_Event(); } return _v16; } return 18; } return 1; } return 1; } HCI_Read_Local_Version_Info_Command() {// addr = 0x00410005 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadLocalVersionInformation(); return; } HCI_Read_Local_Supported_Commands_Command() {// addr = 0x0041003B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadLocalSupportedCommands(); return; } HCI_Read_Local_Supported_Features_Command() {// addr = 0x00410071 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadLocalSupportedFeatures(); return; } HCI_Read_Local_Extended_Features_Command( _unknown_ __eax // r0 ) {// addr = 0x004100A7 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t23; // _t23 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t23; _v16 = 12; _v9 = casting_uint8(_v40); _v16 = BTCFG_ReadExtendedFeatures( *_v48); return _v16; } HCI_Read_Buffer_Size_Command() {// addr = 0x004100FD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; _v32 = __rdx; HCI_Put_Controller_Buffer_Size(); return; } HCI_Read_Country_Code_Command( long long __rdx // r56 ) {// addr = 0x00410126 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 __rdx = __rdx; _v16 = _t11; _v24 = _t13; _v32 = __rdx; __edx = 1; write_end_du(1, *_v32 + 24, _v16 + 191071); return 0; } HCI_Read_BD_ADDR_Command( long long __rdx // r56 ) {// addr = 0x00410167 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 __rdx = __rdx; _v16 = _t11; _v24 = _t13; _v32 = __rdx; __edx = 6; write_end_du(6, *_v32 + 24, _v16 + 191072); return 0; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x004101A8 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004101C1 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint24( signed char* __rdi // r57 ) {// addr = 0x004101F0 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff) << 8) << 8; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00410232 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00410288 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } end_du( long long __rdi // r57 ) {// addr = 0x004102C7 _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 0; return; } HCI_Param_Get_Bd_Addr( signed char* __rdi, // r57 signed int* __rsi // r58 ) {// addr = 0x004102DC signed char* _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v24 = *_v16 & 255; (_v24[0]) = (_v16[1]) & 255; (_v24[0]) = (_v16[2]) & 255; (_v24[0]) = (_v16[3]) & 255; (_v24[1]) = (_v16[4]) & 255; (_v24[1]) = (_v16[5]) & 255; return; } HCI_Param_Get_Link_Key( signed int* __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00410342 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int* _t11; // _t11 __rsi = __rsi; __rdi = __rdi; __rax = __rax; _v32 = __rdi; _v40 = __rsi; _v12 = 0; while(_v12 <= 15) { _t11 = __rax; __rax = __rax + _v40; *__rax = *(_v12 + _v32) & 255; _v12 = _v12 + 1; } return _t11; } HCI_Param_Get_Pin_Code( signed int* __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0041037B intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int* _t11; // _t11 __rsi = __rsi; __rdi = __rdi; __rax = __rax; _v32 = __rdi; _v40 = __rsi; _v12 = 0; while(_v12 <= 15) { _t11 = __rax; __rax = __rax + _v40; *__rax = *(_v12 + _v32) & 255; _v12 = _v12 + 1; } return _t11; } HCI_Param_Get_Pdu_Bytes( intOrPtr __edx, // r3 signed int* __rax, // r53 signed char* __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004103B4 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; __rax = __rax; _v32 = __rdi; _v40 = __rsi; _v44 = __edx; _v12 = 0; while(_v12 < _v44) { __rax = __rax + _v40; __rdx = &(__rdx[_v32]); *__rax = *__rdx & 255; _v12 = _v12 + 1; } return; } Dispatch_Link_Control_Command() {// addr = 0x004103ED signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v184; // _cfa_ffffff48 long long _v192; // _cfa_ffffff40 _unknown_ _v198; // _cfa_ffffff3a signed short _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed long long _t47; // _t47 long long _t48; // _t48 long long _t54; // _t54 long long _t58; // _t58 _v192 = _t58; _v200 = __esi; _v208 = _t54; _v16 = 31; _v10 = _v200 & 0x3ff; _v32 = &_v184; _t47 = _v32; __ecx = 1; write_du(1, &_v16, _t47, _v32 + 24); if(_v10 <= 52) { _t48 = *((intOrPtr*)(_t47 * 8 + &link_ctl_dispatch_func_table)); _v24 = _t48; if(_v24 != 0) { _t39 = *(_t48 + &link_control_command_len) & 255; if(__dl == _t39) { r8 = _v24; r8(); _v16 = _t39; if(_v16 == 0) { EG_Generate_Command_Complete_Event(); } return _v16; } return 18; } return 1; } return 1; } HCI_Inquiry_Command( _unknown_ __eax // r0 ) {// addr = 0x004104EC char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t41; // _t41 _v32 = _t41; _v40 = __rsi; _v48 = __rdx; _v20 = 12; _v16 = casting_uint24(_v40); _v10 = casting_uint8(_v40 + 3); _v9 = casting_uint8(_v40 + 4); end_du( *_v48); if(_v16 <= 10390271 || _v16 > 10390335) { return 18; } if(_v10 == 0 || _v10 > 48) { return 18; } else { _v20 = LMinq_Inquiry_Start(_t25); return _v20 | 128; } } HCI_Inquiry_Cancel_Command( _unknown_ __eax // r0 ) {// addr = 0x00410598 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t15; // _t15 _v32 = _t15; _v40 = __rsi; _v48 = __rdx; _v12 = 12; end_du( *_v48); _v12 = LMinq_Inquiry_Cancel(_v32); return _v12; } HCI_Periodic_Inquiry_Mode_Command( _unknown_ __eax // r0 ) {// addr = 0x004105D6 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t59; // _t59 _v32 = _t59; _v40 = __rsi; _v48 = __rdx; _v24 = 12; _v14 = casting_uint16(_v40); _v12 = casting_uint16(_v40 + 2); _v20 = casting_uint24(_v40 + 4); _v10 = casting_uint8(_v40 + 7); _v9 = casting_uint8(_v40 + 8); end_du( *_v48); if(_v14 <= 2) { return 18; } if(_v12 <= 2 || _v12 == 255) { return 18; } else { _t40 = _v14 & 65535; if((_v14 & 65535) >= _v12) { if(_v20 <= 10390271 || _v20 > 10390335) { return 18; } else { if(_v10 == 0 || _v10 > 48) { return 18; } else { r8d = _v9 & 255; r9d = r8d; r8d = _v10 & 255; _v24 = LMinq_Periodic_Inquiry(_t40); return _v24; } } } return 18; } } HCI_Exit_Periodic_Inquiry_Mode_Command() {// addr = 0x004106EB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t9; // _t9 _v16 = _t9; _v24 = __rsi; _v32 = __rdx; end_du( *_v32); LMinq_Exit_Periodic_Inquiry_Mode(); return; } HCI_Create_Connection_Command( _unknown_ __eax // r0 ) {// addr = 0x0041071C signed int _v12; // _cfa_fffffff4 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 short _v34; // _cfa_ffffffde signed int _v35; // _cfa_ffffffdd signed int _v36; // _cfa_ffffffdc signed int _v37; // _cfa_ffffffdb signed int _v38; // _cfa_ffffffda signed int _v39; // _cfa_ffffffd9 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t80; // _t80 long long _t82; // _t82 signed char* _t89; // _t89 _v48 = _t82; _v56 = _t89; _v64 = _t80; _v12 = 12; _v40 = *_v56 & 255; _v39 = (_v56[1]) & 255; _v38 = (_v56[2]) & 255; _v37 = (_v56[3]) & 255; _v36 = (_v56[4]) & 255; _v35 = (_v56[5]) & 255; _v34 = casting_uint16( &(_v56[6])); _v32 = casting_uint8( &(_v56[8])) & 255; _v28 = casting_uint8( &(_v56[9])); _v24 = casting_uint16( &(_v56[0xa])) & 65535; _v20 = casting_uint8( &(_v56[0xc])); *_v64 = 0; _t56 = _v32; if(_v32 <= 2) { _t56 = _v20 & 255; if((_v20 & 255) > 1) { _v12 = 18; } } else { _v12 = 18; } if(_v12 != 18) { _v12 = LM_Create_Connection_Req(_t56); } return _v12 | 128; } HCI_Disconnect_Command( _unknown_ __eax // r0 ) {// addr = 0x0041082C signed int _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t33; // _t33 long long _t50; // _t50 _v32 = _t50; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v12 = casting_uint16(_v40); _t33 = casting_uint8(_v40 + 2); _v9 = _t33; if(_v12 > 3839) { return 18; } if(_v9 != 5) { if(_v9 == 19 || _v9 == 20 || _v9 == 21 || _v9 == 26 || _v9 == 41) { goto L9; } else { return 18; } } L9: LL_Disconnect(); _v16 = _t33; if(_v16 != 2) { _v16 = _v16 | 127; } else { _v16 = LMconn_Host_Disconnect_Req(_t33); *_v48 = 0; _v16 = _v16 | 128; } return _v16; } HCI_Add_SCO_Connection_Command( _unknown_ __eax // r0 ) {// addr = 0x004108F9 signed char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = __rdx; _v14 = casting_uint16(_v40); _v12 = casting_uint16(_v40 + 2); if(_v14 <= 3839) { _v9 = LMconnection_LM_Add_SCO_Command(_v32); *_v48 = 0; return (_v9 & 255 | 128) & 255; } return 18; } HCI_Create_Connection_Cancel_Command( _unknown_ __eax // r0 ) {// addr = 0x00410970 intOrPtr _v12; // _cfa_fffffff4 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t20; // _t20 long long _t23; // _t23 long long _t26; // _t26 _v32 = _t23; _v40 = _t26; _v48 = _t20; _v12 = 0; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v12 = LMconnection_LM_Connection_Cancel(__eax); return _v12; } HCI_Accept_Connection_Request_Command( _unknown_ __eax // r0 ) {// addr = 0x004109C4 char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t27; // _t27 long long _t29; // _t29 long long _t33; // _t33 _v32 = _t29; _v40 = _t33; _v48 = _t27; _v16 = 12; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v9 = casting_uint8(_v40 + 6); *_v48 = 0; if(_v9 <= 1) { _v16 = LM_Host_Accept_Connection_Request(_t17, _v32); return _v16 | 128; } return 18; } HCI_Reject_Connectioin_Request_Command( _unknown_ __eax // r0 ) {// addr = 0x00410A3E char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t30; // _t30 long long _t32; // _t32 long long _t36; // _t36 _v32 = _t32; _v40 = _t36; _v48 = _t30; _v16 = 12; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v9 = casting_uint8(_v40 + 6); *_v48 = 0; if(_v9 <= 12 || _v9 > 15) { return 18; } else { _v16 = LM_Host_Reject_Connection_Request(_t18, _v32); return _v16 | 128; } } HCI_Link_Key_Request_Reply_Command( _unknown_ __eflags, // r9 long long __rdx // r56 ) {// addr = 0x00410ABE long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t30; // _t30 long long _t34; // _t34 __eflags = __eflags; _v64 = _t30; _v72 = _t34; _v80 = __rdx; _v16 = *fs:0x28]; HCI_Param_Get_Bd_Addr(_v72, &_v56); HCI_Param_Get_Link_Key( ?_? ( &_v40), _v72 + 6, &_v40); LMsec_HCI_Link_Key_Request_Reply(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } HCI_Link_Key_Request_Negative_Reply_Command() {// addr = 0x00410B3C char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t12; // _t12 long long _t15; // _t15 long long _t18; // _t18 _v32 = _t15; _v40 = _t18; _v48 = _t12; HCI_Param_Get_Bd_Addr(_v40, &_v24); LMsec_HCI_Link_Key_Request_Negative_Reply(); return; } HCI_PIN_Code_Request_Reply_Command( _unknown_ __eax, // r0 long long __rdx // r56 ) {// addr = 0x00410B7F long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 intOrPtr _v48; // _cfa_ffffffd0 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 intOrPtr _t27; // _t27 _unknown_ _t30; // _t30 long long _t45; // _t45 long long _t51; // _t51 _v64 = _t45; _v72 = _t51; _v80 = __rdx; _v16 = *fs:0x28]; _v48 = 12; HCI_Param_Get_Bd_Addr(_v72, &_v56); _v41 = casting_uint8(_v72 + 6); HCI_Param_Get_Pin_Code( ?_? ( &_v40), _v72 + 7, &_v40); if(_v41 == 0) { L2: _t27 = 18; } else { _t30 = _v41 - 16; if(_t30 <= 0) { r8 = *_v80; _v48 = LMsec_HCI_Pin_Code_Request_Reply(); _t27 = _v48; } else { goto L2; } } if(_t30 != 0) { __stack_chk_fail(); return _t27; } return _t27; } HCI_PIN_Code_Request_Negative_Reply_Command( _unknown_ __eax // r0 ) {// addr = 0x00410C37 intOrPtr _v12; // _cfa_fffffff4 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t18; // _t18 long long _t21; // _t21 long long _t24; // _t24 _v32 = _t21; _v40 = _t24; _v48 = _t18; _v12 = 12; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v12 = LMsec_HCI_LM_Pin_Code_Request_Negative_Reply(); return _v12; } HCI_Change_Connection_Packet_Type_Command( _unknown_ __eax // r0 ) {// addr = 0x00410C87 short _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); if(_v12 <= 3839) { _v16 = LM_Change_Connection_Packet_Type_Command(_t18, _v32); return 127; } return 18; } HCI_Authentication_Requested_Command() {// addr = 0x00410CFE short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t16; // _t16 _v32 = _t16; _v40 = __rsi; _v48 = __rdx; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { *_v48 = 0; LMsec_HCI_LM_Authentication_Requested(_t10); return; } return; } HCI_Set_Connection_Encryption_Command( _unknown_ __eax // r0 ) {// addr = 0x00410D50 signed int _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t19; // _t19 long long _t29; // _t29 _v32 = _t29; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v12 = casting_uint16(_v40); _t19 = casting_uint8(_v40 + 2); _v9 = _t19; if(_v12 <= 3839) { if(_v9 <= 1) { *_v48 = 0; LMsec_HCI_Set_Connection_Encryption(); _v16 = _t19; return _v16 | 128; } return 18; } return 18; } HCI_Change_Connection_Link_Key_Command() {// addr = 0x00410DD5 short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t16; // _t16 _v32 = _t16; _v40 = __rsi; _v48 = __rdx; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { *_v48 = 0; LMsec_HCI_Change_Connection_Link_Key(); return; } return; } HCI_Master_Link_Key_Command() {// addr = 0x00410E27 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t16; // _t16 _v32 = _t16; _v40 = __rsi; _v48 = __rdx; _v9 = casting_uint8(_v40); if(_v9 <= 1) { *_v48 = 0; LMsec_HCI_Master_Link_Key(); return; } return; } HCI_Remote_Name_Request_Command( _unknown_ __eax // r0 ) {// addr = 0x00410E76 signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t29; // _t29 long long _t32; // _t32 long long _t37; // _t37 _v48 = _t32; _v56 = _t37; _v64 = _t29; HCI_Param_Get_Bd_Addr(_v56, &_v40); _v32 = casting_uint8(_v56 + 6) & 255; _v24 = casting_uint16(_v56 + 8) & 65535; if(_v32 <= 2) { LM_Read_Remote_Name(); *_v64 = 0; return 127; } return 18; } HCI_Remote_Name_Request_Cancel_Command() {// addr = 0x00410EFD char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t12; // _t12 long long _t15; // _t15 long long _t18; // _t18 _v32 = _t15; _v40 = _t18; _v48 = _t12; HCI_Param_Get_Bd_Addr(_v40, &_v24); LM_Read_Remote_Name_Cancel(); *_v48 = 0; return 127; } HCI_Read_Remote_Supported_Features_Command( _unknown_ __eax // r0 ) {// addr = 0x00410F49 short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 _v32 = _t17; _v40 = __rsi; _v48 = __rdx; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { *_v48 = 0; LM_Read_Remote_Supported_Features(); return 127; } return 18; } HCI_Read_Remote_Extended_Command( _unknown_ __eax // r0 ) {// addr = 0x00410FA0 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t23; // _t23 _v32 = _t23; _v40 = __rsi; _v48 = __rdx; _v12 = casting_uint16(_v40); _v9 = casting_uint8(_v40 + 2); if(_v12 <= 3839) { *_v48 = 0; LM_Read_Remote_Extended_Features(); return 127; } return 18; } HCI_Read_Remote_Version_Information_Command( _unknown_ __eax // r0 ) {// addr = 0x0041100E short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { *_v48 = 0; _v16 = LL_ReadRemoteVersion(); if(_v16 == 2) { LM_Read_Remote_Version(); } return 127; } return 18; } HCI_Read_Clock_Offset_Command( _unknown_ __eax // r0 ) {// addr = 0x00411087 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t14; // _t14 long long _t21; // _t21 _v32 = _t21; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _t14 = casting_uint16(_v40); _v10 = _t14; if(_v10 <= 3839) { *_v48 = 0; LM_Read_Clock_Offset(); _v16 = _t14; return _v16 | 127; } return 18; } HCI_Read_LMP_Handle_Command( _unknown_ __eax // r0 ) {// addr = 0x004110E9 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t31; // _t31 long long _t34; // _t34 _v32 = _t34; _v40 = __rsi; _v48 = _t31; _v16 = 12; _v12 = casting_uint16(_v40); _v9 = 1; *((long long*)( *_v48 + 0x20)) = &_v9; if(_v12 <= 3839) { _v16 = LMsco_Read_LMP_Handle_Command(_v32); return _v16; } return 18; } HCI_Exchange_Fixed_Infomation_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0041115F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v32 = 0; return 12; } HCI_Exchange_Alias_Infomation_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00411181 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v32 = 0; return 12; } HCI_Private_Pairing_Request_Reply_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004111A3 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v32 = 0; return 12; } HCI_Private_Pairing_Request_Negative_Reply_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004111C5 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v32 = 0; return 12; } HCI_Generated_Alias_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004111E7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v32 = 0; return 12; } HCI_Alias_Address_Request_Reply_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00411209 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v32 = 0; return 12; } HCI_Alias_Address_Request_Negative_Reply_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0041122B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v32 = 0; return 12; } HCI_Setup_Synchronous_Connection_Command( _unknown_ __eax // r0 ) {// addr = 0x0041124D signed char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 short _v18; // _cfa_ffffffee intOrPtr _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t68; // _t68 _v48 = _t68; _v56 = __rsi; _v64 = __rdx; _v32 = 12; _v18 = casting_uint16(_v56); _v28 = casting_uint32(_v56 + 2); _v24 = casting_uint32(_v56 + 6); _v16 = casting_uint16(_v56 + 10); _v14 = casting_uint16(_v56 + 12); _v9 = casting_uint8(_v56 + 14); _v12 = casting_uint16(_v56 + 15); if(_v18 <= 3839) { if(_v9 <= 2 || _v9 == 255) { _t45 = _v12 & 0x3f; if((_v12 & 0x3f) != 0) { L8: r8d = _v12 & 65535; r9d = _v14 & 65535; r10d = _v16 & 65535; _v80 = r8d; *__rsp = _v9 & 255; r8d = r10d; _v32 = LMconnection_LM_Setup_Synchronous_Connection(_t45); *_v64 = 0; return _v32 | 128; } _t45 = _v12 & 0x3c0; if((_v12 & 0x3c0) != 960) { goto L8; } return 18; } else { return 18; } } return 18; } HCI_Accept_Synchronous_Connection_Request_Command( _unknown_ __eax // r0 ) {// addr = 0x0041137A signed char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec signed short _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 signed short* _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed short* _t74; // _t74 long long _t76; // _t76 long long _t85; // _t85 _v48 = _t76; _v56 = _t85; _v64 = _t74; _v28 = 12; _v24 = 0; _v20 = 0; _v16 = 0; _v14 = 0; _v9 = 0; _v12 = 0; HCI_Param_Get_Bd_Addr(_v56, &_v40); _v24 = casting_uint32(_v56 + 6); _v20 = casting_uint32(_v56 + 10); _v16 = casting_uint16(_v56 + 14); _v14 = casting_uint16(_v56 + 16); _v9 = casting_uint8(_v56 + 18); _v12 = casting_uint16(_v56 + 19); if(_v16 <= 3) { return 18; } if(_v9 <= 2 || _v9 == 255) { if((_v12 & 0x3f) != 0 || (_v12 & 0x3c0) != 960) { r8d = _v12 & 65535; r9d = _v14 & 65535; r10d = _v16 & 65535; _v80 = r8d; *__rsp = _v9 & 255; r8d = r10d; _v28 = LMconnection_LM_Accept_Synchronous_Connection_Request(); *_v64 = 0; return _v28 | 128; } else { return 18; } } else { return 18; } } HCI_Reject_Synchronous_Connection_Request_Command( _unknown_ __eax // r0 ) {// addr = 0x004114CD signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t29; // _t29 long long _t31; // _t31 long long _t35; // _t35 _v32 = _t31; _v40 = _t35; _v48 = _t29; _v16 = 12; _v9 = 0; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v9 = casting_uint8(_v40 + 6); if(_v9 == 0 || _v9 > 56) { return 18; } else { __edx = _v9 & 255; LMconnection_LM_Reject_Synchronous_Connection_Request(_t18, _v9 & 255, _v32, &_v24); *_v48 = 0; return _v16 | 128; } } HCI_IO_Capability_Request_Reply_Command() {// addr = 0x0041154E signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t41; // _t41 long long _t43; // _t43 long long _t49; // _t49 _v32 = _t43; _v40 = _t49; _v48 = _t41; _v11 = 0; _v10 = 0; _v9 = 0; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v11 = casting_uint8(_v40 + 6); _v10 = casting_uint8(_v40 + 7); _v9 = casting_uint8(_v40 + 8); if(_v11 <= 3) { if(_v10 <= 1) { if(_v9 <= 5) { r8 = *_v48 + 24; r9 = r8; r8d = _v9 & 255; LMssp_LM_IO_Capability_Request_Reply(); return; } return; } return; } return; } HCI_User_Confirmation_Request_Reply_Command() {// addr = 0x00411610 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t14; // _t14 long long _t17; // _t17 long long _t20; // _t20 _v32 = _t17; _v40 = _t20; _v48 = _t14; HCI_Param_Get_Bd_Addr(_v40, &_v24); LMssp_LM_User_Confirmation_Request_Reply(); return; } HCI_User_Confirmation_Request_Negative_Reply_Command( _unknown_ __eax // r0 ) {// addr = 0x00411657 intOrPtr _v12; // _cfa_fffffff4 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t19; // _t19 long long _t22; // _t22 long long _t25; // _t25 _v32 = _t22; _v40 = _t25; _v48 = _t19; _v12 = 12; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v12 = LMssp_LM_User_Confirmation_Request_Negative_Reply(); return 127; } HCI_User_Passkey_Request_Reply_Command( _unknown_ __eax // r0 ) {// addr = 0x004116AD intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t19; // _t19 long long _t28; // _t28 long long _t30; // _t30 long long _t34; // _t34 _v32 = _t30; _v40 = _t34; _v48 = _t28; _v16 = 12; _v12 = 0; HCI_Param_Get_Bd_Addr(_v40, &_v24); _t19 = casting_uint32(_v40 + 6); _v12 = _t19; if(_v12 <= 999999) { __rcx = *_v48 + 24; LMssp_LM_User_Passkey_Request_Reply( *_v48 + 24); _v16 = _t19; return _v16; } return 18; } HCI_User_passkey_Request_Negative_Reply_Command( _unknown_ __eax // r0 ) {// addr = 0x0041172B intOrPtr _v12; // _cfa_fffffff4 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t19; // _t19 long long _t22; // _t22 long long _t25; // _t25 _v32 = _t22; _v40 = _t25; _v48 = _t19; _v12 = 12; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v12 = LMssp_LM_User_Passkey_Request_Negative_Reply(); return 127; } HCI_Remote_OOB_Data_Request_Reply_Command( _unknown_ __eflags // r9 ) {// addr = 0x00411781 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 _unknown_ _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t36; // _t36 long long _t41; // _t41 long long _t47; // _t47 __eflags = __eflags; _v80 = _t41; _v88 = _t47; _v96 = _t36; _v16 = *fs:0x28]; HCI_Param_Get_Bd_Addr(_v88, ?_? ( &_v72)); HCI_Param_Get_Pdu_Bytes(16, ?_? ( &_v56), ?_? ( &_v72), _v88 + 6, &_v56); HCI_Param_Get_Pdu_Bytes(16, ?_? ( &_v40), &_v72, _v88 + 22, &_v40); r8 = *_v96 + 24; LMssp_LM_Remote_OOB_Data_Request_Reply(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } HCI_Remote_OOB_Data_Request_Negative_Reply_Command() {// addr = 0x0041182B char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t14; // _t14 long long _t17; // _t17 long long _t20; // _t20 _v32 = _t17; _v40 = _t20; _v48 = _t14; HCI_Param_Get_Bd_Addr(_v40, &_v24); LMssp_LM_Remote_OOB_Data_Request_Negative_Reply(_v32); return; } HCI_IO_Capability_Request_Negative_Reply_Command( _unknown_ __eax // r0 ) {// addr = 0x00411872 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t31; // _t31 long long _t33; // _t33 long long _t37; // _t37 _v32 = _t33; _v40 = _t37; _v48 = _t31; _v16 = 12; _v9 = 0; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v9 = casting_uint8(_v40 + 6); if(_v9 == 0 || _v9 > 56) { return 18; } else { __rcx = *_v48 + 24; _v16 = LMssp_LM_IO_Capability_Request_Negative_Reply( *_v48 + 24); return 127; } } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x004118F4 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x0041190D signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0041193C signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00411992 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } end_du( long long __rdi // r57 ) {// addr = 0x004119D1 _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 0; return; } HCI_Param_Get_Bd_Addr( signed char* __rdi, // r57 signed int* __rsi // r58 ) {// addr = 0x004119E6 signed char* _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v24 = *_v16 & 255; (_v24[0]) = (_v16[1]) & 255; (_v24[0]) = (_v16[2]) & 255; (_v24[0]) = (_v16[3]) & 255; (_v24[1]) = (_v16[4]) & 255; (_v24[1]) = (_v16[5]) & 255; return; } Dispatch_Link_Policy_Command() {// addr = 0x00411A4C signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v184; // _cfa_ffffff48 long long _v192; // _cfa_ffffff40 _unknown_ _v198; // _cfa_ffffff3a signed short _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed long long _t47; // _t47 long long _t48; // _t48 long long _t54; // _t54 long long _t58; // _t58 _v192 = _t58; _v200 = __esi; _v208 = _t54; _v16 = 31; _v10 = _v200 & 0x3ff; _v32 = &_v184; _t47 = _v32; __ecx = 1; write_du(1, &_v16, _t47, _v32 + 24); if(_v10 <= 17) { _t48 = *((intOrPtr*)(_t47 * 8 + &link_policy_dispatch_func_table)); _v24 = _t48; if(_v24 != 0) { _t39 = *(_t48 + &link_policy_command_len) & 255; if(__dl == _t39) { r8 = _v24; r8(); _v16 = _t39; if(_v16 == 0) { EG_Generate_Command_Complete_Event(); } return _v16; } return 18; } return 1; } return 1; } HCI_Hold_Mode_Command( _unknown_ __eax // r0 ) {// addr = 0x00411B4B signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t34; // _t34 long long _t45; // _t45 _v32 = _t45; _v40 = __rsi; _v48 = __rdx; _v20 = 12; _v14 = casting_uint16(_v40); _v12 = casting_uint16(_v40 + 2); _v10 = casting_uint16(_v40 + 4); if(_v14 > 3839) { return 18; } if(_v12 <= 1 || _v12 == 255 || (_v12 & 1) != 0) { return 18; } else { if(_v10 <= 1 || _v10 > 65280) { L9: return 18; } else { _t34 = _v10 & 1; if(_t34 == 0) { LMpolicy_LM_Hold_Mode_Command(); _v20 = _t34; *_v48 = 0; return _v20 | 128; } goto L9; } } } HCI_Sniff_Mode_Command( _unknown_ __eax // r0 ) {// addr = 0x00411C1B signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 short _v18; // _cfa_ffffffee signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t65; // _t65 _v32 = _t65; _v40 = __rsi; _v48 = __rdx; _v24 = 12; _v18 = casting_uint16(_v40); _v16 = casting_uint16(_v40 + 2); _v14 = casting_uint16(_v40 + 4); _v12 = casting_uint16(_v40 + 6); _v10 = casting_uint16(_v40 + 8); if(_v18 > 3839) { return 18; } if(_v16 <= 1 || _v16 == 255 || (_v16 & 1) != 0) { return 18; } else { if(_v14 <= 5 || _v14 == 255 || (_v14 & 1) != 0) { return 18; } if(_v12 == 0 || (_v12 & 65535) < 0) { return 18; } else { if((_v10 & 65535) >= 0) { r8d = _v10 & 65535; r9d = r8d; r8d = _v12 & 65535; _v24 = LMpolicy_LM_Sniff_Mode(); *_v48 = 0; return _v24 | 128; } return 18; } } } HCI_Exit_Sniff_Mode_Command( _unknown_ __eax // r0 ) {// addr = 0x00411D4E short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 _v32 = _t22; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { _v16 = LMpolicy_LM_Exit_Sniff_Mode_Command(_t14, _v32); *_v48 = 0; return _v16 | 128; } return 18; } HCI_Park_State_Command( _unknown_ __eax // r0 ) {// addr = 0x00411DAF signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t46; // _t46 _v32 = _t46; _v40 = __rsi; _v48 = __rdx; _v20 = 0; _v14 = casting_uint16(_v40); _v12 = casting_uint16(_v40 + 2); _v10 = casting_uint16(_v40 + 4); if(_v14 > 3839) { return 18; } if(_v12 <= 13 || _v12 == 255 || (_v12 & 1) != 0) { return 18; } else { if(_v10 <= 13 || _v10 == 255) { L9: return 18; } else { _t34 = _v10 & 1; if((_v10 & 1) == 0) { *_v48 = 0; _v20 = LmPolicy_HCI_Enter_Park_State(_t34, _v32); return _v20 | 128; } goto L9; } } } HCI_Exit_Park_State_Command( _unknown_ __eax // r0 ) {// addr = 0x00411E7E short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 _v32 = _t22; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { __edx = 0; _v16 = LMpolicy_HCI_Exit_Park_Mode(0, _v32); *_v48 = 0; return _v16 | 128; } return 18; } HCI_QoS_Setup_Command( _unknown_ __eax // r0 ) {// addr = 0x00411EE4 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t31; // _t31 long long _t33; // _t33 long long _t37; // _t37 _v32 = _t33; _v40 = _t37; _v48 = _t31; _v16 = 12; _v12 = casting_uint16(_v40); _v9 = casting_uint8(_v40 + 3); if(_v12 <= 3839) { if(_v9 <= 2) { _v16 = LMqos_LM_QOS_Setup(_v32); return _v16 | 128; } return 18; } return 18; } HCI_Role_Discovery_Command() {// addr = 0x00411F66 short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t20; // _t20 long long _t22; // _t22 _v32 = _t22; _v40 = __rsi; _v48 = _t20; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { LMconnection_Discover_Role_Command( *_v48); return; } return; } HCI_Switch_Role_Command( _unknown_ __eax // r0 ) {// addr = 0x00411FBF signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t18; // _t18 signed int* _t27; // _t27 long long _t29; // _t29 long long _t33; // _t33 _v32 = _t29; _v40 = _t33; _v48 = _t27; _v16 = 12; _v9 = 0; HCI_Param_Get_Bd_Addr(_v40, &_v24); _t18 = casting_uint8(_v40 + 6); _v9 = _t18; if(_v9 <= 1) { LMpolicy_LM_Switch_Role(); _v16 = _t18; *_v48 = 0; return _v16 | 127; } return 18; } HCI_Read_Link_Policy_Settings_Command( _unknown_ __eax // r0 ) {// addr = 0x0041203E short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t25; // _t25 long long _t27; // _t27 _v32 = _t27; _v40 = __rsi; _v48 = _t25; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { _v16 = LMpolicy_Read_Link_Policy_Settings_Command( *_v48); return _v16; } return 18; } HCI_Write_Link_Policy_Settings_Command( _unknown_ __eax // r0 ) {// addr = 0x004120A4 short _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t32; // _t32 long long _t36; // _t36 _v32 = _t32; _v40 = _t36; _v48 = __rdx; _v16 = 12; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); if(_v12 <= 3839) { if(_v10 <= 15) { _v16 = LMpolicy_Write_Link_Policy_Settings_Command( *_v48); return _v16; } return 18; } return 18; } HCI_Read_Default_Link_Policy_Settings_Command() {// addr = 0x0041212D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; BTCFG_ReadLinkPolicySettings(); return; } HCI_Write_Default_Link_Policy_Settings_Command( _unknown_ __eax // r0 ) {// addr = 0x00412163 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t22; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 15) { __esi = _v10 & 65535; _v16 = BTCFG_WriteLinkPolicySettings(_v10 & 65535, _v32 + 190504); end_du( *_v48); return _v16; } return 18; } HCI_Flow_Specification_Command( _unknown_ __eax // r0 ) {// addr = 0x004121CC char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 intOrPtr _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t65; // _t65 _v48 = _t65; _v56 = __rsi; _v64 = __rdx; _v32 = 12; _v12 = casting_uint16(_v56); _v10 = casting_uint8(_v56 + 3); _v9 = casting_uint8(_v56 + 4); _v28 = casting_uint32(_v56 + 5); _v24 = casting_uint32(_v56 + 9); _v20 = casting_uint32(_v56 + 13); _v16 = casting_uint32(_v56 + 17); if(_v12 <= 3839) { if(_v10 <= 1) { if(_v9 <= 2) { r9d = _v24; r8d = _v28; _v80 = _v16; *__rsp = _v20; _v32 = LMqos_LM_Flow_Specification(); *_v64 = 0; return _v32 | 128; } return 18; } return 18; } return 18; } HCI_Sniff_Subrating_Command( _unknown_ __eax // r0 ) {// addr = 0x004122D4 signed short _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 short _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t47; // _t47 _v32 = _t47; _v40 = __rsi; _v48 = __rdx; _v20 = 12; _v16 = casting_uint16(_v40); _v14 = casting_uint16(_v40 + 2); _v12 = casting_uint16(_v40 + 4); _v10 = casting_uint16(_v40 + 6); if(_v16 <= 3839) { if(_v14 != 255) { if(_v12 != 255) { if(_v10 != 255) { r8 = *_v48 + 24; r9 = r8; r8d = _v10 & 65535; _v20 = LMpolicy_LM_Sniff_Subrating(_v32); return _v20; } return 18; } return 18; } return 18; } return 18; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x004123AC signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004123C5 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004123F4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } Dispatch_Local_Status_Command() {// addr = 0x00412433 signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 _unknown_ _v150; // _cfa_ffffff6a signed short _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed long long _t47; // _t47 long long _t48; // _t48 long long _t54; // _t54 long long _t58; // _t58 _v144 = _t58; _v152 = __esi; _v160 = _t54; _v16 = 31; _v10 = _v152 & 0x3ff; _v32 = &_v136; _t47 = _v32; __ecx = 1; write_du(1, &_v16, _t47, _v32 + 24); if(_v10 <= 8) { _t48 = *((intOrPtr*)(_t47 * 8 + &sts_dispatch_func_table)); _v24 = _t48; if(_v24 != 0) { _t39 = *(_t48 + &status_command_len) & 255; if(__dl == _t39) { r8 = _v24; r8(); _v16 = _t39; if(_v16 == 0) { EG_Generate_Command_Complete_Event(); } return _v16; } return 18; } return 1; } return 1; } HCI_Read_Failed_Contact_Counter_Command( _unknown_ __eax // r0 ) {// addr = 0x0041252F short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t13; // _t13 _v32 = _t13; _v40 = __rsi; _v48 = __rdx; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { return _v16; } return 18; } HCI_Reset_Failed_Contact_Counter_Command( _unknown_ __eax // r0 ) {// addr = 0x0041256E short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t11; // _t11 _v32 = _t11; _v40 = __rsi; _v48 = __rdx; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { return 12; } return 18; } HCI_Read_Link_Quality_Command() {// addr = 0x004125A8 short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t18; // _t18 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v48 = _t18; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { LMqos_Read_Link_Quality(_v32); return; } return; } HCI_Read_RSSI_Command( long long __rdx // r56 ) {// addr = 0x004125FA short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v48 = __rdx; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { LMdm_Read_Read_RSSI(_v32); return; } return; } HCI_Read_AFH_Channel_Map_Command( _unknown_ __eax // r0 ) {// addr = 0x0041264C short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t23; // _t23 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = _t23; _v16 = 12; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { _v16 = LMafh_LM_Read_AFH_Channel_Map(_v32); return _v16; } return 18; } HCI_Read_Clock_Command( _unknown_ __eax // r0 ) {// addr = 0x004126AB signed int _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t30; // _t30 long long _t32; // _t32 _v32 = _t32; _v40 = __rsi; _v48 = _t30; _v16 = 12; _v12 = casting_uint16(_v40); _v9 = casting_uint8(_v40 + 2); if(_v12 <= 3839) { if(_v9 <= 1) { __esi = _v9 & 255; __edi = _v12 & 65535; _v16 = DM_Read_Clock(_v12 & 65535, _v9 & 255, *_v48 + 24); return _v16; } return 18; } return 18; } HCI_Read_Encryption_Key_Size_Command() {// addr = 0x00412729 short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t16; // _t16 long long _t18; // _t18 _v32 = _t18; _v40 = __rsi; _v48 = _t16; _v10 = casting_uint16(_v40); if(_v10 <= 3839) { LMsec_HCI_Read_Encryption_Key_Size(); return; } return; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x00412778 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00412791 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } end_du( long long __rdi // r57 ) {// addr = 0x004127D0 _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 0; return; } Dispatch_Test_Command() {// addr = 0x004127E5 signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ _v102; // _cfa_ffffff9a signed short _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed long long _t47; // _t47 long long _t48; // _t48 long long _t54; // _t54 long long _t58; // _t58 _v96 = _t58; _v104 = __esi; _v112 = _t54; _v16 = 31; _v10 = _v104 & 0x3ff; _v32 = &_v88; _t47 = _v32; __ecx = 1; write_du(1, &_v16, _t47, _v32 + 24); if(_v10 <= 4) { _t48 = *((intOrPtr*)(_t47 * 8 + &test_dispatch_func_table)); _v24 = _t48; if(_v24 != 0) { _t39 = *(_t48 + &test_command_len) & 255; if(__dl == _t39) { r8 = _v24; r8(); _v16 = _t39; if(_v16 == 0) { EG_Generate_Command_Complete_Event(); } return _v16; } return 18; } return 1; } return 1; } HCI_Read_Loopback_Mode_Command( _unknown_ __eax // r0 ) {// addr = 0x004128C3 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v32 = _t19; _v40 = _t21; _v48 = _t17; _v12 = 12; _v12 = BTCFG_ReadLoopbackMode(); return _v12; } HCI_Write_Loopback_Mode_Command() {// addr = 0x00412906 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t13; // _t13 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; _v32 = _t13; end_du( *_v32); __esi = *_v24 & 0xff; BTCFG_WriteLoopbackMode( *_v24 & 0xff, _v16 + 190504); return; } HCI_Enable_Device_Under_Test_Mode_Command() {// addr = 0x0041294A intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t9; // _t9 _v32 = _t9; _v40 = __rsi; _v48 = __rdx; _v12 = 0; LMtst_Enable_Device_Under_Test_Mode(); end_du( *_v48); return _v12; } HCI_Write_Simple_Pairing_Debug_Mode_Command() {// addr = 0x0041297E char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 _v32 = _t17; _v40 = __rsi; _v48 = __rdx; _v9 = casting_uint8(_v40); if(_v9 <= 1) { end_du( *_v48); LMssp_LM_Write_SSP_Debug_Mode(_v32); return; } return; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004129D4 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } HC_Command_Dispatcher( _unknown_ __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x00412A03 unsigned char _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed char _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t144; // _t144 long long _t146; // _t146 signed long long _t156; // _t156 signed long long _t160; // _t160 _unknown_ _t167; // _t167 _unknown_ _t170; // _t170 signed long long _t177; // _t177 _unknown_ _t191; // _t191 _v96 = _t177; _v28 = 31; _t144 = *((intOrPtr*)(_v96 + 74424)); QUEUE_DequeueRequest(_t144); _v88 = _t144; if(( *(_v96 + 190499) & 255) != 0) { return 31; } if(_v88 == 0) { _v28 = 0; goto L30; } else { _t146 = _v88; QUEUE_GetDataBuf(_t146); _v80 = _t146; _v40 = QUEUE_GetPktHdr(_v88); _v24 = _v40 & 65535; _v9 = (_v23 & 255) >> 2; if(( *(_v96 + 190536) & 255) != 1 || (_v24 & 65535) == 3075 || (_v24 & 65535) == 3121 || (_v24 & 65535) == 3123 || (_v24 & 65535) == 3125 || (_v24 & 65535) == 4101 || (_v24 & 65535) == 6145) { L12: if(_v9 != 63) { if(_v9 > 8) { _v28 = Dispatch_Invalid_OGF_Command(_v40, _v80, _v96); goto L25; } _v14 = casting_uint16(_v80); _t156 = _v96; _t186 = _t156; LINK_SerachLEConnHandle(_v14 & 65535, _t156); _v72 = _t156; if(_v72 == 0) { _v48 = *((intOrPtr*)(_t156 * 8 + &ogf_dispatch_func_table)); r8 = _v48; r8(); _v28 = _t156; goto L25; } _v12 = _v24 & 0x3ff; _t160 = *(_v72 + 72); _v64 = _t160; if(_v12 == 6 || _v12 == 25 || _v12 == 19 || _v12 == 20) { _t160 = *(_v64 + 240); if(_t160 == 0) { goto L22; } else { DebugPrint(0, _t160, _t167, _t170, _t186, _t191); return _v28; } } else { L22: _v56 = *((intOrPtr*)(_t160 * 8 + &ogf_dispatch_func_table)); r8 = _v56; r8(); _v28 = _t160; goto L25; } } else { _v28 = Dispatch_TCI_Command(); L25: if(_v28 != 0 && _v28 != 127) { _v28 = _v28 & 127; EG_Generate_Command_Status_Event(); } goto L28; } } else { if((_v24 & 65535) == 6146) { goto L12; } else { EG_Generate_Loopback_Command_Event(); L28: QUEUE_GetBufLength(_v88); QUEUE_DequeueCommit( *((intOrPtr*)(_v96 + 74424))); L30: return _v28; } } } } Dispatch_Invalid_OGF_Command( intOrPtr __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00412CA3 long long _v16; // _cfa_fffffff0 intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; __esi = __esi; _v16 = __rdi; _v24 = __esi; _v32 = __rdx; return 1; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x00412CBC signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00412CD5 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00412D04 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00412D5A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00412D99 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } end_du( long long __rdi // r57 ) {// addr = 0x00412DCB _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 0; return; } HCI_Param_Get_Bd_Addr( signed char* __rdi, // r57 signed int* __rsi // r58 ) {// addr = 0x00412DE0 signed char* _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v24 = *_v16 & 255; (_v24[0]) = (_v16[1]) & 255; (_v24[0]) = (_v16[2]) & 255; (_v24[0]) = (_v16[3]) & 255; (_v24[1]) = (_v16[4]) & 255; (_v24[1]) = (_v16[5]) & 255; return; } TCI_Set_Radio_Change_Command() {// addr = 0x00412E46 signed int _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t18; // _t18 signed char* _t20; // _t20 _v32 = _t18; _v40 = _t20; _v48 = __rdx; _v24 = 8; _v23 = *_v40 & 255; *((long long*)( *_v48)) = 0; EG_Generate_Radio_Change_Event(); return 127; } TCI_Set_Local_BD_Addr_Command() {// addr = 0x00412E9C intOrPtr _v12; // _cfa_fffffff4 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t25; // _t25 long long _t29; // _t29 _v32 = _t25; _v40 = _t29; _v48 = _t22; HCI_Param_Get_Bd_Addr(_v40, &_v24); _v12 = BTCFG_WriteBDAddr(); LCCMD_SetLocalBDAddrRequest(); *((long long*)( *_v48)) = 0; return _v12; } TCI_Suspend_Resume_ACLU_Link( _unknown_ __eax // r0 ) {// addr = 0x00412F02 char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t43; // _t43 long long _t48; // _t48 long long _t51; // _t51 long long _t57; // _t57 _v32 = _t51; _v40 = _t57; _v48 = _t48; _v14 = casting_uint16(_v40); _v9 = casting_uint8(_v40 + 2); _t43 = *_v48; *_t43 = 0; __esi = _v14 & 65535; LM_Find_Link_Table_Entry_By_Connection_Handle(_v14 & 65535, _t43, _v32 + 60216); _v24 = _t43; if(_v24 != 0) { if(_v9 <= 1) { if(_v9 != 0) { _v12 = LCCMD_LinkFlowControlRequest() & 255; } else { _v12 = LCCMD_LinkFlowControlRequest() & 255; } return 0; } return 18; } return 18; } TCI_Write_Local_Features( _unknown_ __eax, // r0 long long __rdx // r56 ) {// addr = 0x00412FDE long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 intOrPtr _t28; // _t28 long long _t29; // _t29 long long _t38; // _t38 long long _t40; // _t40 _v48 = _t38; _v56 = _t40; _v64 = __rdx; _t29 = *fs:0x28]; _v16 = _t29; _v32 = 0; while(1) { __eflags = _v32 - 7; if(__eflags > 0) { break; } _t29 = _t29 + _v56; *((char*)(__rbp + _t29 - 16)) = __dl; _v32 = _v32 + 1; } _v28 = BTCFG_WriteSupportedFeatures(); *((long long*)( *_v64)) = 0; _t28 = _v28; if(__eflags != 0) { __stack_chk_fail(); return _t28; } return _t28; } TCI_Write_Local_Radio_Register( _unknown_ __eax // r0 ) {// addr = 0x0041306D char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t26; // _t26 _v32 = _t26; _v40 = __rsi; _v48 = __rdx; _v16 = 31; _v10 = casting_uint8(_v40); _v9 = casting_uint8(_v40 + 1); _v16 = BthWriteRFRegister(); end_du( *_v48); return _v16; } TCI_Read_Local_Radio_Register( _unknown_ __eax // r0 ) {// addr = 0x004130D7 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; _v48 = __rdx; _v16 = 31; _v9 = casting_uint8(_v40); _v16 = BthReadRFRegister(); write_end_du(1, *_v48 + 24, __rsi); return _v16; } TCI_Send_LMP( _unknown_ __eax // r0 ) {// addr = 0x0041313D signed int _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t36; // _t36 _v32 = _t36; _v40 = __rsi; _v48 = __rdx; _v12 = casting_uint16(_v40); _v9 = casting_uint8(_v40 + 2); _v24 = _v40 + 3; if(_v12 <= 3839) { if(_v9 == 0 || _v9 > 17) { return 18; } else { __edx = _v9 & 255; __esi = _v12 & 65535; __rcx = _v24; r8 = *_v48 + 24; _v16 = LM_Send_LMP_TCI_Command(_v9 & 255, _v12 & 65535, _v24, _v32); return _v16; } } return 18; } TCI_Read_Baseband_Register_Command( _unknown_ __eax // r0 ) {// addr = 0x004131D0 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 _v32 = _t22; _v40 = __rsi; _v48 = __rdx; _v9 = casting_uint8(_v40); RtbtReadModemRegister(); write_end_du(1, *_v48 + 24, __rsi); return 0; } TCI_Write_Baseband_Register_Command() {// addr = 0x00413233 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t23; // _t23 _v32 = _t23; _v40 = __rsi; _v48 = __rdx; _v10 = casting_uint8(_v40); _v9 = casting_uint8(_v40 + 1); RtbtWriteModemRegister(); end_du( *_v48); return 0; } TCI_Read_MAC_Register_Command() {// addr = 0x0041329A signed int _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t19; // _t19 long long _t40; // _t40 _v32 = _t40; _v40 = __rsi; _v48 = __rdx; _t19 = casting_uint32(_v40) & 252; _v12 = _t19; Data.6988 = 0; _v16 = 0; if((_t19 & 1) == 0) { _v16 = 4294967295; Data.6988 = _v16; } else { __rsi = &_v16; RT_PCI_IO_READ32(); Data.6988 = _v16; } write_end_du(4, *_v48 + 24, __rsi); return 0; } TCI_Write_MAC_Register_Command() {// addr = 0x0041334D signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t20; // _t20 long long _t36; // _t36 _v32 = _t36; _v40 = __rsi; _v48 = __rdx; _v20 = 0; _v16 = casting_uint32(_v40) & 252; _t20 = casting_uint32(_v40 + 4); _v12 = _t20; if((_t20 & 1) != 0) { RT_PCI_IO_WRITE32(); } end_du( *_v48); return _v20; } TCI_Read_WiFiRF_Register_Command( long long __rdx // r56 ) {// addr = 0x004133DC intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t10; // _t10 __rdx = __rdx; _v32 = _t10; _v40 = __rsi; _v48 = __rdx; _v12 = 0; __edx = 4; write_end_du(4, *_v48 + 24, __rsi); return _v12; } TCI_Write_WiFiRF_Register_Command() {// addr = 0x00413419 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t9; // _t9 _v32 = _t9; _v40 = __rsi; _v48 = __rdx; _v12 = 0; end_du( *_v48); return _v12; } TCI_Read_WiFiBaseband_Register_Command( long long __rdx // r56 ) {// addr = 0x00413448 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t10; // _t10 __rdx = __rdx; _v32 = _t10; _v40 = __rsi; _v48 = __rdx; _v12 = 0; __edx = 4; write_end_du(4, *_v48 + 24, __rsi); return _v12; } TCI_Write_WiFiBaseband_Register_Command() {// addr = 0x00413485 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v32 = __rdx; end_du( *_v32); return 0; } TCI_Read_WiFiMAC_Register_Command( long long __rdx // r56 ) {// addr = 0x004134AF intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t10; // _t10 __rdx = __rdx; _v32 = _t10; _v40 = __rsi; _v48 = __rdx; _v12 = 0; __edx = 4; write_end_du(4, *_v48 + 24, __rsi); return _v12; } TCI_Write_WiFiMAC_Register_Command() {// addr = 0x004134EC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v32 = __rdx; end_du( *_v32); return 0; } Dispatch_TCI_Command() {// addr = 0x00413516 signed short _v10; // _cfa_fffffff6 signed long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v184; // _cfa_ffffff48 long long _v192; // _cfa_ffffff40 signed short _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 _unknown_ __rbp; // r59 signed long long _t33; // _t33 signed long long _t40; // _t40 long long _t47; // _t47 long long _t51; // _t51 _v192 = _t51; _v200 = __esi; _v208 = _t47; _v10 = _v200 & 0x3ff; _v32 = &_v184; _v16 = 31; _t40 = _v32; __ecx = 1; write_du(1, &_v16, _t40, _v32 + 24); if(_v10 <= 122) { _t33 = _t40; _v24 = *((intOrPtr*)(_t40 * 8 + "F.A")); if(_v24 != 0) { r8 = _v24; r8(); _v16 = _t33; if(_v16 == 0) { EG_Generate_Command_Complete_Event(); } return _v16; } return 1; } return 1; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004135F4 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint24( signed char* __rdi // r57 ) {// addr = 0x00413623 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff) << 8) << 8; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00413665 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } ConverHCIInvalidOGFToStr( short __edi // r4 ) {// addr = 0x004136BB short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; return "Unknown Opcode"; } ConverHCILinkControlOpCodeToStr( signed short __edi // r4 ) {// addr = 0x004136CC signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 __edi = __edi; _v12 = __edi; if((_v12 & 65535) - 1025 <= 51) { goto __rax; } return "Unknown OCF"; } ConverHCILinkPolicyOpCodeToStr( signed short __edi // r4 ) {// addr = 0x0041387D signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 __edi = __edi; _v12 = __edi; if((_v12 & 65535) - 2049 <= 16) { goto __rax; } return "Unknown OCF"; } ConverHCIBasebandOpCodeToStr( signed short __edi // r4 ) {// addr = 0x0041390A signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 __edi = __edi; _v12 = __edi; if((_v12 & 65535) - 3073 <= 108) { goto __rax; } return "Unknown OCF"; } ConverHCIInfoOpCodeToStr( signed short __edi // r4 ) {// addr = 0x00413C5F signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 __edi = __edi; _v12 = __edi; if((_v12 & 65535) - 4097 <= 9) { goto __rax; } return "Unknown OCF"; } ConverHCIStatusOpCodeToStr( signed short __edi // r4 ) {// addr = 0x00413CC2 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 __edi = __edi; _v12 = __edi; if((_v12 & 65535) - 5121 <= 10) { goto __rax; } return "Unknown OCF"; } ConverHCITestOpCodeToStr( signed short __edi // r4 ) {// addr = 0x00413D33 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 65535; if(_t4 == 6146) { return "Write Loopback Mode"; } if(_t4 > 6146) { if(_t4 == 6147) { return "Enable Device Under Test Mode"; } if(_t4 == 6148) { return "Write Simple Pairing Debug Mode"; } L11: return "Unknown OCF"; } if(_t4 == 6145) { return "Read Loopback Mode"; } goto L11; } ConverHCILeControlOpCodeToStr( signed short __edi // r4 ) {// addr = 0x00413D8B signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 __edi = __edi; _v12 = __edi; if((_v12 & 65535) - 8193 <= 30) { goto __rax; } return "Unknown OCF"; } ConverHCIVendorOpCodeToStr( signed short __edi // r4 ) {// addr = 0x00413EB0 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; if((_v12 & 65535) != 64512) { return "Unknown OCF"; } return "Write Radio Mode"; } GetOcfConvertStrFun( signed char __edi // r4 ) {// addr = 0x00413ED3 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 63) { goto __rax; } return ConverHCIInvalidOGFToStr; } HCITraceCommandDumpBuffer() {// addr = 0x00413F30 long long _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 intOrPtr _t13; // _t13 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v28 = _t13; _v40 = _t21; _v48 = _t19; _v56 = _t17; _v16 = _v56; *__rsp = _v48; r9 = _v40; r8d = _v28; DebugPrint(0, _v16, _v16, _v48, __rdi, _v40); return; } HciTraceInquiry() {// addr = 0x00413F86 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v24 = _v40; _v10 = (_v40[3]) & 255; _v9 = (_v40[4]) & 255; r8d = (_v24[1]) & 0xff; _v56 = _v9 & 255; _v64 = _v10 & 255; *__rsp = *_v24 & 0xff; r9d = r8d; r8d = (_v24[2]) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTracePeriodicInquiry( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00414016 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } HciTraceCreateConnection() {// addr = 0x00414024 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed int _v44; // _cfa_ffffffd4 signed short _v46; // _cfa_ffffffd2 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t62; // _t62 long long _t75; // _t75 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 120; _v64 = _t75; _v72 = __rsi; _v56 = _v72; _v46 = casting_uint16( &(_v72[6])); _v42 = (_v72[8]) & 255; _t77 = &(_v72[0xa]); _v44 = casting_uint16( &(_v72[0xa])); _t62 = _v72; _v41 = (_t62[0xc]) & 255; if((_v44 & 65535) >= 0) { } r13d = _v44 & 65535; r13d = r13d & 32767; r11d = _v41 & 255; r10d = _v42 & 255; r9d = _v46 & 65535; r8d = *_v56 & 0xff; r12d = (_v56[4]) & 0xff; _v80 = _t62; _v88 = r13d; _v96 = r11d; _v104 = r10d; _v112 = r9d; _v120 = r8d; _v128 = (_v56[1]) & 0xff; _v136 = (_v56[2]) & 0xff; *__rsp = (_v56[3]) & 0xff; r9d = r12d; r8d = (_v56[5]) & 0xff; __rcx = _v64; DebugPrint(0, _t62, _v64, _v64, _t77, __rsi); __rsp = &(__rsp[0x1e]); _pop(__rbx); _pop(r12); _pop(r13); return; } HciTraceDisconnect() {// addr = 0x0041415D signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v12 = casting_uint16(_v40); _v9 = *(_v40 + 2) & 255; r9d = _v9 & 255; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceCreateConnectionCancel() {// addr = 0x004141B8 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; r9d = (_v16[4]) & 0xff; r8d = (_v16[5]) & 0xff; _v48 = *_v16 & 0xff; _v56 = (_v16[1]) & 0xff; _v64 = (_v16[2]) & 0xff; *__rsp = (_v16[3]) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceLinkKeyReuestReply() {// addr = 0x00414253 signed char* _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed char* _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 signed int _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 signed int _v248; // _cfa_ffffff08 signed int _v256; // _cfa_ffffff00 signed int _v264; // _cfa_fffffef8 signed int _v272; // _cfa_fffffef0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 248; _v80 = __rdi; _v88 = __rsi; _v72 = _v88; _v64 = &(_v88[6]); r10d = *_v64 & 0xff; r12d = (_v64[2]) & 0xff; r13d = (_v64[3]) & 0xff; r14d = (_v64[4]) & 0xff; _v92 = (_v64[5]) & 0xff; _v96 = (_v64[6]) & 0xff; _v100 = (_v64[7]) & 0xff; _v104 = (_v64[8]) & 0xff; _v108 = (_v64[9]) & 0xff; _v112 = (_v64[0xa]) & 0xff; _v116 = (_v64[0xb]) & 0xff; _v120 = (_v64[0xc]) & 0xff; _v124 = (_v64[0xd]) & 0xff; r15d = (_v64[0xe]) & 0xff; r11d = (_v64[0xf]) & 0xff; r9d = *_v72 & 0xff; r8d = (_v72[1]) & 0xff; _v128 = r10d; _v136 = (_v64[1]) & 0xff; _v144 = r12d; _v152 = r13d; _v160 = r14d; _v168 = _v92; _v176 = _v96; _v184 = _v100; _v192 = _v104; _v200 = _v108; _v208 = _v112; _v216 = _v116; _v224 = _v120; _v232 = _v124; _v240 = r15d; _v248 = r11d; _v256 = r9d; _v264 = r8d; _v272 = (_v72[2]) & 0xff; *__rsp = (_v72[3]) & 0xff; r9d = (_v72[4]) & 0xff; r8d = (_v72[5]) & 0xff; __rcx = _v80; DebugPrint(0, _v80, _v80, __rdx, __rdi, __rsi); __rsp = &(__rsp[0x3e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciTraceChangeConnectionPacketType() {// addr = 0x00414488 signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); r9d = _v10 & 65535; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 2, __rsi); return; } HciTraceAuthenticationRequested() {// addr = 0x004144EC signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v10 = casting_uint16(_v40); r8d = _v10 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceReadRemoteNameRequest() {// addr = 0x00414535 signed int _v25; // _cfa_ffffffe7 signed int _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed char* _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t50; // _t50 long long _t63; // _t63 _v48 = _t63; _v56 = __rsi; _v40 = _v56; _v25 = (_v56[6]) & 255; _t50 = &(_v56[7]); _t64 = _t50; _v28 = casting_uint16(_t50); if((_v28 & 65535) >= 0) { } r9d = _v25 & 255; r8d = *_v40 & 0xff; r11d = (_v40[4]) & 0xff; r10d = (_v40[5]) & 0xff; _v72 = _t50; _v80 = _v28 & 0x7fff; _v88 = r9d; _v96 = r8d; _v104 = (_v40[1]) & 0xff; _v112 = (_v40[2]) & 0xff; *__rsp = (_v40[3]) & 0xff; r9d = r11d; r8d = r10d; __rcx = _v48; DebugPrint(0, _t50, _v48, _v48, _t64, __rsi); return; } HciTraceReadRemoteNameRequestCancel() {// addr = 0x00414631 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; r9d = (_v16[4]) & 0xff; r8d = (_v16[5]) & 0xff; _v48 = *_v16 & 0xff; _v56 = (_v16[1]) & 0xff; _v64 = (_v16[2]) & 0xff; *__rsp = (_v16[3]) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceSetupSynchronousConnection() {// addr = 0x004146CC signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t68; // _t68 _v48 = _t68; _v56 = __rsi; _v18 = casting_uint16(_v56); _v28 = casting_uint32(_v56 + 2); _v24 = casting_uint32(_v56 + 6); _v16 = casting_uint16(_v56 + 10); _v14 = casting_uint16(_v56 + 12); _v9 = *(_v56 + 14) & 255; _v12 = casting_uint16(_v56 + 15); _v64 = _v16 & 65535; *__rsp = _v24; r9d = _v28; r8d = _v18 & 65535; DebugPrint(0, _v48, _v48, __rdx, _v56 + 15, __rsi); *__rsp = _v12 & 65535; r9d = _v9 & 255; r8d = _v14 & 65535; DebugPrint(0, _v48, _v48, __rdx, _v56 + 15, __rsi); return; } ConvertIoCapaToStr( signed char __edi // r4 ) {// addr = 0x004147CB signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "DisplayYesNo"; } if(_t4 > 1) { if(_t4 == 2) { return "KeyboardOnly"; } if(_t4 == 3) { return "NoInputNoOutput"; } L11: return "Reserved for future use"; } if(_t4 == 0) { return "DisplayOnly"; } goto L11; } ConvertOobDataPresentToStr( signed char __edi // r4 ) {// addr = 0x00414817 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 0) { return "OOB authentication data not present"; } if(_t4 == 1) { return "OOB authentication data from remote device present"; } return "Reserved for future use"; } ConvertAuthRequirementToStr( signed char __edi // r4 ) {// addr = 0x00414844 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 5) { goto __rax; } return "Reserved for future use"; } HciTraceIoCapabilityRequestReply() {// addr = 0x00414893 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t92; // _t92 intOrPtr _t93; // _t93 intOrPtr _t94; // _t94 _unknown_ _t100; // _t100 _v48 = __rdi; _v56 = __rsi; _v40 = _v56; _v27 = (_v56[6]) & 255; _v26 = (_v56[7]) & 255; _v25 = (_v56[8]) & 255; r9d = (_v40[4]) & 0xff; r8d = (_v40[5]) & 0xff; _t92 = _v48; _v64 = *_v40 & 0xff; _v72 = (_v40[1]) & 0xff; _v80 = (_v40[2]) & 0xff; *__rsp = (_v40[3]) & 0xff; DebugPrint(0, _t92, _t92, _t100, __rdi, __rsi); ConvertIoCapaToStr(_v27 & 255); _t93 = _v48; r9d = _v27 & 255; r8 = _t92; DebugPrint(0, _t93, _t93, _t92, __rdi, __rsi); ConvertOobDataPresentToStr(_v26 & 255); _t94 = _v48; r9d = _v26 & 255; r8 = _t93; DebugPrint(0, _t94, _t94, _t93, __rdi, __rsi); ConvertAuthRequirementToStr(_v25 & 255); r9d = _v25 & 255; r8 = _t94; DebugPrint(0, _v48, _v48, _t94, __rdi, __rsi); return; } DumpSecurityArray() {// addr = 0x004149FD long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t106; // _t106 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 184; _v64 = __rdi; _v72 = __rsi; _v80 = _t106; r8d = (_v80[0xe]) & 0xff; r9d = (_v80[0xd]) & 0xff; _v84 = (_v80[0xc]) & 0xff; _v88 = (_v80[0xb]) & 0xff; _v92 = (_v80[0xa]) & 0xff; _v96 = (_v80[9]) & 0xff; r15d = (_v80[8]) & 0xff; r14d = (_v80[7]) & 0xff; r13d = (_v80[6]) & 0xff; r12d = (_v80[5]) & 0xff; r11d = (_v80[3]) & 0xff; r10d = (_v80[2]) & 0xff; _v104 = (_v80[0xf]) & 0xff; _v112 = r8d; _v120 = r9d; _v128 = _v84; _v136 = _v88; _v144 = _v92; _v152 = _v96; _v160 = r15d; _v168 = r14d; _v176 = r13d; _v184 = r12d; _v192 = (_v80[4]) & 0xff; _v200 = r11d; _v208 = r10d; *__rsp = (_v80[1]) & 0xff; r9d = *_v80 & 0xff; r8 = _v72; __rcx = _v64; DebugPrint(0, _v64, _v64, _v72, __rdi, __rsi); __rsp = &(__rsp[0x2e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciTraceRemoteOobDataRequestReply() {// addr = 0x00414B98 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t54; // _t54 long long _t57; // _t57 _v32 = _t57; _v40 = __rsi; _v16 = _v40; r9d = (_v16[4]) & 0xff; r8d = (_v16[5]) & 0xff; _v48 = *_v16 & 0xff; _v56 = (_v16[1]) & 0xff; _v64 = (_v16[2]) & 0xff; *__rsp = (_v16[3]) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, _t54, _t57, __rsi); DumpSecurityArray(); DumpSecurityArray(); return; } HciTraceReadTxPowerLevel() {// addr = 0x00414C65 signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v12 = casting_uint16(_v40); _v9 = *(_v40 + 2) & 255; r9d = _v9 & 255; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceHoldMode() {// addr = 0x00414CC0 signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v14 = casting_uint16(_v40); _v12 = casting_uint16(_v40 + 2); _v10 = casting_uint16(_v40 + 4); *__rsp = _v10 & 65535; r9d = _v12 & 65535; r8d = _v14 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 4, __rsi); return; } HciTraceSniffMode() {// addr = 0x00414D3F signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t44; // _t44 _v32 = _t44; _v40 = __rsi; _v18 = casting_uint16(_v40); _v16 = casting_uint16(_v40 + 2); _v14 = casting_uint16(_v40 + 4); _v12 = casting_uint16(_v40 + 6); _v10 = casting_uint16(_v40 + 8); r8d = _v16 & 65535; _v56 = _v10 & 65535; _v64 = _v12 & 65535; *__rsp = _v14 & 65535; r9d = r8d; r8d = _v18 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 8, __rsi); return; } HciTraceParkMode( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00414DF7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } HciTraceQosSetup() {// addr = 0x00414E05 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t68; // _t68 _v48 = _t68; _v56 = __rsi; _v12 = casting_uint16(_v56); _v10 = *(_v56 + 2) & 255; _v9 = *(_v56 + 3) & 255; _v28 = casting_uint32(_v56 + 4); _v24 = casting_uint32(_v56 + 8); _v20 = casting_uint32(_v56 + 12); _v16 = casting_uint32(_v56 + 16); *__rsp = _v9 & 255; r9d = _v10 & 255; r8d = _v12 & 65535; DebugPrint(0, _v48, _v48, __rdx, _v56 + 16, __rsi); _v64 = _v16; *__rsp = _v20; r9d = _v24; r8d = _v28; DebugPrint(0, _v48, _v48, __rdx, _v56 + 16, __rsi); return; } HciTraceSwitchRole() {// addr = 0x00414EF7 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char* _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; __rax = _v40; _v9 = (__rax[6]) & 255; if(_v9 == 0) { } r8d = *_v40 & 0xff; r9d = (_v40[4]) & 0xff; r10d = (_v40[5]) & 0xff; _v56 = __rax; _v64 = r8d; _v72 = (_v40[1]) & 0xff; _v80 = (_v40[2]) & 0xff; *__rsp = (_v40[3]) & 0xff; r8d = r10d; __rcx = _v32; DebugPrint(0, __rax, _v32, _v32, __rdi, __rsi); return; } HciTraceLinkPolicySetting() {// addr = 0x00414FB1 signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); r9d = _v10 & 65535; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 2, __rsi); return; } HciTraceDefaultLinkPolicySetting() {// addr = 0x00415015 signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v10 = casting_uint16(_v40); r8d = _v10 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceSniffSubrating() {// addr = 0x0041505E signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t46; // _t46 _v32 = _t46; _v40 = __rsi; _v16 = casting_uint16(_v40); _v14 = casting_uint16(_v40 + 2); _v12 = casting_uint16(_v40 + 4); _v10 = casting_uint16(_v40 + 6); r9d = _v14 & 65535; r8d = _v16 & 65535; DebugPrint(0, _v32, _v32, __rdx, _v40 + 6, __rsi); r9d = _v10 & 65535; r8d = _v12 & 65535; DebugPrint(0, _v32, _v32, __rdx, _v40 + 6, __rsi); return; } ConvertFilterTypeToStr( signed char __edi // r4 ) {// addr = 0x00415118 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "Inquiry result"; } if(_t4 == 2) { return "Connection setup"; } if(_t4 != 0) { return "Reserved"; } return "Clear all filters"; } ConvertAutoAcceptFlagToStr( signed char __edi // r4 ) {// addr = 0x0041514F signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 2) { return "auto accept: on, role swich off"; } if(_t4 == 3) { return "auto accept: on, role switch"; } if(_t4 != 1) { return "auto accept: reserved"; } return "auto accept: off"; } HciTraceSetScanEnable() {// addr = 0x00415187 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; __rax = _v40; _v11 = *__rax & 255; _v10 = (_v11 & 2) >> 1; _v9 = _v11 & 1; if(_v9 != 1) { } if(_v10 != 1) { } __rcx = _v32; *__rsp = __rax; r9 = __rdx; r8d = _v11 & 255; DebugPrint(0, __rax, _v32, __rdx, __rdi, __rsi); return; } HciTraceSetEventFilter() {// addr = 0x00415208 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v68; // _cfa_ffffffbc signed int _v76; // _cfa_ffffffb4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t73; // _t73 signed int _t74; // _t74 signed int _t90; // _t90 signed char* _t179; // _t179 signed char* _t221; // _t221 signed char* _t238; // _t238 signed char* _t241; // _t241 _push(r12); _push(__rbx); __rsp = __rsp - 64; _v48 = __rdi; _v56 = __rsi; _v26 = *_v56 & 255; _v25 = (_v56[1]) & 255; _t179 = &(_v56[2]); _v40 = _t179; r12d = _v26 & 255; ConvertFilterTypeToStr(_v26 & 255); _t252 = _t179; *__rsp = _v25 & 255; r9d = r12d; r8 = _t179; DebugPrint(0, _v48, _v48, _t179, __rdi, __rsi); _t73 = _v26 & 255; if(_t73 == 1) { _t74 = _v25 & 255; if(_t74 == 1) { r9d = (_v40[1]) & 0xff; r8d = (_v40[2]) & 0xff; _v60 = (_v40[3]) & 0xff; _v68 = (_v40[4]) & 0xff; _v76 = (_v40[5]) & 0xff; *__rsp = *_v40 & 0xff; _t73 = DebugPrint(0, _v48, _v48, _t252, __rdi, __rsi); } else { if(_t74 == 2) { r9d = (_v40[4]) & 0xff; r8d = (_v40[5]) & 0xff; _v60 = *_v40 & 0xff; _v68 = (_v40[1]) & 0xff; _v76 = (_v40[2]) & 0xff; *__rsp = (_v40[3]) & 0xff; _t73 = DebugPrint(0, _v48, _v48, _t252, __rdi, __rsi); } else { if(_t74 == 0) { _t73 = DebugPrint(0, _v48, _v48, _t252, __rdi, __rsi); } } } } else { if(_t73 == 2) { _t90 = _v25 & 255; if(_t90 == 1) { r9d = (_v40[1]) & 0xff; r8d = (_v40[2]) & 0xff; _v60 = (_v40[3]) & 0xff; _v68 = (_v40[4]) & 0xff; _v76 = (_v40[5]) & 0xff; *__rsp = *_v40 & 0xff; DebugPrint(0, _v48, _v48, _t252, __rdi, __rsi); _t221 = &(_v40[6]); ConvertAutoAcceptFlagToStr( *_t221 & 0xff); r9d = (_v40[6]) & 0xff; r8 = _t221; _t73 = DebugPrint(0, _v48, _v48, _t221, __rdi, __rsi); } else { if(_t90 == 2) { r9d = (_v40[4]) & 0xff; r8d = (_v40[5]) & 0xff; _v60 = *_v40 & 0xff; _v68 = (_v40[1]) & 0xff; _v76 = (_v40[2]) & 0xff; *__rsp = (_v40[3]) & 0xff; DebugPrint(0, _v48, _v48, _t252, __rdi, __rsi); _t238 = &(_v40[6]); ConvertAutoAcceptFlagToStr( *_t238 & 0xff); r9d = (_v40[6]) & 0xff; r8 = _t238; _t73 = DebugPrint(0, _v48, _v48, _t238, __rdi, __rsi); } else { if(_t90 == 0) { _t241 = _v40; ConvertAutoAcceptFlagToStr( *_t241 & 0xff); r9d = *_v40 & 0xff; r8 = _t241; _t73 = DebugPrint(0, _v48, _v48, _t241, __rdi, __rsi); } } } } else { if(_t73 == 0) { } } } __rsp = &(__rsp[0x10]); _pop(__rbx); _pop(r12); return; } ConvertIACToStr( signed char __edi // r4 ) {// addr = 0x004155FD signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 0) { return "Limited Inquiry Access Code"; } if(_t4 == 51) { return "General Inquiry Access Code"; } return "Reserved"; } HciTraceWritePageScanActivity() {// addr = 0x0041562A signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); r9d = _v10 & 65535; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 2, __rsi); return; } HciTraceWriteInquiryScanActivity() {// addr = 0x0041568E signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); r9d = _v10 & 65535; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 2, __rsi); return; } HciTraceWriteAuthEnable() {// addr = 0x004156F2 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; r8d = _v9 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceWriteEncryptionMode() {// addr = 0x00415735 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; r8d = _v9 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceWriteClassOfDevice() {// addr = 0x00415778 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v12 = casting_uint24(_v40); r8d = _v12; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceWriteVoiceSetting() {// addr = 0x004157BF signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t15; // _t15 _v32 = _t15; _v40 = __rsi; _v12 = casting_uint16(_v40) & 65535; r8d = _v12; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceHostBufferSize() {// addr = 0x00415809 signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t37; // _t37 _v32 = _t37; _v40 = __rsi; _v16 = casting_uint16(_v40); _v9 = *(_v40 + 2) & 255; _v14 = casting_uint16(_v40 + 3); _v12 = casting_uint16(_v40 + 5); _v48 = _v12 & 65535; *__rsp = _v9 & 255; r9d = _v14 & 65535; r8d = _v16 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 5, __rsi); return; } HciTraceWriteLinkSupervisionTimeout() {// addr = 0x0041589B signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t20; // _t20 _v32 = _t20; _v40 = __rsi; _v12 = casting_uint16(_v40); _v10 = casting_uint16(_v40 + 2); r9d = _v10 & 65535; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 2, __rsi); return; } HciTraceWriteCurrentIacLap() {// addr = 0x004158FF signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; _v24 = &(_v40[1]); _v10 = 0; while((_v10 & 255) < _v9) { _t39 = _v24; ConvertIACToStr( *_t39 & 0xff); _v48 = _t39; *__rsp = *_v24 & 0xff; r9d = (_v24[1]) & 0xff; r8d = (_v24[2]) & 0xff; __rcx = _v32; DebugPrint(0, _t39, _v32, _v32, __rdi, __rsi); _v24 = &(_v24[3]); _v10 = _v10 + 1; } return; } HciTraceWriteSspMode() {// addr = 0x004159A4 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; r8d = _v9 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceWriteInquiryTxPowerLevel() {// addr = 0x004159E7 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; r8d = _v9; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceSetAFHChannelClassification() {// addr = 0x00415A2A long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v52; // _cfa_ffffffcc signed int _v60; // _cfa_ffffffc4 signed int _v68; // _cfa_ffffffbc signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r12); _push(__rbx); __rsp = __rsp - 80; _v32 = __rdi; _v40 = __rsi; r11d = *_v40 & 0xff; r10d = (_v40[1]) & 0xff; r9d = (_v40[2]) & 0xff; r8d = (_v40[3]) & 0xff; r12d = (_v40[8]) & 0xff; _v44 = r11d; _v52 = r10d; _v60 = r9d; _v68 = r8d; _v76 = (_v40[4]) & 0xff; _v84 = (_v40[5]) & 0xff; _v92 = (_v40[6]) & 0xff; *__rsp = (_v40[7]) & 0xff; r9d = r12d; r8d = (_v40[9]) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); __rsp = &(__rsp[0x14]); _pop(__rbx); _pop(r12); return; } HciTraceWriteLEHostSupport() {// addr = 0x00415B1C long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; r9d = (_v24[1]) & 0xff; r8d = *_v24 & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } HciTraceLESetEventMask() {// addr = 0x00415B6C long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; r9d = *_v24 & 0xff; r8d = (_v24[1]) & 0xff; r11d = (_v24[6]) & 0xff; r10d = (_v24[7]) & 0xff; _v32 = r9d; _v40 = r8d; _v48 = (_v24[2]) & 0xff; _v56 = (_v24[3]) & 0xff; _v64 = (_v24[4]) & 0xff; *__rsp = (_v24[5]) & 0xff; r9d = r11d; r8d = r10d; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } HciTraceLESetRandomAddress() {// addr = 0x00415C2D signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; r9d = (_v16[4]) & 0xff; r8d = (_v16[5]) & 0xff; _v48 = *_v16 & 0xff; _v56 = (_v16[1]) & 0xff; _v64 = (_v16[2]) & 0xff; *__rsp = (_v16[3]) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceLESetAdvertisingParameters() {// addr = 0x00415CC8 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed short _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t110; // _t110 _v48 = _t110; _v56 = __rsi; _v18 = casting_uint16(_v56); _t112 = _v56 + 2; _v16 = casting_uint16(_v56 + 2); _v13 = *(_v56 + 4) & 255; _v12 = *(_v56 + 5) & 255; _v11 = *(_v56 + 6) & 255; _v32 = _v56 + 7; _v10 = *(_v56 + 13) & 255; _v9 = *(_v56 + 14) & 255; _v96 = _v12 & 255; *__rsp = _v13 & 255; r9d = _v16 & 65535; r8d = _v18 & 65535; DebugPrint(0, _v48, _v48, __rdx, _v56 + 2, __rsi); r8d = *_v32 & 0xff; r9d = (_v32[5]) & 0xff; r10d = _v11 & 255; _v72 = r8d; _v80 = (_v32[1]) & 0xff; _v88 = (_v32[2]) & 0xff; _v96 = (_v32[3]) & 0xff; *__rsp = (_v32[4]) & 0xff; r8d = r10d; DebugPrint(0, _v48, _v48, __rdx, _v56 + 2, __rsi); r9d = _v9 & 255; r8d = _v10 & 255; DebugPrint(0, _v48, _v48, __rdx, _t112, __rsi); return; } HciTraceLESetAdvertisingData() {// addr = 0x00415E3A signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t26; // _t26 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v9 = *_v40 & 255; _v24 = &(_v40[1]); r8d = _v9 & 255; DebugPrint(0, _v32, _v32, _t26, _t28, __rsi); r8d = HCITraceCommandDumpBuffer; Bth_Dbg_DumpBuffer(_v32, _v32, _v24, __rsi); return; } HciTraceLESetScanResponseData() {// addr = 0x00415EAC signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t26; // _t26 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v9 = *_v40 & 255; _v24 = &(_v40[1]); r8d = _v9 & 255; DebugPrint(0, _v32, _v32, _t26, _t28, __rsi); r8d = HCITraceCommandDumpBuffer; Bth_Dbg_DumpBuffer(_v32, _v32, _v24, __rsi); return; } HciTraceLESetAdvertiseEnable() {// addr = 0x00415F1E long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; r8d = *_v24 & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } HciTraceLESetScanParamerters() {// addr = 0x00415F5D signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t44; // _t44 _v32 = _t44; _v40 = __rsi; _v11 = *_v40 & 255; _v16 = casting_uint16( &(_v40[1])); _v14 = casting_uint16( &(_v40[3])); _v10 = (_v40[5]) & 255; _v9 = (_v40[6]) & 255; r8d = _v16 & 65535; _v56 = _v9 & 255; _v64 = _v10 & 255; *__rsp = _v14 & 65535; r9d = r8d; r8d = _v11 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); return; } HciTraceLESetScanEnable() {// addr = 0x00415FFD signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v10 = *_v40 & 255; _v9 = (_v40[1]) & 255; r9d = _v9 & 255; r8d = _v10 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceLECreateConnection() {// addr = 0x00416052 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee signed short _v20; // _cfa_ffffffec signed short _v22; // _cfa_ffffffea signed short _v24; // _cfa_ffffffe8 signed short _v26; // _cfa_ffffffe6 signed short _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t138; // _t138 _v48 = _t138; _v56 = __rsi; _v28 = casting_uint16(_v56); _v26 = casting_uint16(_v56 + 2); _v11 = *(_v56 + 4) & 255; _v10 = *(_v56 + 5) & 255; _v40 = _v56 + 6; _v9 = *(_v56 + 12) & 255; _v24 = casting_uint16(_v56 + 13); _v22 = casting_uint16(_v56 + 15); _v20 = casting_uint16(_v56 + 17); _v18 = casting_uint16(_v56 + 19); _v16 = casting_uint16(_v56 + 21); _t146 = _v56 + 23; _v14 = casting_uint16(_v56 + 23); *__rsp = _v11 & 255; r9d = _v26 & 65535; r8d = _v28 & 65535; DebugPrint(0, _v48, _v48, __rdx, _v56 + 23, __rsi); r8d = *_v40 & 0xff; r9d = (_v40[5]) & 0xff; r10d = _v10 & 255; _v72 = r8d; _v80 = (_v40[1]) & 0xff; _v88 = (_v40[2]) & 0xff; _v96 = (_v40[3]) & 0xff; *__rsp = (_v40[4]) & 0xff; r8d = r10d; DebugPrint(0, _v48, _v48, __rdx, _v56 + 23, __rsi); r8d = _v14 & 65535; r9d = _v24 & 65535; r10d = _v9 & 255; _v72 = r8d; _v80 = _v16 & 65535; _v88 = _v18 & 65535; _v96 = _v20 & 65535; *__rsp = _v22 & 65535; r8d = r10d; DebugPrint(0, _v48, _v48, __rdx, _t146, __rsi); return; } HciTraceLEAddDeviceToWhiteList() {// addr = 0x00416246 signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; _v24 = &(_v40[1]); r8d = *_v24 & 0xff; r9d = (_v24[5]) & 0xff; r10d = _v9 & 255; _v56 = r8d; _v64 = (_v24[1]) & 0xff; _v72 = (_v24[2]) & 0xff; _v80 = (_v24[3]) & 0xff; *__rsp = (_v24[4]) & 0xff; r8d = r10d; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceLERemoveDeviceFromWhiteList() {// addr = 0x004162FC signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; _v24 = &(_v40[1]); r8d = *_v24 & 0xff; r9d = (_v24[5]) & 0xff; r10d = _v9 & 255; _v56 = r8d; _v64 = (_v24[1]) & 0xff; _v72 = (_v24[2]) & 0xff; _v80 = (_v24[3]) & 0xff; *__rsp = (_v24[4]) & 0xff; r8d = r10d; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } HciTraceLEConnectionUpdate() {// addr = 0x004163B2 signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee signed short _v20; // _cfa_ffffffec signed short _v22; // _cfa_ffffffea long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t58; // _t58 _v32 = _t58; _v40 = __rsi; _v22 = casting_uint16(_v40); _v20 = casting_uint16(_v40 + 2); _v18 = casting_uint16(_v40 + 4); _v16 = casting_uint16(_v40 + 6); _v14 = casting_uint16(_v40 + 8); _v12 = casting_uint16(_v40 + 10); _v10 = casting_uint16(_v40 + 12); r8d = _v10 & 65535; r9d = _v20 & 65535; r10d = _v22 & 65535; _v56 = r8d; _v64 = _v12 & 65535; _v72 = _v14 & 65535; _v80 = _v16 & 65535; *__rsp = _v18 & 65535; r8d = r10d; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40 + 12, __rsi); return; } HciTraceLESetHostChannelClassification() {// addr = 0x004164A2 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; r8d = (_v24[3]) & 0xff; _v40 = *_v24 & 0xff; _v48 = (_v24[1]) & 0xff; *__rsp = (_v24[2]) & 0xff; r9d = r8d; r8d = (_v24[4]) & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } HciTraceLEReadChannelMap() {// addr = 0x00416528 signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v10 = casting_uint16(_v40); r8d = _v10 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceLEReadRemoteUsedFeatures() {// addr = 0x00416571 signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v10 = casting_uint16(_v40); r8d = _v10 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceLEEncrypt() {// addr = 0x004165BA long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t24; // _t24 _v32 = _t24; _v40 = __rsi; _v24 = _v40; _v16 = _v40 + 16; r8d = HCITraceCommandDumpBuffer; Bth_Dbg_DumpBuffer(_v32, _v32, _v24, __rsi); r8d = HCITraceCommandDumpBuffer; Bth_Dbg_DumpBuffer(_v32, _v32, _v16, __rsi); return; } HciTraceLEStartEncryption() {// addr = 0x00416626 signed short _v26; // _cfa_ffffffe6 signed short _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t77; // _t77 long long _t79; // _t79 _push(r12); _push(__rbx); __rsp = __rsp - 112; _v64 = _t79; _v72 = __rsi; _v28 = casting_uint16(_v72); _v48 = _v72 + 2; _v26 = casting_uint16(_v72 + 10); _v40 = _v72 + 12; r11d = _v26 & 65535; r10d = *_v48 & 0xff; r9d = (_v48[1]) & 0xff; r8d = (_v48[2]) & 0xff; r12d = (_v48[7]) & 0xff; _v76 = r11d; _v84 = r10d; _v92 = r9d; _v100 = r8d; _v108 = (_v48[3]) & 0xff; _v116 = (_v48[4]) & 0xff; _v124 = (_v48[5]) & 0xff; *__rsp = (_v48[6]) & 0xff; r9d = r12d; r8d = _v28 & 65535; DebugPrint(0, _v64, _v64, _t77, _v72 + 10, __rsi); r8d = HCITraceCommandDumpBuffer; Bth_Dbg_DumpBuffer(_v64, _v64, _v40, __rsi); __rsp = &(__rsp[0x1c]); _pop(__rbx); _pop(r12); return; } HciTraceLELongTermKeyRequestReply() {// addr = 0x00416763 signed short _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t26; // _t26 long long _t28; // _t28 _v32 = _t28; _v40 = __rsi; _v10 = casting_uint16(_v40); _v24 = _v40 + 2; r8d = _v10 & 65535; DebugPrint(0, _v32, _v32, _t26, _v40, __rsi); r8d = HCITraceCommandDumpBuffer; Bth_Dbg_DumpBuffer(_v32, _v32, _v24, __rsi); return; } HciTraceLELongTermKeyRequestedNegativeReply() {// addr = 0x004167DB signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v10 = casting_uint16(_v40); r8d = _v10 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } HciTraceLEReceiverTest() {// addr = 0x00416824 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; r8d = *_v24 & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } HciTraceLETransmitterTest() {// addr = 0x00416863 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; *__rsp = (_v24[2]) & 0xff; r9d = (_v24[1]) & 0xff; r8d = *_v24 & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } HciTraceWriteRadioMode() {// addr = 0x004168C4 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; __rax = _v40; _v9 = *__rax & 255; __ecx = _v9 & 255; if(_v9 == 0) { } __rdx = _v32; r9d = __ecx; r8 = __rax; __rcx = __rdx; DebugPrint(0, __rax, __rdx, __rdx, __rdi, __rsi); return; } HCITraceLinkControl( signed short __esi, // r5 signed int __rax, // r53 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x0041691C long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t22; // _t22 __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __esi; _v20 = _v20 & 64511; if(_v20 > 52) { } else { _t22 = *(__rax * 8 + &HCITraceLinkControlTable); if(_t22 != 0) { *((long long*)( *((intOrPtr*)(_t22 * 8 + &HCITraceLinkControlTable))))(); return; } } return; } HCITraceHCILinkPolicy( signed short __esi, // r5 signed int __rax, // r53 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00416972 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t22; // _t22 __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __esi; _v20 = _v20 & 63487; if(_v20 > 17) { } else { _t22 = *(__rax * 8 + &HCITraceLinkPolicyTable); if(_t22 != 0) { *((long long*)( *((intOrPtr*)(_t22 * 8 + &HCITraceLinkPolicyTable))))(); return; } } return; } HCITraceHCIBaseband( signed short __esi, // r5 signed int __rax, // r53 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x004169C8 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t22; // _t22 __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __esi; _v20 = _v20 & 62463; if(_v20 > 109) { } else { _t22 = *(__rax * 8 + &HCITraceHostControlTable); if(_t22 != 0) { *((long long*)( *((intOrPtr*)(_t22 * 8 + &HCITraceHostControlTable))))(); return; } } return; } HCITraceHCILocalInfo( signed short __esi, // r5 signed int __rax, // r53 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00416A1E long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t22; // _t22 __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __esi; _v20 = _v20 & 61439; if(_v20 > 10) { } else { _t22 = *(__rax * 8 + &HCITraceLocalInfoTable); if(_t22 != 0) { *((long long*)( *((intOrPtr*)(_t22 * 8 + &HCITraceLocalInfoTable))))(); return; } } return; } HCITraceHCILocalStatus( signed short __esi, // r5 signed int __rax, // r53 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00416A74 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __esi; _v20 = _v20 & 60415; if(_v20 > 11 || *((intOrPtr*)(__rax * 8 + &HCITraceLocalStatusTable)) == 0) { return; } else { *HCITraceLocalStatusTable(); return; } } HCITraceHCITest( _unknown_ __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00416AC3 long long _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __ax; _v20 = _v20 & 59391; return; } HCITraceHCILEControl( signed short __esi, // r5 signed int __rax, // r53 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00416ADD long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t22; // _t22 __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __esi; _v20 = _v20 & 57343; if(_v20 > 31) { } else { _t22 = *(__rax * 8 + &HCITraceLEControlTable); if(_t22 != 0) { *((long long*)( *((intOrPtr*)(_t22 * 8 + &HCITraceLEControlTable))))(); return; } } return; } HCITraceHCIVendorOcf( signed short __esi, // r5 signed int __rax, // r53 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00416B33 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __esi; _v20 = _v20 & 1023; if(_v20 != 0 || *((intOrPtr*)(__rax * 8 + &HCITraceVendorTable)) == 0) { return; } else { *HCITraceVendorTable(); return; } } HCITraceHCIInvalidOGF( _unknown_ __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00416B82 long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; __esi = __esi; _v16 = __rdi; _v32 = __rdx; _v20 = __ax; return; } GetOcfTraceFun( signed char __edi // r4 ) {// addr = 0x00416B96 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 63) { goto __rax; } return HCITraceHCIInvalidOGF; } HCICMD_TRACE() {// addr = 0x00416BF3 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed short _v44; // _cfa_ffffffd4 signed int _v46; // _cfa_ffffffd2 long long _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t86; // _t86 intOrPtr _t92; // _t92 _unknown_ _t98; // _t98 _unknown_ _t100; // _t100 long long _t105; // _t105 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 72; _v80 = _t105; _t106 = *((intOrPtr*)(_v80 + 24)); _v46 = casting_uint16( *((intOrPtr*)(_v80 + 24))); _v42 = *( *((intOrPtr*)(_v80 + 24)) + 2) & 255; _t86 = _v80; if(( *(_t86 + 6) & 0xffff) >= (_v42 & 255) + 3) { _v44 = _v46 & 0x3ff; _v41 = (_v46 & 65535) >> 10 & 63; GetOcfConvertStrFun(_v41 & 255); _v64 = _t86; GetOcfTraceFun(_v41 & 255); _v56 = _t86; r12d = _v42 & 255; r13d = _v41 & 255; *_v64(); _v88 = r12d; *__rsp = _v44 & 65535; r9d = r13d; r8 = _t86; DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), _t86, _t106, __rsi); *((long long*)(_v80 + 24)) = *((intOrPtr*)(_v80 + 24)) + 3; _t92 = _v80; _t62 = *(_t92 + 6) & 65535; *(_v80 + 6) = _t92 - 3; r8 = _v56; r8(); } else { r8d = *(_v80 + 6) & 0xffff; DebugPrint(0, _v80, _t98, _t100, _t106, __rsi); } __rsp = &(__rsp[0x12]); _pop(__rbx); _pop(r12); _pop(r13); return; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00416D48 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00416D77 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } L2CapDumpSignaling() {// addr = 0x00416DCD signed char* _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 intOrPtr _t23; // _t23 signed char* _t29; // _t29 long long _t33; // _t33 _v28 = _t23; _v40 = __rsi; _v48 = _t33; _v56 = _t29; _v16 = _v56; _t28 = _v16; if(( *_v16 & 255) != 0) { _t18 = 60; } else { _t18 = 62; } _v72 = _v48; _v80 = _v40; *__rsp = _v28; r9d = _t18; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t28, _v16[8], _v16[8], __rdi, __rsi); return; } L2CapDumpConnection() {// addr = 0x00416E52 signed char* _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 intOrPtr _t23; // _t23 signed char* _t29; // _t29 long long _t33; // _t33 _v28 = _t23; _v40 = __rsi; _v48 = _t33; _v56 = _t29; _v16 = _v56; _t28 = _v16; if(( *_v16 & 255) != 0) { _t18 = 60; } else { _t18 = 62; } _v72 = _v48; _v80 = _v40; *__rsp = _v28; r9d = _t18; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t28, _v16[8], _v16[8], __rdi, __rsi); return; } ConvertL2capRejectReasonToStr( signed short __edi // r4 ) {// addr = 0x00416ED7 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 65535; if(_t4 == 1) { return "Signaling MTU exceeded"; } if(_t4 == 2) { return "Invalid CID in request"; } if(_t4 != 0) { return "Reserved"; } return "Command not understood"; } ConvertL2capPsmToStr( signed short __edi // r4 ) {// addr = 0x00416F0F signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 65535) <= 29) { goto __rax; } return "Reserved"; } ConvertL2capConnRspResultToStr( signed short __edi // r4 ) {// addr = 0x00416F89 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 65535) <= 4) { goto __rax; } return "Reserved"; } ConvertL2capConfigurationResultToStr( signed short __edi // r4 ) {// addr = 0x00416FD2 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 65535; if(_t4 == 1) { return "Failure - unacceptable parameters"; } if(_t4 > 1) { if(_t4 == 2) { return "Failure - rejected(no reason provided)"; } if(_t4 == 3) { return "failure - unknown options"; } L11: return "Reserved"; } if(_t4 == 0) { return "Success"; } goto L11; } ConvertL2capConnRspStatusToStr( signed short __edi // r4 ) {// addr = 0x0041701F signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 65535; if(_t4 == 1) { return "Authentication pending"; } if(_t4 == 2) { return "Authorization pending"; } if(_t4 != 0) { return "Reserved"; } return "No further information available"; } ConvertL2capInfoResultToStr( signed short __edi // r4 ) {// addr = 0x00417057 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 65535; if(_t4 == 0) { return "Sucess"; } if(_t4 == 1) { return "Not supported"; } return "Reserved"; } ConvertServiceTypeToStr( signed char __edi // r4 ) {// addr = 0x00417085 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "Best effort(Default)"; } if(_t4 == 2) { return "Guaranteed"; } if(_t4 != 0) { return "Reserved"; } return "No traffic"; } ConvertLinkModeToStr( signed char __edi // r4 ) {// addr = 0x004170BC signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "Retransmission Mode"; } if(_t4 == 2) { return "Flow control mode"; } if(_t4 != 0) { return "Reserved"; } return "Basic L2CAP mode"; } ConfigParamOptionTraceNotSupported() {// addr = 0x004170F3 signed char* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t15; // _t15 signed int _t22; // _t22 _v16 = __rdi; _v24 = __rsi; _t22 = (_v24[1]) & 0xff; __ecx = *_v24 & 0xff; _t26 = _v16; if(( *_v16 & 255) != 0) { _t15 = 60; } else { _t15 = 62; } _v32 = _t22; *__rsp = __ecx; r9d = _t15; r8d = (_v16[2]) & 0xff; __rcx = (_v16[8]); DebugPrint(0, _t26, _v16[8], _v16[8], __rdi, __rsi); return; } ConfigParamOptionTraceMtu() {// addr = 0x0041716D signed char* _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t19; // _t19 _unknown_ _t24; // _t24 signed int _t28; // _t28 signed char* _t53; // _t53 _v16 = _t53; _v24 = __rsi; if(( *(_v24 + 1) & 255) == 0) { _t41 = _v16; if(( *_v16 & 255) != 0) { _t19 = 60; } else { _t19 = 62; } r9d = _t19; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t41, _v16[8], _v16[8], _t53, __rsi); return; } _t54 = (_v16[0x18]); _t28 = casting_uint16(_v16[0x18]) & 65535; _t44 = _v16; if(( *_v16 & 255) != 0) { _t24 = 60; } else { _t24 = 62; } *__rsp = _t28; r9d = _t24; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t44, _v16[8], _v16[8], _t54, __rsi); return; } ConfigParamOptionTraceFlushTimeout() {// addr = 0x0041723B signed char* _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t19; // _t19 _unknown_ _t24; // _t24 signed int _t28; // _t28 signed char* _t53; // _t53 _v16 = _t53; _v24 = __rsi; if(( *(_v24 + 1) & 255) == 0) { _t41 = _v16; if(( *_v16 & 255) != 0) { _t19 = 60; } else { _t19 = 62; } r9d = _t19; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t41, _v16[8], _v16[8], _t53, __rsi); return; } _t54 = (_v16[0x18]); _t28 = casting_uint16(_v16[0x18]) & 65535; _t44 = _v16; if(( *_v16 & 255) != 0) { _t24 = 60; } else { _t24 = 62; } *__rsp = _t28; r9d = _t24; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t44, _v16[8], _v16[8], _t54, __rsi); return; } ConfigParamOptionTraceQos() {// addr = 0x00417309 signed int _v9; // _cfa_fffffff7 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t25; // _t25 _unknown_ _t31; // _t31 signed int _t44; // _t44 long long _t50; // _t50 long long _t60; // _t60 _v32 = __rdi; _v40 = __rsi; _v9 = *((_v32[0x18]) + 1) & 255; _t50 = _v40; if(( *(_t50 + 1) & 255) == 0) { _t51 = _v32; if(( *_v32 & 255) != 0) { _t25 = 60; } else { _t25 = 62; } r9d = _t25; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t51, _v32[8], _v32[8], __rdi, __rsi); return; } ConvertServiceTypeToStr(_v9 & 255); _t60 = _t50; _t44 = _v9 & 255; _t52 = _v32; if(( *_v32 & 255) != 0) { _t31 = 60; } else { _t31 = 62; } _v48 = _t60; *__rsp = _t44; r9d = _t31; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t52, _v32[8], _t60, __rdi, __rsi); return; } ConfigParamOptionTraceReTxAndFlowControl() {// addr = 0x004173E7 signed int _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 signed int _v59; // _cfa_ffffffc5 signed short _v62; // _cfa_ffffffc2 signed short _v64; // _cfa_ffffffc0 signed short _v66; // _cfa_ffffffbe signed char* _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t60; // _t60 _unknown_ _t66; // _t66 signed int _t78; // _t78 signed int _t80; // _t80 long long _t99; // _t99 long long _t108; // _t108 long long _t109; // _t109 signed char* _t110; // _t110 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 104; _v80 = _t110; _v88 = __rsi; _v59 = *((signed char*)(_v80[0x18])) & 255; _v58 = *((_v80[0x18]) + 1) & 255; _v57 = *((_v80[0x18]) + 2) & 255; _v66 = casting_uint16((_v80[0x18]) + 3); _v64 = casting_uint16((_v80[0x18]) + 5); _t99 = (_v80[0x18]) + 7; _t113 = _t99; _v62 = casting_uint16(_t99); if(_v59 == 1 || _v59 == 2) { r15d = _v62 & 65535; r14d = _v64 & 65535; r13d = _v66 & 65535; r12d = _v57 & 255; __ebx = _v58 & 255; ConvertLinkModeToStr(_v59 & 255); _t108 = _t99; _t78 = _v59 & 255; _t100 = _v80; if(( *_v80 & 255) != 0) { _t60 = 60; } else { _t60 = 62; } _v88 = r15d; _v96 = r14d; _v104 = r13d; _v112 = r12d; _v120 = __ebx; _v128 = _t108; *__rsp = _t78; r9d = _t60; r8d = (_v80[2]) & 0xff; DebugPrint(0, _t100, _v80[8], _t108, _t113, __rsi); } else { ConvertLinkModeToStr(_v59 & 255); _t109 = _t99; _t80 = _v59 & 255; _t101 = _v80; if(( *_v80 & 255) != 0) { _t66 = 60; } else { _t66 = 62; } _v128 = _t109; *__rsp = _t80; r9d = _t66; r8d = (_v80[2]) & 0xff; _t62 = DebugPrint(0, _t101, _v80[8], _t109, _t113, __rsi); } __rsp = &(__rsp[0x1a]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } ConfigParamOptionTrace() {// addr = 0x0041758B signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed long long _t74; // _t74 signed long long _t86; // _t86 _v32 = _t86; _v36 = __esi; while(_v36 > 0) { _v24 = *( *(_v32 + 24)) & 255; _v23 = ( *(_v32 + 24)[1]) & 255; _v36 = (_v36 & 65535) - 2; *(_v32 + 24) = &( *(_v32 + 24)[2]); _t74 = _v32; *((short*)(_t74 + 6)) = _v32 - 2; if((_v24 & 255) > 4) { ConfigParamOptionTraceNotSupported(); } else { *((long long*)( *((intOrPtr*)(_t74 * 8 + &ConfigParamTraceTable))))(); } _v36 = (_v36 & 65535) - (_v23 & 0xff); *(_v32 + 24) = &( *(_v32 + 24)[_v32]); *((short*)(_v32 + 6)) = ( *(_v32 + 6) & 65535) - (_v23 & 0xff); } return; } L2capTraceSignalCmdNotSupportCmd( long long __rcx, // r55 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00417686 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; __rcx = __rcx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v40 = __rcx; return; } L2capTraceSignalCmdReject() {// addr = 0x0041769C signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t53; // _t53 _unknown_ _t57; // _t57 _unknown_ _t63; // _t63 _unknown_ _t70; // _t70 _unknown_ _t74; // _t74 signed int _t77; // _t77 signed int _t79; // _t79 signed int _t80; // _t80 signed int _t88; // _t88 signed int _t92; // _t92 signed int _t95; // _t95 signed char* _t113; // _t113 long long _t118; // _t118 long long _t128; // _t128 signed char* _t132; // _t132 signed char* _t139; // _t139 _v32 = _t139; _v40 = __rsi; _v48 = _t128; _v56 = _t118; _t140 = (_v32[0x18]); _v10 = casting_uint16(_v32[0x18]); _t53 = _v10 & 65535; if(_t53 == 1) { _t140 = (_v32[0x18]) + 2; _t88 = casting_uint16((_v32[0x18]) + 2) & 65535; _t95 = _v10 & 65535; _t77 = *(_v56 + 1) & 0xff; _t113 = _v32; if(( *_t113 & 255) != 0) { _t57 = 60; } else { _t57 = 62; } r8d = (_v32[2]) & 0xff; _v64 = _t88; _v72 = _t95; _v80 = _t77; *__rsp = _v40; r9d = _t57; DebugPrint(0, _t113, _v32[8], _v32[8], _t140, __rsi); } else { if(_t53 == 2) { _t140 = (_v32[0x18]) + 2; _v16 = casting_uint32((_v32[0x18]) + 2); r8d = _v16; r8d = r8d >> 16; _t92 = _v16 & 65535; _t79 = _v10 & 65535; _t113 = _v32; if(( *_t113 & 255) != 0) { _t70 = 60; } else { _t70 = 62; } _v64 = r8d; _v72 = _t92; _v80 = _t79; *__rsp = _v40; r9d = _t70; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t113, _v32[8], _v32[8], _t140, __rsi); } else { _t80 = _v10 & 65535; _t113 = _v32; if(( *_t113 & 255) != 0) { _t74 = 60; } else { _t74 = 62; } _v80 = _t80; *__rsp = _v40; r9d = _t74; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t113, _v32[8], _v32[8], _t140, __rsi); } } ConvertL2capRejectReasonToStr(_v10 & 65535); _t132 = _t113; _t114 = _v32; if(( *_v32 & 255) != 0) { _t63 = 60; } else { _t63 = 62; } *__rsp = _t132; r9d = _t63; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t114, _v32[8], _t132, _t140, __rsi); return; } L2capTraceSignalCmdConnectionRequest() {// addr = 0x004178B0 signed short _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t34; // _t34 _unknown_ _t40; // _t40 signed int _t43; // _t43 signed int _t48; // _t48 signed int _t52; // _t52 signed char* _t64; // _t64 long long _t66; // _t66 long long _t72; // _t72 signed char* _t76; // _t76 signed char* _t77; // _t77 _v32 = _t77; _v40 = __rsi; _v48 = _t72; _v56 = _t66; _v12 = casting_uint16(_v32[0x18]); _t79 = (_v32[0x18]) + 2; _v10 = casting_uint16((_v32[0x18]) + 2); _t48 = _v10 & 65535; _t52 = _v12 & 65535; _t43 = *(_v56 + 1) & 0xff; _t64 = _v32; if(( *_t64 & 255) != 0) { _t34 = 60; } else { _t34 = 62; } r8d = (_v32[2]) & 0xff; _v64 = _t48; _v72 = _t52; _v80 = _t43; *__rsp = _v40; r9d = _t34; DebugPrint(0, _t64, _v32[8], _v32[8], _t79, __rsi); ConvertL2capPsmToStr(_v12 & 65535); _t76 = _t64; _t65 = _v32; if(( *_v32 & 255) != 0) { _t40 = 60; } else { _t40 = 62; } *__rsp = _t76; r9d = _t40; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t65, _v32[8], _t76, _t79, __rsi); return; } L2capTraceSignalCmdConnectionResponse() {// addr = 0x004179C2 signed int _v26; // _cfa_ffffffe6 signed int _v28; // _cfa_ffffffe4 signed short _v30; // _cfa_ffffffe2 signed short _v32; // _cfa_ffffffe0 signed char* _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int __rbx; // r54 _unknown_ __rbp; // r59 signed int _t54; // _t54 signed int _t67; // _t67 signed int _t70; // _t70 signed int _t77; // _t77 signed int _t84; // _t84 signed int _t104; // _t104 long long _t109; // _t109 long long _t116; // _t116 signed int _t121; // _t121 signed char* _t122; // _t122 _v48 = _t122; _v56 = __rsi; _v64 = _t116; _v72 = _t109; _v32 = casting_uint16(_v48[0x18]); _v30 = casting_uint16((_v48[0x18]) + 2); _v28 = casting_uint16((_v48[0x18]) + 4); _t126 = (_v48[0x18]) + 6; _v26 = casting_uint16((_v48[0x18]) + 6); r9d = _v26 & 65535; r8d = _v28 & 65535; _t77 = _v30 & 65535; _t84 = _v32 & 65535; _t70 = *(_v72 + 1) & 0xff; _t104 = _v48; if(( *_t104 & 255) != 0) { _t54 = 60; } else { _t54 = 62; } r10d = (_v48[2]) & 0xff; _v80 = r9d; _v88 = r8d; _v96 = _t77; _v104 = _t84; _v112 = _t70; *__rsp = _v56; r9d = _t54; r8d = r10d; DebugPrint(0, _t104, _v48[8], _v48[8], _t126, __rsi); if(_v28 != 1) { ConvertL2capConnRspResultToStr(_v28 & 65535); r9 = _t104; r8d = (_v48[2]) & 0xff; DebugPrint(0, _v48[8], _v48[8], _t104, _t126, __rsi); return; } else { ConvertL2capConnRspStatusToStr(_v26 & 65535); __rbx = _t104; ConvertL2capConnRspResultToStr(_v28 & 65535); _t121 = _t104; _t108 = _v48; if(( *_v48 & 255) != 0) { _t67 = 60; } else { _t67 = 62; } _v112 = __rbx; *__rsp = _t121; r9d = _t67; r8d = (_v48[2]) & 0xff; DebugPrint(0, _t108, _v48[8], _t121, _t126, __rsi); return; } } L2capTraceSignalCmdConfigRequest() {// addr = 0x00417B80 signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 _unknown_ _t49; // _t49 signed int _t56; // _t56 signed int _t58; // _t58 long long _t77; // _t77 long long _t80; // _t80 signed char* _t85; // _t85 _v32 = _t85; _v40 = __rsi; _v48 = _t80; _v56 = _t77; _v14 = casting_uint16(_v32[0x18]); _t87 = (_v32[0x18]) + 2; _v12 = casting_uint16((_v32[0x18]) + 2); _v10 = ( *(_v56 + 2) & 65535) - 4; (_v32[0x18]) = (_v32[0x18]) + 4; (_v32[6]) = _v32 - 4; r8d = _v10; _t56 = _v12 & 65535; _t58 = _v14 & 65535; __ecx = *(_v56 + 1) & 0xff; _t75 = _v32; if(( *_v32 & 255) != 0) { _t49 = 60; } else { _t49 = 62; } r10d = (_v32[2]) & 0xff; _v72 = r8d; _v80 = _t56; _v88 = _t58; _v96 = __ecx; *__rsp = _v40; r9d = _t49; r8d = r10d; DebugPrint(0, _t75, _v32[8], _v32[8], _t87, __rsi); if(_v10 != 0) { ConfigParamOptionTrace(); return; } return; } L2capTraceSignalCmdConfigResponse() {// addr = 0x00417C93 short _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 short _t69; // _t69 short _t75; // _t75 short _t81; // _t81 signed int _t83; // _t83 signed int _t92; // _t92 signed int _t98; // _t98 signed char* _t125; // _t125 long long _t129; // _t129 long long _t138; // _t138 signed char* _t143; // _t143 signed char* _t144; // _t144 signed char* _t145; // _t145 _v32 = _t145; _v40 = __rsi; _v48 = _t138; _v56 = _t129; _v16 = casting_uint16(_v32[0x18]); _v14 = casting_uint16((_v32[0x18]) + 2); _t148 = (_v32[0x18]) + 4; _v12 = casting_uint16((_v32[0x18]) + 4); _v10 = ( *(_v56 + 2) & 65535) - 6; (_v32[0x18]) = (_v32[0x18]) + 6; (_v32[6]) = _v32 - 6; r9d = _v10; r8d = _v12 & 65535; _t92 = _v14 & 65535; _t98 = _v16 & 65535; _t83 = *(_v56 + 1) & 0xff; _t125 = _v32; if(( *_t125 & 255) != 0) { _t69 = 60; } else { _t69 = 62; } r10d = (_v32[2]) & 0xff; _v64 = r9d; _v72 = r8d; _v80 = _t92; _v88 = _t98; _v96 = _t83; *__rsp = _v40; r9d = _t69; r8d = r10d; DebugPrint(0, _t125, _v32[8], _v32[8], _t148, __rsi); if(_v10 <= 0) { ConvertL2capConfigurationResultToStr(_v12 & 65535); _t143 = _t125; _t126 = _v32; if(( *_v32 & 255) != 0) { _t75 = 60; } else { _t75 = 62; } *__rsp = _t143; r9d = _t75; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t126, _v32[8], _t143, _t148, __rsi); return; } if(_v12 != 0) { ConvertL2capConfigurationResultToStr(_v12 & 65535); _t144 = _t125; _t128 = _v32; if(( *_v32 & 255) != 0) { _t81 = 60; } else { _t81 = 62; } *__rsp = _t144; r9d = _t81; r8d = (_v32[2]) & 0xff; _t71 = DebugPrint(0, _t128, _v32[8], _t144, _t148, __rsi); } if(_v12 != 3) { ConfigParamOptionTrace(); return; } return; } L2capTraceSignalCmdDisconnectionRequest() {// addr = 0x00417E8E signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t28; // _t28 signed int _t33; // _t33 signed int _t35; // _t35 long long _t44; // _t44 long long _t47; // _t47 signed char* _t51; // _t51 _v32 = _t51; _v40 = __rsi; _v48 = _t47; _v56 = _t44; _v12 = casting_uint16(_v32[0x18]); _t53 = (_v32[0x18]) + 2; _v10 = casting_uint16((_v32[0x18]) + 2); _t33 = _v10 & 65535; _t35 = _v12 & 65535; __ecx = *(_v56 + 1) & 0xff; _t43 = _v32; if(( *_v32 & 255) != 0) { _t28 = 60; } else { _t28 = 62; } r8d = (_v32[2]) & 0xff; _v64 = _t33; _v72 = _t35; _v80 = __ecx; *__rsp = _v40; r9d = _t28; DebugPrint(0, _t43, _v32[8], _v32[8], _t53, __rsi); return; } L2capTraceSignalCmdDisconnectionResponse() {// addr = 0x00417F45 signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t28; // _t28 signed int _t33; // _t33 signed int _t35; // _t35 long long _t44; // _t44 long long _t47; // _t47 signed char* _t51; // _t51 _v32 = _t51; _v40 = __rsi; _v48 = _t47; _v56 = _t44; _v12 = casting_uint16(_v32[0x18]); _t53 = (_v32[0x18]) + 2; _v10 = casting_uint16((_v32[0x18]) + 2); _t33 = _v10 & 65535; _t35 = _v12 & 65535; __ecx = *(_v56 + 1) & 0xff; _t43 = _v32; if(( *_v32 & 255) != 0) { _t28 = 60; } else { _t28 = 62; } r8d = (_v32[2]) & 0xff; _v64 = _t33; _v72 = _t35; _v80 = __ecx; *__rsp = _v40; r9d = _t28; DebugPrint(0, _t43, _v32[8], _v32[8], _t53, __rsi); return; } L2capTraceSignalCmdEchoRequest() {// addr = 0x00417FFC signed char* _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t20; // _t20 signed int _t27; // _t27 long long _t32; // _t32 long long _t35; // _t35 _v16 = __rdi; _v24 = __rsi; _v32 = _t35; _v40 = _t32; _t27 = *(_v40 + 2) & 0xffff; __ecx = *(_v40 + 1) & 0xff; _t31 = _v16; if(( *_v16 & 255) != 0) { _t20 = 60; } else { _t20 = 62; } _v56 = _t27; _v64 = __ecx; *__rsp = _v24; r9d = _t20; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t31, _v16[8], _v16[8], __rdi, __rsi); return; } L2capTraceSignalCmdEchoResponse() {// addr = 0x00418088 signed char* _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t20; // _t20 signed int _t27; // _t27 long long _t32; // _t32 long long _t35; // _t35 _v16 = __rdi; _v24 = __rsi; _v32 = _t35; _v40 = _t32; _t27 = *(_v40 + 2) & 0xffff; __ecx = *(_v40 + 1) & 0xff; _t31 = _v16; if(( *_v16 & 255) != 0) { _t20 = 60; } else { _t20 = 62; } _v56 = _t27; _v64 = __ecx; *__rsp = _v24; r9d = _t20; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t31, _v16[8], _v16[8], __rdi, __rsi); return; } L2capTraceSignalCmdInfoRequest() {// addr = 0x00418114 signed short _v10; // _cfa_fffffff6 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t22; // _t22 signed int _t29; // _t29 long long _t35; // _t35 long long _t38; // _t38 signed char* _t42; // _t42 _v32 = _t42; _v40 = __rsi; _v48 = _t38; _v56 = _t35; _t43 = (_v32[0x18]); _v10 = casting_uint16(_v32[0x18]); _t29 = _v10 & 65535; __ecx = *(_v56 + 1) & 0xff; _t34 = _v32; if(( *_v32 & 255) != 0) { _t22 = 60; } else { _t22 = 62; } _v72 = _t29; _v80 = __ecx; *__rsp = _v40; r9d = _t22; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t34, _v32[8], _v32[8], _t43, __rsi); return; } L2capTraceSignalCmdInfoResponse() {// addr = 0x004181AD short _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t40; // _t40 _unknown_ _t46; // _t46 signed int _t49; // _t49 signed int _t54; // _t54 signed int _t58; // _t58 signed char* _t72; // _t72 long long _t74; // _t74 long long _t80; // _t80 signed char* _t84; // _t84 signed char* _t85; // _t85 _v32 = _t85; _v40 = __rsi; _v48 = _t80; _v56 = _t74; _v14 = casting_uint16(_v32[0x18]); _t87 = (_v32[0x18]) + 2; _v12 = casting_uint16((_v32[0x18]) + 2); _v10 = ( *(_v56 + 2) & 65535) - 4; _t54 = _v12 & 65535; _t58 = _v14 & 65535; _t49 = *(_v56 + 1) & 0xff; _t72 = _v32; if(( *_t72 & 255) != 0) { _t40 = 60; } else { _t40 = 62; } r8d = (_v32[2]) & 0xff; _v64 = _t54; _v72 = _t58; _v80 = _t49; *__rsp = _v40; r9d = _t40; DebugPrint(0, _t72, _v32[8], _v32[8], _t87, __rsi); if(_v10 <= 0) { ConvertL2capInfoResultToStr(_v12 & 65535); _t84 = _t72; _t73 = _v32; if(( *_v32 & 255) != 0) { _t46 = 60; } else { _t46 = 62; } *__rsp = _t84; r9d = _t46; r8d = (_v32[2]) & 0xff; DebugPrint(0, _t73, _v32[8], _t84, _t87, __rsi); return; } return; } L2CAP_TRACE() {// addr = 0x004182D5 short _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed int _v38; // _cfa_ffffffda signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t116; // _t116 signed int _t122; // _t122 signed int _t138; // _t138 signed int _t139; // _t139 signed int _t161; // _t161 signed int _t163; // _t163 signed long long _t205; // _t205 _unknown_ _t210; // _t210 _unknown_ _t216; // _t216 signed long long _t228; // _t228 _v64 = _t228; _v72 = __rsi; _v48 = "L2CAP(s)"; DebugPrint(0, _v72, _t210, _t216, _t228, __rsi); if((( *(_v72 + 1) & 255) >> 4 & 2) == 0) { } else { _v40 = casting_uint16( *(_v64 + 24)); _t230 = &( *(_v64 + 24)[2]); _v38 = casting_uint16( &( *(_v64 + 24)[2])); *(_v64 + 24) = &( *(_v64 + 24)[4]); *(_v64 + 6) = _v64 - 4; *__rsp = *( *(_v64 + 24)) & 0xff; r9d = _v38 & 0xffff; r8d = _v40 & 0xffff; DebugPrint(0, _v64, _t210, &( *(_v64 + 24)[4]), &( *(_v64 + 24)[2]), __rsi); if(( *(_v64 + 6) & 65535) == (_v40 & 65535)) { if((_v38 & 65535) != 1) { if((_v38 & 65535) != 2) { _t161 = _v40 & 0xffff; _t138 = _v38 & 0xffff; _t187 = _v64; if(( *_v64 & 255) != 0) { _t116 = 60; } else { _t116 = 62; } _v80 = _t161; *__rsp = _t138; r9d = _t116; r8d = *(_v64 + 2) & 0xff; DebugPrint(0, _t187, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), _t230, __rsi); return; } _t231 = *(_v64 + 24); _t163 = casting_uint16( *(_v64 + 24)) & 65535; _t139 = _v40 & 0xffff; _t190 = _v64; if(( *_v64 & 255) != 0) { _t122 = 60; } else { _t122 = 62; } _v80 = _t163; *__rsp = _t139; r9d = _t122; r8d = *(_v64 + 2) & 0xff; DebugPrint(0, _t190, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), _t231, __rsi); r8d = L2CapDumpConnection; Bth_Dbg_DumpBuffer(_v64, _v64, *((intOrPtr*)(_v64 + 16)), __rsi); return; } _v24 = *( *(_v64 + 24)) & 255; _v23 = ( *(_v64 + 24)[1]) & 255; _v22 = casting_uint16( &( *(_v64 + 24)[2])); *(_v64 + 24) = &( *(_v64 + 24)[4]); _t205 = _v64; *((short*)(_t205 + 6)) = _v64 - 4; if((_v24 & 255) <= 11) { r8 = *((intOrPtr*)(_t205 * 8 + &L2CAPTraceTable)); __rsi = _v48; r8(); } r8d = L2CapDumpSignaling; Bth_Dbg_DumpBuffer(_v64, _v64, *((intOrPtr*)(_v64 + 16)), __rsi); return; } } return; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004185C0 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } HCITraceDataDumpBuffer() {// addr = 0x004185EF signed char* _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 intOrPtr _t23; // _t23 signed char* _t29; // _t29 long long _t33; // _t33 _v28 = _t23; _v40 = __rsi; _v48 = _t33; _v56 = _t29; _v16 = _v56; _t28 = _v16; if(( *_v16 & 255) != 0) { _t18 = 60; } else { _t18 = 62; } _v72 = _v48; _v80 = _v40; *__rsp = _v28; r9d = _t18; r8d = (_v16[2]) & 0xff; DebugPrint(0, _t28, _v16[8], _v16[8], __rdi, __rsi); return; } HCIDATA_TRACE() {// addr = 0x00418674 signed int _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed int _v38; // _cfa_ffffffda signed int _v39; // _cfa_ffffffd9 signed int _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t116; // _t116 signed int _t160; // _t160 signed int _t167; // _t167 signed int _t199; // _t199 signed int _t204; // _t204 signed int _t207; // _t207 signed int _t208; // _t208 signed int _t209; // _t209 signed int _t210; // _t210 signed int _t235; // _t235 signed int _t239; // _t239 signed int _t243; // _t243 signed int _t245; // _t245 signed int _t248; // _t248 signed long long _t276; // _t276 signed long long _t324; // _t324 intOrPtr _t326; // _t326 _unknown_ _t329; // _t329 _v48 = _t324; _t116 = *(_v48 + 1) & 0xff; if(_t116 == 2) { _v40 = _v40 & 0xf000 | ( *( *(_v48 + 24)) & 0xff | (( *(_v48 + 24)[1]) & 0xf) << 8) & 0xfff; _v39 = _v39 & 0xcf | ((( *(_v48 + 24)[1]) & 255) >> 4 & 3) << 4; _v39 = _v39 & 0x3f | ((( *(_v48 + 24)[1]) & 255) >> 6 & 3) << 6; _v38 = casting_uint16( &( *(_v48 + 24)[2])); *(_v48 + 24) = &( *(_v48 + 24)[4]); *(_v48 + 6) = _v48 - 4; _t326 = *((intOrPtr*)(_v48 + 32)); *(_v48 + 2) = HCITraceGetConnIdxByConnHandle( *((intOrPtr*)(_v48 + 32))); _t276 = _v48; _t235 = *(_t276 + 4) & 0xffff; _t243 = _v38 & 0xffff; r9d = 0 + _t276 * 4; r9d = r9d | (_v39 & 255) >> 4 & 3; _t207 = _v40 & 0xfff; _t277 = _v48; if(( *_v48 & 255) != 0) { _t160 = 60; } else { _t160 = 62; } r8d = *(_v48 + 2) & 0xff; _v72 = _t235; _v80 = _t243; _v88 = r9d; _v96 = _t207; *__rsp = "ACL"; r9d = _t160; DebugPrint(0, _t277, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), _t326, _t329); if(( *(_v48 + 6) & 65535) >= (_v38 & 65535)) { L2CAP_TRACE(); return; } else { _t245 = *(_v48 + 4) & 0xffff; _t208 = _v38 & 0xffff; _t281 = _v48; if(( *_v48 & 255) != 0) { _t167 = 60; } else { _t167 = 62; } _v96 = _t245; *__rsp = _t208; r9d = _t167; r8d = *(_v48 + 2) & 0xff; DebugPrint(0, _t281, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), _t326, _t329); r8d = HCITraceDataDumpBuffer; Bth_Dbg_DumpBuffer(_v48, _v48, *((intOrPtr*)(_v48 + 16)), _t329); return; } } if(_t116 == 3) { _v24 = _v24 & 0xf000 | ( *( *(_v48 + 24)) & 0xff | (( *(_v48 + 24)[1]) & 0xf) << 8) & 0xfff; _v23 = _v23 & 0xcf | ((( *(_v48 + 24)[1]) & 255) >> 4 & 3) << 4; _v22 = ( *(_v48 + 24)[2]) & 255; *(_v48 + 24) = &( *(_v48 + 24)[3]); *(_v48 + 6) = _v48 - 3; r8d = *(_v48 + 6) & 0xffff; _t239 = _v22 & 0xff; _t248 = (_v23 & 255) >> 4 & 3; _t209 = _v24 & 0xfff; _t301 = _v48; if(( *_v48 & 255) != 0) { _t199 = 60; } else { _t199 = 62; } _v80 = r8d; _v88 = _t239; _v96 = _t248; *__rsp = _t209; r9d = "SCO"; r8d = _t199; DebugPrint(0, _t301, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), _t324, _t329); return; } _t210 = *(_v48 + 6) & 0xffff; _t303 = _v48; if(( *_v48 & 255) != 0) { _t204 = 60; } else { _t204 = 62; } _v80 = _t210; _v88 = 0; _v96 = 0; *__rsp = 0; r9d = "unknown"; r8d = _t204; DebugPrint(0, _t303, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), _t324, _t329); return; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00418A94 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00418AC3 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } ConvertHCIEventToStr( signed char __edi // r4 ) {// addr = 0x00418B19 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 255) { goto __rax; } return "Unknown Event"; } CovertLinkTypeToStr( signed char __edi // r4 ) {// addr = 0x00418D3E signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 0) { return 4969088; } if(_t4 == 1) { return 4969092; } return "reserved"; } CovertRoleToStr( signed char __edi // r4 ) {// addr = 0x00418D6B signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 0) { return "Master"; } if(_t4 == 1) { return "Slave"; } return "NA"; } ConvertErrorCodeToStr( signed char __edi // r4 ) {// addr = 0x00418D98 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 63) { goto __rax; } return "Reserved"; } CovertLinkPolicyModeToStr( signed char __edi // r4 ) {// addr = 0x0041900B signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "Hold"; } if(_t4 > 1) { if(_t4 == 2) { return "Sniff"; } if(_t4 == 3) { return "Park"; } L11: return "reserved"; } if(_t4 == 0) { return "Active"; } goto L11; } ConvertLEBDAddrType2Str( signed char __edi // r4 ) {// addr = 0x00419057 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 0) { return "Public"; } if(_t4 == 1) { return "Random"; } return "Reserved"; } HCITraceEventDumpBuffer() {// addr = 0x00419084 long long _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 intOrPtr _t21; // _t21 long long _t27; // _t27 long long _t29; // _t29 _v28 = _t21; _v40 = __rsi; _v48 = _t29; _v56 = _t27; _v16 = _v56; _v72 = _v48; _v80 = _v40; *__rsp = _v28; r9d = 62; r8d = *(_v16 + 2) & 0xff; DebugPrint(0, *((intOrPtr*)(_v16 + 8)), *((intOrPtr*)(_v16 + 8)), _v40, __rdi, __rsi); return; } HciEventTraceInquiryResult() {// addr = 0x004190F5 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed char _v43; // _cfa_ffffffd5 signed short _v46; // _cfa_ffffffd2 signed char* _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t110; // _t110 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 136; _v80 = _t110; if( *(_v80 + 24) == 0) { } else { _v42 = *( *(_v80 + 24)) & 255; _v43 = 0; while((_v43 & 255) < _v42) { _v64 = &( *(_v80 + 24)[1]); _v41 = ( *(_v80 + 24)[7]) & 255; _v56 = &( *(_v80 + 24)[0xa]); _v46 = casting_uint16( &( *(_v80 + 24)[0xd])); r11d = (_v56[1]) & 0xff; r10d = (_v56[2]) & 0xff; r9d = _v46 & 65535; r8d = _v41 & 255; r13d = (_v64[4]) & 0xff; r12d = (_v64[5]) & 0xff; _v96 = *_v56 & 0xff; _v104 = r11d; _v112 = r10d; _v120 = r9d; _v128 = r8d; _v136 = *_v64 & 0xff; _v144 = (_v64[1]) & 0xff; _v152 = (_v64[2]) & 0xff; *__rsp = (_v64[3]) & 0xff; r9d = r13d; r8d = r12d; __rcx = *((intOrPtr*)(_v80 + 8)); DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), __rdx, &( *(_v80 + 24)[0xd]), __rsi); __rdx = &( *(_v80 + 24)[0xf]); *(_v80 + 24) = __rdx; _v43 = _v43 + 1; } } __rsp = &(__rsp[0x22]); _pop(__rbx); _pop(r12); _pop(r13); return; } HciEventTraceConnectionComplete() {// addr = 0x00419280 signed int _v57; // _cfa_ffffffc7 signed short _v60; // _cfa_ffffffc4 long long _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v104; // _cfa_ffffff98 signed char* _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed char* __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t89; // _t89 signed char* _t107; // _t107 long long _t110; // _t110 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 136; _v80 = _t110; if( *(_v80 + 24) != 0) { _v57 = *( *(_v80 + 24)) & 255; _v60 = casting_uint16( &( *(_v80 + 24)[1])); _v84 = ( *(_v80 + 24)[0xa]) & 0xff; _t89 = &( *(_v80 + 24)[9]); CovertLinkTypeToStr( *_t89 & 0xff); __rbx = _t89; _v88 = ( *(_v80 + 24)[3]) & 0xff; _v92 = ( *(_v80 + 24)[4]) & 0xff; _v96 = ( *(_v80 + 24)[5]) & 0xff; r15d = ( *(_v80 + 24)[6]) & 0xff; r14d = ( *(_v80 + 24)[7]) & 0xff; _t107 = &( *(_v80 + 24)[8]); r13d = *_t107 & 0xff; r12d = _v60 & 65535; _v100 = _v57 & 255; ConvertErrorCodeToStr(_v57 & 255); __rdx = _t107; _v104 = _v84; _v112 = _t89; _v120 = _v88; _v128 = _v92; _v136 = _v96; _v144 = r15d; _v152 = r14d; _v160 = r13d; *__rsp = r12d; r9d = _v100; r8 = __rdx; __rcx = *((intOrPtr*)(_v80 + 8)); DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), __rdx, &( *(_v80 + 24)[1]), __rsi); } __rsp = &(__rsp[0x22]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciEventTraceDisconnectionComplete() {// addr = 0x00419403 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed short _v44; // _cfa_ffffffd4 long long _v64; // _cfa_ffffffc0 signed int _v76; // _cfa_ffffffb4 signed char* _v84; // _cfa_ffffffac signed char* __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t43; // _t43 long long _t46; // _t46 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 64; _v64 = _t46; if( *(_v64 + 24) != 0) { _v42 = *( *(_v64 + 24)) & 255; _v44 = casting_uint16( &( *(_v64 + 24)[1])); _t43 = *(_v64 + 24); _v41 = (_t43[3]) & 255; r13d = _v41 & 255; ConvertErrorCodeToStr(_v41 & 255); __rbx = _t43; r12d = _v44 & 65535; r14d = _v42 & 255; ConvertErrorCodeToStr(_v42 & 255); __rdx = _t43; _v76 = r13d; _v84 = _t43; *__rsp = r12d; r9d = r14d; r8 = __rdx; __rcx = *((intOrPtr*)(_v64 + 8)); DebugPrint(0, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), __rdx, &( *(_v64 + 24)[1]), __rsi); } __rsp = &(__rsp[0x10]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } HciEventTraceAuthenticationComplete() {// addr = 0x004194CC signed int _v25; // _cfa_ffffffe7 signed short _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t29; // _t29 long long _t32; // _t32 _push(r12); _push(__rbx); __rsp = __rsp - 48; _v48 = _t32; if( *(_v48 + 24) != 0) { _v25 = *( *(_v48 + 24)) & 255; _t29 = &( *(_v48 + 24)[1]); _v28 = casting_uint16(_t29); r12d = _v25 & 255; ConvertErrorCodeToStr(_v25 & 255); __rdx = _t29; *__rsp = _v28 & 65535; r9d = r12d; r8 = __rdx; __rcx = *((intOrPtr*)(_v48 + 8)); DebugPrint(0, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), __rdx, _t29, __rsi); } __rsp = &(__rsp[0xc]); _pop(__rbx); _pop(r12); return; } HciEventTraceRemoteNameRquestComplete() {// addr = 0x0041955B signed int _v57; // _cfa_ffffffc7 signed char* _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t97; // _t97 _unknown_ _t107; // _t107 signed int _t109; // _t109 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 88; _v80 = _t109; if( *(_v80 + 24) != 0) { if(( *(_v80 + 6) & 65535) != 255) { r8d = *(_v80 + 6) & 0xffff; _t43 = DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), _t107, _t109, __rsi); r8d = HCITraceEventDumpBuffer; Bth_Dbg_DumpBuffer(_v80, _t107, &( *(_v80 + 24)[7]), __rsi); } else { _v57 = *( *(_v80 + 24)) & 255; _v72 = &( *(_v80 + 24)[1]); _v84 = *_v72 & 0xff; r15d = (_v72[1]) & 0xff; r14d = (_v72[2]) & 0xff; r13d = (_v72[3]) & 0xff; r12d = (_v72[4]) & 0xff; _t97 = &(_v72[5]); _v88 = _v57 & 255; ConvertErrorCodeToStr(_v57 & 255); _v80 = _v84; _v88 = r15d; _v96 = r14d; _v104 = r13d; _v112 = r12d; *__rsp = *_t97 & 0xff; r9d = _v88; r8 = _t97; DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), _t97, _t109, __rsi); r8d = HCITraceEventDumpBuffer; Bth_Dbg_DumpBuffer(_v80, _t97, &( *(_v80 + 24)[7]), __rsi); } } __rsp = &(__rsp[0x16]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciEventTraceEncryptionChange() {// addr = 0x004196F9 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed short _v44; // _cfa_ffffffd4 long long _v64; // _cfa_ffffffc0 signed int _v76; // _cfa_ffffffb4 long long _v84; // _cfa_ffffffac long long __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t44; // _t44 long long _t47; // _t47 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 64; _v64 = _t47; if( *(_v64 + 24) != 0) { _v42 = *( *(_v64 + 24)) & 255; _t48 = &( *(_v64 + 24)[1]); _v44 = casting_uint16( &( *(_v64 + 24)[1])); _t44 = *(_v64 + 24); _v41 = (_t44[3]) & 255; r13d = _v41 & 255; if(_v41 == 0) { } r12d = _v44 & 65535; r14d = _v42 & 255; ConvertErrorCodeToStr(_v42 & 255); __rdx = _t44; _v76 = r13d; _v84 = __rbx; *__rsp = r12d; r9d = r14d; r8 = __rdx; __rcx = *((intOrPtr*)(_v64 + 8)); DebugPrint(0, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), __rdx, _t48, __rsi); } __rsp = &(__rsp[0x10]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } HciEventTraceCommandComplete() {// addr = 0x004197C6 signed int _v9; // _cfa_fffffff7 signed char _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t15; // _t15 long long _t37; // _t37 _v32 = _t37; if( *(_v32 + 24) != 0) { _v9 = *( *(_v32 + 24)) & 255; _v24 = casting_uint16( &( *(_v32 + 24)[1])); *__rsp = _v24 & 0x3ff; r9d = (_v23 & 255) >> 2 & 255; r8d = _v9 & 255; __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), __rdx, &( *(_v32 + 24)[1]), __rsi); return; } return; } HciEventTraceCommandStatus() {// addr = 0x0041984D signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed char _v55; // _cfa_ffffffc9 signed short _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t44; // _t44 long long _t47; // _t47 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 64; _v64 = _t47; if( *(_v64 + 24) != 0) { _v42 = *( *(_v64 + 24)) & 255; _v41 = ( *(_v64 + 24)[1]) & 255; _t44 = &( *(_v64 + 24)[2]); _v56 = casting_uint16(_t44); r13d = _v56 & 0x3ff; r12d = (_v55 & 255) >> 2 & 255; r14d = _v42 & 255; ConvertErrorCodeToStr(_v42 & 255); __rdx = _t44; _v76 = r13d; _v84 = r12d; *__rsp = _v41 & 255; r9d = r14d; r8 = __rdx; __rcx = *((intOrPtr*)(_v64 + 8)); DebugPrint(0, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), __rdx, _t44, __rsi); } __rsp = &(__rsp[0x10]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } HciEventTracemRoleChange() {// addr = 0x00419918 signed int _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed char* _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed char* __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t73; // _t73 signed char* _t84; // _t84 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 120; _v80 = __rdi; if( *(_v80 + 24) != 0) { _v58 = *( *(_v80 + 24)) & 255; _v72 = &( *(_v80 + 24)[1]); _t73 = *(_v80 + 24); _v57 = (_t73[7]) & 255; _v84 = _v57 & 255; CovertRoleToStr(_v57 & 255); __rbx = _t73; _v88 = *_v72 & 0xff; _v92 = (_v72[1]) & 0xff; r15d = (_v72[2]) & 0xff; r14d = (_v72[3]) & 0xff; r13d = (_v72[4]) & 0xff; _t84 = &(_v72[5]); r12d = *_t84 & 0xff; _v96 = _v58 & 255; ConvertErrorCodeToStr(_v58 & 255); __rdx = _t84; _v96 = _v84; _v104 = _t73; _v112 = _v88; _v120 = _v92; _v128 = r15d; _v136 = r14d; _v144 = r13d; *__rsp = r12d; r9d = _v96; r8 = __rdx; __rcx = *((intOrPtr*)(_v80 + 8)); DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), __rdx, __rdi, __rsi); } __rsp = &(__rsp[0x1e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciEventTraceNumberOfCompletedPackets() {// addr = 0x00419A56 signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t81; // _t81 _v32 = _t81; if( *(_v32 + 24) == 0) { } else { _v10 = *( *(_v32 + 24)) & 255; *(_v32 + 24) = &( *(_v32 + 24)[1]); _v11 = 0; while((_v11 & 255) < _v10) { _v16 = casting_uint16( *(_v32 + 24)); *(_v32 + 24) = &( *(_v32 + 24)[2]); _v14 = casting_uint16( *(_v32 + 24)); *(_v32 + 24) = &( *(_v32 + 24)[2]); _v9 = HCITraceGetConnIdxByConnHandle( *((intOrPtr*)(_v32 + 32))); *__rsp = _v14 & 65535; r9d = _v16 & 65535; r8d = _v9 & 255; __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), &( *(_v32 + 24)[2]), *((intOrPtr*)(_v32 + 32)), __rsi); _v11 = _v11 + 1; } } return; } HciEventTracemModeChange() {// addr = 0x00419B53 signed int _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 signed short _v60; // _cfa_ffffffc4 signed short _v62; // _cfa_ffffffc2 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed char* _v96; // _cfa_ffffffa0 signed char* __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t52; // _t52 signed int _t55; // _t55 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 72; _v80 = _t55; if( *(_v80 + 24) != 0) { _v58 = *( *(_v80 + 24)) & 255; _v62 = casting_uint16( &( *(_v80 + 24)[1])); _v57 = ( *(_v80 + 24)[3]) & 255; _t52 = &( *(_v80 + 24)[4]); _v60 = casting_uint16(_t52); r14d = _v60 & 65535; r13d = _v57 & 255; CovertLinkPolicyModeToStr(_v57 & 255); __rbx = _t52; r12d = _v62 & 65535; r15d = _v58 & 255; ConvertErrorCodeToStr(_v58 & 255); __rdx = _t52; _v80 = r14d; _v88 = r13d; _v96 = _t52; *__rsp = r12d; r9d = r15d; r8 = __rdx; __rcx = *((intOrPtr*)(_v80 + 8)); DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), __rdx, _t52, __rsi); } __rsp = &(__rsp[0x12]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciEventTraceLinkKeyRequest() {// addr = 0x00419C42 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 _v32 = __rdi; if( *(_v32 + 24) != 0) { _v16 = *(_v32 + 24); r9d = (_v16[4]) & 0xff; r8d = (_v16[5]) & 0xff; _v48 = *_v16 & 0xff; _v56 = (_v16[1]) & 0xff; _v64 = (_v16[2]) & 0xff; *__rsp = (_v16[3]) & 0xff; __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), __rdx, __rdi, __rsi); return; } return; } HciEventTraceLinkKeyNotification() {// addr = 0x00419CF2 signed int _v57; // _cfa_ffffffc7 signed char* _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 long long _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 signed int _v132; // _cfa_ffffff7c signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 signed int _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 signed int _v248; // _cfa_ffffff08 signed int _v256; // _cfa_ffffff00 signed int _v264; // _cfa_fffffef8 signed int _v272; // _cfa_fffffef0 signed int _v280; // _cfa_fffffee8 signed int _v288; // _cfa_fffffee0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 264; _v96 = __rdi; if( *(_v96 + 24) != 0) { _v80 = *(_v96 + 24); _v72 = &( *(_v96 + 24)[6]); _v57 = ( *(_v96 + 24)[0x16]) & 255; r11d = _v57 & 255; r13d = (_v72[1]) & 0xff; r14d = (_v72[2]) & 0xff; r15d = (_v72[3]) & 0xff; _v100 = (_v72[4]) & 0xff; _v104 = (_v72[5]) & 0xff; _v108 = (_v72[6]) & 0xff; _v112 = (_v72[7]) & 0xff; _v116 = (_v72[8]) & 0xff; _v120 = (_v72[9]) & 0xff; _v124 = (_v72[0xa]) & 0xff; _v128 = (_v72[0xb]) & 0xff; _v132 = (_v72[0xc]) & 0xff; _v136 = (_v72[0xd]) & 0xff; r12d = (_v72[0xe]) & 0xff; r10d = (_v72[0xf]) & 0xff; r9d = *_v80 & 0xff; r8d = (_v80[1]) & 0xff; _v136 = r11d; _v144 = *_v72 & 0xff; _v152 = r13d; _v160 = r14d; _v168 = r15d; _v176 = _v100; _v184 = _v104; _v192 = _v108; _v200 = _v112; _v208 = _v116; _v216 = _v120; _v224 = _v124; _v232 = _v128; _v240 = _v132; _v248 = _v136; _v256 = r12d; _v264 = r10d; _v272 = r9d; _v280 = r8d; _v288 = (_v80[2]) & 0xff; *__rsp = (_v80[3]) & 0xff; r9d = (_v80[4]) & 0xff; r8d = (_v80[5]) & 0xff; __rcx = *((intOrPtr*)(_v96 + 8)); DebugPrint(0, *((intOrPtr*)(_v96 + 8)), *((intOrPtr*)(_v96 + 8)), __rdx, __rdi, __rsi); } __rsp = &(__rsp[0x42]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciEventTraceMaxSlotsChange() {// addr = 0x00419F60 signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t12; // _t12 long long _t28; // _t28 _v32 = _t28; if( *((intOrPtr*)(_v32 + 24)) != 0) { _v10 = casting_uint16( *((intOrPtr*)(_v32 + 24))); r9d = *( *((intOrPtr*)(_v32 + 24)) + 2) & 0xff; r8d = _v10 & 65535; __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), __rdx, *((intOrPtr*)(_v32 + 24)), __rsi); return; } return; } HciEventTraceReadClockOffset() {// addr = 0x00419FCF signed int _v41; // _cfa_ffffffd7 signed short _v44; // _cfa_ffffffd4 signed short _v46; // _cfa_ffffffd2 long long _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t38; // _t38 long long _t41; // _t41 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 56; _v64 = _t41; if( *(_v64 + 24) != 0) { _v41 = *( *(_v64 + 24)) & 255; _v46 = casting_uint16( &( *(_v64 + 24)[1])); _t38 = &( *(_v64 + 24)[3]); _v44 = casting_uint16(_t38); r12d = _v44 & 65535; r13d = _v41 & 255; ConvertErrorCodeToStr(_v41 & 255); __rdx = _t38; _v72 = r12d; *__rsp = _v46 & 65535; r9d = r13d; r8 = __rdx; __rcx = *((intOrPtr*)(_v64 + 8)); DebugPrint(0, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), __rdx, _t38, __rsi); } __rsp = &(__rsp[0xe]); _pop(__rbx); _pop(r12); _pop(r13); return; } HciEventTraceConnectionPacketTypeChanged() {// addr = 0x0041A088 signed int _v41; // _cfa_ffffffd7 signed short _v44; // _cfa_ffffffd4 signed short _v46; // _cfa_ffffffd2 long long _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t38; // _t38 long long _t41; // _t41 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 56; _v64 = _t41; if( *(_v64 + 24) != 0) { _v41 = *( *(_v64 + 24)) & 255; _v46 = casting_uint16( &( *(_v64 + 24)[1])); _t38 = &( *(_v64 + 24)[3]); _v44 = casting_uint16(_t38); r12d = _v44 & 65535; r13d = _v41 & 255; ConvertErrorCodeToStr(_v41 & 255); __rdx = _t38; _v72 = r12d; *__rsp = _v46 & 65535; r9d = r13d; r8 = __rdx; __rcx = *((intOrPtr*)(_v64 + 8)); DebugPrint(0, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), __rdx, _t38, __rsi); } __rsp = &(__rsp[0xe]); _pop(__rbx); _pop(r12); _pop(r13); return; } HciEventTracePageScanRepetitionModeChange() {// addr = 0x0041A141 signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _v32 = __rdi; _v24 = *(_v32 + 24); _v9 = ( *(_v32 + 24)[6]) & 255; r8d = _v9 & 255; r9d = (_v24[4]) & 0xff; r10d = (_v24[5]) & 0xff; _v56 = r8d; _v64 = *_v24 & 0xff; _v72 = (_v24[1]) & 0xff; _v80 = (_v24[2]) & 0xff; *__rsp = (_v24[3]) & 0xff; r8d = r10d; __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), __rdx, __rdi, __rsi); return; } HciEventTraceInquiryResultWithRssi() {// addr = 0x0041A1FC signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed int _v43; // _cfa_ffffffd5 signed char _v44; // _cfa_ffffffd4 signed short _v46; // _cfa_ffffffd2 signed char* _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 signed int _v132; // _cfa_ffffff7c signed int _v140; // _cfa_ffffff74 signed int _v148; // _cfa_ffffff6c _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t126; // _t126 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = &(__rsp[0xffffffffffffffe0]); _v80 = _t126; if( *(_v80 + 24) == 0) { } else { _v43 = *( *(_v80 + 24)) & 255; __rdx = &( *(_v80 + 24)[1]); *(_v80 + 24) = __rdx; _v44 = 0; while((_v44 & 255) < _v43) { _v64 = *(_v80 + 24); _v42 = ( *(_v80 + 24)[6]) & 255; _v56 = &( *(_v80 + 24)[8]); _v46 = casting_uint16( &( *(_v80 + 24)[0xb])); _v41 = ( *(_v80 + 24)[0xd]) & 255; r12d = _v41; r11d = (_v56[1]) & 0xff; r10d = (_v56[2]) & 0xff; r9d = _v46 & 65535; r8d = _v42 & 255; r14d = (_v64[4]) & 0xff; r13d = (_v64[5]) & 0xff; _v84 = r12d; _v92 = *_v56 & 0xff; _v100 = r11d; _v108 = r10d; _v116 = r9d; _v124 = r8d; _v132 = *_v64 & 0xff; _v140 = (_v64[1]) & 0xff; _v148 = (_v64[2]) & 0xff; *__rsp = (_v64[3]) & 0xff; r9d = r14d; r8d = r13d; __rcx = *((intOrPtr*)(_v80 + 8)); DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), __rdx, &( *(_v80 + 24)[0xb]), __rsi); __rdx = &( *(_v80 + 24)[0xe]); *(_v80 + 24) = __rdx; _v44 = _v44 + 1; } } __rsp = __rsp - 128; _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } HciEventTraceSynchronousConnectionComplete() {// addr = 0x0041A3B1 signed int _v57; // _cfa_ffffffc7 signed short _v60; // _cfa_ffffffc4 long long _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t105; // _t105 long long _t108; // _t108 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 120; _v80 = _t108; if( *(_v80 + 24) != 0) { _v57 = *( *(_v80 + 24)) & 255; _t109 = &( *(_v80 + 24)[1]); _v60 = casting_uint16( &( *(_v80 + 24)[1])); if((( *(_v80 + 24)[9]) & 255) != 0) { } _v84 = ( *(_v80 + 24)[3]) & 0xff; _v88 = ( *(_v80 + 24)[4]) & 0xff; _v92 = ( *(_v80 + 24)[5]) & 0xff; r15d = ( *(_v80 + 24)[6]) & 0xff; r14d = ( *(_v80 + 24)[7]) & 0xff; r13d = ( *(_v80 + 24)[8]) & 0xff; r12d = _v60 & 65535; _v96 = *( *(_v80 + 24)) & 0xff; _t105 = *(_v80 + 24); ConvertErrorCodeToStr( *_t105 & 0xff); __rdx = _t105; _v96 = __rbx; _v104 = _v84; _v112 = _v88; _v120 = _v92; _v128 = r15d; _v136 = r14d; _v144 = r13d; *__rsp = r12d; r9d = _v96; r8 = __rdx; __rcx = *((intOrPtr*)(_v80 + 8)); DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), __rdx, _t109, __rsi); } __rsp = &(__rsp[0x1e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciEventTraceSynchronousConnectionChanged() {// addr = 0x0041A529 signed int _v25; // _cfa_ffffffe7 signed short _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t37; // _t37 long long _t40; // _t40 _push(r12); _push(__rbx); __rsp = __rsp - 48; _v48 = _t40; if( *(_v48 + 24) != 0) { _v25 = *( *(_v48 + 24)) & 255; _v28 = casting_uint16( &( *(_v48 + 24)[1])); r12d = *( *(_v48 + 24)) & 0xff; _t37 = *(_v48 + 24); ConvertErrorCodeToStr( *_t37 & 0xff); __rdx = _t37; *__rsp = _v28 & 65535; r9d = r12d; r8 = __rdx; __rcx = *((intOrPtr*)(_v48 + 8)); DebugPrint(0, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), __rdx, &( *(_v48 + 24)[1]), __rsi); } __rsp = &(__rsp[0xc]); _pop(__rbx); _pop(r12); return; } HciEventTraceSniffSubrating() {// addr = 0x0041A5CC signed int _v25; // _cfa_ffffffe7 signed short _v28; // _cfa_ffffffe4 signed short _v30; // _cfa_ffffffe2 signed short _v32; // _cfa_ffffffe0 signed short _v34; // _cfa_ffffffde signed short _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t89; // _t89 long long _t99; // _t99 _push(r12); _push(__rbx); __rsp = __rsp - 48; _v48 = _t99; if( *(_v48 + 24) != 0) { _v25 = *( *(_v48 + 24)) & 255; _v36 = casting_uint16( &( *(_v48 + 24)[1])); _v34 = casting_uint16( &( *(_v48 + 24)[3])); _v32 = casting_uint16( &( *(_v48 + 24)[5])); _v30 = casting_uint16( &( *(_v48 + 24)[7])); _t104 = &( *(_v48 + 24)[9]); _v28 = casting_uint16( &( *(_v48 + 24)[9])); r12d = *( *(_v48 + 24)) & 0xff; _t89 = *(_v48 + 24); ConvertErrorCodeToStr( *_t89 & 0xff); __rdx = _t89; *__rsp = _v36 & 65535; r9d = r12d; r8 = __rdx; DebugPrint(0, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), __rdx, &( *(_v48 + 24)[9]), __rsi); r9d = _v34 & 65535; r8d = _v32 & 65535; DebugPrint(0, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), __rdx, &( *(_v48 + 24)[9]), __rsi); r9d = _v28 & 65535; r8d = _v30 & 65535; DebugPrint(0, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), __rdx, _t104, __rsi); } __rsp = &(__rsp[0xc]); _pop(__rbx); _pop(r12); return; } HciEventTraceExtendedInquiryResult() {// addr = 0x0041A737 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed int _v43; // _cfa_ffffffd5 signed char _v44; // _cfa_ffffffd4 signed short _v46; // _cfa_ffffffd2 signed char* _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 signed int _v132; // _cfa_ffffff7c signed int _v140; // _cfa_ffffff74 signed int _v148; // _cfa_ffffff6c _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t137; // _t137 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = &(__rsp[0xffffffffffffffe0]); _v80 = _t137; if( *(_v80 + 24) == 0) { } else { _v43 = *( *(_v80 + 24)) & 255; __rdx = &( *(_v80 + 24)[1]); *(_v80 + 24) = __rdx; _v44 = 0; while((_v44 & 255) < _v43) { _v64 = *(_v80 + 24); _v42 = ( *(_v80 + 24)[6]) & 255; _v56 = &( *(_v80 + 24)[8]); _v46 = casting_uint16( &( *(_v80 + 24)[0xb])); _v41 = ( *(_v80 + 24)[0xd]) & 255; r12d = _v41; r11d = (_v56[1]) & 0xff; r10d = (_v56[2]) & 0xff; r9d = _v46 & 65535; r8d = _v42 & 255; r14d = (_v64[4]) & 0xff; r13d = (_v64[5]) & 0xff; _v84 = r12d; _v92 = *_v56 & 0xff; _v100 = r11d; _v108 = r10d; _v116 = r9d; _v124 = r8d; _v132 = *_v64 & 0xff; _v140 = (_v64[1]) & 0xff; _v148 = (_v64[2]) & 0xff; *__rsp = (_v64[3]) & 0xff; r9d = r14d; r8d = r13d; DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), __rdx, &( *(_v80 + 24)[0xb]), __rsi); r8d = HCITraceEventDumpBuffer; Bth_Dbg_DumpBuffer(_v80, __rdx, &( *(_v80 + 24)[0xe]), __rsi); __rdx = &( *(_v80 + 24)[0xfe]); *(_v80 + 24) = __rdx; _v44 = _v44 + 1; } } __rsp = __rsp - 128; _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } HciEventTraceUserConfirmationRequest() {// addr = 0x0041A917 signed int _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t23; // _t23 long long _t59; // _t59 _v32 = _t59; if( *(_v32 + 24) != 0) { _v24 = *(_v32 + 24); _v12 = casting_uint32( &( *(_v32 + 24)[6])); r9d = (_v24[4]) & 0xff; r10d = (_v24[5]) & 0xff; r8d = _v12; _v56 = r8d; _v64 = *_v24 & 0xff; _v72 = (_v24[1]) & 0xff; _v80 = (_v24[2]) & 0xff; *__rsp = (_v24[3]) & 0xff; r8d = r10d; __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), __rdx, &( *(_v32 + 24)[6]), __rsi); return; } return; } HciEventTraceSimplePairingComplete() {// addr = 0x0041A9EA signed int _v57; // _cfa_ffffffc7 signed char* _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t68; // _t68 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 88; _v80 = __rdi; if( *(_v80 + 24) != 0) { _v57 = *( *(_v80 + 24)) & 255; *(_v80 + 24) = &( *(_v80 + 24)[1]); _v72 = *(_v80 + 24); _v84 = *_v72 & 0xff; r15d = (_v72[1]) & 0xff; r14d = (_v72[2]) & 0xff; r13d = (_v72[3]) & 0xff; r12d = (_v72[4]) & 0xff; _t68 = &(_v72[5]); _v88 = _v57 & 255; ConvertErrorCodeToStr(_v57 & 255); _v80 = _v84; _v88 = r15d; _v96 = r14d; _v104 = r13d; _v112 = r12d; *__rsp = *_t68 & 0xff; r9d = _v88; r8 = _t68; __rcx = *((intOrPtr*)(_v80 + 8)); DebugPrint(0, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), _t68, __rdi, __rsi); } __rsp = &(__rsp[0x16]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } HciEventTraceLEConnectionComplete() {// addr = 0x0041AB02 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed int _v43; // _cfa_ffffffd5 signed int _v44; // _cfa_ffffffd4 signed short _v46; // _cfa_ffffffd2 signed short _v48; // _cfa_ffffffd0 signed short _v50; // _cfa_ffffffce signed short _v52; // _cfa_ffffffcc signed char* _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 signed int _v132; // _cfa_ffffff7c signed int _v140; // _cfa_ffffff74 signed int _v148; // _cfa_ffffff6c _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t120; // _t120 long long _t138; // _t138 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = &(__rsp[0xffffffffffffffe0]); _v80 = _t138; if( *(_v80 + 24) != 0) { _v44 = *( *(_v80 + 24)) & 255; _v52 = casting_uint16( *(_v80 + 24) + 1); _v43 = *( *(_v80 + 24) + 3) & 255; _v42 = *( *(_v80 + 24) + 4) & 255; _v64 = *(_v80 + 24) + 5; _v50 = casting_uint16( *(_v80 + 24) + 11); _v48 = casting_uint16( *(_v80 + 24) + 13); _t142 = *(_v80 + 24) + 15; _v46 = casting_uint16( *(_v80 + 24) + 15); _t120 = *(_v80 + 24); _v41 = *(_t120 + 17) & 255; if(_v43 == 0) { } *__rsp = _t120; r9d = _v52 & 65535; r8d = _v44 & 255; DebugPrint(0, _t120, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), _t142, __rsi); r14d = _v41 & 255; r13d = _v46 & 65535; r12d = _v48 & 65535; ConvertLEBDAddrType2Str(_v42 & 255); r8d = *_v64 & 0xff; r9d = (_v64[4]) & 0xff; r10d = (_v64[5]) & 0xff; _v92 = r14d; _v100 = r13d; _v108 = r12d; _v116 = _v50 & 65535; _v124 = _t120; _v132 = r8d; _v140 = (_v64[1]) & 0xff; _v148 = (_v64[2]) & 0xff; *__rsp = (_v64[3]) & 0xff; r8d = r10d; DebugPrint(0, _t120, *((intOrPtr*)(_v80 + 8)), *((intOrPtr*)(_v80 + 8)), _t142, __rsi); } __rsp = __rsp - 128; _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } HciEventTraceLEAdvertisingReport() {// addr = 0x0041ACE6 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed char _v29; // _cfa_ffffffe3 signed char* _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t93; // _t93 long long _t114; // _t114 _v64 = _t114; if( *(_v64 + 24) == 0) { } else { r8d = HCITraceEventDumpBuffer; _t115 = *(_v64 + 24); Bth_Dbg_DumpBuffer(_v64, _v64, *(_v64 + 24), __rsi); _v28 = *( *(_v64 + 24)) & 255; _v29 = 0; while((_v29 & 255) < _v28) { _v48 = &( *(_v64 + 24)[1]); _v27 = *_v48 & 255; _v26 = ( *(_v64 + 24)[1]) & 255; _v40 = &(_v48[2]); _t93 = _v48; _v25 = (_t93[8]) & 255; ConvertLEBDAddrType2Str(_v26 & 255); r9d = _v27 & 255; r8 = _t93; DebugPrint(0, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), _t93, _t115, __rsi); r9d = (_v40[4]) & 0xff; r8d = (_v40[5]) & 0xff; _v80 = *_v40 & 0xff; _v88 = (_v40[1]) & 0xff; _v96 = (_v40[2]) & 0xff; *__rsp = (_v40[3]) & 0xff; DebugPrint(0, *((intOrPtr*)(_v64 + 8)), *((intOrPtr*)(_v64 + 8)), _t93, _t115, __rsi); _v29 = _v29 + 1; } } return; } HciEventTraceLEConnectionUpdateComplete() {// addr = 0x0041AE61 signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee long long _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t26; // _t26 long long _t58; // _t58 _v32 = _t58; if( *(_v32 + 24) != 0) { _v9 = *( *(_v32 + 24)) & 255; _v18 = casting_uint16( &( *(_v32 + 24)[1])); _v16 = casting_uint16( &( *(_v32 + 24)[3])); _v14 = casting_uint16( &( *(_v32 + 24)[5])); _v12 = casting_uint16( &( *(_v32 + 24)[7])); _v48 = _v12 & 65535; *__rsp = _v14 & 65535; r9d = _v16 & 65535; r8d = _v18 & 65535; __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), __rdx, &( *(_v32 + 24)[7]), __rsi); return; } return; } HciEventTraceLEReadRemoteUsedFeaturesComplete() {// addr = 0x0041AF2F signed int _v25; // _cfa_ffffffe7 signed short _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t30; // _t30 long long _t76; // _t76 _v48 = _t76; if( *(_v48 + 24) != 0) { _v25 = *( *(_v48 + 24)) & 255; _v28 = casting_uint16( &( *(_v48 + 24)[1])); _v40 = &( *(_v48 + 24)[3]); r10d = *_v40 & 0xff; r9d = (_v40[1]) & 0xff; r8d = (_v40[2]) & 0xff; r11d = _v28 & 65535; _v72 = r10d; _v80 = r9d; _v88 = r8d; _v96 = (_v40[3]) & 0xff; _v104 = (_v40[4]) & 0xff; _v112 = (_v40[5]) & 0xff; *__rsp = (_v40[6]) & 0xff; r9d = (_v40[7]) & 0xff; r8d = r11d; __rcx = *((intOrPtr*)(_v48 + 8)); DebugPrint(0, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), __rdx, &( *(_v48 + 24)[1]), __rsi); return; } return; } HciEventTraceLELongTermKeyRequest() {// addr = 0x0041B046 signed short _v26; // _cfa_ffffffe6 signed short _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v60; // _cfa_ffffffc4 signed int _v68; // _cfa_ffffffbc signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t77; // _t77 _push(r12); _push(__rbx); __rsp = __rsp - 96; _v48 = _t77; if( *((intOrPtr*)(_v48 + 24)) != 0) { _v28 = casting_uint16( *((intOrPtr*)(_v48 + 24))); _v40 = *((intOrPtr*)(_v48 + 24)) + 2; _v26 = casting_uint16( *((intOrPtr*)(_v48 + 24)) + 10); r11d = _v26 & 65535; r10d = *_v40 & 0xff; r9d = (_v40[1]) & 0xff; r8d = (_v40[2]) & 0xff; r12d = (_v40[7]) & 0xff; _v60 = r11d; _v68 = r10d; _v76 = r9d; _v84 = r8d; _v92 = (_v40[3]) & 0xff; _v100 = (_v40[4]) & 0xff; _v108 = (_v40[5]) & 0xff; *__rsp = (_v40[6]) & 0xff; r9d = r12d; r8d = _v28 & 65535; __rcx = *((intOrPtr*)(_v48 + 8)); DebugPrint(0, *((intOrPtr*)(_v48 + 8)), *((intOrPtr*)(_v48 + 8)), __rdx, *((intOrPtr*)(_v48 + 24)) + 10, __rsi); } __rsp = &(__rsp[0x18]); _pop(__rbx); _pop(r12); return; } HciEventTraceLEMetaEvent() {// addr = 0x0041B171 signed int _v9; // _cfa_fffffff7 signed long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t34; // _t34 signed long long _t39; // _t39 signed long long _t40; // _t40 signed long long _t45; // _t45 _v32 = _t45; _t34 = *((intOrPtr*)(_v32 + 24)); _v9 = *_t34 & 255; if(_v9 > 5) { } else { r8 = *((intOrPtr*)(_t34 * 8 + &LEMetaEventTable)); __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_t34 * 8 + &LEMetaEventTable)), _t45, __rsi); _t39 = _v32; *((long long*)(_t39 + 24)) = *(_v32 + 24) + 1; _t40 = *(_t39 * 8 + &HciEventLEMetaTraceTable); if(_t40 != 0) { *((long long*)( *((intOrPtr*)(_t40 * 8 + &HciEventLEMetaTraceTable))))(); return; } } return; } HciEventTraceVendorSpecific() {// addr = 0x0041B206 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed char* _t26; // _t26 _v32 = __rdi; _v10 = *( *(_v32 + 24)) & 255; if((_v10 & 255) == 8) { _t26 = *(_v32 + 24); _v9 = (_t26[1]) & 255; __ecx = _v9 & 255; if(_v9 == 0) { } r9d = __ecx; r8 = _t26; __rcx = *((intOrPtr*)(_v32 + 8)); DebugPrint(0, _t26, *((intOrPtr*)(_v32 + 8)), *((intOrPtr*)(_v32 + 8)), __rdi, __rsi); return; } return; } HCIEVENT_TRACE() {// addr = 0x0041B27D signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 long long _v48; // _cfa_ffffffd0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t89; // _t89 signed long long _t91; // _t91 signed long long _t93; // _t93 _unknown_ _t97; // _t97 _unknown_ _t100; // _t100 long long _t105; // _t105 _push(r12); _push(__rbx); __rsp = __rsp - 48; _v48 = _t105; _v26 = *( *(_v48 + 24)) & 255; _v25 = ( *(_v48 + 24)[1]) & 255; if(( *(_v48 + 6) & 0xffff) >= (_v25 & 255) + 2) { *(_v48 + 24) = &( *(_v48 + 24)[2]); _t89 = _v48; *((short*)(_t89 + 6)) = _v48 - 2; if(_v26 != 19) { r12d = _v26 & 255; ConvertHCIEventToStr(_v26 & 255); _t91 = *(_v48 + 8); *__rsp = _v25 & 255; r9d = r12d; r8 = _t89; _t54 = DebugPrint(0, _t91, _t91, _t89, _t105, __rsi); } else { r12d = _v26 & 255; ConvertHCIEventToStr(_v26 & 255); _t91 = *(_v48 + 8); *__rsp = _v25 & 255; r9d = r12d; r8 = _t89; _t54 = DebugPrint(0, _t91, _t91, _t89, _t105, __rsi); } if(_v26 > 64) { if(_v26 == 255) { HciEventTraceVendorSpecific(); } } else { _t54 = _t91; _t93 = *(_t91 * 8 + &HciEventTraceTable); if(_t93 != 0) { _t54 = _t93; *((long long*)( *((intOrPtr*)(_t93 * 8 + &HciEventTraceTable))))(); } } } else { r8d = *(_v48 + 6) & 0xffff; DebugPrint(0, _v48, _t97, _t100, _t105, __rsi); } __rsp = &(__rsp[0xc]); _pop(__rbx); _pop(r12); return; } HCITraceGetConnIdxByConnHandle( signed long long __rax // r53 ) {// addr = 0x0041B3F8 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 short _t54; // _t54 signed long long _t67; // _t67 signed long long _t70; // _t70 signed long long _t74; // _t74 signed long long _t78; // _t78 signed long long _t83; // _t83 signed long long _t88; // _t88 long long _t102; // _t102 _v32 = _t102; _v36 = _t54; _v10 = 0; LM_SearchACLByConnectionHandle(__rax); _v24 = __rax; if(_v24 != 0 && *((intOrPtr*)(_v24 + 80)) != 0) { _t67 = _v24; _v9 = *(_t67 + 11) & 255; if(_v9 <= 26) { _t70 = _t67 * 184 + _v32 + 33792; if(( *(_t70 + 8) & 255) != 0) { _t74 = *(_t70 * 184 + _v32 + 33896); if(_t74 != 0) { _t78 = *(_t74 * 184 + _v32 + 33896); if(( *_t78 & 255) != 0) { _t83 = *( *((intOrPtr*)(_t78 * 184 + _v32 + 33896)) + 32); if(_t83 != 0) { _t88 = *( *((intOrPtr*)(_t83 * 184 + _v32 + 33896)) + 32); if(( *_t88 & 255) != 0) { _v10 = *( *((intOrPtr*)( *((intOrPtr*)(_t88 * 184 + _v32 + 33896)) + 32)) + 2) & 255; } } } } } } } return _v10 & 255; } HCI_TRACE() {// addr = 0x0041B548 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t21; // _t21 long long _t40; // _t40 _v32 = _t40; _v16 = "[RTBT_DRV:HCI]"; *((long long*)(_v32 + 8)) = _v16; *((long long*)(_v32 + 24)) = *((intOrPtr*)(_v32 + 16)); *((short*)(_v32 + 6)) = __dx; _t21 = *(_v32 + 1) & 0xff; if(_t21 == 2) { HCIDATA_TRACE(); return; } if(_t21 > 2) { if(_t21 == 3) { HCIDATA_TRACE(); return; } if(_t21 == 4) { HCIEVENT_TRACE(); return; } } else { if(_t21 == 1) { HCICMD_TRACE(); return; } } return; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x0041B5EC signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x0041B605 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } HCI_DispatchPendingEvent( _unknown_ __rax, // r53 long long __rdi // r57 ) {// addr = 0x0041B634 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t32; // _t32 _v48 = __rdi; _v32 = _v48 + 190224; _v24 = *((intOrPtr*)(_v32 + 32)); if(__al != 0) { L5: return; } _t32 = *((intOrPtr*)(_v48 + 74432)); QUEUE_DequeueRequest(_t32); _v16 = _t32; if(_v16 == 0 || *((intOrPtr*)(_v24 + 8)) == 0) { goto L5; } else { *((long long*)( *((intOrPtr*)(_v24 + 8))))(); return; } } HCI_DispatchPendingAutoEvent( _unknown_ __rax, // r53 long long __rdi // r57 ) {// addr = 0x0041B6BF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t32; // _t32 _v48 = __rdi; _v32 = _v48 + 190224; _v24 = *((intOrPtr*)(_v32 + 32)); if(__al != 0) { L5: return; } _t32 = *((intOrPtr*)(_v48 + 74440)); QUEUE_DequeueRequest(_t32); _v16 = _t32; if(_v16 == 0 || *((intOrPtr*)(_v24 + 8)) == 0) { goto L5; } else { *((long long*)( *((intOrPtr*)(_v24 + 8))))(); return; } } HCI_MakeAutoGenerateEvent() {// addr = 0x0041B74A _unknown_ _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed int _v18; // _cfa_ffffffee signed long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed long long _t281; // _t281 signed int _t413; // _t413 _v48 = _t413; _v14 = 8; while(_v14 <= 14) { _v14 = _v14 + 1; } if(( *(_v48 + 190538) & 255) == 0) { L27: if(( *(_v48 + 69497) & 255) == 3 && *(_v48 + 69504) != 0) { _v32 = *(_v48 + 69504); _v18 = *(_v48 + 69498) & 65535; if( *((intOrPtr*)(_v32 + 48)) != 0) { _v12 = QUEUE_GetNumCompletedPkt( *((intOrPtr*)(_v32 + 48))); _v16 = (_v12 & 65535) - ( *(_v32 + 14) & 65535); *(_v32 + 14) = _v12 & 65535; if((_v16 & 65535) != 0) { EG_Generate_Number_Of_Complete_Event(); } } } if(( *(_v48 + 69528) & 255) == 3 && *(_v48 + 69536) != 0) { _v32 = *(_v48 + 69536); _v18 = *(_v48 + 69530) & 65535; if( *((intOrPtr*)(_v32 + 48)) != 0) { _v12 = QUEUE_GetNumCompletedPkt( *((intOrPtr*)(_v32 + 48))); _v16 = (_v12 & 65535) - ( *(_v32 + 14) & 65535); *(_v32 + 14) = _v12 & 65535; if((_v16 & 65535) != 0) { EG_Generate_Number_Of_Complete_Event(); } } } _t281 = _v48; if(( *(_t281 + 191597) & 255) == 0) { L44: return; } else { _v14 = 0; while(_v14 <= 1) { _t281 = _t281 * 184 + _v48 + 33792; if(( *(_t281 + 8) & 255) != 0) { _v32 = 4416 + _v48 * 184 + _v48 + 33800; _v18 = *(_v32 + 8) & 65535; _v12 = QUEUE_GetNumCompletedPkt( *((intOrPtr*)(_v32 + 48))); _v16 = (_v12 & 65535) - ( *(_v32 + 14) & 65535); _t281 = _v32; *(_t281 + 14) = _v12 & 65535; if((_v16 & 65535) != 0) { _t281 = &_v18; EG_Generate_Number_Of_Complete_Event(); } } _v14 = _v14 + 1; } goto L44; } } _v14 = 0; while(_v14 <= 3) { if(( *((((_v14 & 65535) << 2) + (_v14 & 65535) << 5) + _v48 + 0x102f8) & 255) == 4 && *((((_v14 & 65535) << 2) + (_v14 & 65535) << 5) + _v48 + 66368) != 0) { _v32 = *((((_v14 & 65535) << 2) + (_v14 & 65535) << 5) + _v48 + 66368); _v18 = *((((_v14 & 65535) << 2) + (_v14 & 65535) << 5) + _v48 + 0x10300) & 65535; if( *((intOrPtr*)(_v32 + 48)) != 0) { _v12 = QUEUE_GetNumCompletedPkt( *((intOrPtr*)(_v32 + 48))); _v16 = (_v12 & 65535) - ( *(_v32 + 14) & 65535); *(_v32 + 14) = _v12 & 65535; if((_v16 & 65535) != 0) { EG_Generate_Number_Of_Complete_Event(); } } } _v14 = _v14 + 1; } goto L27; } Hci_EventCallBack( _unknown_ __rax // r53 ) {// addr = 0x0041BCD4 signed short _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t26; // _t26 signed short _t54; // _t54 long long _t56; // _t56 long long _t59; // _t59 signed char* _t64; // _t64 _v32 = _t59; _v40 = _t64; _v48 = _t56; _v56 = __rcx; _v24 = 0; _v9 = 0; _v12 = 0; if(_v32 == 0) { return; } if(_v56 == 0) { return; } if(_v40 == 0) { return; } if(_v48 != 0) { DebugPrint(0, _v40, __rcx, _t56, _t59, _t64); if(( *_v40 & 0xff) == 3) { _v9 = casting_uint8(_v48); _t54 = _v48 + 1; _v12 = casting_uint16(_t54); LM_Find_Link_Table_Entry_By_Connection_Handle(_v12 & 65535, _t54, _v32 + 60216); _v24 = _t54; } if(_v56 != 0) { r8 = _v56; r8(); return; } } return; } HCI_Flow_Control_Initialise( long long __rdi // r57 ) {// addr = 0x0041BDD4 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((short*)(_v16 + 46)) = 0; *((char*)(_v16 + 48)) = 0; *((short*)(_v16 + 42)) = 0; *((short*)(_v16 + 44)) = 0; *((char*)(_v16 + 49)) = 0; *((char*)(_v16 + 50)) = 0; return; } HCI_Set_Host_Buffer_Size( signed short __ecx, // r2 signed char __edx, // r3 _unknown_ __esi, // r5 long long __rdi // r57 ) {// addr = 0x0041BE14 long long _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 signed short _v28; // _cfa_ffffffe4 signed short _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __si; _v24 = __edx; _v28 = __ecx; _v32 = r8d; *(_v16 + 46) = _v20 & 65535; *(_v16 + 48) = _v24 & 255; *(_v16 + 42) = _v28 & 65535; *(_v16 + 44) = _v32 & 65535; return 0; } HCI_Put_Controller_Buffer_Size() {// addr = 0x0041BE66 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t33; // _t33 _v16 = _t33; HCI_Fill_Data_Unit(2, __rdx, _v16, _v16 + 24); _v16 = _v16 + 24; HCI_Fill_Data_Unit(1, __rdx, _v16, _v16 + 24); _v16 = _v16 + 24; HCI_Fill_Data_Unit(2, __rdx, _v16, _v16 + 24); _v16 = _v16 + 24; HCI_Fill_Data_Unit(2, __rdx, _v16, _v16 + 24); return 0; } HCI_Set_Controller_To_Host_Flow_Control( signed char __esi, // r5 long long __rdi // r57 ) {// addr = 0x0041BEFD long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; if((_v20 & 1) == 0) { *((char*)(_v16 + 49)) = 0; } else { *((char*)(_v16 + 49)) = 1; } if(((_v20 & 255) >> 1 & 1) == 0) { *((char*)(_v16 + 50)) = 0; } else { *((char*)(_v16 + 50)) = 1; } return 0; } HCI_Initialise() {// addr = 0x0041BF50 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t6; // _t6 long long _t9; // _t9 _v16 = _t9; DebugPrint(0, _t6, __rcx, __rdx, _t9, __rsi); HCI_Flow_Control_Initialise(_v16); EG_Initialise(); return; } HCI_Task() {// addr = 0x0041BF8F char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t43; // _t43 _v32 = _t43; _v9 = 0; if(QUEUE_IsEmpty(_v32 + 72952) == 0) { HC_Command_Dispatcher(_t16, _v32); } while(QUEUE_IsEmpty(_v32 + 72952) == 0 && _v9 <= 15) { RtbtHalHCIGetEvent(0); _v9 = _v9 + 1; } if(QUEUE_IsEmpty(_v32 + 72952) == 0) { _t21 = RtbtHalHCIGetEvent(0); } HCI_DispatchPendingLEUData(_v32); HCI_DispatchPendingACLData(_v32); HCI_DispatchPendingSyncData(_v32); HCI_MakeAutoGenerateEvent(); return; } casting_uint24( signed char* __rdi // r57 ) {// addr = 0x0041C060 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff) << 8) << 8; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0041C0A2 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } HCI_DispatchPendingACLData( _unknown_ __rax // r53 ) {// addr = 0x0041C0F8 signed short _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t50; // _t50 signed int _t51; // _t51 intOrPtr _t58; // _t58 long long _t61; // _t61 signed int _t67; // _t67 _v64 = _t67; _v56 = 0; _v48 = _v64 + 190168; _v40 = _v48 + 56; _v32 = *((intOrPtr*)(_v40 + 32)); _v10 = 0; while(_v10 <= 6) { _t50 = _v64; if(( *(_t50 + 190499) & 255) != 0) { return; } LM_Find_Link_Table_Entry_By_Index(_v10 & 65535, _v64 + 60216); _v56 = _t50; if(_v56 != 0) { _t51 = _v56; _t38 = *(_t51 + 1) & 255; if(( *(_t51 + 1) & 255) != 0) { if( *((intOrPtr*)(_v56 + 768)) != 0) { if( *((intOrPtr*)( *((intOrPtr*)(_v56 + 768)) + 32)) != 0) { _t58 = *((intOrPtr*)(_v56 + 768)); _t38 = *(_t58 + 6) & 255; if(( *(_t58 + 6) & 255) == 0) { _t61 = *((intOrPtr*)( *((intOrPtr*)(_v56 + 768)) + 32)); QUEUE_DequeueRequest(_t61); _v24 = _t61; if(_v24 != 0 && *((intOrPtr*)(_v32 + 8)) != 0) { _t38 = 0; RtbtHalHCIReceiveACLData(); } } } } } } _v10 = _v10 + 1; } return; } HCI_DispatchPendingLEUData( _unknown_ __rax // r53 ) {// addr = 0x0041C228 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 char _v80; // _cfa_ffffffb0 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed long long _t62; // _t62 long long _t73; // _t73 long long _t75; // _t75 signed int _t85; // _t85 _v96 = _t85; _v72 = _v96 + 190168; _v64 = _v72 + 56; _v56 = *((intOrPtr*)(_v64 + 32)); _v48 = 0; _v80 = 0; if(( *(_v96 + 191597) & 255) == 0) { return; } else { _v9 = 24; while(_v9 <= 26) { _t62 = _v96; if(( *(_t62 + 190499) & 255) != 0) { return; } if(( *(_t62 * 184 + _v96 + 0x8408) & 255) != 0) { _v40 = _v96 * 184 + _v96 + 33800; _v32 = *((intOrPtr*)(_v40 + 72)); if(( *(_v32 + 1) & 255) == 3) { _t73 = *((intOrPtr*)(_v40 + 32)); QUEUE_GetQueueSpinLock(_t73); _v48 = _t73; if(_v48 != 0) { ral_spin_lock(_v48, &_v80); } _t75 = *((intOrPtr*)(_v40 + 32)); __esi = 1; QUEUE_DequeueRequestNonLocked(1, _t75); _v24 = _t75; if(_v48 != 0) { ral_spin_unlock(_v48, _v80); } if(_v24 != 0 && *((intOrPtr*)(_v56 + 8)) != 0) { RtbtHalHCIReceiveACLData(); } } } _v9 = _v9 + 1; } return; } } HCI_DispatchPendingSyncData( _unknown_ __rax // r53 ) {// addr = 0x0041C394 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t54; // _t54 long long _t62; // _t62 _v64 = _t62; _v56 = _v64 + 190168; _v48 = _v56 + 56; _v40 = *((intOrPtr*)(_v48 + 32)); _v9 = 0; while(_v9 <= 3) { if(( *(_v64 + 190499) & 255) != 0) { return; } if(( *((((_v9 & 255) << 2) + (_v9 & 255) << 5) + _v64 + 0x102f8) & 255) == 4) { _v32 = *((intOrPtr*)((((_v9 & 255) << 2) + (_v9 & 255) << 5) + _v64 + 66368)); _t54 = *((intOrPtr*)(_v32 + 32)); QUEUE_DequeueRequest(_t54); _v24 = _t54; if(_v24 != 0 && *((intOrPtr*)(_v40 + 8)) != 0) { RtbtHalHCIReceiveSCOData(); } } _v9 = _v9 + 1; } return; } HCI_Transmit_HCI_Command( _unknown_ __rax // r53 ) {// addr = 0x0041C486 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec _unknown_ _v22; // _cfa_ffffffea intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 short _v76; // _cfa_ffffffb4 _unknown_ __rbp; // r59 _unknown_ _t52; // _t52 short _t55; // _t55 long long _t65; // _t65 long long _t69; // _t69 _unknown_ _t73; // _t73 long long _t76; // _t76 long long _t82; // _t82 _v64 = _t76; _v72 = _t82; _v76 = _t55; _v56 = 0; _v48 = 0; _v40 = 0; _v9 = 0; _v32 = 0; _v16 = 0; DebugPrint(0, __rax, _t73, __rdx, _t76, _t82); _v24 = casting_uint24(_v72); _t65 = *((intOrPtr*)(_v64 + 74424)); _v48 = _t65; _v32 = _t65; _v9 = 3; _v16 = _v24; if(__rdx >= _t65 + _v32) { if(_v48 != 0) { QUEUE_EnqueueRequest(); _v56 = _v48; if(_v56 == 0) { _v20 = 7; } else { _t69 = _v56; _t52 = QUEUE_GetDataBuf(_t69); _v40 = _t69; if(_v32 != 0 && _v40 != 0) { RtlCopyMemory(_t52, _v40, _v32 + _v72); } QUEUE_EnqueueCommit(); _v20 = 0; } } else { _v20 = 31; } } else { _v20 = 18; } return; } HCI_Transmit_HCI_ACL_Packet() {// addr = 0x0041C5C4 signed short _v9; // _cfa_fffffff7 signed short _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec _unknown_ _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed short _v32; // _cfa_ffffffe0 signed short _v40; // _cfa_ffffffd8 signed short _v48; // _cfa_ffffffd0 signed short _v56; // _cfa_ffffffc8 signed short _v64; // _cfa_ffffffc0 signed short _v80; // _cfa_ffffffb0 signed short _v88; // _cfa_ffffffa8 short _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 _unknown_ _t114; // _t114 signed int _t118; // _t118 signed int _t130; // _t130 short _t146; // _t146 _unknown_ _t186; // _t186 signed short _t187; // _t187 signed short _t188; // _t188 signed short _t194; // _t194 signed short _t204; // _t204 signed short _t205; // _t205 signed short _t206; // _t206 signed short _t221; // _t221 signed short _t233; // _t233 _v80 = _t221; _v88 = _t233; _v92 = _t146; _v48 = 0; _v64 = 0; _v40 = 0; _v20 = 7; _v9 = 0; _v32 = 0; _v16 = 0; _v56 = 0; DebugPrint(0, _t186, _t218 + 60216, _t218, _t221, _t233); _t187 = _v88; _v24 = casting_uint32(_t187); _v32 = _t187; _v9 = 4; _v16 = _v24; _t188 = _v80; _t223 = _t188; LINK_SerachLEConnHandle(_v24 & 0xfff, _t188); _v56 = _t188; if(_v56 == 0) { _t218 = _v80 + 60216; _t223 = _v80 + 60216; _t104 = LM_SearchACLByConnectionHandle(_t188); _v56 = _t188; } if(_v56 == 0) { if((_v23 & 0xc0) != 64) { _t104 = _v23 & 0xc0; if((_v23 & 0xc0) == 128) { _t200 = _v80; _t118 = *(_t200 + 69528) & 0xff; if(_t118 == 2) { _t218 = _v80; _t215 = _t218 + 60216; _t223 = _t218 + 60216; LM_Activate_Bcast_Link(); _v56 = _t200; } else { if(_t118 == 3) { if((_v24 & 0xfff) == ( *(_v80 + 69530) & 0xffff)) { _t204 = _v80; _t200 = *(_t204 + 69536); _v56 = *(_t204 + 69536); } } } if(_v56 == 0) { _v64 = 0; _t104 = DebugPrint(0, _t200, _t215, _t218, _t223, _t233); } else { _v64 = *((intOrPtr*)(_v56 + 48)); _t104 = DebugPrint(0, *((intOrPtr*)(_v56 + 48)), _t215, _t218, _t223, _t233); } } goto L28; } _t205 = _v80; _t130 = *(_t205 + 69497) & 0xff; if(_t130 == 2) { _t218 = _v80; _t215 = _t218 + 60216; _t223 = _t218 + 60216; LM_Activate_Bcast_Link(); _v56 = _t205; } else { if(_t130 == 3) { if((_v24 & 0xfff) == ( *(_v80 + 69498) & 0xffff)) { _v56 = *(_v80 + 69504); } } } _t206 = _v80; _t207 = *(_t206 + 69504); _v56 = *(_t206 + 69504); if(_v56 == 0) { _v64 = 0; _t104 = DebugPrint(0, _t207, _t215, _t218, _t223, _t233); } else { _v64 = *((intOrPtr*)(_v56 + 48)); _t104 = DebugPrint(0, *((intOrPtr*)(_v56 + 48)), _t215, _t218, _t223, _t233); } goto L28; } else { _v64 = *(_v56 + 48); L28: if(_v64 != 0) { QUEUE_EnqueueRequest(); _v48 = _v64; if(_v48 != 0) { BTCoex_CheckHighPriorityProfile(); if((_v23 & 0x30) != 0) { if((_v23 & 0x30) == 32) { QUEUE_SetAutoFlushMode(1, _v64); } } else { QUEUE_SetAutoFlushMode(0, _v64); } QUEUE_SetAutoFlushable(QUEUE_GetAutoFlushMode(_v64) & 255, _v48); _t194 = _v48; _t114 = QUEUE_GetDataBuf(_t194); _v40 = _t194; if(_v32 != 0 && _v40 != 0) { RtlCopyMemory(_t114, _v40, _v32 + _v88); } QUEUE_EnqueueCommit(); _v20 = 0; } } return; } } HCI_Transmit_SCO_Packet( _unknown_ __rax // r53 ) {// addr = 0x0041C96A intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed short* _v48; // _cfa_ffffffd0 signed short* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed short* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed short* _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 signed short _t130; // _t130 signed short* _t159; // _t159 signed short* _t160; // _t160 signed char* _t161; // _t161 signed short* _t172; // _t172 long long _t176; // _t176 long long _t177; // _t177 signed short* _t179; // _t179 signed short* _t185; // _t185 _unknown_ _t190; // _t190 long long _t196; // _t196 intOrPtr _t198; // _t198 long long _t199; // _t199 _v80 = _t196; _v88 = __rsi; _v92 = _t130; _v72 = _v88; _v64 = 0; _v56 = _v72; _v12 = 0; DebugPrint(0, _v72, &(_t179[1]), _t190, _t196, __rsi); _t159 = _v56; _t192 = _v80 + 66256; _t197 = _v80 + 66256; LMscoctr_Find_SCO_By_Connection_Handle( *_t159 & 0xfff, _v80 + 66256, _v80 + 66256); _v48 = _t159; if(_v48 == 0) { DebugPrint(0, _v56, _t188, _t192, _t197, __rsi); return 18; } _t160 = _v56; _t194 = _v80 + 66256; _t198 = _v80 + 66256; LMsco_SearchSCOByConnectionHandle(_t160); _v40 = _t160; _t161 = _v48; _t162 = (_t161[0x48]); if((_t161[0x48]) != 0) { if(( *_v48 & 255) == 2 || ( *_v48 & 255) == 1 || ( *_v48 & 255) == 10) { return 7; } else { _v40 = (_v48[0x48]); if(((_v56[1]) & 0xff) < _v92) { while(((_v56[1]) & 255) != 0) { _t172 = _v56; _t194 = _t172 + _v64; if(_t172 + _v64 <= _t172) { _t176 = *((intOrPtr*)(_v40 + 48)); _t199 = _t176; QUEUE_EnqueueRequest(); _v32 = _t176; if(_v32 != 0) { _t177 = _v32; QUEUE_GetDataBuf(_t177); _v24 = _t177; _t179 = _v72; _t188 = &(_t179[1]); __rsi = &(_t179[1]); RtlCopyMemory((_v56[1]) & 0xff, _v24, __rsi); _t198 = *((intOrPtr*)(_v40 + 48)); QUEUE_EnqueueCommit(); _v64 = _v64 + _v56; _v72 = _v72 + _v56; _t185 = _v72; _v56 = _t185; if(_t185 > _v64) { continue; } L16: return _v12; } _v12 = 13; DebugPrint(0, _t176, _t188, _t194, _t199, __rsi); goto L16; } break; } _v12 = 18; r9d = _v92 & 65535; r8d = (_v56[1]) & 0xff; DebugPrint(0, _v64, _v64, _t194, _t198, __rsi); goto L16; } r8d = _v92 & 65535; DebugPrint(0, _v56, _t188, _t194, _t198, __rsi); return 18; } } DebugPrint(0, _t162, _t188, _t194, _t198, __rsi); return 18; } _TRAHCI_Transmit( _unknown_ __eax // r0 ) {// addr = 0x0041CC34 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v56; // _cfa_ffffffc8 signed int _v68; // _cfa_ffffffbc signed int _v71; // _cfa_ffffffb9 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed short _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t38; // _t38 signed short _t41; // _t41 long long _t61; // _t61 long long _t66; // _t66 _v80 = _t61; _v88 = _t66; _v92 = _t41; _v96 = __ecx; _v12 = 7; _v32 = _v80 - 56; _v24 = _v32 - 190168; _v56 = _v88; _v72 = 1; _v71 = _v96 & 255; _v68 = _v92 & 65535; _v40 = _v24; HCI_TRACE(); _t38 = _v96 & 255; if(_t38 == 2) { HCI_Transmit_HCI_ACL_Packet(); _v12 = _t38; } else { if(_t38 > 2) { if(_t38 == 3) { _v12 = HCI_Transmit_SCO_Packet(_v24); } else { if(_t38 != 4) { goto L10; } } } else { if(_t38 == 1) { HCI_Transmit_HCI_Command(_v24); _v12 = _t38; } else { L10: } } } return _v12; } TRAHCI_Initialise() {// addr = 0x0041CD1A long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 _unknown_ _t28; // _t28 long long _t30; // _t30 _v16 = _t30; DebugPrint(0, _t18, __rcx, _t28, _t30, __rsi); RtlFillMemory(40, 0, _v16); *((long long*)(_v16 + 24)) = _TRAHCI_Transmit; *((long long*)(_v16 + 32)) = &HalTransportOperation; if( *((intOrPtr*)( *((intOrPtr*)(_v16 + 32)))) != 0) { *((long long*)( *((intOrPtr*)( *((intOrPtr*)(_v16 + 32))))))(); return; } return; } LC_Initialise() {// addr = 0x0041CD94 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 long long _t15; // _t15 _v16 = _t15; DebugPrint(0, _t9, __rcx, __rdx, _t15, __rsi); LDM_Initialise(); BRM_Initialise(_v16); LCCQ_Initialise(); LCEQ_Initialise(); LCCMD_Initialise(); return; } LC_Task( _unknown_ __eax // r0 ) {// addr = 0x0041CDF7 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t34; // _t34 intOrPtr _t52; // _t52 intOrPtr _t58; // _t58 long long _t66; // _t66 _v32 = _t66; if(( *(_v32 + 191497) & 255) == 0) { return; } else { if(LCEQ_IsEmpty() == 0) { LCEVHDR_EventHandler(_v32, _v32); } _t34 = *(_v32 + 191085) & 255; if(_t34 == 0) { _t52 = _v32; _t35 = *(_t52 + 190500) & 255; if(( *(_t52 + 190500) & 255) == 0 && LCCQ_IsEmpty() == 0) { MCU_Send_Pending_Command(); } } else { _v16 = 0; _v12 = 0; if((_t34 & 1) == 0) { _v12 = 4294967295; _v16 = _v12; } else { RT_PCI_IO_READ32(); _v16 = _v12; } _t35 = _v16 & 128; if((_v16 & 128) != 0) { _t58 = _v32; _t35 = *(_t58 + 190500) & 255; if(( *(_t58 + 190500) & 255) == 0 && LCCQ_IsEmpty() == 0) { MCU_Send_Pending_Command(); } } } BRM_Packet_Scheduler(); return; } } LC_SanityCheck() {// addr = 0x0041CF1A long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; LDM_SanityCheck(); return; } BRM_Initialise( long long __rdi // r57 ) {// addr = 0x0041CF34 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } _BRM_DetermineL2CAPOutFlow( _unknown_ __eax // r0 ) {// addr = 0x0041CF40 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t9; // _t9 _v32 = _t9; _v9 = 1; if(QUEUE_IsFull() != 0) { _v9 = 0; } return _v9 & 255; } _BRM_Transmit_Sync_Packet() {// addr = 0x0041CF6F long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t3; // _t3 _unknown_ _t9; // _t9 long long _t11; // _t11 _v16 = _t11; _t6 = *pCodecFunc; if( *pCodecFunc == 0) { DebugPrint(0, _t6, __rcx, _t9, _t11, __rsi); return; } *((long long*)( *pCodecFunc))(); return; } _BRM_Transmit_ACLU_Packet( _unknown_ __eax // r0 ) {// addr = 0x0041CFBA signed char _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed char _v43; // _cfa_ffffffd5 signed int _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed char* _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v112; // _cfa_ffffff90 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t121; // _t121 signed int _t154; // _t154 signed char* _t160; // _t160 signed char* _t161; // _t161 signed char _t171; // _t171 signed char _t174; // _t174 signed int _t176; // _t176 signed int _t200; // _t200 signed int _t203; // _t203 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 152; _v112 = _t200; _v52 = 0; _v56 = 0; _v96 = 0; _v43 = _BRM_DetermineL2CAPOutFlow(__eax); _v44 = 0; while(_v44 <= 6) { _t154 = _v112; _t102 = *(_t154 + 190499) & 255; if(( *(_t154 + 190499) & 255) != 0) { L23: __rsp = &(__rsp[0x26]); _pop(__rbx); _pop(r12); _pop(r13); return; } _v56 = 0; _v88 = 1472 + _v112 * 184 + _v112 + 33800; _t102 = *_v88 & 255; if(( *_v88 & 255) == 0) { L18: _v44 = _v44 + 1; continue; } _t160 = _v88; _t102 = (_t160[2]) & 255; if(((_t160[2]) & 255) != 0) { goto L18; } _t161 = _v88; _t102 = (_t161[0xc]) & 255; if(((_t161[0xc]) & 255) != 1) { goto L18; } _v42 = (_v88[0x81]) & 0x1f; _v80 = _v112 * 1176 + _v112 + 616; _v48 = PDMA_Get_Txring_Freeno(_v42 & 255, _v112); if(_v48 == 0) { goto L18; } if(((_v88[0xd]) & 255) != _v43) { (_v88[0xd]) = _v43 & 255; } while(( *(_v112 + 190499) & 255) == 0) { _t199 = _v88; __rsi = _v88; _t203 = _v112; if(_BRM_EnBuffer() == 0) { goto L18; } _t171 = (_v88[0x60]); _t172 = *((intOrPtr*)(_t171 + 16)); _v72 = *((intOrPtr*)(_t171 + 16)); if(_v72 != 0) { _t174 = (_v88[0x30]); QUEUE_DequeueRequest(_t174); _v64 = _t174; _v52 = QUEUE_GetBufLength(_v64) & 65535; _t176 = _v64; _t206 = _t176; QUEUE_GetDataBuf(_t176); _v96 = _t176; if(_v96 != 0) { _v41 = QUEUE_IncreasePktSeq(_v88[0x30]); r8d = *( *((intOrPtr*)((_v88[0x68]) + 24)) + 4) & 0xff; DebugPrint(0, *((intOrPtr*)((_v88[0x68]) + 24)), __rcx, _t199, _v88[0x30], __rsi); r13d = _v41 & 255; r12d = QUEUE_GetAutoFlushable(_v64) & 255; _t121 = QUEUE_GetPktTag(_v64); r9d = (_v88[0xd]) & 0xff; r10d = *(_v72 + 2) & 0xff; _v128 = 0; _v136 = 0; _v144 = r13d; _v152 = r12d; _v160 = *(_v72 + 10) & 0xffff; r8 = _v96; _v168 = r8; *__rsp = _t121 & 65535; r8d = r10d; PDMA_Transmit_TxRing(); _BRM_DeBuffer(_v88); _v56 = _v56 + ( *(_v72 + 10) & 0xffff); _v48 = PDMA_Get_Txring_Freeno(_v42 & 255, _v112); _t102 = _v52; if(_v52 == _v56) { goto L18; } if(_v48 != 0) { continue; } goto L18; } _t102 = DebugPrint(0, _t176, __rcx, _t199, _t206, __rsi); goto L23; } _t102 = DebugPrint(0, _t172, __rcx, _t199, _t203, __rsi); goto L23; } goto L23; } goto L23; } ConvertBroadcastLinkTypeToStr( signed char __edi // r4 ) {// addr = 0x0041D2ED signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "PSBU"; } if(_t4 == 2) { return "PSBC"; } if(_t4 != 0) { return "unknown"; } return "ASBU"; } _BRM_Transmit_Broadcast_Packet() {// addr = 0x0041D324 signed char _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed char _v43; // _cfa_ffffffd5 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char _v80; // _cfa_ffffffb0 signed char _v88; // _cfa_ffffffa8 signed char _v96; // _cfa_ffffffa0 signed char _v104; // _cfa_ffffff98 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed char _v160; // _cfa_ffffff60 signed char _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t129; // _t129 signed long long _t182; // _t182 signed char _t187; // _t187 signed char _t196; // _t196 signed char _t201; // _t201 signed int _t219; // _t219 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 184; _v144 = _t219; _v52 = 0; _v56 = 0; _v96 = 0; _v104 = 0; _v136 = _v144 + 34168; _v128 = _v144 + 34352; _v120 = _v144 + 34536; _v43 = 0; while(_v43 <= 2) { _t182 = _v144; if(( *(_t182 + 190499) & 255) != 0) { L16: __rsp = &(__rsp[0x2e]); _pop(__rbx); _pop(r12); _pop(r13); return; } _v88 = *(__rbp + _t182 * 8 - 128); if(( *_v88 & 255) == 0 || ( *(_v88 + 2) & 255) != 0) { L12: _v43 = _v43 + 1; continue; } else { _t187 = *(_v88 + 48); QUEUE_DequeueRequest(_t187); _v80 = _t187; if(_v80 == 0) { goto L12; } _v52 = QUEUE_GetBufLength(_v80) & 65535; _v42 = *(_v88 + 129) & 0x1f; _v72 = _v144 * 1176 + _v144 + 616; _v48 = PDMA_Get_Txring_Freeno(_v42 & 255, _v144); _t196 = _v88; r8d = *( *(_v88 + 48) + 1) & 0xff; DebugPrint(0, _t196, __rcx, _v144 + 616, _v144, __rsi); ConvertBroadcastLinkTypeToStr(_v43 & 255); *__rsp = _v42 & 255; r9d = _v48; r8d = _v52; __rcx = _t196; DebugPrint(0, _t196, __rcx, _v144 + 616, _v144, __rsi); if(_v48 == 0) { goto L12; } else { goto L6; } while(1) { L6: _t218 = _v88; __rsi = _v88; if(_BRM_EnBuffer() == 0) { break; } _v64 = *((intOrPtr*)( *((intOrPtr*)(_v88 + 96)) + 16)); _t201 = _v80; QUEUE_GetDataBuf(_t201); _v96 = _t201; _v41 = QUEUE_IncreasePktSeq( *(_v88 + 48)); r13d = _v41 & 255; r12d = QUEUE_GetAutoFlushable(_v80) & 255; _t129 = QUEUE_GetPktTag(_v80); r9d = *(_v88 + 13) & 0xff; r10d = *(_v64 + 2) & 0xff; _v160 = 0; _v168 = 0; _v176 = r13d; _v184 = r12d; _v192 = *(_v64 + 10) & 0xffff; r8 = _v96; _v200 = r8; *__rsp = _t129 & 65535; r8d = r10d; PDMA_Transmit_TxRing(); _BRM_DeBuffer(_v88); _v56 = _v56 + ( *(_v64 + 10) & 0xffff); _t230 = _v144; _v48 = PDMA_Get_Txring_Freeno(_v42 & 255, _v144); _t216 = _v104; _v104 = _v104 + 1; _v200 = _v48; *__rsp = _v56; r9d = *(_v64 + 10) & 0xffff; r8d = _v52; __rcx = _v104; DebugPrint(0, _v104, __rcx, _t218, _v144, __rsi); if(_v52 == _v56) { L11: _t106 = DebugPrint(0, _t216, __rcx, _t218, _t230, __rsi); goto L12; } if(_v48 != 0) { continue; } goto L11; } goto L11; } } goto L16; } _BRM_Transmit_ACLC_Packet( signed int __eax // r0 ) {// addr = 0x0041D68C signed char _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed char _v29; // _cfa_ffffffe3 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 signed char _v72; // _cfa_ffffffb8 signed char _v80; // _cfa_ffffffb0 signed long long _v96; // _cfa_ffffffa0 signed char _v116; // _cfa_ffffff8c signed char _v124; // _cfa_ffffff84 signed int _v132; // _cfa_ffffff7c signed char _v140; // _cfa_ffffff74 signed int _v148; // _cfa_ffffff6c signed char _v156; // _cfa_ffffff64 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t95; // _t95 signed long long _t111; // _t111 signed char* _t116; // _t116 signed char _t118; // _t118 signed char _t120; // _t120 signed char _t124; // _t124 signed long long _t144; // _t144 _t80 = __eax; _push(r12); _push(__rbx); __rsp = __rsp - 144; _v96 = _t144; _v72 = 0; _v64 = 0; _v80 = 0; _v40 = 0; while(_v40 <= 6) { if(( *(_v96 + 190499) & 255) != 0) { L18: __rsp = &(__rsp[0x24]); _pop(__rbx); _pop(r12); return; } _t111 = _v96; _t142 = _t111 + 33800; _v56 = 2760 + _t111 * 184 + _t111 + 33800; _t80 = *_v56 & 255; if(( *_v56 & 255) == 0) { L14: _v40 = _v40 + 1; continue; } _t116 = _v56; _t80 = (_t116[2]) & 255; if(((_t116[2]) & 255) != 0) { goto L14; } _t118 = (_v56[0x30]); QUEUE_GetQueueSpinLock(_t118); _v64 = _t118; if(_v64 != 0) { _t142 = &_v80; __rsi = &_v80; ral_spin_lock(_v64, __rsi); } _t120 = (_v56[0x30]); QUEUE_DequeueRequestNonLocked(0, _t120); _v48 = _t120; if(_v48 != 0) { _v27 = (_v56[0x81]) & 0x1f; _v36 = PDMA_Get_Txring_Freeno(_v27 & 255, _v96); if(_v36 != 0) { _t124 = _v48; QUEUE_GetDataBuf(_t124); _v72 = _t124; _t150 = _v48; _v26 = QUEUE_GetBufLength(_v48); if(_v26 == 0) { _v29 = 1; _t150 = _v48; _v28 = QUEUE_GetPktHdr(_v48); } else { _v29 = 3; _v28 = (_v56[0xd]) & 255; } r8d = *( *((intOrPtr*)((_v56[0x68]) + 24)) + 4) & 0xff; DebugPrint(0, *((intOrPtr*)((_v56[0x68]) + 24)), __rcx, _t142, _t150, __rsi); _v25 = QUEUE_IncreasePktSeq(_v56[0x30]); r12d = _v25 & 255; _t95 = QUEUE_GetPktTag(_v48); r9d = _v28 & 255; r8d = _v29 & 255; _t80 = (_v56[0xb]) & 255; _v116 = 0; _v124 = 0; _v132 = r12d; _v140 = 0; _v148 = _v26 & 255; _v156 = _v72; *__rsp = _t95 & 65535; PDMA_Transmit_TxRing(); QUEUE_DequeueCommitNonLocked(); } } if(_v64 != 0) { __rsi = _v80; ral_spin_unlock(_v64, __rsi); } goto L14; } goto L18; } _BRM_Transmit_LEU_Packet( _unknown_ __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x0041D8F6 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v39; // _cfa_ffffffd9 intOrPtr _v40; // _cfa_ffffffd8 signed char _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed char _v72; // _cfa_ffffffb8 signed char _v80; // _cfa_ffffffb0 signed char _v88; // _cfa_ffffffa8 signed int _v90; // _cfa_ffffffa6 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed int _t132; // _t132 signed char* _t138; // _t138 signed char _t140; // _t140 signed char _t142; // _t142 signed char _t149; // _t149 signed int _t164; // _t164 _v112 = _t164; _v80 = 0; _v72 = 0; _v88 = 0; _t132 = _v112; _t79 = *(_t132 + 191597) & 255; if(( *(_t132 + 191597) & 255) == 0) { return; } else { _v11 = 0; while(_v11 <= 1) { _v64 = 4416 + _v112 * 184 + _v112 + 33800; _t79 = *_v64 & 255; if(( *_v64 & 255) == 0) { L18: _v11 = _v11 + 1; continue; } _t138 = _v64; _t79 = (_t138[2]) & 255; if(((_t138[2]) & 255) != 0) { goto L18; } _t140 = (_v64[0x30]); QUEUE_GetQueueSpinLock(_t140); _v72 = _t140; if(_v72 != 0) { ral_spin_lock(_v72, &_v88); } _t142 = (_v64[0x30]); QUEUE_DequeueRequestNonLocked(1, _t142); _v56 = _t142; if(_v56 != 0) { _v9 = (_v64[0x81]) & 0x1f; _v28 = PDMA_Get_Txring_Freeno(_v9 & 255, _v112); if(_v28 != 0) { _v48 = (_v64[0x48]); _v14 = QUEUE_GetBufLength(_v56); _t149 = _v56; QUEUE_GetDataBuf(_t149); _v80 = _t149; RtlFillMemory(2, 0, &_v24); RtlFillMemory(16, 0, &_v104); _v40 = QUEUE_GetPktHdr(_v56); if(QUEUE_GetDequeueTimes(_v56) != 0 || (_v39 & 0x30) != 0 && (_v39 & 0x30) != 32) { _v10 = 1; } else { _v10 = 2; } if(_v14 > 27) { _v14 = 27; } _v24 = _v24 & 0xfc | _v10 & 3; _v23 = _v23 & 0xe0 | _v14 & 0x1f; _v104 = _v104 & 0xf000 | _v23 & 0x1f; _v90 = _v24 & 65535; r8d = _v14 & 0xff; _t79 = (_v64[0xb]) & 255; r9d = r8d; r8 = _v80; PDMA_Transmit_LE_TxRing(); QUEUE_DequeueCommitNonLocked(); } } if(_v72 != 0) { ral_spin_unlock(_v72, _v88); } goto L18; } return; } } BRM_Packet_Scheduler() {// addr = 0x0041DB7D char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t23; // _t23 _v32 = _t23; ral_spin_lock(_v32 + 30536, &_v16); _BRM_Transmit_Sync_Packet(); ral_spin_unlock(_v32 + 30536, _v16); _BRM_Transmit_ACLC_Packet(__eax); _BRM_Transmit_ACLU_Packet(__eax); _BRM_Transmit_Broadcast_Packet(); _BRM_Transmit_LEU_Packet(__eax, _v32); return; } _BRM_FlushBuffer( _unknown_ __eax // r0 ) {// addr = 0x0041DBFC signed char _v9; // _cfa_fffffff7 intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t66; // _t66 _v48 = _t66; _v9 = 0; if(_v48 != 0) { _v32 = *((intOrPtr*)( *((intOrPtr*)(_v48 + 96)) + 16)); if(( *(_v32 + 1) & 255) != 2 && ( *(_v32 + 1) & 255) != 3 && ( *(_v32 + 1) & 255) != 4 && ( *(_v32 + 1) & 255) == 8 && ( *(_v32 + 4) & 255) != 0) { QUEUE_GetBufLength(_v24); QUEUE_DequeueCommit( *((intOrPtr*)(_v32 + 16))); } } return _v9 & 255; } _BRM_EnBuffer() {// addr = 0x0041DCC2 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 intOrPtr _v88; // _cfa_ffffffa8 signed char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 long long _v152; // _cfa_ffffff68 _unknown_ __rbp; // r59 short _t151; // _t151 char _t153; // _t153 signed int _t167; // _t167 signed int _t175; // _t175 signed char _t179; // _t179 signed char _t187; // _t187 long long _t233; // _t233 intOrPtr _t242; // _t242 long long _t265; // _t265 _unknown_ _t282; // _t282 long long _t294; // _t294 intOrPtr _t299; // _t299 long long _t309; // _t309 _v144 = _t294; _v152 = _t309; _v9 = 0; if(_v152 == 0) { L27: return _v9 & 255; } _v136 = *((intOrPtr*)( *((intOrPtr*)(_v152 + 96)) + 16)); if(( *(_v152 + 1) & 255) == 4 || ( *(_v152 + 1) & 255) == 3 || ( *(_v152 + 1) & 255) == 2) { if(( *(_v136 + 4) & 255) == 0) { _t233 = *((intOrPtr*)(_v152 + 48)); QUEUE_DequeueRequest(_t233); _v112 = _t233; if(_v112 != 0) { *((long long*)(_v136 + 16)) = *((intOrPtr*)(_v152 + 48)); *((long long*)(_v136 + 24)) = _v112; _v88 = QUEUE_GetPktHdr(_v112); QUEUE_GetBufLength(_v112); *(_v136 + 8) = _BRM_DecideSBPacketType(); _t299 = _v112; _t151 = _BRM_DecidePacketLength( *(_v136 + 8) & 255, _v112); _t288 = _v136; *((short*)(_v136 + 10)) = _t151; _t242 = _v152; _t152 = *(_t242 + 1) & 255; if(( *(_t242 + 1) & 255) != 4) { _t299 = _v112; _t153 = _BRM_DecideACLULLID(_t152); _t288 = _v136; *((char*)(_v136 + 2)) = _t153; } else { *((char*)(_v136 + 2)) = 3; } *(_v136 + 1) = *(_v152 + 1) & 255; *(_v136 + 4) = 1; _v9 = 1; } } } else { if(( *(_v152 + 1) & 255) == 8) { _t248 = _v136; if(( *(_v136 + 4) & 255) != 0) { DebugPrint(0, _t248, _t282, _t288, _t299, _t309); if(( *(_v136 + 1) & 255) == 8) { _v120 = *((intOrPtr*)(_v136 + 24)); if(QUEUE_GetAutoFlushable(_v120) != 0) { _v36 = *( *((intOrPtr*)( *((intOrPtr*)(_v152 + 104)) + 24)) + 2) & 0xffff; if(_v36 != 0) { _v28 = QUEUE_GetCheckInInstant(_v120); _v24 = _v36; _v72 = _v24 + _v28; _t167 = _v72 & 268435455; _v32 = _t167; _v104 = 0; _v40 = 0; if((_t167 & 1) == 0) { _v40 = 4294967295; _v104 = _v40; } else { RT_PCI_IO_READ32(); _v104 = _v40; } _v20 = _v32; _v16 = _v104 & 268435455; _v56 = _v20 - _v16; _t175 = _v56 == 0; _v40 = _t175; _v11 = (_t175 & 268435455) >> 27; if((_v40 & 255) != 0 || (_v11 & 255) != 0) { _t179 = 1; } else { _t179 = 0; } _v10 = _t179; } } } } else { _t265 = *((intOrPtr*)(_v152 + 48)); QUEUE_DequeueRequest(_t265); _v128 = _t265; if(( *(_v152 + 10) & 255) == 0 && _v128 != 0) { *((long long*)(_v136 + 16)) = *((intOrPtr*)(_v152 + 48)); *((long long*)(_v136 + 24)) = _v128; _v88 = QUEUE_GetPktHdr(_v128); _t187 = QUEUE_GetBufLength(_v128); _BRM_DecideACLUPacketType(); *(_v136 + 8) = _t187; *((short*)(_v136 + 10)) = _BRM_DecidePacketLength( *(_v136 + 8) & 255, _v128); *((char*)(_v136 + 2)) = _BRM_DecideACLULLID(_t189); *(_v136 + 1) = *(_v152 + 1) & 255; *(_v136 + 4) = 1; _v9 = 1; } } } } goto L27; } _BRM_DeBuffer( long long __rdi // r57 ) {// addr = 0x0041E0AE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t51; // _t51 _v32 = __rdi; if(_v32 == 0) { return; } if(( *(_v32 + 1) & 255) == 15 || ( *(_v32 + 1) & 255) == 8 || ( *(_v32 + 1) & 255) == 4 || ( *(_v32 + 1) & 255) == 3 || ( *(_v32 + 1) & 255) == 2) { _v16 = *((intOrPtr*)( *((intOrPtr*)(_v32 + 96)) + 16)); if(( *(_v16 + 4) & 255) != 0) { if(( *(_v16 + 6) & 255) == 0) { QUEUE_DequeueCommit( *((intOrPtr*)(_v16 + 16))); } *(_v16 + 5) = 0; *(_v16 + 6) = 0; *(_v16 + 4) = 0; *((char*)(_v16 + 7)) = 1; } goto L15; } else { if(( *(_v32 + 1) & 255) != 5) { L15: return; } _v24 = *((intOrPtr*)( *((intOrPtr*)(_v32 + 96)) + 24)); if(( *(_v24 + 4) & 255) == 0) { goto L15; } QUEUE_DequeueCommit( *((intOrPtr*)(_v24 + 16))); *(_v24 + 5) = 0; *(_v24 + 4) = 0; *((char*)(_v24 + 7)) = 1; return; } } _BRM_DecideACLUPacketType() {// addr = 0x0041E1D1 signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed short _v38; // _cfa_ffffffda signed short _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 intOrPtr _t133; // _t133 _unknown_ _t175; // _t175 _unknown_ _t178; // _t178 _v48 = __rdi; _v56 = __rsi; _v60 = _t133; _v9 = 3; _v24 = *((intOrPtr*)(_v56 + 72)); if(( *(_v56 + 1) & 255) != 8) { DebugPrint(0, _v56, _t175, _t178, __rdi, __rsi); L15: return; } if(( *(_v24 + ((( *(_v24 + 12) & 255) >> 4 & 3) << 4) + _v24 + ((( *(_v24 + 12) & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 0xffff) < _v60) { if(( *(_v24 + ((( *(_v24 + 13) & 255) >> 4 & 3) << 4) + _v24 + ((( *(_v24 + 13) & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 0xffff) < _v60) { if(( *(_v24 + ((( *(_v24 + 14) & 255) >> 4 & 3) << 4) + _v24 + ((( *(_v24 + 14) & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 0xffff) <= _v60) { _v9 = *(_v24 + 14) & 255; } else { _v12 = ( *(_v24 + ((( *(_v24 + 13) & 255) >> 4 & 3) << 4) + _v24 + ((( *(_v24 + 13) & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 65535) + ( *(_v24 + ((( *(_v24 + 12) & 255) >> 4 & 3) << 4) + _v24 + ((( *(_v24 + 12) & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 65535); if((_v12 & 65535) < _v60) { _v9 = *(_v24 + 14) & 255; } else { _v9 = *(_v24 + 13) & 255; } } } else { _v9 = *(_v24 + 13) & 255; } } else { _v9 = *(_v24 + 12) & 255; } if(( *4976550 & 0xffff) >= _v60) { _v40 = *(_v48 + 32); if((_v38 & 65535) == 12944 && (_v40 & 65535) <= 2) { _v9 = 3; } } goto L15; } _BRM_DecideSBPacketType() {// addr = 0x0041E3DE signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 intOrPtr _t21; // _t21 _v32 = __rdi; _v36 = _t21; _v9 = 3; if(( *(_v32 + 1) & 255) != 4 && ( *(_v32 + 1) & 255) != 3 && ( *(_v32 + 1) & 255) != 2) { DebugPrint(0, _v32, __rcx, __rdx, __rdi, __rsi); } return _v9 & 255; } _BRM_DecidePacketLength( _unknown_ __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x0041E441 signed short _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t21; // _t21 signed long long _t28; // _t28 long long _t30; // _t30 _v32 = _t30; _v36 = __esi; _v12 = *(__rax + (_t28 << 4) + __rax + (_t28 << 4) + &gMaxDataLenTable) & 65535; _v10 = QUEUE_GetBufLength(_v32); _t21 = _v10 & 65535; _t22 = _v12 - _t21 <= 0 ? _v12 : _t21; return _v12 - _t21 <= 0 ? _v12 : _t21; } _BRM_DecideACLULLID( _unknown_ __eax // r0 ) {// addr = 0x0041E497 long long _v16; // _cfa_fffffff0 signed int _v23; // _cfa_ffffffe9 intOrPtr _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t17; // _t17 _v16 = _t17; _v24 = __esi; if(QUEUE_GetDequeueTimes(_v16) == 0 && ((_v23 & 0x30) == 0 || (_v23 & 0x30) == 32)) { return 2; } return 1; } LCFHS_GetBDAddr( signed int* __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0041E4DC signed int* _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *(_v24 + 4) >> 2 & 16777215; (_v16[0]) = ( *(_v24 + 4) >> 2 & 16777215) >> 8; (_v16[0]) = ( *(_v24 + 4) >> 2 & 16777215) >> 16; (_v16[0]) = *(_v24 + 8) & 255; (_v16[1]) = *(_v24 + 9) & 255; (_v16[1]) = *(_v24 + 10) & 255; return; } LCFHS_GetClassOfDevice( long long __rdi // r57 ) {// addr = 0x0041E564 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return ( *(_v16 + 12) & 0xffff) << 8 | *(_v16 + 11) & 0xff; } LCFHS_GetClock( long long __rdi // r57 ) {// addr = 0x0041E589 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return (( *(_v16 + 16) & 0x1fff) << 13 | ( *(_v16 + 14) & 65535) >> 3 & 65535) << 2; } LCPKT_GeSlotOccupancy( signed char __edi, // r4 _unknown_ __rax // r53 ) {// addr = 0x0041E5BC signed char _v9; // _cfa_fffffff7 signed int _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 _t57 = __rax; __edi = __edi; _v28 = __edi; _v9 = 1; if((_v28 & 255) >= 0) { if((_v28 & 255) >= 0) { L5: if((_v28 & 255) >= 0) { L8: if((_v28 & 255) < 0 && ( *(_t57 + (((_v28 & 255) >> 4 & 255) << 4) + _t57 + (((_v28 & 255) >> 4 & 255) << 4) + &ptype) & 0x800) != 0) { _v9 = 5; } goto L11; } _t57 = _t57 + (((_v28 & 255) >> 4 & 255) << 4); if(( *(_t57 + _t57 + &ptype) & 0x400) == 0) { goto L8; } _v9 = 3; goto L11; } _t57 = __rax + (((_v28 & 255) >> 4 & 255) << 4); if(( *(_t57 + _t57 + &ptype) & 0x200) == 0) { goto L5; } _v9 = 1; goto L11; } else { _v9 = 1; L11: return _v9 & 255; } } LDM_Initialise() {// addr = 0x0041E69C long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; PNET_Initialise(); LINK_Initialise(); CH_Initialise(); return; } LDM_SanityCheck() {// addr = 0x0041E6CE long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; LLINK_SanityCheck(); return; } CH_Initialise() {// addr = 0x0041E6E8 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t49; // _t49 _v32 = _t49; __edx = 768; __esi = 0; RtlFillMemory(768, 0, _v32 + 24239); _v9 = 92; _v10 = 0; while(_v10 <= 7) { *((char*)(((_v10 & 255) + (_v10 & 255) + _t45 << 5) + _v32 + 0x5eaf)) = 1; *(((_v10 & 255) + (_v10 & 255) + _t46 << 5) + _v32 + 0x5eb0) = _v10 & 255; *(((_v10 & 255) + (_v10 & 255) + _t48 << 5) + _v32 + 0x5eb1) = 0; _v10 = _v10 + 1; } return; } CH_NewAdaptedChannelInfo( long long __rdi // r57 ) {// addr = 0x0041E799 char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec signed char _v22; // _cfa_ffffffea char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t34; // _t34 _v48 = __rdi; _v32 = 0; _v24 = 0; _v9 = 0; while(_v9 <= 7) { _v32 = (__rdx + __rdx + __rdx << 5) + _v48 + 54799; _t34 = (( *(_v32 + 1) & 0xff) + 464 << 7) + 88; _v16 = _t34; _v20 = 0; if((_t34 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { RT_PCI_IO_READ32(); _v24 = _v20; } if((_v22 & 0x80) != 0) { _v9 = _v9 + 1; continue; } else { return; } } return; } CH_WriteMcuChInfo() {// addr = 0x0041E878 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; __rdx = _v24 + 4; __ecx = 92; MCU_Write_Memory(92, _v24 + 4); return; } CH_ReadMcuChInfo() {// addr = 0x0041E8B8 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; __rdx = _v24 + 4; __ecx = 92; MCU_Read_Memory(92, _v24 + 4); return; } LCCQ_Initialise() {// addr = 0x0041E8F8 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; __edx = 1348; __esi = 0; RtlFillMemory(1348, 0, _v16 + 25072); return; } LCCQ_EnqueueRequest() {// addr = 0x0041E922 signed char _v25; // _cfa_ffffffe7 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v68; // _cfa_ffffffbc intOrPtr _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 intOrPtr __rbx; // r54 _unknown_ __rbp; // r59 signed char _t110; // _t110 signed char _t124; // _t124 _push(r12); _push(__rbx); __rsp = __rsp - 96; _v48 = __rdi; _v52 = _t124; _v56 = _t110; _v40 = 0; _t237 = _v48; _t246 = *(_v48 + 25072) & 0xff; if(( *((((( *(_v48 + 25072) & 0xff) << 2) + ( *(_v48 + 25072) & 0xff) << 2) + ( *(_v48 + 25072) & 0xff) << 2) + _v48 + 0x61f4) & 255) != 0) { L3: r8d = _v56 & 255; _t79 = DebugPrint(0, _v48, _t237, _t246, __rdi, __rsi); _v25 = 0; while(_v25 <= 15) { r11d = *(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + _v48 + 0x6204) & 0xff; r10d = *((intOrPtr*)(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + _v48 + 0x6200)); r9d = *(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + _v48 + 0x61fc); r8d = *(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + _v48 + 0x61f9) & 0xff; __rbx = _v48; r12 = _v48; _t255 = _v25 & 255; _v68 = r11d; _v76 = r10d; _v84 = r9d; _v92 = r8d; _v100 = *(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + _v48 + 0x61f8) & 0xff; _v108 = *(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + _v48 + 0x61f7) & 0xff; *__rsp = *(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + _v48 + 0x61f6) & 0xff; r9d = *(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + _v48 + 0x61f5) & 0xff; r8d = *(((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + r12 + 0x61f4) & 0xff; _t79 = DebugPrint(0, ((((_v25 & 255) << 2) + (_v25 & 255) << 2) + (_v25 & 255) << 2) + r12 + 25072, _v48, _t255, __rdi, __rsi); _v25 = _v25 + 1; } } else { _t237 = _v48; _t246 = *(_v48 + 25072) & 0xff; if(( *((((_t246 << 2) + _t246 << 2) + _t246 << 2) + _v48 + 0x61f5) & 255) != 0) { goto L3; } else { _v40 = (((_t246 << 2) + _t246 << 2) + _t246 << 2) + _v48 + 25076; *(_v40 + 2) = _v52 & 255; *(_v40 + 3) = _v56 & 255; *((char*)(_v40 + 1)) = 1; *_v40 = 1; r8d = _v56 & 255; DebugPrint(0, _v48, _v48 + 25076, _t246, __rdi, __rsi); } } __rsp = &(__rsp[0x18]); _pop(__rbx); _pop(r12); return; } LCCQ_EnqueueCommit() {// addr = 0x0041EC94 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t96; // _t96 _v32 = _t96; _v9 = 0; _v24 = _v32 - 30560; if(( *((((( *(_v32 + 25072) & 0xff) << 2) + ( *(_v32 + 25072) & 0xff) << 2) + ( *(_v32 + 25072) & 0xff) << 2) + _v32 + 0x61f4) & 255) != 0 && ( *((((( *(_v32 + 25072) & 0xff) << 2) + ( *(_v32 + 25072) & 0xff) << 2) + ( *(_v32 + 25072) & 0xff) << 2) + _v32 + 0x61f5) & 255) != 0) { *((((( *(_v32 + 25072) & 0xff) << 2) + ( *(_v32 + 25072) & 0xff) << 2) + ( *(_v32 + 25072) & 0xff) << 2) + _v32 + 0x61f5) = 0; *(_v32 + 25072) = (_v32 + 1 + (_v32 + 1 >> 31 >> 28) & 15) - (_v32 + 1 >> 31 >> 28); _v9 = 1; DebugPrint(0, _v32, _v32, *(_v32 + 25072) & 0xff, _t96, __rsi); } SetPollMode(); return _v9 & 255; } LCCQ_DequeueRequest() {// addr = 0x0041EDDB long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t65; // _t65 _v32 = __rdi; _v16 = 0; if(( *((((( *(_v32 + 25073) & 0xff) << 2) + ( *(_v32 + 25073) & 0xff) << 2) + ( *(_v32 + 25073) & 0xff) << 2) + _v32 + 0x61f4) & 255) != 0) { _t65 = *(_v32 + 25073) & 0xff; if(( *((((_t65 << 2) + _t65 << 2) + _t65 << 2) + _v32 + 0x61f5) & 255) == 0) { _v16 = (((_t65 << 2) + _t65 << 2) + _t65 << 2) + _v32 + 25076; DebugPrint(0, _v32, _v32 + 25076, _t65, __rdi, __rsi); } } return; } LCCQ_DequeueCommit() {// addr = 0x0041EECD signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t96; // _t96 _v32 = _t96; _v9 = 0; _v24 = _v32 - 30560; if(( *((((( *(_v32 + 25073) & 0xff) << 2) + ( *(_v32 + 25073) & 0xff) << 2) + ( *(_v32 + 25073) & 0xff) << 2) + _v32 + 0x61f4) & 255) != 0 && ( *((((( *(_v32 + 25073) & 0xff) << 2) + ( *(_v32 + 25073) & 0xff) << 2) + ( *(_v32 + 25073) & 0xff) << 2) + _v32 + 0x61f5) & 255) == 0) { *((((( *(_v32 + 25073) & 0xff) << 2) + ( *(_v32 + 25073) & 0xff) << 2) + ( *(_v32 + 25073) & 0xff) << 2) + _v32 + 0x61f4) = 0; *(_v32 + 25073) = (_v32 + 1 + (_v32 + 1 >> 31 >> 28) & 15) - (_v32 + 1 >> 31 >> 28); _v9 = 1; DebugPrint(0, _v32, _v32, *(_v32 + 25073) & 0xff, _t96, __rsi); } SetPollMode(); return _v9 & 255; } LCCQ_IsEmpty() {// addr = 0x0041F014 signed char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t56; // _t56 _v32 = _t56; _v9 = 1; _v24 = 0; ral_spin_lock(_v32 + 30456, &_v24); if(( *((((( *(_v32 + 55633) & 0xff) << 2) + ( *(_v32 + 55633) & 0xff) << 2) + ( *(_v32 + 55633) & 0xff) << 2) + _v32 + 0xd954) & 255) != 0 && ( *((((( *(_v32 + 55633) & 0xff) << 2) + ( *(_v32 + 55633) & 0xff) << 2) + ( *(_v32 + 55633) & 0xff) << 2) + _v32 + 0xd955) & 255) == 0) { _v9 = 0; } ral_spin_unlock(_v32 + 30456, _v24); return _v9 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x0041F0E0 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint24( signed char* __rdi // r57 ) {// addr = 0x0041F10F signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff) << 8) << 8; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0041F151 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } LLINK_ReadMasterPicoClock( long long __rdi // r57 ) {// addr = 0x0041F1A7 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t18; // _t18 _v32 = __rdi; _v24 = 0; _v12 = 0; if((_t18 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } return _v24 & 268435455; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0041F228 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LLINK_Suspend( long long __rdi // r57 ) {// addr = 0x0041F369 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 1; return; } NewTransactionID( long long __rdi // r57 ) {// addr = 0x0041F37B long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *(_v16 + 28968) = __dl; if(( *(_v16 + 28968) & 255) > 126) { *(_v16 + 28968) = 1; } return *(_v16 + 28968) & 255; } LCCMD_Initialise() {// addr = 0x0041F3C2 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t15; // _t15 _v32 = _t15; _v16 = _v32 - 30560; *((char*)(_v16 + 190500)) = 0; *((char*)(_v32 + 28968)) = 126; __edx = 160; __esi = 0; RtlFillMemory(160, 0, _v32 + 28976); return; } _DMTC_NewTransaction() {// addr = 0x0041F410 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t58; // _t58 signed char _t65; // _t65 _unknown_ _t99; // _t99 _unknown_ _t100; // _t100 _v32 = __rdi; _v56 = r8; _v36 = sil; _v40 = _t65; _v44 = _t58; _v12 = 0; while(_v12 <= 9) { _t107 = _v12 + 1811 << 4; _t85 = _v32 + (_v12 + 1811 << 4); if(( *(_v32 + (_v12 + 1811 << 4)) & 255) != 0) { _v12 = _v12 + 1; continue; } else { *(_v32 + (_v12 + 1811 << 4)) = 1; *((_v12 + 1811 << 4) + _v32 + 1) = _v36 & 255; *((_v12 + 1811 << 4) + _v32 + 2) = _v40 & 255; *((_v12 + 1811 << 4) + _v32 + 3) = _v44 & 255; _t99 = _v32 + (_v12 + 1811 << 4); _t107 = _t99 + 8; _t85 = _v56; *(_t99 + 8) = _v56; } break; } if(_v12 != 10) { } else { r9d = _v44 & 255; r8d = _v40 & 255; DebugPrint(0, _t85, _t100, _t107, __rdi, __rsi); _v12 = 0; while(_v12 <= 9) { *__rsp = (_v32 + (_v12 + 1811 << 4)[3]) & 0xff; r9d = (_v32 + (_v12 + 1811 << 4)[2]) & 0xff; r8d = (_v32 + (_v12 + 1811 << 4)[1]) & 0xff; _t48 = DebugPrint(0, _v32 + (_v12 + 1811 << 4), _v12 + 1811 << 4, _v12 + 1811 << 4, __rdi, __rsi); _v12 = _v12 + 1; } } return; } LCCMD_DelTransaction( _unknown_ __esi, // r5 long long __rdi // r57 ) {// addr = 0x0041F5DD char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __al; _v12 = 0; while(_v12 <= 9) { if(__al != 1 || __al != _v36) { _v12 = _v12 + 1; continue; } else { *((char*)(_v32 + (_v12 + 1811 << 4))) = 0; return; } } return; } LCCMD_SearchByTransactionID( signed long long __esi, // r5 signed long long __rdi // r57 ) {// addr = 0x0041F65C intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed long long _t19; // _t19 signed long long _t28; // _t28 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _t19 = __esi; _v36 = __esi; _v24 = 0; _v12 = 0; while(_v12 <= 9) { _t19 = *(_v32 + (_v12 + 1811 << 4)) & 255; if(_t19 != 1) { L4: _v12 = _v12 + 1; continue; } else { _t19 = (_v32 + (_v12 + 1811 << 4)[1]) & 255; if(_t19 != _v36) { goto L4; } else { _t28 = _v32; _t19 = _t28; _v24 = (_t28 << 4) + _t28 + 28976; } } break; } return _t19; } LCCMD_InquiryRequest() {// addr = 0x0041F6E7 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc char _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 char _t70; // _t70 char _t72; // _t72 intOrPtr _t79; // _t79 long long _t92; // _t92 long long _t123; // _t123 _v48 = _t123; _v52 = _t79; _v56 = _t72; _v60 = _t70; _v10 = 0; _v32 = 0; _v9 = LDM_InquiryRequest(_v48); if(_v9 == 1) { ral_spin_lock(_v48 + 30456, &_v32); _t92 = _v48 + 30560; _v10 = NewTransactionID(_t92); LCCQ_EnqueueRequest(); _v24 = _t92; if(_v24 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; ral_spin_unlock(_v48 + 30456, _v32); } else { *(_v24 + 16) = 0; *(_v24 + 4) = 0; *(_v24 + 5) = *( *((intOrPtr*)(_v48 + 30712)) + 2) & 255; *((intOrPtr*)(_v24 + 12)) = LLINK_ReadPicoClock(_v48, _v48 + 33800); *((intOrPtr*)(_v24 + 8)) = _v16; LCCQ_EnqueueCommit(); BTSTS_ResetInquiryRecord(); *((char*)(_v48 + 191364)) = 1; r8d = 0; _DMTC_NewTransaction(); ral_spin_unlock(_v48 + 30456, _v32); LMbw_Adjust_Link_Priority(); } } return _v10 & 255; } LCCMD_InquiryCancelRequest( _unknown_ __eax // r0 ) {// addr = 0x0041F8AC signed char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 intOrPtr _t82; // _t82 long long _t110; // _t110 long long _t145; // _t145 long long _t156; // _t156 _v48 = _t145; _v56 = _t156; _v9 = 0; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); _t110 = _v48 + 30560; _v9 = NewTransactionID(_t110); _t133 = _v48 + 30560; LCCQ_EnqueueRequest(); _v24 = _t110; LDM_InquiryCancelRequest(_v48); if(_v24 == 0) { LCCMD_DelTransaction(_v9 & 255, _v48 + 30560); _v9 = 0; } else { *(_v24 + 16) = 0; *(_v24 + 4) = 0; if(( *(_v48 + 30696) & 255) == 0) { *(_v24 + 5) = *(_v48 + 55570) & 255; *((intOrPtr*)(_v24 + 12)) = LLINK_ReadMasterPicoClock(_v48); _v16 = *((intOrPtr*)(_v24 + 12)); } else { *(_v24 + 5) = *( *((intOrPtr*)(_v48 + 30712)) + 2) & 255; _t159 = _v48 + 33800; _t155 = _v48; _t82 = LLINK_ReadPicoClock(_v48, _v48 + 33800); _t144 = _v24; *((intOrPtr*)(_v24 + 12)) = _t82; _v16 = *((intOrPtr*)(_v24 + 12)); if( *((intOrPtr*)(_v48 + 30792)) > _v16) { r8d = _v48 + 4; DebugPrint(0, _v48, _t133, _t144, _t155, _t159); _v16 = *((intOrPtr*)(_v48 + 30792)) + 4; } } *((intOrPtr*)(_v24 + 8)) = _v16; LCCQ_EnqueueCommit(); r8 = _v56; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v32); return _v9 & 255; } LCCMD_InquiryScanRequest() {// addr = 0x0041FA9A char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t94; // _t94 long long _t117; // _t117 long long _t128; // _t128 _v48 = _t117; _v56 = _t128; _v10 = 0; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); r9d = *(_v48 + 190509) & 0xff; r8d = *(_v48 + 190512) & 0xffff; *__rsp = &_v16; _v9 = LDM_InquiryScanRequest(_v48); if(_v9 == 1) { _t94 = _v48 + 30560; _v10 = NewTransactionID(_t94); LCCQ_EnqueueRequest(); _v24 = _t94; if(_v24 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { *(_v24 + 16) = 0; *((char*)(_v24 + 4)) = 1; *(_v24 + 5) = *( *((intOrPtr*)(_v48 + 30832)) + 2) & 255; *((intOrPtr*)(_v24 + 12)) = LLINK_ReadPicoClock(_v48, _v48 + 33984); *((intOrPtr*)(_v24 + 8)) = _v16; LCCQ_EnqueueCommit(); r8 = _v56; _DMTC_NewTransaction(); } } ral_spin_unlock(_v48 + 30456, _v32); return _v10 & 255; } LCCMD_InquiryScanCancelRequest( _unknown_ __eax // r0 ) {// addr = 0x0041FC4A signed char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 intOrPtr _t81; // _t81 long long _t109; // _t109 long long _t143; // _t143 long long _t153; // _t153 _v48 = _t143; _v56 = _t153; _v9 = 0; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); _t109 = _v48 + 30560; _v9 = NewTransactionID(_t109); _t131 = _v48 + 30560; LCCQ_EnqueueRequest(); _v24 = _t109; if(_v24 == 0) { LCCMD_DelTransaction(_v9 & 255, _v48 + 30560); _v9 = 0; } else { *(_v24 + 16) = 0; *((char*)(_v24 + 4)) = 1; if(( *(_v48 + 30816) & 255) == 0) { *(_v24 + 5) = *(_v48 + 55570) & 255; *((intOrPtr*)(_v24 + 12)) = LLINK_ReadMasterPicoClock(_v48); _v16 = *((intOrPtr*)(_v24 + 12)); } else { *(_v24 + 5) = *( *((intOrPtr*)(_v48 + 30832)) + 2) & 255; _t156 = _v48 + 33984; _t152 = _v48; _t81 = LLINK_ReadPicoClock(_v48, _v48 + 33984); _t142 = _v24; *((intOrPtr*)(_v24 + 12)) = _t81; _v16 = *((intOrPtr*)(_v24 + 12)); if( *((intOrPtr*)(_v48 + 30912)) > _v16) { r8d = _v48 + 4; DebugPrint(0, _v48, _t131, _t142, _t152, _t156); _v16 = *((intOrPtr*)(_v48 + 30912)) + 4; } } *((intOrPtr*)(_v24 + 8)) = _v16; LCCQ_EnqueueCommit(); r8 = _v56; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v32); return _v9 & 255; } LCCMD_PageRequest( signed int _a8, // _cfa_8 intOrPtr _a16, // _cfa_10 intOrPtr* _a24 // _cfa_18 ) {// addr = 0x0041FE2C signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed char* _v88; // _cfa_ffffffa8 char _v92; // _cfa_ffffffa4 intOrPtr _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v112; // _cfa_ffffff90 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 _unknown_ __rbp; // r59 intOrPtr _t157; // _t157 intOrPtr _t215; // _t215 char _t229; // _t229 long long _t286; // _t286 long long _t370; // _t370 signed char* _t386; // _t386 _v80 = _t370; _v88 = _t386; _v96 = _t215; _v112 = r9; _v92 = _t229; _v100 = r8d; _v10 = 0; _v9 = 0; _v64 = 0; r9d = _v100 & 255; r8d = *(_v80 + 190514) & 0xffff; _v152 = &_v16; _v160 = _a8; *__rsp = _v112; LINK_NewPage(); _v56 = _v80; if(_v56 != 0) { ral_spin_lock(_v80 + 30456, &_v64); _t286 = _v80 + 30560; _v10 = NewTransactionID(_t286); _t356 = _v80 + 30560; LCCQ_EnqueueRequest(); _v48 = _t286; if(_v48 == 0) { LCCMD_DelTransaction(_v10 & 255, _v80 + 30560); _v10 = 0; ral_spin_unlock(_v80 + 30456, _v64); } else { *_a24 = _v56; _v40 = _v48 + 17; _v32 = *((intOrPtr*)(_v56 + 104)) + 8; *(_v48 + 16) = _v9 & 255; *(_v48 + 4) = *(_v56 + 11) & 255; *(_v48 + 5) = *(_v80 + 55570) & 255; _t390 = _v56; _t157 = LLINK_ReadPicoClock(_v80, _v56); _t366 = _v48; *((intOrPtr*)(_v48 + 12)) = _t157; *((intOrPtr*)(_v48 + 8)) = _v16; _t381 = _v80 + 30560; LCCQ_EnqueueCommit(); DebugPrint(0, _v80 + 30560, _t356, _v48, _v80 + 30560, _v56); if(_v100 == 0) { *__rsp = *( *((intOrPtr*)(_v56 + 104)) + 2) & 0xff; r9d = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 96)) + 8)) + 1) & 0xff; r8d = *( *((intOrPtr*)(_v56 + 96)) + 2) & 0xff; DebugPrint(0, _v56, _t356, _t366, _t381, _t390); } else { _v160 = *( *((intOrPtr*)(_v56 + 104)) + 2) & 0xff; *__rsp = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 96)) + 8)) + 1) & 0xff; r9d = *( *((intOrPtr*)(_v56 + 96)) + 2) & 0xff; r8d = *( *((intOrPtr*)(_v56 + 88)) + 11) & 0xff; DebugPrint(0, _v56, _t356, _t366, _t381, _t390); } *__rsp = *(_v56 + 128) & 0xff; r9d = *(_v56 + 129) & 0x1f; r8d = *( *((intOrPtr*)(_v56 + 32)) + 1) & 0xff; DebugPrint(0, *((intOrPtr*)(_v56 + 48)), _t356, _t366, _t381, _t390); r8d = ( *(_v56 + 121) & 255) >> 1 & 1; DebugPrint(0, _v56, _t356, _t366, _t381, _t390); r8d = (_v88[3]) & 0xff; _v152 = *_v88 & 0xff; _v160 = (_v88[1]) & 0xff; *__rsp = (_v88[2]) & 0xff; r9d = r8d; r8d = (_v88[4]) & 0xff; DebugPrint(0, _v88, _t356, _t366, _t381, _t390); r8d = *_v32 & 0xff; r9d = (_v32[5]) & 0xff; r10d = (_v32[6]) & 0xff; _v136 = r8d; _v144 = (_v32[1]) & 0xff; _v152 = (_v32[2]) & 0xff; _v160 = (_v32[3]) & 0xff; *__rsp = (_v32[4]) & 0xff; r8d = r10d; DebugPrint(0, &(_v32[7]), _t356, _t366, _t381, _t390); r8 = _a16; _DMTC_NewTransaction(); ral_spin_unlock(_v80 + 30456, _v64); LM_Find_Link_Table_Entry_By_LLink(); _v24 = _v56; if(_v24 != 0) { LMbw_Adjust_Link_Priority(); } } } return _v10 & 255; } LCCMD_PageCancelRequest() {// addr = 0x00420303 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t58; // _t58 long long _t79; // _t79 _v48 = _t79; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); _t58 = _v48 + 30560; _v9 = NewTransactionID(_t58); LCCQ_EnqueueRequest(); _v24 = _t58; if(_v24 == 0) { LCCMD_DelTransaction(_v9 & 255, _v48 + 30560); _v9 = 0; } else { *(_v24 + 16) = 0; *((char*)(_v24 + 4)) = 255; *(_v24 + 5) = *(_v48 + 55570) & 255; *((intOrPtr*)(_v24 + 12)) = LLINK_ReadMasterPicoClock(_v48); *((intOrPtr*)(_v24 + 8)) = *((intOrPtr*)(_v24 + 12)); LCCQ_EnqueueCommit(); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v32); return _v9 & 255; } LCCMD_PageScanRequest() {// addr = 0x00420433 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t102; // _t102 intOrPtr _t116; // _t116 long long _t212; // _t212 _unknown_ _t248; // _t248 _unknown_ _t250; // _t250 long long _t259; // _t259 long long _t274; // _t274 _v64 = _t259; _v72 = _t274; _v10 = 0; _v9 = 0; _v48 = 0; _t195 = _v64 + 191308; _t260 = _v64 + 191308; if(LMconfig_LM_Check_Sctnet_Slv_State(_t102) == 2) { L3: DebugPrint(0, _t195, _t248, _t250, _t260, _t274); BTSTS_SetDeviceState(); return 0; } _t260 = _v64 + 191308; if(BTSTS_CheckDeviceState(32, _v64 + 191308) == 0) { L4: if(BTSTS_CheckDeviceState(32, _v64 + 191308) != 0) { BTSTS_ClearDeviceState(); } ral_spin_lock(_v64 + 30456, &_v48); r8 = &_v16; LINK_NewPageScan(); _v40 = _v64; if(_v40 != 0 && *((intOrPtr*)(_v40 + 88)) != 0) { _t212 = _v64 + 30560; _v10 = NewTransactionID(_t212); _t249 = _v64 + 30560; LCCQ_EnqueueRequest(); _v32 = _t212; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v64 + 30560); _v10 = 0; } else { _v24 = _v32 + 17; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v40 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v40 + 104)) + 16)) + 2) & 255; _t277 = _v40; _t116 = LLINK_ReadPicoClock(_v64, _v40); _t258 = _v32; *((intOrPtr*)(_v32 + 12)) = _t116; *((intOrPtr*)(_v32 + 8)) = _v16; _t271 = _v64 + 30560; LCCQ_EnqueueCommit(); DebugPrint(0, _v64 + 30560, _t249, _v32, _v64 + 30560, _v40); _v80 = *( *((intOrPtr*)( *((intOrPtr*)(_v40 + 104)) + 16)) + 2) & 0xff; *__rsp = *( *((intOrPtr*)(_v40 + 104)) + 2) & 0xff; r9d = *( *((intOrPtr*)(_v40 + 96)) + 2) & 0xff; r8d = *( *((intOrPtr*)(_v40 + 88)) + 11) & 0xff; DebugPrint(0, _v40, _t249, _t258, _v64 + 30560, _v40); *__rsp = *(_v40 + 128) & 0xff; r9d = *(_v40 + 129) & 0x1f; r8d = *( *((intOrPtr*)(_v40 + 32)) + 1) & 0xff; DebugPrint(0, *((intOrPtr*)(_v40 + 48)), _t249, _t258, _v64 + 30560, _t277); r8d = ( *(_v40 + 121) & 255) >> 1 & 1; DebugPrint(0, _v40, _t249, _t258, _t271, _t277); r8 = _v72; _DMTC_NewTransaction(); } } ral_spin_unlock(_v64 + 30456, _v48); return _v10 & 255; } _t195 = _v64; if(( *(_v64 + 54770) & 255) != 1) { goto L4; } goto L3; } LCCMD_PageScanCancelRequest() {// addr = 0x004207C7 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t60; // _t60 long long _t82; // _t82 long long _t91; // _t91 _v48 = _t82; _v56 = _t91; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); _t60 = _v48 + 30560; _v9 = NewTransactionID(_t60); LCCQ_EnqueueRequest(); _v24 = _t60; if(_v24 == 0) { LCCMD_DelTransaction(_v9 & 255, _v48 + 30560); _v9 = 0; } else { *(_v24 + 16) = 0; *((char*)(_v24 + 4)) = 255; *(_v24 + 5) = *(_v48 + 55570) & 255; *((intOrPtr*)(_v24 + 12)) = LLINK_ReadMasterPicoClock(_v48); *((intOrPtr*)(_v24 + 8)) = *((intOrPtr*)(_v24 + 12)); LCCQ_EnqueueCommit(); r8 = _v56; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v32); return _v9 & 255; } LCCMD_EnableAFHRequest() {// addr = 0x004208FC signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 signed char _v28; // _cfa_ffffffe4 signed char _v29; // _cfa_ffffffe3 signed char _v30; // _cfa_ffffffe2 signed int _v31; // _cfa_ffffffe1 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 signed char _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 intOrPtr _v92; // _cfa_ffffffa4 signed int _v104; // _cfa_ffffff98 intOrPtr _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t234; // _t234 signed int _t235; // _t235 intOrPtr _t236; // _t236 signed char _t279; // _t279 signed char* _t282; // _t282 signed int _t289; // _t289 signed int _t317; // _t317 signed char _t335; // _t335 long long _t346; // _t346 _v80 = _t335; _v88 = _t346; _v92 = _t236; _v104 = _t317; _v112 = r8; _v27 = 0; _v26 = 0; _v64 = 0; _v56 = 0; _v48 = gpBasicChannelInfo; _v40 = 0; _t319 = _v80 + 30456; ral_spin_lock(_v80 + 30456, &_v64); _t279 = _v80; _t337 = _t279; CH_NewAdaptedChannelInfo(_t279); _v40 = _t279; if(_v40 == 0) { DebugPrint(0, _t279, _t317, _t319, _t337, &_v64); } else { _t282 = _v80 + 30560; _v26 = NewTransactionID(_t282); _t318 = _v80 + 30560; LCCQ_EnqueueRequest(); _v56 = _t282; if(_v56 == 0) { LCCMD_DelTransaction(_v26 & 255, _v80 + 30560); _v26 = 0; } else { _v30 = 0; while(_v30 <= 78) { _t282 = &(_t282[_v104]); _v25 = ( *_t282 & 0xff) >> (_v30 & 7) & 1; if(_v25 != 0) { _v27 = _v27 + 1; } _v30 = _v30 + 1; } *(_v40 + 95) = _v27 & 255; *((intOrPtr*)(_v40 + 84)) = *_v104; *((intOrPtr*)(_v40 + 88)) = *((intOrPtr*)(_v104 + 4)); _t289 = _v104; *(_v40 + 92) = *(_t289 + 8) & 65535; _v28 = 0; _v30 = 0; _v29 = 0; while(_v30 <= 78) { _t289 = _t289 + _v104; _v25 = ( *_t289 & 0xff) >> (_v30 & 7) & 1; if(_v25 != 0) { _t235 = *(_v48 + _t289 + 4) & 255; _t289 = _v28 & 255; *(_v40 + _t289 + 4) = _t235; _v28 = _v28 + 1; } _v30 = _v30 + 2; _v29 = _v29 + 1; } _v30 = 1; _v29 = 40; while(_v30 <= 78) { _t289 = _t289 + _v104; _v25 = ( *_t289 & 0xff) >> (_v30 & 7) & 1; if(_v25 != 0) { _t234 = *(_v48 + _t289 + 4) & 255; _t289 = _v28 & 255; *(_v40 + _t289 + 4) = _t234; _v28 = _v28 + 1; } _v30 = _v30 + 2; _v29 = _v29 + 1; } *(_v40 + 94) = *(_v40 + 94) & 0xbf; *(_v40 + 94) = *(_v40 + 94) & 255; *(_v40 + 94) = *(_v40 + 94) & 0x7f; *(_v40 + 94) = *(_v40 + 94) & 255 | 128; CH_WriteMcuChInfo(); DebugPrint(0, _v80, _t318, _v40, _v80, _v40); r9d = *(_v40 + 1) & 0xff; r8d = *( *((intOrPtr*)(_v88 + 104)) + 2) & 0xff; DebugPrint(0, *((intOrPtr*)(_v88 + 104)), _t318, _v40, _v80, _v40); *(_v56 + 16) = 1; *(_v56 + 4) = *(_v88 + 11) & 255; *(_v56 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v88 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v56 + 12)) = LLINK_ReadPicoClock(_v80, _v88); *((intOrPtr*)(_v56 + 8)) = _v92; _v31 = 0; _v31 = _v31 & 0xf8 | *(_v40 + 1) & 7; _v31 = _v31 & 255 | 8; *(_v56 + 17) = _v31 & 255; LCCQ_EnqueueCommit(); r8 = _v112; _DMTC_NewTransaction(); } } ral_spin_unlock(_v80 + 30456, _v64); return; } LCCMD_DisableAFHRequest() {// addr = 0x00420CF2 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t61; // _t61 long long _t73; // _t73 long long _t89; // _t89 long long _t99; // _t99 long long _t108; // _t108 _v48 = _t99; _v56 = _t108; _v60 = _t61; _v72 = _t89; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); _t73 = _v48 + 30560; _v9 = NewTransactionID(_t73); LCCQ_EnqueueRequest(); _v24 = _t73; if(_v24 == 0) { LCCMD_DelTransaction(_v9 & 255, _v48 + 30560); _v9 = 0; } else { *((char*)(_v24 + 16)) = 1; *(_v24 + 4) = *(_v56 + 11) & 255; *(_v24 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v24 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v24 + 8)) = _v60; *(_v24 + 17) = 0; LCCQ_EnqueueCommit(); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v32); return _v9 & 255; } LCCMD_ChangeChStTabRequest() {// addr = 0x00420E4B signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t68; // _t68 long long _t75; // _t75 long long _t78; // _t78 long long _t93; // _t93 long long _t101; // _t101 _v48 = _t101; _v64 = _t93; _v52 = _t68; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t75 = _v48 + 30560; _v10 = NewTransactionID(_t75); LCCQ_EnqueueRequest(); _v32 = _t75; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t78 = _v32 + 17; _v24 = _t78; *(_t78 + _v24) = _v52 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *((char*)(_v32 + 4)) = 255; *(_v32 + 5) = *(_v48 + 55570) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadMasterPicoClock(_v48); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r8 = _v64; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SwitchToMasterRequest() {// addr = 0x00420FAA char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t89; // _t89 char _t114; // _t114 long long _t143; // _t143 long long _t167; // _t167 long long _t181; // _t181 long long _t192; // _t192 _v48 = _t181; _v56 = _t192; _v60 = _t114; _v72 = _t167; _v11 = 0; _v10 = 0; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); LDM_SwitchToMasterRequest(); _v9 = _t89; if(_v9 == 1) { _t143 = _v48 + 30560; _v11 = NewTransactionID(_t143); LCCQ_EnqueueRequest(); _v24 = _t143; if(_v24 == 0) { LCCMD_DelTransaction(_v11 & 255, _v48 + 30560); _v11 = 0; } else { _v16 = LLINK_ReadPicoClock(_v48, _v56); *(_v24 + 4) = *(_v56 + 11) & 255; *(_v24 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v24 + 12)) = _v16; *((intOrPtr*)(_v24 + 8)) = _v16; RtlCopyMemory(4, _v24 + 17 + _v24, ?_? ( &_v60)); _v10 = _v10 + 4; *(_v24 + (_v10 & 255) + 17) = *(_v48 + 54798) & 255; _v10 = _v10 + 1; *(_v24 + (_v10 & 255) + 17) = *(_v48 + 54796) & 255; _v10 = _v10 + 1; *(_v24 + 16) = _v10 & 255; LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, _v24 + 17 + _v24, _v24, _v48 + 30560, ?_? ( &_v60)); *__rsp = _v60; r9d = *(_v48 + 54796) & 0xff; r8d = *(_v48 + 54798) & 0xff; DebugPrint(0, _v56, _v24 + 17 + _v24, _v24, _v48 + 30560, &_v60); r8 = _v72; _DMTC_NewTransaction(); } } ral_spin_unlock(_v48 + 30456, _v32); return _v11 & 255; } LCCMD_SwitchToSlaveRequest() {// addr = 0x004211F7 signed short _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 char _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed short _t88; // _t88 char _t110; // _t110 signed short _t115; // _t115 long long _t144; // _t144 long long _t181; // _t181 long long _t193; // _t193 _v48 = _t181; _v56 = _t193; _t88 = _t115; _v64 = _t110; _v72 = r8; _v60 = _t88; _v11 = 0; _v10 = 0; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); LDM_SwitchToSlaveRequest(); _v9 = _t88; if(_v9 == 1) { _t144 = _v48 + 30560; _v11 = NewTransactionID(_t144); LCCQ_EnqueueRequest(); _v24 = _t144; if(_v24 == 0) { LCCMD_DelTransaction(_v11 & 255, _v48 + 30560); _v11 = 0; } else { _v16 = LLINK_ReadPicoClock(_v48, _v56); *(_v24 + 4) = *(_v56 + 11) & 255; *(_v24 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v24 + 12)) = _v16; *((intOrPtr*)(_v24 + 8)) = _v16; RtlCopyMemory(4, _v24 + 17 + _v24, &_v64); _v10 = _v10 + 4; *(_v24 + (_v10 & 255) + 17) = *(_v48 + 54769) & 255; _v10 = _v10 + 1; RtlCopyMemory(2, _v24 + 17 + _v24, &_v60); _v10 = _v10 + 2; *(_v24 + 16) = _v10 & 255; LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, _v24 + 17 + _v24, _v24 + 17, _v48 + 30560, &_v60); *__rsp = _v60 & 0xffff; r9d = _v64; r8d = *(_v48 + 54769) & 0xff; DebugPrint(0, _v56, _v24 + 17 + _v24, _v24 + 17, _v48 + 30560, &_v60); r8 = _v72; _DMTC_NewTransaction(); } } ral_spin_unlock(_v48 + 30456, _v32); return _v11 & 255; } LCCMD_ChangeLinkPriorityRequest() {// addr = 0x0042144D signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 intOrPtr _t89; // _t89 signed char _t100; // _t100 signed short _t105; // _t105 long long _t131; // _t131 long long _t134; // _t134 signed int* _t135; // _t135 unsigned short* _t136; // _t136 signed int* _t137; // _t137 long long _t162; // _t162 long long _t171; // _t171 _v48 = _t162; _v56 = _t171; _v60 = _t105; _v64 = _t100; _v68 = r8d; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t131 = _v48 + 30560; _v10 = NewTransactionID(_t131); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t131; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t134 = _v32 + 17; _v24 = _t134; _t135 = _t134 + _v24; *_t135 = _v60 & 65535; _v9 = _v9 + 1; _t136 = _t135 + _v24; *_t136 = (_v60 & 65535) >> 8; _v9 = _v9 + 1; _t137 = _t136 + _v24; *_t137 = _v64 & 255; _v9 = _v9 + 1; *(_t137 + _v24) = _v68 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; _t89 = LLINK_ReadPicoClock(_v48, _v56); _t161 = _v32; *((intOrPtr*)(_v32 + 12)) = _t89; *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); _t175 = _v48; r8d = 0; _DMTC_NewTransaction(); DebugPrint(0, _v32, __rcx, _v32, _v48 + 30560, _v48); *__rsp = _v68 & 255; r9d = _v64 & 255; r8d = _v60 & 65535; DebugPrint(0, _v56, __rcx, _t161, _v48 + 30560, _t175); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SetSupervisionTimeoutRequest() {// addr = 0x0042165C signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed short _t85; // _t85 long long _t106; // _t106 long long _t136; // _t136 long long _t146; // _t146 _v48 = _t136; _v56 = _t146; _v60 = _t85; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t106 = _v48 + 30560; _v10 = NewTransactionID(_t106); LCCQ_EnqueueRequest(); _v32 = _t106; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _v24 = _v32 + 17; _v16 = (_v60 & 65535) + (_v60 & 65535); RtlCopyMemory(4, _v32 + 17 + _v24, ?_? ( &_v16)); _v9 = _v9 + 4; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r8d = 0; _DMTC_NewTransaction(); DebugPrint(0, _v32, ?_? ( &_v16), _v32, _v48 + 30560, _v48); r8d = _v60 & 65535; DebugPrint(0, _v56, &_v16, _v32, _v48 + 30560, _v48); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SetFlushTimeoutRequest() {// addr = 0x00421831 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed short _t90; // _t90 long long _t112; // _t112 long long _t145; // _t145 long long _t155; // _t155 _v48 = _t145; _v56 = _t155; _v60 = _t90; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t112 = _v48 + 30560; _v10 = NewTransactionID(_t112); LCCQ_EnqueueRequest(); _v32 = _t112; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 24)) + 2) = _v60 & 65535; _v24 = _v32 + 17; _v16 = (_v60 & 65535) + (_v60 & 65535); RtlCopyMemory(4, _v32 + 17 + _v24, &_v16); _v9 = _v9 + 4; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, &_v16, _v32, _v48 + 30560, _v56); r8d = _v16; DebugPrint(0, _v56, &_v16, _v32, _v48 + 30560, _v56); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_IncreaseTxPowerRequest() {// addr = 0x00421A19 signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t64; // _t64 intOrPtr _t71; // _t71 long long _t110; // _t110 long long _t112; // _t112 long long _t138; // _t138 long long _t148; // _t148 _v48 = _t138; _v56 = _t148; _v9 = 0; _v10 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); if(_PLINK_IncreaseTxPower(_t64) != 0) { _t110 = _v48 + 30560; _v10 = NewTransactionID(_t110); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t110; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t112 = _v32 + 17; _v24 = _t112; *(_t112 + _v24) = _v11 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; _t71 = LLINK_ReadPicoClock(_v48, _v56); _t137 = _v32; *((intOrPtr*)(_v32 + 12)) = _t71; *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); _t153 = _v48; r8d = 0; _DMTC_NewTransaction(); DebugPrint(0, _v32, __rcx, _v32, _v48 + 30560, _v48); r8d = _v11 & 0xff; DebugPrint(0, _v56, __rcx, _t137, _v48 + 30560, _t153); } } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_DecreaseTxPowerRequest() {// addr = 0x00421BF7 signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t64; // _t64 intOrPtr _t71; // _t71 long long _t110; // _t110 long long _t112; // _t112 long long _t138; // _t138 long long _t148; // _t148 _v48 = _t138; _v56 = _t148; _v10 = 0; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); if(_PLINK_DecreaseTxPower(_t64) != 0) { _t110 = _v48 + 30560; _v10 = NewTransactionID(_t110); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t110; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t112 = _v32 + 17; _v24 = _t112; *(_t112 + _v24) = _v11 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; _t71 = LLINK_ReadPicoClock(_v48, _v56); _t137 = _v32; *((intOrPtr*)(_v32 + 12)) = _t71; *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); _t153 = _v48; r8d = 0; _DMTC_NewTransaction(); DebugPrint(0, _v32, __rcx, _v32, _v48 + 30560, _v48); r8d = _v11 & 0xff; DebugPrint(0, _v56, __rcx, _t137, _v48 + 30560, _t153); } } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SetEncryption() {// addr = 0x00421DD5 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 intOrPtr _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed char _t86; // _t86 signed char _t88; // _t88 long long _t104; // _t104 long long _t107; // _t107 signed int* _t108; // _t108 long long _t135; // _t135 long long _t145; // _t145 _v48 = _t135; _v56 = _t145; _v72 = r8; _v80 = r9; _v60 = _t88; _v64 = _t86; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t104 = _v48 + 30560; _v10 = NewTransactionID(_t104); LCCQ_EnqueueRequest(); _v32 = _t104; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t107 = _v32 + 17; _v24 = _t107; _t108 = _t107 + _v24; *_t108 = _v60 & 255; _v9 = _v9 + 1; *(_t108 + _v24) = _v64 & 255; _v9 = _v9 + 1; RtlCopyMemory(16, _t108 + _v24 + _v24, _v72); _v9 = _v9 + 16; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r8 = _v80; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SetLocalBDAddrRequest() {// addr = 0x00421F8A signed char _v25; // _cfa_ffffffe7 _unknown_ _v33; // _cfa_ffffffdf _unknown_ _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t35; // _t35 signed int _t36; // _t36 signed int _t37; // _t37 signed int _t38; // _t38 long long _t116; // _t116 _push(r12); _push(__rbx); __rsp = __rsp - 32; _v48 = _t116; _v56 = __rsi; _v25 = 0; _t35 = casting_uint24(_v56); BT_SyncWordGenerator(_t35, &_v40); _t36 = _t35 & 1; if(_t36 != 0) { r12d = ( *(_v56 + 3) & 0xff) << 24; casting_uint24(_v56); _t36 = RT_PCI_IO_WRITE32(); } _t37 = _t36 & 1; if(_t37 != 0) { casting_uint16(_v56 + 4); _t37 = RT_PCI_IO_WRITE32(); } _t38 = _t37 & 1; if(_t38 != 0) { _t38 = RT_PCI_IO_WRITE32(); } if((_t38 & 1) != 0) { RT_PCI_IO_WRITE32(); } __rsp = __rsp + 32; _pop(__rbx); _pop(r12); return _v25 & 255; } LCCMD_ConnectACLU() {// addr = 0x00422113 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t146; // _t146 long long _t149; // _t149 long long _t176; // _t176 long long _t178; // _t178 long long _t188; // _t188 long long _t197; // _t197 _v48 = _t188; _v56 = _t197; _v64 = _t178; _v72 = _t176; _v10 = 0; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t146 = _v48 + 30560; _v10 = NewTransactionID(_t146); _t177 = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t146; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t149 = _v32 + 17; _v24 = _t149; *(_t149 + _v24) = *(_v56 + 11) & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v64 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r9d = *(_v64 + 11) & 0xff; r8d = *(_v56 + 1) & 0xff; DebugPrint(0, _v56, _t177, _v32, _v48 + 30560, _v56); *__rsp = *(_v56 + 128) & 0xff; r9d = *(_v56 + 129) & 0x1f; r8d = *( *((intOrPtr*)(_v56 + 32)) + 1) & 0xff; DebugPrint(0, *((intOrPtr*)(_v56 + 48)), _t177, _v32, _v48 + 30560, _v56); r8d = ( *(_v56 + 121) & 255) >> 1 & 1; DebugPrint(0, _v56, _t177, _v32, _v48 + 30560, _v56); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_LinkDeleteRequest() {// addr = 0x00422375 signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 intOrPtr _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 intOrPtr _t117; // _t117 long long _t147; // _t147 long long _t180; // _t180 long long _t193; // _t193 long long _t206; // _t206 _v64 = _t193; _v72 = _t206; _v76 = _t117; _v88 = _t180; _v11 = 0; _v9 = 0; _v10 = 0; _v48 = 0; if(_v72 != 0) { *((char*)(_v72 + 5)) = 1; LLINK_Suspend(_v72); ral_spin_lock(_v64 + 30456, &_v48); _t147 = _v64 + 30560; _v11 = NewTransactionID(_t147); _t181 = _v64 + 30560; LCCQ_EnqueueRequest(); _v40 = _t147; if(_v40 == 0) { LCCMD_DelTransaction(_v11 & 255, _v64 + 30560); _v11 = 0; ral_spin_unlock(_v64 + 30456, _v48); } else { _v16 = LLINK_ReadPicoClock(_v64, _v72); if(_v76 == 0) { _v20 = _v16; } else { _v20 = _v76; } if(( *(_v72 + 1) & 255) != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v72 + 96)) + 32)) + 16)) != 0) { _v10 = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) + 2) & 255; } } else { if( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) != 0) { _v10 = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) + 2) & 255; } } *(_v40 + 16) = _v9 & 255; *(_v40 + 4) = *(_v72 + 11) & 255; *(_v40 + 5) = _v10 & 255; *((intOrPtr*)(_v40 + 12)) = _v16; *((intOrPtr*)(_v40 + 8)) = _v20; LCCQ_EnqueueCommit(); r8 = _v88; _DMTC_NewTransaction(); ral_spin_unlock(_v64 + 30456, _v48); DebugPrint(0, _v48, _t181, _v64 + 30456, _v64 + 30456, _v48); DebugPrint(0, _v72, _t181, _v64 + 30456, _v64 + 30456, _v48); if(( *(_v72 + 1) & 255) == 15) { LM_Find_Link_Table_Entry_By_LLink(); _v32 = _v72; if(_v32 != 0) { LMbw_Adjust_Link_Priority(); } } } } return _v11 & 255; } LCCMD_LinkFlowControlRequest() {// addr = 0x004225FE signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t71; // _t71 long long _t85; // _t85 long long _t88; // _t88 long long _t104; // _t104 long long _t114; // _t114 long long _t123; // _t123 _v48 = _t114; _v56 = _t123; _v72 = _t104; _v60 = _t71; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t85 = _v48 + 30560; _v10 = NewTransactionID(_t85); LCCQ_EnqueueRequest(); _v32 = _t85; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t88 = _v32 + 17; _v24 = _t88; *(_t88 + _v24) = _v60 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_ConfigEIRRequest( _unknown_ __eax // r0 ) {// addr = 0x0042277A signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t81; // _t81 intOrPtr _t90; // _t90 signed char _t91; // _t91 long long _t119; // _t119 long long _t122; // _t122 long long _t143; // _t143 long long _t153; // _t153 _v48 = _t153; _v64 = _t143; _v72 = r8; _v52 = sil; _v56 = _t91; _v10 = 1; _v9 = 0; _v40 = 0; _t164 = &_v40; ral_spin_lock(_v48 + 30456, &_v40); BBEIR_ConfigEIR(); _t119 = _v48 + 30560; _v11 = NewTransactionID(_t119); _t140 = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t119; if(_v32 == 0) { LCCMD_DelTransaction(_v11 & 255, _v48 + 30560); _v11 = 0; } else { _t122 = _v32 + 17; _v24 = _t122; *(_t122 + _v24) = _v10 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = 1; if(( *(_v48 + 30816) & 255) == 0) { *(_v32 + 5) = *(_v48 + 55570) & 255; _t81 = LLINK_ReadMasterPicoClock(_v48); _t151 = _v32; *((intOrPtr*)(_v32 + 12)) = _t81; } else { *(_v32 + 5) = *( *((intOrPtr*)(_v48 + 30832)) + 2) & 255; _t164 = _v48 + 33984; _t90 = LLINK_ReadPicoClock(_v48, _v48 + 33984); _t151 = _v32; *((intOrPtr*)(_v32 + 12)) = _t90; } *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, _t140, _t151, _v48 + 30560, _t164); r8d = _v56 & 255; DebugPrint(0, _v48 + 30560, _t140, _t151, _v48 + 30560, _t164); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v11 & 255; } LCCMD_SetSRModeRequest() {// addr = 0x00422984 signed char _v9; // _cfa_fffffff7 signed char _v16; // _cfa_fffffff0 signed int _v23; // _cfa_ffffffe9 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t26; // _t26 signed int _t33; // _t33 signed int _t45; // _t45 long long _t61; // _t61 _v32 = _t61; _t26 = _t45; _v36 = _t26; _v9 = 0; _v16 = 0; if((_t26 & 1) == 0) { _v16 = 4294967295; _v24 = _v16; } else { RT_PCI_IO_READ32(); _v24 = _v16; } _t33 = _v23 & 0xfc | _v36 & 3; _v23 = _t33; if((_t33 & 1) != 0) { RT_PCI_IO_WRITE32(); } return _v9 & 255; } LCCMD_SetClassOfDeviceRequest() {// addr = 0x00422A4B signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t11; // _t11 intOrPtr _t16; // _t16 long long _t24; // _t24 _v32 = _t24; _v36 = _t16; _v9 = 0; if((_t11 & 1) != 0) { RT_PCI_IO_WRITE32(); } return _v9 & 255; } LCCMD_SetACLUPktTypeTableRequest() {// addr = 0x00422A9F signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t76; // _t76 signed char _t84; // _t84 _unknown_ _t103; // _t103 long long _t108; // _t108 long long _t112; // _t112 long long _t127; // _t127 _unknown_ _t129; // _t129 signed char* _t137; // _t137 long long _t140; // _t140 long long _t150; // _t150 _v48 = _t140; _v56 = _t150; _v72 = _t127; _v60 = _t84; _v9 = 0; _v40 = 0; DebugPrint(0, _t103, _t127, _t129, _t140, _t150); r8d = _v60 & 255; DebugPrint(0, _v56, _t127, _t129, _t140, _t150); ral_spin_lock(_v48 + 30456, &_v40); _t108 = _v48 + 30560; _v10 = NewTransactionID(_t108); LCCQ_EnqueueRequest(); _v32 = _t108; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { LLINK_Suspend(_v56); _t112 = _v32 + 17; _v24 = _t112; _t137 = _t112 + _v24; if(_v60 != 1) { _t76 = 0; } else { _t76 = 2; } *_t137 = _t76; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_FlushRequest() {// addr = 0x00422C7E signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 char _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 char _t78; // _t78 signed char _t80; // _t80 long long _t96; // _t96 long long _t99; // _t99 long long _t126; // _t126 long long _t136; // _t136 _v48 = _t126; _v56 = _t136; _v60 = _t80; _v64 = _t78; _v9 = 0; _v40 = 0; if(_v64 <= 1) { ral_spin_lock(_v48 + 30456, &_v40); _t96 = _v48 + 30560; _v10 = NewTransactionID(_t96); if(_v64 != 1) { LCCQ_EnqueueRequest(); _v32 = _t96; } else { LCCQ_EnqueueRequest(); _v32 = _t96; } if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t99 = _v32 + 17; _v24 = _t99; *(_t99 + _v24) = _v60 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } return 0; } LCCMD_SetNbcRequest() {// addr = 0x00422E32 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t66; // _t66 long long _t73; // _t73 long long _t76; // _t76 long long _t97; // _t97 _v48 = _t97; _v52 = _t66; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t73 = _v48 + 30560; _v10 = NewTransactionID(_t73); LCCQ_EnqueueRequest(); _v32 = _t73; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t76 = _v32 + 17; _v24 = _t76; *(_t76 + _v24) = _v52 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *((char*)(_v32 + 4)) = 2; *(_v32 + 5) = *(_v48 + 55570) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadMasterPicoClock(_v48); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SetTestModeRequest( signed int _a8, // _cfa_8 _unknown_ _a16, // _cfa_10 _unknown_ _a24, // _cfa_18 signed char _a32 // _cfa_20 ) {// addr = 0x00422F8C signed char _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 intOrPtr _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 char _v76; // _cfa_ffffffb4 signed char _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac signed char _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 signed char _v96; // _cfa_ffffffa0 signed char _v100; // _cfa_ffffff9c signed char _v104; // _cfa_ffffff98 char* _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t97; // _t97 char _t101; // _t101 long long _t124; // _t124 long long _t126; // _t126 long long _t150; // _t150 long long _t160; // _t160 _v64 = _t150; _v72 = _t160; r10d = r8d; r8d = _a8; _v76 = _t101; _v80 = _t97; _v84 = r10w; _v88 = r9b; _v92 = r8b; _v96 = dil; _v100 = sil; _v104 = _a32; _v26 = 0; _v25 = 0; _v56 = 0; ral_spin_lock(_v64 + 30456, &_v56); r9d = _v104 & 255; r8d = _v100 & 255; r11d = _v88 & 255; r10 = &_v27; _v112 = r10; _v120 = r9d; _v128 = r8d; *__rsp = _v96 & 255; r9d = _v92 & 255; r8d = r11d; _v32 = BBTEST_PrepareToChangeTestMode(_v80 & 255); if(_v32 == 0) { _t124 = _v64 + 30560; _v26 = NewTransactionID(_t124); LCCQ_EnqueueRequest(); _v48 = _t124; if(_v48 == 0) { LCCMD_DelTransaction(_v26 & 255, _v64 + 30560); _v26 = 0; } else { _t126 = _v48 + 17; _v40 = _t126; *(_t126 + _v40) = _v27 & 255; _v25 = _v25 + 1; *(_v48 + 16) = _v25 & 255; *(_v48 + 4) = *(_v72 + 11) & 255; *(_v48 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v48 + 12)) = LLINK_ReadPicoClock(_v64, _v72); *((intOrPtr*)(_v48 + 8)) = *((intOrPtr*)(_v48 + 12)); LCCQ_EnqueueCommit(); r8d = 0; _DMTC_NewTransaction(); } } ral_spin_unlock(_v64 + 30456, _v56); return _v26 & 255; } LCCMD_AddSCOLinkRequest( intOrPtr _a8 // _cfa_8 ) {// addr = 0x00423190 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 char _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed char _t182; // _t182 signed char _t190; // _t190 long long _t230; // _t230 long long _t232; // _t232 signed int* _t233; // _t233 _unknown_ _t234; // _t234 _unknown_ _t235; // _t235 _unknown_ _t236; // _t236 _unknown_ _t237; // _t237 signed int* _t238; // _t238 signed int* _t239; // _t239 signed int* _t240; // _t240 signed int* _t241; // _t241 long long _t270; // _t270 long long _t284; // _t284 _v64 = _t270; _v72 = _t284; _v84 = r8d; _v76 = _t190; _v80 = _t182; _v88 = r9d; _v11 = 0; _v10 = 0; _v16 = _v88 & 255; _v14 = 2; _v24 = (_v16 & 0xffff) + (_v16 & 0xffff); _v20 = (_v14 & 0xffff) + (_v14 & 0xffff); _v56 = 0; ral_spin_lock(_v64 + 30456, &_v56); r8d = _v80 & 255; r9d = r8d; r8d = _v88 & 255; LINK_NewSCO(); _v48 = _v64; if(_v48 != 0) { _t230 = _v64 + 30560; _v11 = NewTransactionID(_t230); LCCQ_EnqueueRequest(); _v40 = _t230; if(_v40 == 0) { LCCMD_DelTransaction(_v11 & 255, _v64 + 30560); _v11 = 0; } else { _v9 = 0; _v9 = *(_t230 + &LMAirModeToLCCodecType) & 255; _t232 = _v40 + 17; _v32 = _t232; _t233 = _t232 + _v32; *_t233 = 0; _v10 = _v10 + 1; _t234 = _t233 + _v32; RtlCopyMemory(2, _t234, &_v16); _v10 = _v10 + 2; _t235 = _t234 + _v32; RtlCopyMemory(2, _t235, &_v14); _v10 = _v10 + 2; _t236 = _t235 + _v32; RtlCopyMemory(4, _t236, &_v24); _v10 = _v10 + 4; _t237 = _t236 + _v32; RtlCopyMemory(4, _t237, ?_? ( &_v20)); _v10 = _v10 + 4; _t238 = _t237 + _v32; *_t238 = _v76 & 255; _v10 = _v10 + 1; _t239 = _t238 + _v32; *_t239 = 0; _v10 = _v10 + 1; _t240 = _t239 + _v32; *_t240 = 0; _v10 = _v10 + 1; _t241 = _t240 + _v32; *_t241 = _v76 & 255; _v10 = _v10 + 1; *(_t241 + _v32) = _v9 & 255; _v10 = _v10 + 1; *(_v40 + 16) = _v10 & 255; *(_v40 + 4) = *(_v48 + 11) & 255; *(_v40 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v48 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v40 + 12)) = LLINK_ReadPicoClock(_v64, _v48); *(_v40 + 8) = _v84; LCCQ_EnqueueCommit(); r8 = _a8; _DMTC_NewTransaction(); DebugPrint(0, _v40, ?_? ( &_v20), _v40, _v64 + 30560, _v64); _v104 = _v20; _v112 = _v24; *__rsp = _v14 & 0xffff; r9d = _v16 & 0xffff; r8d = 0; DebugPrint(0, _v48, ?_? ( &_v20), _v40, _v64 + 30560, _v64); _v112 = _v9 & 255; *__rsp = _v80 & 255; r9d = _v76 & 255; r8d = 0; DebugPrint(0, _v48, &_v20, _v40, _v64 + 30560, _v64); } } ral_spin_unlock(_v64 + 30456, _v56); return _v11 & 255; } LCCMD_ModifySCOLinkRequest( intOrPtr _a8 // _cfa_8 ) {// addr = 0x004234F7 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed char _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 char _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed char _t196; // _t196 signed char _t203; // _t203 long long _t242; // _t242 intOrPtr _t247; // _t247 intOrPtr _t250; // _t250 long long _t252; // _t252 signed char* _t253; // _t253 signed char* _t254; // _t254 signed char* _t255; // _t255 signed char* _t256; // _t256 signed char* _t257; // _t257 signed int* _t258; // _t258 signed char* _t259; // _t259 signed char* _t260; // _t260 signed int* _t261; // _t261 long long _t292; // _t292 long long _t306; // _t306 _v64 = _t292; _v72 = _t306; _v84 = r8d; _v76 = _t203; _v80 = _t196; _v88 = r9d; _v10 = 0; _v16 = _v88 & 255; _v14 = 2; _v24 = (_v16 & 0xffff) + (_v16 & 0xffff); _v20 = (_v14 & 0xffff) + (_v14 & 0xffff); _v56 = 0; ral_spin_lock(_v64 + 30456, &_v56); _t242 = _v64 + 30560; _v11 = NewTransactionID(_t242); LCCQ_EnqueueRequest(); _v48 = _t242; if(_v48 == 0) { LCCMD_DelTransaction(_v11 & 255, _v64 + 30560); _v11 = 0; } else { _v9 = 0; LLINK_Suspend(_v72); _v40 = *((intOrPtr*)(_v72 + 72)); _t247 = _v40; *(_t247 + 1) = _v76 & 255; *(_v40 + 2) = *(_t247 + (((_v76 & 255) >> 4 & 3) << 4) + _t247 + (((_v76 & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 65535; _t250 = _v40; *(_t250 + 3) = _v80 & 255; _v9 = *(_t250 + &LMAirModeToLCCodecType) & 255; _t252 = _v48 + 17; _v32 = _t252; _t253 = _t252 + _v32; *_t253 = 0; _v10 = _v10 + 1; _t254 = &(_t253[_v32]); RtlCopyMemory(2, _t254, &_v16); _v10 = _v10 + 2; _t255 = &(_t254[_v32]); RtlCopyMemory(2, _t255, &_v14); _v10 = _v10 + 2; _t256 = &(_t255[_v32]); RtlCopyMemory(4, _t256, &_v24); _v10 = _v10 + 4; _t257 = &(_t256[_v32]); RtlCopyMemory(4, _t257, ?_? ( &_v20)); _v10 = _v10 + 4; _t258 = &(_t257[_v32]); *_t258 = _v76 & 255; _v10 = _v10 + 1; _t259 = _t258 + _v32; *_t259 = 0; _v10 = _v10 + 1; _t260 = &(_t259[_v32]); *_t260 = 0; _v10 = _v10 + 1; _t261 = &(_t260[_v32]); *_t261 = _v76 & 255; _v10 = _v10 + 1; *(_t261 + _v32) = _v9 & 255; _v10 = _v10 + 1; *(_v48 + 16) = _v10 & 255; *(_v48 + 4) = *(_v72 + 11) & 255; *(_v48 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v48 + 12)) = LLINK_ReadPicoClock(_v64, _v72); *(_v48 + 8) = _v84; LCCQ_EnqueueCommit(); DebugPrint(0, _v64 + 30560, ?_? ( &_v20), _v48, _v64 + 30560, _v72); _v104 = _v20; _v112 = _v24; *__rsp = _v14 & 0xffff; r9d = _v16 & 0xffff; r8d = 0; DebugPrint(0, _v72, ?_? ( &_v20), _v48, _v64 + 30560, _v72); _v112 = _v9 & 255; *__rsp = _v80 & 255; r9d = _v76 & 255; r8d = 0; DebugPrint(0, _v72, &_v20, _v48, _v64 + 30560, _v72); r8 = _a8; _DMTC_NewTransaction(); } ral_spin_unlock(_v64 + 30456, _v56); return _v11 & 255; } LCCMD_AddESCOLinkRequest( signed int _a8, // _cfa_8 _unknown_ _a16, // _cfa_10 signed int _a24, // _cfa_18 _unknown_ _a32, // _cfa_20 signed char _a40, // _cfa_28 intOrPtr _a48 // _cfa_30 ) {// addr = 0x00423886 signed int _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 signed int _v30; // _cfa_ffffffe2 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 char _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed short _v104; // _cfa_ffffff98 char _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t201; // _t201 char _t209; // _t209 long long _t253; // _t253 long long _t255; // _t255 signed int* _t256; // _t256 _unknown_ _t257; // _t257 _unknown_ _t258; // _t258 _unknown_ _t259; // _t259 _unknown_ _t260; // _t260 signed int* _t261; // _t261 _unknown_ _t262; // _t262 signed int* _t263; // _t263 long long _t293; // _t293 long long _t308; // _t308 _v80 = _t293; _v88 = _t308; r10d = r8d; r8d = _a8; _v92 = _t209; _v96 = _t201; _v100 = r10b; _v104 = r9w; _v108 = r8w; _v112 = dil; _v116 = sil; _v120 = _a40; _v27 = 0; _v26 = 0; _v32 = _v116 & 255; _v30 = _v120 & 255; _v40 = (_v32 & 0xffff) + (_v32 & 0xffff); _v36 = (_v30 & 0xffff) + (_v30 & 0xffff); _v72 = 0; ral_spin_lock(_v80 + 30456, &_v72); r10d = _v120 & 255; r9d = _v116 & 255; r8d = _v112 & 255; r11d = _v100 & 255; _v136 = r10d; _v144 = r9d; r9d = _a24; _v152 = r9d; _v160 = r8d; *__rsp = _v108 & 0xffff; r9d = _v104 & 65535; r8d = r11d; LINK_NewESCO(); _v64 = _v80; if(_v64 != 0) { _t253 = _v80 + 30560; _v27 = NewTransactionID(_t253); LCCQ_EnqueueRequest(); _v56 = _t253; if(_v56 == 0) { LCCMD_DelTransaction(_v27 & 255, _v80 + 30560); _v27 = 0; } else { _v25 = 0; _v25 = *(_t253 + &LMAirModeToLCCodecType) & 255; _t255 = _v56 + 17; _v48 = _t255; _t256 = _t255 + _v48; *_t256 = 1; _v26 = _v26 + 1; _t257 = _t256 + _v48; RtlCopyMemory(2, _t257, &_v32); _v26 = _v26 + 2; _t258 = _t257 + _v48; RtlCopyMemory(2, _t258, &_v30); _v26 = _v26 + 2; _t259 = _t258 + _v48; RtlCopyMemory(4, _t259, &_v40); _v26 = _v26 + 4; _t260 = _t259 + _v48; RtlCopyMemory(4, _t260, &_v36); _v26 = _v26 + 4; _t261 = _t260 + _v48; *_t261 = _v100 & 255; _v26 = _v26 + 1; _t262 = _t261 + _v48; RtlCopyMemory(2, _t262, &_v108); _v26 = _v26 + 2; _t263 = _t262 + _v48; *_t263 = _v96 & 255; _v26 = _v26 + 1; *(_t263 + _v48) = _v25 & 255; _v26 = _v26 + 1; *(_v56 + 16) = _v26 & 255; *(_v56 + 4) = *(_v64 + 11) & 255; *(_v56 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v64 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v56 + 12)) = LLINK_ReadPicoClock(_v80, _v64); *(_v56 + 8) = _a24; LCCQ_EnqueueCommit(); DebugPrint(0, _v80 + 30560, &_v108, _v56, _v80 + 30560, _v64); _v152 = _v36; _v160 = _v40; *__rsp = _v30 & 0xffff; r9d = _v32 & 0xffff; r8d = 1; DebugPrint(0, _v64, &_v108, _v56, _v80 + 30560, _v64); _v160 = _v25 & 255; *__rsp = _v112 & 255; r9d = _v96 & 255; r8d = _v108 & 0xffff; DebugPrint(0, _v64, &_v108, _v56, _v80 + 30560, _v64); r8 = _a48; _DMTC_NewTransaction(); } } ral_spin_unlock(_v80 + 30456, _v72); return _v27 & 255; } LCCMD_ModifyESCOLinkRequest( _unknown_ _a8, // _cfa_8 intOrPtr _a16, // _cfa_10 _unknown_ _a24, // _cfa_18 signed char _a32, // _cfa_20 intOrPtr _a40 // _cfa_28 ) {// addr = 0x00423C55 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed short _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed char _v96; // _cfa_ffffffa0 signed char _v100; // _cfa_ffffff9c intOrPtr _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed char _t198; // _t198 signed char _t205; // _t205 long long _t248; // _t248 intOrPtr _t256; // _t256 long long _t258; // _t258 signed int* _t259; // _t259 _unknown_ _t260; // _t260 _unknown_ _t261; // _t261 _unknown_ _t262; // _t262 _unknown_ _t263; // _t263 signed int* _t264; // _t264 _unknown_ _t265; // _t265 signed int* _t266; // _t266 long long _t296; // _t296 long long _t310; // _t310 _v64 = _t296; _v72 = _t310; r10d = r8d; r8d = r9d; _v76 = _t205; _v80 = _t198; _v84 = r10w; _v88 = r8w; _v92 = dil; _v96 = sil; _v100 = _a32; _v10 = 0; _v16 = _v96 & 255; _v14 = _v100 & 255; _v24 = (_v16 & 0xffff) + (_v16 & 0xffff); _v20 = (_v14 & 0xffff) + (_v14 & 0xffff); _v56 = 0; ral_spin_lock(_v64 + 30456, &_v56); _t248 = _v64 + 30560; _v11 = NewTransactionID(_t248); LCCQ_EnqueueRequest(); _v48 = _t248; if(_v48 == 0) { LCCMD_DelTransaction(_v11 & 255, _v64 + 30560); _v11 = 0; } else { _v9 = 0; _v40 = *((intOrPtr*)(_v72 + 72)); *(_v40 + 1) = _v80 & 255; *(_v40 + 2) = _v76 & 255; *(_v40 + 4) = _v88 & 65535; *(_v40 + 6) = _v84 & 65535; _t256 = _v40; *(_t256 + 3) = _v92 & 255; _v9 = *(_t256 + &LMAirModeToLCCodecType) & 255; _t258 = _v48 + 17; _v32 = _t258; _t259 = _t258 + _v32; *_t259 = 1; _v10 = _v10 + 1; _t260 = _t259 + _v32; RtlCopyMemory(2, _t260, &_v16); _v10 = _v10 + 2; _t261 = _t260 + _v32; RtlCopyMemory(2, _t261, &_v14); _v10 = _v10 + 2; _t262 = _t261 + _v32; RtlCopyMemory(4, _t262, &_v24); _v10 = _v10 + 4; _t263 = _t262 + _v32; RtlCopyMemory(4, _t263, &_v20); _v10 = _v10 + 4; _t264 = _t263 + _v32; *_t264 = _v80 & 255; _v10 = _v10 + 1; _t265 = _t264 + _v32; RtlCopyMemory(2, _t265, &_v88); _v10 = _v10 + 2; _t266 = _t265 + _v32; *_t266 = _v76 & 255; _v10 = _v10 + 1; *(_t266 + _v32) = _v9 & 255; _v10 = _v10 + 1; *(_v48 + 16) = _v10 & 255; *(_v48 + 4) = *(_v72 + 11) & 255; *(_v48 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v48 + 12)) = LLINK_ReadPicoClock(_v64, _v72); *((intOrPtr*)(_v48 + 8)) = _a16; LCCQ_EnqueueCommit(); DebugPrint(0, _v64 + 30560, &_v88, _v48, _v64 + 30560, _v72); _v120 = _v20; _v128 = _v24; *__rsp = _v14 & 0xffff; r9d = _v16 & 0xffff; r8d = 1; DebugPrint(0, _v72, &_v88, _v48, _v64 + 30560, _v72); _v128 = _v9 & 255; *__rsp = _v92 & 255; r9d = _v76 & 255; r8d = _v88 & 0xffff; DebugPrint(0, _v72, &_v88, _v48, _v64 + 30560, _v72); r8 = _a40; _DMTC_NewTransaction(); } ral_spin_unlock(_v64 + 30456, _v56); return _v11 & 255; } LCCMD_HoldRequest() {// addr = 0x00423FED signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed short _t74; // _t74 intOrPtr _t76; // _t76 long long _t90; // _t90 long long _t118; // _t118 long long _t128; // _t128 _v48 = _t118; _v56 = _t128; _v60 = _t76; _v64 = _t74; _v9 = 0; _v16 = (_v64 & 65535) + (_v64 & 65535); _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t90 = _v48 + 30560; _v10 = NewTransactionID(_t90); LCCQ_EnqueueRequest(); _v32 = _t90; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _v24 = _v32 + 17; RtlCopyMemory(4, _v32 + 17 + _v24, &_v16); _v9 = _v9 + 4; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = _v60; LCCQ_EnqueueCommit(); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SniffRequest( _unknown_ _a8, // _cfa_8 signed char _a16, // _cfa_10 signed short _a24, // _cfa_18 intOrPtr _a32 // _cfa_20 ) {// addr = 0x0042417B signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 unsigned int _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 intOrPtr _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed short _v100; // _cfa_ffffff9c signed short _v104; // _cfa_ffffff98 signed char _v108; // _cfa_ffffff94 signed char _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c _unknown_ __rbp; // r59 signed short _t168; // _t168 intOrPtr _t171; // _t171 long long _t201; // _t201 long long _t204; // _t204 signed int* _t205; // _t205 signed int* _t206; // _t206 unsigned short* _t207; // _t207 _unknown_ _t208; // _t208 _unknown_ _t209; // _t209 _unknown_ _t210; // _t210 unsigned int* _t211; // _t211 unsigned int* _t212; // _t212 long long _t243; // _t243 long long _t257; // _t257 _v80 = _t243; _v88 = _t257; _v92 = _t171; _v96 = _t168; _v100 = r8w; _v104 = __di; _v108 = sil; _v112 = _a16; _v116 = _a24; _v9 = 0; _v36 = (_v100 & 65535) << 2; _v32 = (_v104 & 65535) << 2; _v28 = (_v96 & 65535) + (_v96 & 65535); _v20 = (_v116 & 65535) + (_v116 & 65535); _v64 = 0; ral_spin_lock(_v80 + 30456, &_v64); _t201 = _v80 + 30560; _v10 = NewTransactionID(_t201); LCCQ_EnqueueRequest(); _v56 = _t201; if(_v56 == 0) { LCCMD_DelTransaction(_v10 & 255, _v80 + 30560); _v10 = 0; } else { _v16 = (_v112 & 255) * (_v96 & 65535); _t204 = _v56 + 17; _v48 = _t204; _v24 = _v16 + _v16; _t205 = _t204 + _v48; *_t205 = _v108 & 255; _v9 = _v9 + 1; _t206 = _t205 + _v48; *_t206 = _v96 & 65535; _v9 = _v9 + 1; _t207 = _t206 + _v48; *_t207 = (_v96 & 65535) >> 8; _v9 = _v9 + 1; _t208 = _t207 + _v48; RtlCopyMemory(4, _t208, &_v36); _v9 = _v9 + 4; _t209 = _t208 + _v48; RtlCopyMemory(4, _t209, &_v32); _v9 = _v9 + 4; _t210 = _t209 + _v48; RtlCopyMemory(4, _t210, &_v28); _v9 = _v9 + 4; _t211 = _t210 + _v48; *_t211 = _v16; _v9 = _v9 + 1; _t212 = _t211 + _v48; *_t212 = _v16 >> 8; _v9 = _v9 + 1; _t213 = _t212 + _v48; *(_t212 + _v48) = _v16 >> 16; _v9 = _v9 + 1; RtlCopyMemory(4, _t213 + _v48, &_v24); _v9 = _v9 + 4; RtlCopyMemory(4, _t213 + _v48 + _v48, &_v20); _v9 = _v9 + 4; *(_v56 + 16) = _v9 & 255; *(_v56 + 4) = *(_v88 + 11) & 255; *(_v56 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v88 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v56 + 12)) = LLINK_ReadPicoClock(_v80, _v88); *((intOrPtr*)(_v56 + 8)) = _v92; LCCQ_EnqueueCommit(); r8 = _a32; _DMTC_NewTransaction(); } ral_spin_unlock(_v80 + 30456, _v64); return _v10 & 255; } LCCMD_UnsniffRequest() {// addr = 0x00424450 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t75; // _t75 long long _t93; // _t93 long long _t102; // _t102 long long _t111; // _t111 _v48 = _t102; _v56 = _t111; _v64 = _t93; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t75 = _v48 + 30560; _v10 = NewTransactionID(_t75); LCCQ_EnqueueRequest(); _v32 = _t75; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _v24 = _v32 + 17; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); r8 = _v64; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_ResetRequest() {// addr = 0x004245B5 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t36; // _t36 long long _t47; // _t47 _v48 = _t47; _v9 = 0; _v32 = 0; ral_spin_lock(_v48 + 30456, &_v32); _t36 = _v48 + 30560; _v10 = NewTransactionID(_t36); LCCQ_EnqueueRequest(); _v24 = _t36; if(_v24 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { *(_v24 + 16) = _v9 & 255; LCCQ_EnqueueCommit(); } ral_spin_unlock(_v48 + 30456, _v32); return _v10 & 255; } LCCMD_ParkBeaconRequest() {// addr = 0x00424681 signed char _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 unsigned int _v64; // _cfa_ffffffc0 unsigned int _v68; // _cfa_ffffffbc unsigned int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 intOrPtr _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 intOrPtr _v144; // _cfa_ffffff70 signed int _v148; // _cfa_ffffff6c signed int _v152; // _cfa_ffffff68 signed int _v156; // _cfa_ffffff64 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 signed int _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 signed int _v248; // _cfa_ffffff08 signed int _v256; // _cfa_ffffff00 signed int _v264; // _cfa_fffffef8 signed int _v272; // _cfa_fffffef0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t210; // _t210 intOrPtr _t276; // _t276 long long _t331; // _t331 long long _t338; // _t338 unsigned int* _t339; // _t339 unsigned int* _t340; // _t340 unsigned int* _t341; // _t341 unsigned int* _t342; // _t342 signed int* _t343; // _t343 signed int* _t344; // _t344 signed int* _t345; // _t345 unsigned int* _t346; // _t346 unsigned int* _t347; // _t347 unsigned int* _t348; // _t348 unsigned int* _t349; // _t349 unsigned int* _t350; // _t350 unsigned int* _t351; // _t351 unsigned int* _t352; // _t352 unsigned int* _t353; // _t353 signed int* _t354; // _t354 signed int* _t355; // _t355 long long _t409; // _t409 long long _t424; // _t424 long long _t433; // _t433 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 248; _v112 = _t424; _v120 = _t433; _v124 = _t276; _v136 = _t409; _v144 = r8; _v57 = 0; _v104 = 0; _v96 = _v136; if(_v96 != 0) { ral_spin_lock(_v112 + 30456, &_v104); _t331 = _v112 + 30560; _v58 = NewTransactionID(_t331); _t410 = _v112 + 30560; LCCQ_EnqueueRequest(); _v88 = _t331; if(_v88 == 0) { LCCMD_DelTransaction(_v58 & 255, _v112 + 30560); _v58 = 0; } else { _v72 = (( *(_v96 + 5) & 0xff) << 8) + ( *(_v96 + 4) & 0xff) + (( *(_v96 + 5) & 0xff) << 8) + ( *(_v96 + 4) & 0xff); _v68 = ( *(_v96 + 12) & 0xff) + ( *(_v96 + 12) & 0xff); _v64 = ( *(_v96 + 13) & 0xff) + ( *(_v96 + 13) & 0xff); _t338 = _v88 + 17; _v80 = _t338; _t339 = _t338 + _v80; *_t339 = _v72; _v57 = _v57 + 1; _t340 = _t339 + _v80; *_t340 = _v72 >> 8; _v57 = _v57 + 1; _t341 = _t340 + _v80; *_t341 = _v72 >> 16; _v57 = _v57 + 1; _t342 = _t341 + _v80; *_t342 = _v72 >> 24; _v57 = _v57 + 1; _t343 = _t342 + _v80; *_t343 = *(_v96 + 7) & 255; _v57 = _v57 + 1; _t344 = _t343 + _v80; *_t344 = 0; _v57 = _v57 + 1; _t345 = _t344 + _v80; *_t345 = *(_v96 + 6) & 255; _v57 = _v57 + 1; _t346 = _t345 + _v80; *_t346 = _v68; _v57 = _v57 + 1; _t347 = _t346 + _v80; *_t347 = _v68 >> 8; _v57 = _v57 + 1; _t348 = _t347 + _v80; *_t348 = _v68 >> 16; _v57 = _v57 + 1; _t349 = _t348 + _v80; *_t349 = _v68 >> 24; _v57 = _v57 + 1; _t350 = _t349 + _v80; *_t350 = _v64; _v57 = _v57 + 1; _t351 = _t350 + _v80; *_t351 = _v64 >> 8; _v57 = _v57 + 1; _t352 = _t351 + _v80; *_t352 = _v64 >> 16; _v57 = _v57 + 1; _t353 = _t352 + _v80; *_t353 = _v64 >> 24; _v57 = _v57 + 1; _t354 = _t353 + _v80; *_t354 = *(_v96 + 14) & 255; _v57 = _v57 + 1; _t355 = _t354 + _v80; *_t355 = *(_v96 + 16) & 0xf; _v57 = _v57 + 1; *(_t355 + _v80) = *(_v96 + 15) & 255; _v57 = _v57 + 1; *(_v88 + 16) = _v57 & 255; *(_v88 + 4) = *( *((intOrPtr*)(_v120 + 432)) + 11) & 255; *(_v88 + 5) = *( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v120 + 432)) + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v88 + 12)) = LLINK_ReadPicoClock(_v112, *((intOrPtr*)(_v120 + 432))); *((intOrPtr*)(_v88 + 8)) = _v124; LCCQ_EnqueueCommit(); DebugPrint(0, _v112 + 30560, _t410, _v88, _v112 + 30560, *((intOrPtr*)(_v120 + 432))); r8d = *(_v80 + 16) & 0xff; r9d = *(_v80 + 15) & 0xff; _v128 = *(_v80 + 14) & 0xff; _v148 = *(_v80 + 13) & 0xff; _v152 = *(_v80 + 12) & 0xff; _v156 = *(_v80 + 11) & 0xff; r15d = *(_v80 + 10) & 0xff; r14d = *(_v80 + 9) & 0xff; r13d = *(_v80 + 8) & 0xff; r12d = *(_v80 + 7) & 0xff; r11d = *(_v80 + 5) & 0xff; r10d = *(_v80 + 4) & 0xff; _v168 = *(_v80 + 17) & 0xff; _v176 = r8d; _v184 = r9d; _v192 = _v128; _v200 = _v148; _v208 = _v152; _v216 = _v156; _v224 = r15d; _v232 = r14d; _v240 = r13d; _v248 = r12d; _v256 = *(_v80 + 6) & 0xff; _v264 = r11d; _v272 = r10d; *__rsp = *(_v80 + 3) & 0xff; r9d = *(_v80 + 2) & 0xff; r8d = *(_v80 + 1) & 0xff; DebugPrint(0, _v80, _t410, _v88, _v112 + 30560, *((intOrPtr*)(_v120 + 432))); r8 = _v144; _DMTC_NewTransaction(); } ral_spin_unlock(_v112 + 30456, _v104); _t210 = _v58 & 255; } else { _t210 = 0; } __rsp = &(__rsp[0x3e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return _t210; } LCCMD_BeaconCancelRequest() {// addr = 0x00424B8E signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 char _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 char _t81; // _t81 long long _t99; // _t99 long long _t125; // _t125 long long _t134; // _t134 _v80 = _t125; _v88 = _t134; _v92 = _t81; _v9 = 0; _v64 = 0; ral_spin_lock(_v80 + 30456, &_v64); _t99 = _v80 + 30560; _v10 = NewTransactionID(_t99); __rcx = _v80 + 30560; LCCQ_EnqueueRequest(); _v56 = _t99; if(_v56 == 0 || _v88 == 0) { LCCMD_DelTransaction(_v10 & 255, _v80 + 30560); _v10 = 0; } else { _v48 = _v56 + 17; *(_v56 + 16) = _v9 & 255; *(_v56 + 4) = *(_v88 + 11) & 255; *(_v56 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v88 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v56 + 12)) = LLINK_ReadPicoClock(_v80, _v88); _v24 = *((intOrPtr*)(_v56 + 12)); _v20 = _v24; _v16 = 4; _v40 = _v16 + _v20; *(_v56 + 8) = _v40 & 0xfc; LCCQ_EnqueueCommit(); DebugPrint(0, _v80 + 30560, __rcx, _v56, _v80 + 30560, _v88); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v80 + 30456, _v64); return _v10 & 255; } LCCMD_UnparkSlaveRequest() {// addr = 0x00424D3F signed char _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 signed char _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 signed int _v140; // _cfa_ffffff74 signed int _v144; // _cfa_ffffff70 signed int _v148; // _cfa_ffffff6c signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 signed int _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t115; // _t115 signed char _t156; // _t156 signed char _t164; // _t164 long long _t193; // _t193 long long _t196; // _t196 signed int* _t197; // _t197 long long _t259; // _t259 long long _t269; // _t269 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 216; _v112 = _t259; _v120 = _t269; _v136 = r8; _v124 = _t164; _v128 = _t156; _v57 = 0; _v96 = 0; _v88 = _v136; if(_v120 == 0 || _v88 == 0) { _t115 = 0; } else { ral_spin_lock(_v112 + 30456, &_v96); _t193 = _v112 + 30560; _v58 = NewTransactionID(_t193); LCCQ_EnqueueRequest(); _v80 = _t193; if(_v80 == 0) { LCCMD_DelTransaction(_v58 & 255, _v112 + 30560); _v58 = 0; } else { _t196 = _v80 + 17; _v72 = _t196; _t197 = _t196 + _v72; *_t197 = _v124 & 255; _v57 = _v57 + 1; *(_t197 + _v72) = _v128 & 255; _v57 = _v57 + 1; RtlCopyMemory(_v128 & 255, _t197 + _v72 + _v72, _v88); _v57 = _v57 + (_v128 & 255); *(_v80 + 16) = _v57 & 255; *(_v80 + 4) = *(_v120 + 11) & 255; *(_v80 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v120 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v80 + 12)) = LLINK_ReadPicoClock(_v112, _v120); *((intOrPtr*)(_v80 + 8)) = *((intOrPtr*)(_v80 + 12)); LCCQ_EnqueueCommit(); r8d = _v128 & 255; DebugPrint(0, _v72, _v88, _v80, _v112 + 30560, _v120); _v140 = *(_v72 + 16) & 0xff; _v144 = *(_v72 + 15) & 0xff; _v148 = *(_v72 + 14) & 0xff; r15d = *(_v72 + 13) & 0xff; r14d = *(_v72 + 12) & 0xff; r13d = *(_v72 + 11) & 0xff; r12d = *(_v72 + 10) & 0xff; r11d = *(_v72 + 8) & 0xff; r10d = *(_v72 + 7) & 0xff; r9d = *(_v72 + 6) & 0xff; r8d = *(_v72 + 5) & 0xff; _v144 = *(_v72 + 18) & 0xff; _v152 = *(_v72 + 17) & 0xff; _v160 = _v140; _v168 = _v144; _v176 = _v148; _v184 = r15d; _v192 = r14d; _v200 = r13d; _v208 = r12d; _v216 = *(_v72 + 9) & 0xff; _v224 = r11d; _v232 = r10d; _v240 = r9d; *__rsp = r8d; r9d = *(_v72 + 4) & 0xff; r8d = *(_v72 + 3) & 0xff; DebugPrint(0, _v72 + 2, _v88, _v80, _v112 + 30560, _v120); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v112 + 30456, _v96); _t115 = _v58 & 255; } __rsp = &(__rsp[0x36]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return _t115; } LCCMD_SlaveBeaconScanRequest() {// addr = 0x004250D3 signed char _v57; // _cfa_ffffffc7 signed char _v58; // _cfa_ffffffc6 signed int _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed char _v96; // _cfa_ffffffa0 signed char _v104; // _cfa_ffffff98 signed char _v105; // _cfa_ffffff97 signed char _v106; // _cfa_ffffff96 signed int _v107; // _cfa_ffffff95 signed int _v108; // _cfa_ffffff94 signed int _v110; // _cfa_ffffff92 signed char _v113; // _cfa_ffffff8f signed char _v114; // _cfa_ffffff8e signed char _v115; // _cfa_ffffff8d signed char _v116; // _cfa_ffffff8c char _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 intOrPtr _v148; // _cfa_ffffff6c signed int _v152; // _cfa_ffffff68 intOrPtr _v160; // _cfa_ffffff60 signed int _v164; // _cfa_ffffff5c signed int _v168; // _cfa_ffffff58 signed int _v172; // _cfa_ffffff54 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 signed int _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 signed int _v248; // _cfa_ffffff08 signed int _v256; // _cfa_ffffff00 signed int _v264; // _cfa_fffffef8 signed int _v272; // _cfa_fffffef0 signed int _v280; // _cfa_fffffee8 signed int _v288; // _cfa_fffffee0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t290; // _t290 long long _t366; // _t366 long long _t369; // _t369 unsigned int* _t370; // _t370 unsigned int* _t371; // _t371 unsigned int* _t372; // _t372 unsigned int* _t373; // _t373 signed int* _t374; // _t374 signed char* _t375; // _t375 signed int* _t376; // _t376 unsigned int* _t377; // _t377 unsigned int* _t378; // _t378 unsigned int* _t379; // _t379 unsigned int* _t380; // _t380 unsigned int* _t381; // _t381 unsigned int* _t382; // _t382 unsigned int* _t383; // _t383 unsigned int* _t384; // _t384 signed int* _t385; // _t385 signed int* _t386; // _t386 signed int* _t387; // _t387 long long _t441; // _t441 long long _t452; // _t452 long long _t462; // _t462 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 264; _v128 = _t452; _v136 = _t462; _v144 = _t441; _v148 = _t290; _v160 = r8; _v72 = 0; _v60 = 0; _v68 = 0; _v64 = 0; _v57 = 0; _v96 = 0; ral_spin_lock(_v128 + 30456, &_v96); LMpolicy_Get_Park_PDU( ?_? ( &_v120)); _v68 = (_v108 & 0xff) + (_v108 & 0xff); _v64 = (_v107 & 0xff) + (_v107 & 0xff); _v60 = (_v116 & 0xff) + ((_v115 & 0xff) << 8); _v72 = (_v60 & 65535) * (_v110 & 0xff) + (_v60 & 65535) * (_v110 & 0xff); r9d = _v72; r8d = _v60 & 65535; DebugPrint(0, _v136, _v128 + 60216, &_v120, _v128 + 60216, _v136); _t366 = _v128 + 30560; _v58 = NewTransactionID(_t366); _t440 = _v128 + 30560; LCCQ_EnqueueRequest(); _v88 = _t366; if(_v88 == 0) { LCCMD_DelTransaction(_v58 & 255, _v128 + 30560); _v58 = 0; } else { _t369 = _v88 + 17; _v80 = _t369; _t370 = _t369 + _v80; *_t370 = _v72; _v57 = _v57 + 1; _t371 = _t370 + _v80; *_t371 = (_v72 & 65280) >> 8; _v57 = _v57 + 1; _t372 = _t371 + _v80; *_t372 = (_v72 & 16711680) >> 16; _v57 = _v57 + 1; _t373 = _t372 + _v80; *_t373 = _v72 >> 24; _v57 = _v57 + 1; _t374 = _t373 + _v80; *_t374 = _v113 & 255; _v57 = _v57 + 1; _t375 = _t374 + _v80; *_t375 = 0; _v57 = _v57 + 1; _t376 = &(_t375[_v80]); *_t376 = _v114 & 255; _v57 = _v57 + 1; _t377 = _t376 + _v80; *_t377 = _v68; _v57 = _v57 + 1; _t378 = _t377 + _v80; *_t378 = (_v68 & 65280) >> 8; _v57 = _v57 + 1; _t379 = _t378 + _v80; *_t379 = (_v68 & 16711680) >> 16; _v57 = _v57 + 1; _t380 = _t379 + _v80; *_t380 = _v68 >> 24; _v57 = _v57 + 1; _t381 = _t380 + _v80; *_t381 = _v64; _v57 = _v57 + 1; _t382 = _t381 + _v80; *_t382 = (_v64 & 65280) >> 8; _v57 = _v57 + 1; _t383 = _t382 + _v80; *_t383 = (_v64 & 16711680) >> 16; _v57 = _v57 + 1; _t384 = _t383 + _v80; *_t384 = _v64 >> 24; _v57 = _v57 + 1; _t385 = _t384 + _v80; *_t385 = _v106 & 255; _v57 = _v57 + 1; _t386 = _t385 + _v80; *_t386 = _v104 & 0xf; _v57 = _v57 + 1; _t387 = _t386 + _v80; *_t387 = _v105 & 255; _v57 = _v57 + 1; *(_t387 + _v80) = *(_v144 + 11) & 255; _v57 = _v57 + 1; *(_v88 + 16) = _v57 & 255; *(_v88 + 4) = *(_v144 + 11) & 255; *(_v88 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v144 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v88 + 12)) = LLINK_ReadPicoClock(_v128, _v144); *((intOrPtr*)(_v88 + 8)) = _v148; LCCQ_EnqueueCommit(); DebugPrint(0, _v128 + 30560, _t440, _v88, _v128 + 30560, _v144); r9d = *(_v80 + 17) & 0xff; r10d = *(_v80 + 16) & 0xff; r11d = *(_v80 + 15) & 0xff; _v152 = *(_v80 + 14) & 0xff; _v164 = *(_v80 + 13) & 0xff; _v168 = *(_v80 + 12) & 0xff; _v172 = *(_v80 + 11) & 0xff; _v176 = *(_v80 + 10) & 0xff; r15d = *(_v80 + 9) & 0xff; r14d = *(_v80 + 8) & 0xff; r13d = *(_v80 + 7) & 0xff; r12d = *(_v80 + 6) & 0xff; r8d = *(_v80 + 4) & 0xff; _v176 = *(_v80 + 18) & 0xff; _v184 = r9d; _v192 = r10d; _v200 = r11d; _v208 = _v152; _v216 = _v164; _v224 = _v168; _v232 = _v172; _v240 = _v176; _v248 = r15d; _v256 = r14d; _v264 = r13d; _v272 = r12d; _v280 = *(_v80 + 5) & 0xff; _v288 = r8d; *__rsp = *(_v80 + 3) & 0xff; r9d = *(_v80 + 2) & 0xff; r8d = *(_v80 + 1) & 0xff; DebugPrint(0, _v80, _t440, _v88, _v128 + 30560, _v144); r8 = _v160; _DMTC_NewTransaction(); } ral_spin_unlock(_v128 + 30456, _v96); __rsp = &(__rsp[0x42]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return _v58 & 255; } LCCMD_BeaconScanCancelRequest() {// addr = 0x00425677 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 char _t72; // _t72 long long _t91; // _t91 long long _t118; // _t118 long long _t127; // _t127 _v48 = _t118; _v56 = _t127; _v60 = _t72; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t91 = _v48 + 30560; _v10 = NewTransactionID(_t91); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t91; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _v24 = _v32 + 17; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, __rcx, _v32, _v48 + 30560, _v56); DebugPrint(0, _v24, __rcx, _v32, _v48 + 30560, _v56); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_UnparkRequest() {// addr = 0x0042581A signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t80; // _t80 long long _t100; // _t100 long long _t103; // _t103 long long _t120; // _t120 long long _t130; // _t130 long long _t139; // _t139 _v48 = _t130; _v56 = _t139; _v72 = _t120; _v60 = _t80; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t100 = _v48 + 30560; _v10 = NewTransactionID(_t100); _t121 = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t100; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t103 = _v32 + 17; _v24 = _t103; *(_t103 + _v24) = _v60 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, _t121, _v32, _v48 + 30560, _v56); DebugPrint(0, _v24, _t121, _v32, _v48 + 30560, _v56); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SlaveAccessRequest() {// addr = 0x004259D4 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t76; // _t76 long long _t92; // _t92 long long _t95; // _t95 long long _t120; // _t120 long long _t129; // _t129 _v48 = _t120; _v56 = _t129; _v60 = _t76; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t92 = _v48 + 30560; _v10 = NewTransactionID(_t92); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t92; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t95 = _v32 + 17; _v24 = _t95; *(_t95 + _v24) = _v60 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v24, __rcx, _v32, _v48 + 30560, _v56); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_SetBroadcastScanWindowRequest() {// addr = 0x00425B70 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t76; // _t76 long long _t92; // _t92 long long _t95; // _t95 long long _t120; // _t120 long long _t129; // _t129 _v48 = _t120; _v56 = _t129; _v60 = _t76; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t92 = _v48 + 30560; _v10 = NewTransactionID(_t92); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t92; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t95 = _v32 + 17; _v24 = _t95; *(_t95 + _v24) = _v60 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v24, __rcx, _v32, _v48 + 30560, _v56); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_LinkFlushRequest() {// addr = 0x00425D0C signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t106; // _t106 long long _t130; // _t130 long long _t138; // _t138 long long _t171; // _t171 long long _t180; // _t180 _v48 = _t171; _v56 = _t180; _v60 = _t106; _v9 = 0; _v10 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t130 = _v48 + 30560; _v11 = NewTransactionID(_t130); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t130; if(_v32 == 0) { LCCMD_DelTransaction(_v11 & 255, _v48 + 30560); _v11 = 0; } else { if(( *(_v56 + 1) & 255) != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v56 + 96)) + 32)) + 16)) != 0) { _v10 = *( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v56 + 96)) + 32)) + 16)) + 2) & 255; } } else { if( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) != 0) { _v10 = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; } } _t138 = _v32 + 17; _v24 = _t138; *(_t138 + _v24) = _v60 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = _v10 & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, __rcx, _v32, _v48 + 30560, _v56); r9d = _v60 & 255; r8d = *(_v56 + 129) & 0x1f; DebugPrint(0, _v56, __rcx, _v32, _v48 + 30560, _v56); r8d = 0; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v11 & 255; } LCCMD_MaxSlotRequest() {// addr = 0x00425F33 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t88; // _t88 signed char _t92; // _t92 long long _t116; // _t116 long long _t119; // _t119 intOrPtr* _t120; // _t120 long long _t145; // _t145 long long _t154; // _t154 _v48 = _t145; _v56 = _t154; _v72 = r8; _v60 = _t92; _v64 = _t88; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t116 = _v48 + 30560; _v10 = NewTransactionID(_t116); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t116; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t119 = _v32 + 17; _v24 = _t119; _t120 = _t119 + _v24; *_t120 = (_v60 & 255) + (_v60 & 255); _v9 = _v9 + 1; *((intOrPtr*)(_t120 + _v24)) = (_v64 & 255) + (_v64 & 255); _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, __rcx, _v32, _v48 + 30560, _v56); r9d = _v64 & 255; r8d = _v60 & 255; DebugPrint(0, _v56, __rcx, _v32, _v48 + 30560, _v56); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_LEAdvertiseRequest( intOrPtr _a8 // _cfa_8 ) {// addr = 0x00426115 signed char _v57; // _cfa_ffffffc7 signed char _v58; // _cfa_ffffffc6 signed char _v59; // _cfa_ffffffc5 signed char _v60; // _cfa_ffffffc4 signed char _v70; // _cfa_ffffffba signed char _v71; // _cfa_ffffffb9 signed char _v72; // _cfa_ffffffb8 intOrPtr _v76; // _cfa_ffffffb4 intOrPtr _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 _unknown_ _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 signed char _v112; // _cfa_ffffff90 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 char _v140; // _cfa_ffffff74 signed char _v144; // _cfa_ffffff70 signed char _v148; // _cfa_ffffff6c unsigned char _v152; // _cfa_ffffff68 signed int _v156; // _cfa_ffffff64 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t167; // _t167 signed char _t177; // _t177 char _t181; // _t181 long long _t215; // _t215 long long _t218; // _t218 _unknown_ _t219; // _t219 signed int* _t220; // _t220 signed int* _t221; // _t221 signed int* _t222; // _t222 signed int* _t223; // _t223 signed int* _t224; // _t224 intOrPtr _t258; // _t258 long long _t263; // _t263 long long _t274; // _t274 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 168; _v128 = _t263; _v136 = _t274; _v140 = _t181; _v144 = _t177; _v148 = r8d; _v152 = r9d; _v57 = 0; _v58 = 0; _v72 = 0; _v71 = 0; _v70 = 0; _v112 = 0; ral_spin_lock(_v128 + 30456, &_v112); _t215 = _v128 + 30560; _v60 = NewTransactionID(_t215); _t258 = _v128; LCCQ_EnqueueRequest(); _v104 = _t215; if(_v104 == 0) { LCCMD_DelTransaction(_v60 & 255, _v128 + 30560); _v60 = 0; } else { _t218 = _v104 + 17; _v96 = _t218; _v140 = _v140 + _v140; _v59 = 0; while(_v59 <= 2) { if((_v152 & 1) != 0) { *((char*)(__rbp + _t218 - 64)) = (_v59 & 255) + 37; _v58 = _v58 + 1; } _v152 = _v152 >> 1; _v59 = _v59 + 1; } _t219 = _t218 + _v96; RtlCopyMemory(4, _t219, ?_? ( &_v140)); _v57 = _v57 + 4; _t220 = _t219 + _v96; *_t220 = _v144 & 255; _v57 = _v57 + 1; _t221 = _t220 + _v96; *_t221 = _v148 & 255; _v57 = _v57 + 1; _t222 = _t221 + _v96; *_t222 = _v58 & 255; _v57 = _v57 + 1; _t223 = _t222 + _v96; *_t223 = _v72 & 255; _v57 = _v57 + 1; _t224 = _t223 + _v96; *_t224 = _v71 & 255; _v57 = _v57 + 1; *(_t224 + _v96) = _v70 & 255; _v57 = _v57 + 1; *(_v104 + 16) = _v57 & 255; *(_v104 + 4) = *(_v136 + 11) & 255; *(_v104 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v136 + 104)) + 16)) + 2) & 255; _v84 = LLINK_ReadMasterPicoClock(_v128); _v80 = _v84; _v76 = 4; _v88 = _v76 + _v80; *(_v104 + 12) = _v88 & 0xfc; *(_v104 + 8) = *(_v104 + 12); LCCQ_EnqueueCommit(); DebugPrint(0, _v128 + 30560, ?_? ( &_v140), _t258, _v128 + 30560, ?_? ( &_v140)); r15d = *(_v96 + 9) & 0xff; r14d = *(_v96 + 8) & 0xff; r13d = *(_v96 + 7) & 0xff; r12d = *(_v96 + 6) & 0xff; _v156 = *(_v96 + 4) & 0xff; _t167 = casting_uint32(_v96); _v168 = r15d; _v176 = r14d; _v184 = r13d; _v192 = r12d; *__rsp = *(_v96 + 5) & 0xff; r9d = _v156; r8d = _t167; DebugPrint(0, _v136, ?_? ( &_v140), _t258, _v96, &_v140); r8 = _a8; _DMTC_NewTransaction(); } ral_spin_unlock(_v128 + 30456, _v112); __rsp = &(__rsp[0x2a]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return _v60 & 255; } LCCMD_LEAdvertiseCancelRequest() {// addr = 0x00426488 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t92; // _t92 long long _t109; // _t109 long long _t116; // _t116 long long _t125; // _t125 _v64 = _t116; _v72 = _t125; _v80 = _t109; _v9 = 0; _v56 = 0; ral_spin_lock(_v64 + 30456, &_v56); _t92 = _v64 + 30560; _v10 = NewTransactionID(_t92); _t111 = _v64; __rcx = _v64 + 30560; LCCQ_EnqueueRequest(); _v48 = _t92; if(_v48 == 0) { LCCMD_DelTransaction(_v10 & 255, _v64 + 30560); _v10 = 0; } else { *(_v48 + 16) = _v9 & 255; *(_v48 + 4) = *(_v72 + 11) & 255; *(_v48 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) + 2) & 255; _v24 = LLINK_ReadMasterPicoClock(_v64); _v20 = _v24; _v16 = 4; _v40 = _v16 + _v20; *(_v48 + 12) = _v40 & 0xfc; *(_v48 + 8) = *(_v48 + 12); LCCQ_EnqueueCommit(); DebugPrint(0, _v64 + 30560, __rcx, _t111, _v64 + 30560, &_v56); r8 = _v80; _DMTC_NewTransaction(); } ral_spin_unlock(_v64 + 30456, _v56); return _v10 & 255; } LCCMD_LEScanRequest() {// addr = 0x0042661B signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 signed char _v96; // _cfa_ffffffa0 intOrPtr _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed char _t96; // _t96 signed char _t99; // _t99 long long _t122; // _t122 long long _t125; // _t125 signed int* _t126; // _t126 long long _t149; // _t149 long long _t158; // _t158 _v80 = _t149; _v88 = _t158; _v104 = r8; _v92 = _t99; _v96 = _t96; _v9 = 0; _v64 = 0; ral_spin_lock(_v80 + 30456, &_v64); _t122 = _v80 + 30560; _v10 = NewTransactionID(_t122); _t144 = _v80; __rcx = _v80 + 30560; LCCQ_EnqueueRequest(); _v56 = _t122; if(_v56 == 0) { LCCMD_DelTransaction(_v10 & 255, _v80 + 30560); _v10 = 0; } else { _t125 = _v56 + 17; _v48 = _t125; _t126 = _t125 + _v48; *_t126 = _v92 & 255; _v9 = _v9 + 1; *(_t126 + _v48) = _v96 & 255; _v9 = _v9 + 1; *(_v56 + 16) = _v9 & 255; *(_v56 + 4) = *(_v88 + 11) & 255; *(_v56 + 5) = 0; _v24 = LLINK_ReadMasterPicoClock(_v80); _v20 = _v24; _v16 = 4; _v40 = _v16 + _v20; *(_v56 + 12) = _v40 & 0xfc; *(_v56 + 8) = *(_v56 + 12); LCCQ_EnqueueCommit(); DebugPrint(0, _v80 + 30560, __rcx, _t144, _v80 + 30560, &_v64); r8d = *(_v48 + 1) & 0xff; DebugPrint(0, _v48, __rcx, _t144, _v80 + 30560, &_v64); r8 = _v104; _DMTC_NewTransaction(); } ral_spin_unlock(_v80 + 30456, _v64); return _v10 & 255; } LCCMD_LEScanCancelRequest() {// addr = 0x0042680D signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t92; // _t92 long long _t109; // _t109 long long _t116; // _t116 long long _t125; // _t125 _v64 = _t116; _v72 = _t125; _v80 = _t109; _v9 = 0; _v56 = 0; ral_spin_lock(_v64 + 30456, &_v56); _t92 = _v64 + 30560; _v10 = NewTransactionID(_t92); _t111 = _v64; __rcx = _v64 + 30560; LCCQ_EnqueueRequest(); _v48 = _t92; if(_v48 == 0) { LCCMD_DelTransaction(_v10 & 255, _v64 + 30560); _v10 = 0; } else { *(_v48 + 16) = _v9 & 255; *(_v48 + 4) = *(_v72 + 11) & 255; *(_v48 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) + 2) & 255; _v24 = LLINK_ReadMasterPicoClock(_v64); _v20 = _v24; _v16 = 4; _v40 = _v16 + _v20; *(_v48 + 12) = _v40 & 0xfc; *(_v48 + 8) = *(_v48 + 12); LCCQ_EnqueueCommit(); DebugPrint(0, _v64 + 30560, __rcx, _t111, _v64 + 30560, &_v56); r8 = _v80; _DMTC_NewTransaction(); } ral_spin_unlock(_v64 + 30456, _v56); return _v10 & 255; } LCCMD_LEInitiateRequest() {// addr = 0x004269A0 unsigned int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 unsigned int _v11; // _cfa_fffffff5 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 unsigned int _v88; // _cfa_ffffffa8 signed int _v104; // _cfa_ffffff98 unsigned int _v110; // _cfa_ffffff92 short _v112; // _cfa_ffffff90 unsigned int _v116; // _cfa_ffffff8c unsigned int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 unsigned int _v128; // _cfa_ffffff80 short _v132; // _cfa_ffffff7c signed int _v136; // _cfa_ffffff78 char _v264; // _cfa_fffffef8 _unknown_ _v776; // _cfa_fffffcf8 long long _v784; // _cfa_fffffcf0 long long _v792; // _cfa_fffffce8 signed char _v796; // _cfa_fffffce4 long long _v808; // _cfa_fffffcd8 _unknown_ __rbp; // r59 signed char _t244; // _t244 long long _t315; // _t315 long long _t335; // _t335 long long _t352; // _t352 _unknown_ _t356; // _t356 long long _t368; // _t368 long long _t379; // _t379 _v784 = _t368; _v792 = _t379; _v808 = _t352; _v796 = _t244; _v10 = 0; _v88 = 0; _v80 = *((intOrPtr*)(_v792 + 72)); DebugPrint(0, _v792, _t352, _t356, _t368, _t379); ral_spin_lock(_v784 + 30456, &_v88); _t315 = _v784 + 30560; _v11 = NewTransactionID(_t315); LCCQ_EnqueueRequest(); _v72 = _t315; if(_v72 == 0) { LCCMD_DelTransaction(_v11 & 255, _v784 + 30560); _v11 = 0; } else { _t382 = _v792; _v36 = LLINK_ReadPicoClock(_v784, _v792); _v9 = 0; _t375 = _v784; LMpol_Find_Periodic_Transport(); _v124 = ( *(_v80 + 12) & 0xffff) + ( *(_v80 + 12) & 0xffff); _v136 = _v124; _v132 = 4; _v128 = 0; _v120 = 0; _v116 = 0; _v112 = 4; _v110 = 0; _t355 = ?_? ( &_v264); _t366 = &_v136; _v32 = LMslt_Get_Best_Offset(_v124); _t326 = *((intOrPtr*)( *((intOrPtr*)(_v792 + 104)) + 24)); r8d = *( *((intOrPtr*)( *((intOrPtr*)(_v792 + 104)) + 24)) + 4) & 0xff; DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v792 + 104)) + 24)), ?_? ( &_v264), &_v136, _v784, _v792); DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v792 + 104)) + 24)), ?_? ( &_v264), &_v136, _v784, _v792); DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v792 + 104)) + 24)), ?_? ( &_v264), &_v136, _v784, _v792); DebugPrint(0, _t326, &_v264, &_v136, _v784, _t382); r8d = _v104; DebugPrint(0, _t326, _t355, _t366, _t375, _t382); _v56 = *(_v784 + 55580) + _v128 + _v128; _v9 = (_v56 & 134217728) >> 27; _v28 = (LMdm_Calc_Offset_from_Instant(_v136 & 65535, _v56 & 268435455, _v9 & 255) & 65535) % _v136; r9d = _v9 & 255; r8d = *(_v784 + 55580); DebugPrint(0, _v784, _t355, _t366, _t375, _t382); *(_v792 + 146) = _v136; *((short*)(_v792 + 148)) = _v132; *(_v792 + 150) = _v128; *((char*)(_v792 + 144)) = 1; DebugPrint(0, _v792, _t355, _t366, _t375, _t382); _v9 = (_v36 & 134217728) >> 27; _v36 = LMdm_Calc_Instance(_v28 & 65535, *(_v792 + 146) & 0xffff, _v36); DebugPrint(0, _v792, _t355, _t366, _t375, _t382); _t335 = _v72 + 17; _v64 = _t335; *(_t335 + _v64) = _v796 & 255; _v10 = _v10 + 1; *(_v72 + 16) = _v10 & 255; *(_v72 + 4) = *(_v792 + 11) & 255; *(_v72 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v792 + 104)) + 16)) + 2) & 255; _v24 = LLINK_ReadPicoClock(_v784, _v792); _v20 = _v24; _v16 = 4; _v40 = _v16 + _v20; *(_v72 + 12) = _v40 & 0xfc; *(_v72 + 8) = _v36; LCCQ_EnqueueCommit(); DebugPrint(0, _v784 + 30560, _t355, _v792, _v784 + 30560, _v792); DebugPrint(0, _v64, _t355, _v792, _v784 + 30560, _v792); r8 = _v808; _DMTC_NewTransaction(); } ral_spin_unlock(_v784 + 30456, _v88); return _v11 & 255; } LCCMD_LEInitiateCancelRequest() {// addr = 0x00426E9A signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t92; // _t92 long long _t109; // _t109 long long _t116; // _t116 long long _t125; // _t125 _v64 = _t116; _v72 = _t125; _v80 = _t109; _v9 = 0; _v56 = 0; ral_spin_lock(_v64 + 30456, &_v56); _t92 = _v64 + 30560; _v10 = NewTransactionID(_t92); _t111 = _v64; __rcx = _v64 + 30560; LCCQ_EnqueueRequest(); _v48 = _t92; if(_v48 == 0) { LCCMD_DelTransaction(_v10 & 255, _v64 + 30560); _v10 = 0; } else { *(_v48 + 16) = _v9 & 255; *(_v48 + 4) = *(_v72 + 11) & 255; *(_v48 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 104)) + 16)) + 2) & 255; _v24 = LLINK_ReadMasterPicoClock(_v64); _v20 = _v24; _v16 = 4; _v40 = _v16 + _v20; *(_v48 + 12) = _v40 & 0xfc; *(_v48 + 8) = *(_v48 + 12); LCCQ_EnqueueCommit(); DebugPrint(0, _v64 + 30560, __rcx, _t111, _v64 + 30560, &_v56); r8 = _v80; _DMTC_NewTransaction(); } ral_spin_unlock(_v64 + 30456, _v56); return _v10 & 255; } LCCMD_LEConnectionSetupRequest( signed short _a8, // _cfa_8 signed char _a16, // _cfa_10 signed char _a24, // _cfa_18 intOrPtr _a32 // _cfa_20 ) {// addr = 0x0042702D signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 unsigned int _v20; // _cfa_ffffffec unsigned int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 intOrPtr _v64; // _cfa_ffffffc0 intOrPtr _v68; // _cfa_ffffffbc intOrPtr _v72; // _cfa_ffffffb8 intOrPtr _v76; // _cfa_ffffffb4 intOrPtr _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac intOrPtr _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 char _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 unsigned int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 signed char _v132; // _cfa_ffffff7c signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 _unknown_ __rbp; // r59 signed short _t259; // _t259 char _t269; // _t269 long long _t338; // _t338 signed long long _t341; // _t341 _unknown_ _t342; // _t342 signed int* _t343; // _t343 unsigned short* _t344; // _t344 _unknown_ _t345; // _t345 signed int* _t346; // _t346 unsigned short* _t347; // _t347 signed int* _t348; // _t348 unsigned short* _t349; // _t349 _unknown_ _t350; // _t350 signed int* _t351; // _t351 _unknown_ _t367; // _t367 intOrPtr _t372; // _t372 long long _t379; // _t379 long long _t391; // _t391 _v96 = _t379; _v104 = _t391; _v108 = _t269; _v116 = r8d; _v112 = _t259; _v120 = r9d; _v124 = _a8; _v128 = _a16; _v132 = _a24; _v10 = 0; _v56 = 0; _v88 = 500; _v84 = 250; _v80 = 150; _v76 = 100; _v72 = 75; _v68 = 50; _v64 = 30; _v60 = 20; ral_spin_lock(_v96 + 30456, &_v56); _t338 = _v96 + 30560; _v12 = NewTransactionID(_t338); _t372 = _v96; _t367 = _t372 + 30560; LCCQ_EnqueueRequest(); _v48 = _t338; if(_v48 == 0) { LCCMD_DelTransaction(_v12 & 255, _v96 + 30560); _v12 = 0; } else { _t341 = _v48 + 17; _v40 = _t341; _v32 = _v116 * ((_v124 & 65535) + 1); _v9 = (_t341 + 1) * (_v128 & 255) - (((_t372 + _t367 >> 5) - ((_t341 + 1) * (_v128 & 255) >> 31) << 3) + (_t372 + _t367 >> 5) - ((_t341 + 1) * (_v128 & 255) >> 31) << 2) + (_t372 + _t367 >> 5) - ((_t341 + 1) * (_v128 & 255) >> 31); _v28 = *((intOrPtr*)(__rbp + _t341 * 4 - 80)) + 100; _v136 = ((_v124 & 65535) + 1) * (_v116 >> 2) * _v28 * 125 >> 5; _v24 = _v136 * 175921861 >> 32 >> 7; if(_v24 <= 10) { _v11 = 0; } else { _v136 = _v24; _v20 = _v136 * 3518437209 >> 32 >> 10; _v16 = _v24 - (_v24 * 3518437209 >> 32 >> 10) * 1250; _v11 = _v20 + (_v16 != 0); } _t342 = _t341 + _v40; RtlCopyMemory(4, _t342, &_v108); _v10 = _v10 + 4; _t343 = _t342 + _v40; *_t343 = _v112 & 65535; _v10 = _v10 + 1; _t344 = _t343 + _v40; *_t344 = (_v112 & 65535) >> 8; _v10 = _v10 + 1; _t345 = _t344 + _v40; RtlCopyMemory(4, _t345, &_v116); _v10 = _v10 + 4; _t346 = _t345 + _v40; *_t346 = _v120 & 65535; _v10 = _v10 + 1; _t347 = _t346 + _v40; *_t347 = (_v120 & 65535) >> 8; _v10 = _v10 + 1; _t348 = _t347 + _v40; *_t348 = _v124 & 65535; _v10 = _v10 + 1; _t349 = _t348 + _v40; *_t349 = (_v124 & 65535) >> 8; _v10 = _v10 + 1; _t350 = _t349 + _v40; RtlCopyMemory(4, _t350, &_v32); _v10 = _v10 + 4; _t351 = _t350 + _v40; *_t351 = _v9 & 255; _v10 = _v10 + 1; *(_t351 + _v40) = _v11 & 255; _v10 = _v10 + 1; *(_v48 + 16) = _v10 & 255; *(_v48 + 4) = *(_v104 + 11) & 255; *(_v48 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v104 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v48 + 12)) = LLINK_ReadPicoClock(_v96, _v104); *((intOrPtr*)(_v48 + 8)) = *((intOrPtr*)(_v48 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v96 + 30560, &_v32, _v48, _v96 + 30560, _v104); r9d = _v116; r8d = _v112 & 65535; _v144 = _v132 & 255; _v152 = _v128 & 255; _v160 = _v124 & 65535; *__rsp = _v120 & 65535; DebugPrint(0, _v96 + 30560, &_v32, _v48, _v96 + 30560, _v104); r9d = _v11 & 255; r8d = _v9 & 255; DebugPrint(0, _v96 + 30560, &_v32, _v48, _v96 + 30560, _v104); r8 = _a32; _DMTC_NewTransaction(); } ral_spin_unlock(_v96 + 30456, _v56); return _v12 & 255; } LCCMD_LEConnectionUpdateRequest( signed int _a8, // _cfa_8 signed short _a16, // _cfa_10 signed short _a24, // _cfa_18 signed short _a32, // _cfa_20 signed char _a40, // _cfa_28 intOrPtr _a48 // _cfa_30 ) {// addr = 0x0042745A signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed short _t224; // _t224 char _t233; // _t233 long long _t295; // _t295 long long _t298; // _t298 _unknown_ _t299; // _t299 signed int* _t300; // _t300 unsigned short* _t301; // _t301 _unknown_ _t302; // _t302 signed int* _t303; // _t303 unsigned short* _t304; // _t304 signed int* _t305; // _t305 unsigned short* _t306; // _t306 signed int* _t307; // _t307 unsigned short* _t308; // _t308 signed int* _t309; // _t309 unsigned short* _t310; // _t310 signed int* _t311; // _t311 unsigned short* _t312; // _t312 _unknown_ _t313; // _t313 _unknown_ _t329; // _t329 intOrPtr _t334; // _t334 long long _t341; // _t341 long long _t353; // _t353 _v48 = _t341; _v56 = _t353; _v60 = _t233; _v68 = r8d; r8d = _a8; _v64 = _t224; _v72 = r9w; _v76 = r8w; _v80 = _a16; _v84 = _a24; _v88 = _a32; _v92 = _a40; _v10 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t295 = _v48 + 30560; _v11 = NewTransactionID(_t295); _t334 = _v48; _t329 = _t334 + 30560; LCCQ_EnqueueRequest(); _v32 = _t295; if(_v32 == 0) { LCCMD_DelTransaction(_v11 & 255, _v48 + 30560); _v11 = 0; } else { _t298 = _v32 + 17; _v24 = _t298; _v16 = _v68 * ((_v76 & 65535) + 1); _v9 = (_t298 + 1) * (_v92 & 255) - (((_t334 + _t329 >> 5) - ((_t298 + 1) * (_v92 & 255) >> 31) << 3) + (_t334 + _t329 >> 5) - ((_t298 + 1) * (_v92 & 255) >> 31) << 2) + (_t334 + _t329 >> 5) - ((_t298 + 1) * (_v92 & 255) >> 31); _t299 = _t298 + _v24; RtlCopyMemory(4, _t299, &_v60); _v10 = _v10 + 4; _t300 = _t299 + _v24; *_t300 = _v64 & 65535; _v10 = _v10 + 1; _t301 = _t300 + _v24; *_t301 = (_v64 & 65535) >> 8; _v10 = _v10 + 1; _t302 = _t301 + _v24; RtlCopyMemory(4, _t302, &_v68); _v10 = _v10 + 4; _t303 = _t302 + _v24; *_t303 = _v72 & 65535; _v10 = _v10 + 1; _t304 = _t303 + _v24; *_t304 = (_v72 & 65535) >> 8; _v10 = _v10 + 1; _t305 = _t304 + _v24; *_t305 = _v76 & 65535; _v10 = _v10 + 1; _t306 = _t305 + _v24; *_t306 = (_v76 & 65535) >> 8; _v10 = _v10 + 1; _t307 = _t306 + _v24; *_t307 = _v80 & 65535; _v10 = _v10 + 1; _t308 = _t307 + _v24; *_t308 = (_v80 & 65535) >> 8; _v10 = _v10 + 1; _t309 = _t308 + _v24; *_t309 = _v84 & 65535; _v10 = _v10 + 1; _t310 = _t309 + _v24; *_t310 = (_v84 & 65535) >> 8; _v10 = _v10 + 1; _t311 = _t310 + _v24; *_t311 = _v88 & 65535; _v10 = _v10 + 1; _t312 = _t311 + _v24; *_t312 = (_v88 & 65535) >> 8; _v10 = _v10 + 1; _t313 = _t312 + _v24; RtlCopyMemory(4, _t313, &_v16); _v10 = _v10 + 4; *(_t313 + _v24) = _v9 & 255; _v10 = _v10 + 1; *(_v32 + 16) = _v10 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, &_v16, _v32, _v48 + 30560, _v56); _v112 = _v76 & 65535; *__rsp = _v72 & 65535; r9d = _v68; r8d = _v64 & 65535; DebugPrint(0, _v48 + 30560, &_v16, _v32, _v48 + 30560, _v56); _v112 = _v9 & 255; *__rsp = _v16; r9d = _v88 & 65535; r8d = _v84 & 65535; DebugPrint(0, _v48 + 30560, &_v16, _v32, _v48 + 30560, _v56); r8 = _a48; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v11 & 255; } LCCMD_LEChannelUpdateRequest() {// addr = 0x0042782E signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t91; // _t91 signed short _t94; // _t94 long long _t118; // _t118 long long _t121; // _t121 signed int* _t122; // _t122 unsigned short* _t123; // _t123 long long _t147; // _t147 long long _t156; // _t156 _v48 = _t147; _v56 = _t156; _v72 = r8; _v60 = _t94; _v64 = _t91; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t118 = _v48 + 30560; _v10 = NewTransactionID(_t118); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t118; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t121 = _v32 + 17; _v24 = _t121; _t122 = _t121 + _v24; *_t122 = _v60 & 65535; _v9 = _v9 + 1; _t123 = _t122 + _v24; *_t123 = (_v60 & 65535) >> 8; _v9 = _v9 + 1; *(_t123 + _v24) = _v64 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, __rcx, _v32, _v48 + 30560, _v56); r8d = _v64 & 255; DebugPrint(0, _v48 + 30560, __rcx, _v32, _v48 + 30560, _v56); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } LCCMD_LESetEncryptionRequest() {// addr = 0x00427A15 signed char _v57; // _cfa_ffffffc7 signed char _v58; // _cfa_ffffffc6 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 unsigned int _v108; // _cfa_ffffff94 unsigned int _v112; // _cfa_ffffff90 intOrPtr _v120; // _cfa_ffffff88 intOrPtr _v128; // _cfa_ffffff80 signed int _v132; // _cfa_ffffff7c signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 unsigned int _t204; // _t204 unsigned int _t211; // _t211 long long _t254; // _t254 long long _t257; // _t257 signed char* _t258; // _t258 unsigned int* _t259; // _t259 unsigned int* _t260; // _t260 unsigned int* _t261; // _t261 unsigned int* _t262; // _t262 unsigned int* _t263; // _t263 unsigned int* _t264; // _t264 unsigned int* _t265; // _t265 long long _t340; // _t340 long long _t350; // _t350 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 200; _v96 = _t340; _v104 = _t350; _v108 = _t211; _v112 = _t204; _v120 = r8; _v128 = r9; _v57 = 0; _v88 = 0; ral_spin_lock(_v96 + 30456, &_v88); _t254 = _v96 + 30560; _v58 = NewTransactionID(_t254); LCCQ_EnqueueRequest(); _v80 = _t254; if(_v80 == 0) { LCCMD_DelTransaction(_v58 & 255, _v96 + 30560); _v58 = 0; } else { _t257 = _v80 + 17; _v72 = _t257; _t258 = _t257 + _v72; *_t258 = 0; _v57 = _v57 + 1; _t259 = &(_t258[_v72]); *_t259 = _v108; _v57 = _v57 + 1; _t260 = _t259 + _v72; *_t260 = _v108 >> 8; _v57 = _v57 + 1; _t261 = _t260 + _v72; *_t261 = _v108 >> 16; _v57 = _v57 + 1; _t262 = _t261 + _v72; *_t262 = _v108 >> 24; _v57 = _v57 + 1; _t263 = _t262 + _v72; *_t263 = _v112; _v57 = _v57 + 1; _t264 = _t263 + _v72; *_t264 = _v112 >> 8; _v57 = _v57 + 1; _t265 = _t264 + _v72; *_t265 = _v112 >> 16; _v57 = _v57 + 1; *(_t265 + _v72) = _v112 >> 24; _v57 = _v57 + 1; RtlCopyMemory(16, _t265 + _v72 + _v72, _v120); _v57 = _v57 + 16; *(_v80 + 16) = _v57 & 255; *(_v80 + 4) = *(_v104 + 11) & 255; *(_v80 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v104 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v80 + 12)) = LLINK_ReadPicoClock(_v96, _v104); *((intOrPtr*)(_v80 + 8)) = *((intOrPtr*)(_v80 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v96 + 30560, _v120, _v80, _v96 + 30560, _v104); r8d = *(_v72 + 8) & 0xff; r9d = *(_v72 + 3) & 0xff; r10d = *(_v72 + 2) & 0xff; _v200 = r8d; _v208 = *(_v72 + 7) & 0xff; _v216 = *(_v72 + 6) & 0xff; _v224 = *(_v72 + 5) & 0xff; *__rsp = *(_v72 + 4) & 0xff; r8d = r10d; DebugPrint(0, _v72 + 1, _v120, _v80, _v96 + 30560, _v104); _v132 = *(_v72 + 23) & 0xff; r15d = *(_v72 + 22) & 0xff; r14d = *(_v72 + 21) & 0xff; r13d = *(_v72 + 20) & 0xff; r12d = *(_v72 + 19) & 0xff; r11d = *(_v72 + 17) & 0xff; r10d = *(_v72 + 16) & 0xff; r9d = *(_v72 + 15) & 0xff; r8d = *(_v72 + 14) & 0xff; _v136 = *(_v72 + 11) & 0xff; _v136 = *(_v72 + 24) & 0xff; _v144 = _v132; _v152 = r15d; _v160 = r14d; _v168 = r13d; _v176 = r12d; _v184 = *(_v72 + 18) & 0xff; _v192 = r11d; _v200 = r10d; _v208 = r9d; _v216 = r8d; _v224 = *(_v72 + 13) & 0xff; *__rsp = *(_v72 + 12) & 0xff; r9d = _v136; r8d = *(_v72 + 10) & 0xff; DebugPrint(0, _v72 + 9, _v120, _v80, _v96 + 30560, _v104); r8 = _v128; _DMTC_NewTransaction(); } ral_spin_unlock(_v96 + 30456, _v88); __rsp = &(__rsp[0x32]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return _v58 & 255; } LCCMD_LESetTestModeRequest() {// addr = 0x00427E75 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t101; // _t101 signed char _t106; // _t106 long long _t132; // _t132 long long _t135; // _t135 signed int* _t136; // _t136 long long _t168; // _t168 long long _t177; // _t177 _v48 = _t168; _v56 = _t177; _v72 = r8; _v60 = _t106; _v64 = _t101; _v9 = 0; _v40 = 0; ral_spin_lock(_v48 + 30456, &_v40); _t132 = _v48 + 30560; _v10 = NewTransactionID(_t132); __rcx = _v48 + 30560; LCCQ_EnqueueRequest(); _v32 = _t132; if(_v32 == 0) { LCCMD_DelTransaction(_v10 & 255, _v48 + 30560); _v10 = 0; } else { _t135 = _v32 + 17; _v24 = _t135; _t136 = _t135 + _v24; *_t136 = _v60 & 255; _v9 = _v9 + 1; *(_t136 + _v24) = _v64 & 255; _v9 = _v9 + 1; *(_v32 + 16) = _v9 & 255; *(_v32 + 4) = *(_v56 + 11) & 255; *(_v32 + 5) = *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 255; *((intOrPtr*)(_v32 + 12)) = LLINK_ReadPicoClock(_v48, _v56); *((intOrPtr*)(_v32 + 8)) = *((intOrPtr*)(_v32 + 12)); LCCQ_EnqueueCommit(); DebugPrint(0, _v48 + 30560, __rcx, _v32, _v48 + 30560, _v56); r9d = *( *((intOrPtr*)(_v56 + 104)) + 2) & 0xff; r8d = *( *((intOrPtr*)(_v56 + 112)) + 2) & 0xff; DebugPrint(0, _v56, __rcx, _v32, _v48 + 30560, _v56); r8d = *(_v24 + 1) & 0xff; DebugPrint(0, _v24, __rcx, _v32, _v48 + 30560, _v56); r8 = _v72; _DMTC_NewTransaction(); } ral_spin_unlock(_v48 + 30456, _v40); return _v10 & 255; } BBEIR_ConfigEIR() {// addr = 0x004280A0 signed int _v21; // _cfa_ffffffeb signed int _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t39; // _t39 long long _t53; // _t53 long long _t56; // _t56 _v32 = _t56; _v48 = _t53; _v36 = sil; _v40 = _t39; RtlFillMemory(16, 0, &_v24); _v23 = _v23 & 0xf | (_v36 & 0xf) << 4; _v24 = _v24 & 0xf000 | _v40 & 0xff; _v22 = _v22 & 0xcf | 32; _v21 = _v21 & 0xfd; MCU_Write_Memory(16, &_v24); MCU_Write_Memory(_v40 & 255, _v48); return; } LDM_PreprocessInquiryResultEvent() {// addr = 0x00428150 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t103; // _t103 signed char _t107; // _t107 intOrPtr _t125; // _t125 _unknown_ _t164; // _t164 _unknown_ _t166; // _t166 long long _t169; // _t169 _v32 = _t169; _v36 = _t125; _v56 = r8; _v40 = _t107; _v44 = _t103; _v16 = _v32 + 30560; if(( *(_v56 + 7) & 8) != 0 || ( *(_v56 + 7) & 0xc0) != 128) { r8d = ( *(_v56 + 7) & 255) >> 6 & 255; DebugPrint(0, _v56, _t164, _t166, _t169, __rsi); } *(_v16 + 28512) = *(_v56 + 4) >> 2 & 16777215; *(_v16 + 28513) = ( *(_v56 + 4) >> 2 & 16777215) >> 8; *(_v16 + 28514) = ( *(_v56 + 4) >> 2 & 16777215) >> 16; *(_v16 + 28515) = *(_v56 + 8) & 255; *(_v16 + 28516) = *(_v56 + 9) & 255; *(_v16 + 28517) = *(_v56 + 10) & 255; *(_v16 + 28518) = _v36 - LCFHS_GetClock(_v56) >> 2 & 32767; *((intOrPtr*)(_v16 + 28520)) = LCFHS_GetClassOfDevice(_v56); *(_v16 + 28525) = ( *(_v56 + 7) & 255) >> 4 & 3; *(_v16 + 28526) = ( *(_v56 + 7) & 255) >> 2 & 1; *((char*)(_v16 + 28527)) = 0; RtlFillMemory(240, 0, _v16 + 28528); if( *((intOrPtr*)(pRadioFunc + 40)) == 0) { *(_v16 + 28524) = 201; return; } else { *((long long*)( *((intOrPtr*)(pRadioFunc + 40))))(); *(_v16 + 28524) = _v40 & 255; return; } } LDM_GenerateInquiryResultEvent() {// addr = 0x00428344 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t34; // _t34 long long _t41; // _t41 _v48 = _t41; _v9 = 0; QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v48 + 74448)); if(_v40 != 0) { _t34 = _v40; QUEUE_GetDataBuf(_t34); _v32 = _t34; RtlCopyMemory(256, _v32, _v48 + 59072); QUEUE_EnqueueCommit(); LCEQ_EnqueueRequest(); _v24 = _v48; if(_v24 != 0) { LCEQ_EnqueueCommit(); _v9 = 1; } } return _v9 & 255; } LDM_GenerateExtendedInquiryResultEvent() {// addr = 0x00428401 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 char _v76; // _cfa_ffffffb4 _unknown_ __rbp; // r59 char _t46; // _t46 long long _t63; // _t63 _unknown_ _t70; // _t70 _unknown_ _t73; // _t73 long long _t75; // _t75 long long _t83; // _t83 _v64 = _t75; _v72 = _t83; _v76 = _t46; _t57 = _v64 + 30560; _v48 = _v64 + 30560; _v9 = 0; if(_v76 <= 240) { *((char*)(_v48 + 28527)) = _v76; RtlCopyMemory(_v76, _v48 + 28528, _v72); QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v64 + 74448)); if(_v40 != 0) { _t63 = _v40; QUEUE_GetDataBuf(_t63); _v32 = _t63; RtlCopyMemory(256, _v32, _v48 + 28512); QUEUE_EnqueueCommit(); LCEQ_EnqueueRequest(); _v24 = _v64; if(_v24 != 0) { LCEQ_EnqueueCommit(); _v9 = 1; } } return _v9 & 255; } DebugPrint(0, _t57, _t70, _t73, _t75, _t83); return 0; } LDM_PreprocessPageScanResultEvent( _unknown_ __eax // r0 ) {// addr = 0x00428530 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t25; // _t25 long long _t28; // _t28 _v16 = _t25; _v24 = _t28; LCFHS_GetBDAddr(_v16 + 28768, _v24); *((char*)(_v16 + 28774)) = __dl; *((intOrPtr*)(_v16 + 28776)) = LCFHS_GetClassOfDevice(_v24); return; } LDM_PageScanResultEventPreprocessBuf( long long __rdi // r57 ) {// addr = 0x0042858C long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } BDADDR_Assign( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x004285A0 signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x00428606 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } _AUXCTL_GetPageCtlLink( long long __rdi // r57 ) {// addr = 0x00428618 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } _AUXCTL_GetPageScanCtlLink( long long __rdi // r57 ) {// addr = 0x0042862D long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } LCEVHDR_RegisterEventHandler( intOrPtr __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00428642 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; _v32 = __rdx; *((long long*)(_v16 + (__rdx + 7462) * 8)) = _v32; return; } LCEVHDR_EventHandler( _unknown_ __rax, // r53 long long __rdi // r57 ) {// addr = 0x00428669 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v32 = __rdi; if(( *(_v32 + 190499) & 255) == 0) { LCEQ_DequeueRequest(); _v16 = _v32; if(_v16 != 0) { if(( *(_v16 + 3) & 0xff) > 64) { LCEQ_DequeueCommit(); return; } goto __rax; } } return; } _LCEVHDR_CommandStatus() {// addr = 0x00428937 long long _v16; // _cfa_fffffff0 signed int _v38; // _cfa_ffffffda signed int _v39; // _cfa_ffffffd9 signed int _v40; // _cfa_ffffffd8 signed int _v233; // _cfa_ffffff17 signed int _v234; // _cfa_ffffff16 signed int _v235; // _cfa_ffffff15 long long _v248; // _cfa_ffffff08 signed char* _v256; // _cfa_ffffff00 long long _v264; // _cfa_fffffef8 long long _v272; // _cfa_fffffef0 long long _v288; // _cfa_fffffee0 long long _v296; // _cfa_fffffed8 _unknown_ __rbp; // r59 long long _t98; // _t98 long long _t104; // _t104 _unknown_ _t118; // _t118 _unknown_ _t120; // _t120 long long _t127; // _t127 long long _t132; // _t132 _v288 = _t127; _v296 = _t132; _v16 = *fs:0x28]; _v256 = _v296 + 32; _v272 = 0; _v264 = 0; _v248 = 0; _v235 = *_v256 & 255; _t103 = _v256; _v234 = (_v256[1]) & 255; if(_v234 != 0) { r8d = _v234 & 255; DebugPrint(0, _t103, _t118, _t120, _t127, _t132); } _t104 = _v296; _t122 = _v288 + 30560; _t128 = _v288 + 30560; LCCMD_SearchByTransactionID( *(_t104 + 4) & 0xff, _v288 + 30560); _v248 = _t104; _t98 = _v248; if(_t98 != 0) { if(( *(_v248 + 2) & 255) == _v235) { _v233 = *(_v248 + 3) & 255; _t66 = _v235 & 255; if((_v235 & 255) > 43) { if(_v234 != 0 && _v234 != 4) { if( *((intOrPtr*)(_v248 + 8)) != 0) { _v38 = *(_v296 + 4) & 255; _v40 = _v235 & 255; _v39 = _v234 & 255; r8 = *((intOrPtr*)(_v248 + 8)); r8(); } _t66 = *(_v296 + 4) & 0xff; LCCMD_DelTransaction( *(_v296 + 4) & 0xff, _v288 + 30560); } goto L14; } goto __rax; } r8d = _v235 & 255; DebugPrint(0, _v248, _t118, _t122, _t128, _t132); _t66 = *(_v296 + 4) & 0xff; LCCMD_DelTransaction( *(_v296 + 4) & 0xff, _v288 + 30560); goto L14; } else { DebugPrint(0, _t104, _t118, _t122, _t128, _t132); L14: if(_t98 == 0) { return; } __stack_chk_fail(); return; } } _LCEVHDR_PageResult() {// addr = 0x00428D76 long long _v16; // _cfa_fffffff0 _unknown_ _v38; // _cfa_ffffffda _unknown_ _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 _unknown_ _t53; // _t53 intOrPtr _t73; // _t73 long long _t77; // _t77 long long _t79; // _t79 _unknown_ _t96; // _t96 long long _t103; // _t103 long long _t109; // _t109 _v80 = _t103; _v88 = _t109; _v16 = *fs:0x28]; _v41 = 0; *(_v80 + 191376) = *(_v80 + 191376) & 127; _t77 = _v88; _t100 = _v80 + 30560; _t53 = LLINK_SearchUsedLinkByLLIndx( *(_t77 + 6) & 0xff, _t77, _v80 + 30560); _v64 = _t77; _t79 = _v80 + 30560; _t105 = _t79; _AUXCTL_GetPageCtlLink(_t79); _v56 = _t79; if(_v64 != 0 && _v56 != 0) { if(_v64 != _v56) { r8d = *(_v56 + 11) & 0xff; _t53 = DebugPrint(0, _v64, _t96, _t100, _t105, _t109); } } if(_v64 != 0 && _v56 != 0 && _v64 == _v56) { if(_v41 == 0) { _t73 = *((intOrPtr*)(_v80 + 59704)); if(_t73 != 0) { r8 = *((intOrPtr*)(_v80 + 59704)); r8(); } } } if(_t73 == 0) { return; } else { __stack_chk_fail(); return; } } _LCEVHDR_PageComplete() {// addr = 0x00428EF5 long long _v16; // _cfa_fffffff0 signed int _v38; // _cfa_ffffffda char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 signed int _v41; // _cfa_ffffffd7 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed int _t59; // _t59 intOrPtr _t79; // _t79 long long _t83; // _t83 long long _t85; // _t85 _unknown_ _t107; // _t107 long long _t115; // _t115 long long _t122; // _t122 _v80 = _t115; _v88 = _t122; _v16 = *fs:0x28]; _v41 = 0; *(_v80 + 191376) = *(_v80 + 191376) & 127; _t83 = _v88; _t111 = _v80 + 30560; LLINK_SearchUsedLinkByLLIndx( *(_t83 + 6) & 0xff, _t83, _v80 + 30560); _v64 = _t83; _t85 = _v80 + 30560; _t117 = _t85; _AUXCTL_GetPageCtlLink(_t85); _v56 = _t85; if(_v64 != 0 && _v56 != 0) { if(_v64 != _v56) { r8d = *(_v56 + 11) & 0xff; _t58 = DebugPrint(0, _v64, _t107, _t111, _t117, _t122); } } if(_v64 == 0 || _v56 == 0 || _v64 != _v56) { L13: if(_t79 == 0) { return; } __stack_chk_fail(); return; } else { BDADDR_Assign( &_v40 + 16, *((intOrPtr*)( *((intOrPtr*)(_v64 + 104)) + 24)) + 4); _t59 = *(_v88 + 4) & 255; _v38 = _t59; _v39 = 1; if( *((intOrPtr*)(_v64 + 64)) != 0) { r8 = *((intOrPtr*)(_v64 + 64)); r8(); _v41 = _t59; } if(_v41 == 0) { _t79 = *((intOrPtr*)(_v80 + 59712)); if(_t79 != 0) { r8 = *((intOrPtr*)(_v80 + 59712)); r8(); } } _t58 = LDM_PageCancelRequest(); goto L13; } } _LCEVHDR_PageScanIncoming() {// addr = 0x00429097 long long _v16; // _cfa_fffffff0 signed int _v37; // _cfa_ffffffdb char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed char* _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 intOrPtr _t80; // _t80 long long _t84; // _t84 signed char* _t85; // _t85 long long _t87; // _t87 _unknown_ _t106; // _t106 _unknown_ _t109; // _t109 long long _t119; // _t119 signed char* _t128; // _t128 _v80 = _t119; _v88 = _t128; _v16 = *fs:0x28]; DebugPrint(0, _v88, _t106, _t109, _t119, _t128); _t84 = _v80 + 30560; LDM_PageScanResultEventPreprocessBuf(_t84); _v64 = _t84; _t85 = _v88; _t111 = _v80 + 30560; LLINK_SearchUsedLinkByLLIndx((_t85[6]) & 0xff, _t85, _v80 + 30560); _v56 = _t85; _t87 = _v80 + 30560; _t122 = _t87; _AUXCTL_GetPageScanCtlLink(_t87); _v48 = _t87; if(_v56 != 0 && _v48 != 0) { if(_v56 != _v48) { r8d = *(_v48 + 11) & 0xff; _t56 = DebugPrint(0, _v56, _t106, _t111, _t122, _t128); } } if(_v56 != 0 && _v48 != 0 && _v56 == _v48) { _t56 = *_v56 & 255; if(( *_v56 & 255) != 0) { LC_BecomeSlaveByPageScanIncoming(); _v39 = 0; _v37 = *(_v64 + 6) & 255; _t56 = RtlCopyMemory(4, &_v40 + 4, _v64 + 8); BDADDR_Assign( &_v40 + 16, _v64); BDADDR_Assign( *((intOrPtr*)((_v56[0x68]) + 24)) + 4, _v64); _t80 = *((intOrPtr*)(_v80 + 59720)); if(_t80 != 0) { r8 = *((intOrPtr*)(_v80 + 59720)); r8(); } } } if(_t80 != 0) { __stack_chk_fail(); return; } return; } _LCEVHDR_RoleSwitchStatus( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00429262 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 unsigned int _v34; // _cfa_ffffffde unsigned int _v35; // _cfa_ffffffdd unsigned int _v36; // _cfa_ffffffdc unsigned int _v37; // _cfa_ffffffdb signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed int _v41; // _cfa_ffffffd7 unsigned int _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 char* _t50; // _t50 _v80 = __rdi; _v88 = __rsi; _v16 = *fs:0x28]; _v56 = _v88 + 32; _v72 = 0; _v64 = 0; _v41 = *_v56 & 255; r8 = &_v48; _AUXCTL_RoleSwitchFinished(_v56, &_v64, &_v72); if(_v72 != 0 && _v64 != 0) { _v39 = _v41 & 255; _v32 = _v64; _v37 = _v48; _v36 = _v48 >> 8; _v35 = _v48 >> 16; _v34 = _v48 >> 24; _t50 = *(_v80 + 59752); if(_t50 != 0) { r8 = *(_v80 + 59752); r8(); } } if(_t50 == 0) { return; } __stack_chk_fail(); return; } _LCEVHDR_InquiryComplete( _unknown_ __rax, // r53 long long __rsi // r58 ) {// addr = 0x00429354 long long _v16; // _cfa_fffffff0 char _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t22; // _t22 long long _t26; // _t26 long long _t36; // _t36 _v64 = _t36; _v72 = __rsi; _v16 = *fs:0x28]; _v48 = 0; _t26 = _v64 + 30560; __esi = 0; LLINK_SearchUsedLinkByLLIndx(0, _t26, _t26); _v48 = _t26; if(_v48 != 0) { LINK_DelInquiry(); } _v39 = 0; _t22 = *((intOrPtr*)(_v64 + 59728)); if(_t22 != 0) { r8 = *((intOrPtr*)(_v64 + 59728)); r8(); } if(_t22 != 0) { __stack_chk_fail(); return; } return; } _LCEVHDR_InquiryResult( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004293FA long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 __rsi = __rsi; _v48 = __rdi; _v56 = __rsi; _v16 = *fs:0x28]; _v32 = _v56 + 32; __eflags = *((intOrPtr*)(_v48 + 60208)); if(__eflags != 0) { *((long long*)( *((intOrPtr*)(_v48 + 60208))))(); } if(__eflags != 0) { __stack_chk_fail(); return; } return; } _LCEVHDR_SupervisionTimeout( _unknown_ __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x00429468 long long _v16; // _cfa_fffffff0 _unknown_ _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t36; // _t36 intOrPtr _t46; // _t46 long long _t50; // _t50 _unknown_ _t61; // _t61 _unknown_ _t63; // _t63 long long _t67; // _t67 long long _t71; // _t71 _v64 = _t67; _v72 = _t71; _v16 = *fs:0x28]; _v41 = 0; DebugPrint(0, _v72, _t61, _t63, _t67, _t71); _t50 = _v72; _t36 = LLINK_SearchUsedLinkByLLIndx( *(_t50 + 6) & 0xff, _t50, _v64 + 30560); _v56 = _t50; if(_v56 == 0) { L6: if(_t46 == 0) { return; } __stack_chk_fail(); return; } if( *((intOrPtr*)(_v56 + 64)) != 0) { r8 = *((intOrPtr*)(_v56 + 64)); r8(); _v41 = _t36; } if(_v41 == 0) { _t46 = *((intOrPtr*)(_v64 + 59736)); if(_t46 != 0) { r8 = *((intOrPtr*)(_v64 + 59736)); r8(); } } goto L6; } _LCEVHDR_DataArrival( _unknown_ __rax, // r53 signed char* __rsi // r58 ) {// addr = 0x00429558 long long _v16; // _cfa_fffffff0 unsigned int _v34; // _cfa_ffffffde unsigned int _v35; // _cfa_ffffffdd unsigned int _v36; // _cfa_ffffffdc unsigned int _v37; // _cfa_ffffffdb signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t47; // _t47 signed char* _t52; // _t52 signed char* _t60; // _t60 long long _t68; // _t68 _v64 = _t68; _v72 = __rsi; _v16 = *fs:0x28]; _v56 = &(_v72[0x20]); _t52 = _v72; __esi = (_t52[6]) & 0xff; LLINK_SearchUsedLinkByLLIndx((_t52[6]) & 0xff, _t52, _v64 + 30560); _v48 = _t52; if(_v48 != 0) { _t37 = *_v48 & 255; if(( *_v48 & 255) != 0) { _v39 = *_v56 & 255; _v37 = (_v72[8]); _v36 = (_v72[8]) >> 8; _v35 = (_v72[8]) >> 16; _t60 = _v72; _t37 = (_t60[8]) >> 24; _v34 = (_t60[8]) >> 24; _t47 = *((intOrPtr*)(_v64 + 59744)); if(_t47 != 0) { r8 = *((intOrPtr*)(_v64 + 59744)); r8(); } } } if(_t47 == 0) { return; } __stack_chk_fail(); return; } _LCEVHDR_PacketFlushed( _unknown_ __rax // r53 ) {// addr = 0x0042963A signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t16; // _t16 signed char* _t21; // _t21 long long _t27; // _t27 _v32 = _t27; _v40 = __rsi; _t21 = _v40; __esi = (_t21[6]) & 0xff; _t16 = LLINK_SearchUsedLinkByLLIndx((_t21[6]) & 0xff, _t21, _v32 + 30560); _v16 = _t21; if(_v16 == 0) { } else { _t16 = *_v16 & 255; if(_t16 != 0) { (_v16[0x10]) = __dl; return (_v16[0x10]) & 255; } } return _t16; } _LCEVHDR_AccessRequest() {// addr = 0x00429694 signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char* _t32; // _t32 long long _t39; // _t39 long long _t42; // _t42 _v48 = _t39; _v56 = _t42; _v32 = _v56 + 32; _v24 = 0; _t32 = _v32; _v9 = *_t32 & 255; _t37 = _v48 + 60216; _t40 = _v48 + 60216; LM_Find_Link_Table_Entry_By_Ar_Addr(_v9 & 255, _t32, _v48 + 60216); _v24 = _t32; if(_v24 == 0) { DebugPrint(0, _t32, __rcx, _t37, _t40, _t42); return; } if(((_v24[2]) & 255) == 0) { (_v24[0x20a]) = 0; LMpolicy_Unpark_Slave_NonAutomatic(); return; } return; } _LCEVHDR_UnparkComplete( _unknown_ __rax // r53 ) {// addr = 0x00429733 long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t41; // _t41 signed char* _t48; // _t48 _unknown_ _t58; // _t58 _unknown_ _t60; // _t60 long long _t64; // _t64 signed char* _t68; // _t68 _v64 = _t64; _v72 = _t68; _v16 = *fs:0x28]; _v56 = &(_v72[0x20]); r8d = *_v56 & 0xff; DebugPrint(0, _v72, _t58, _t60, _t64, _t68); _t48 = _v72; LLINK_SearchUsedLinkByLLIndx((_t48[6]) & 0xff, _t48, _v64 + 30560); _v48 = _t48; if(_v48 != 0) { _t34 = *_v48 & 255; if(( *_v48 & 255) != 0) { _t34 = *_v56 & 255; _v39 = *_v56 & 255; LC_MasterUnparkComplete(_v48); _t41 = *((intOrPtr*)(_v64 + 59800)); if(_t41 != 0) { r8 = *((intOrPtr*)(_v64 + 59800)); r8(); } } } if(_t41 == 0) { return; } __stack_chk_fail(); return; } _LCEVHDR_Unparked() {// addr = 0x00429823 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v24 = _v40 + 32; _v10 = *(_v40 + 6) & 255; _v9 = *_v24 & 255; r8d = _v9 & 255; DebugPrint(0, _v24, __rcx, __rdx, __rdi, __rsi); return; } _LCEVHDR_BeaconTick( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0042987C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } _LCEVHDR_BeaconDetected() {// addr = 0x0042988A signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v24 = _v40 + 32; _v9 = *_v24 & 255; DebugPrint(0, _v24, __rcx, __rdx, __rdi, __rsi); return; } _LCEVHDR_PacketEnhancedFlushed( _unknown_ __rax // r53 ) {// addr = 0x004298D1 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t16; // _t16 signed char* _t21; // _t21 long long _t27; // _t27 _v32 = _t27; _v40 = __rsi; _t21 = _v40; __esi = (_t21[6]) & 0xff; _t16 = LLINK_SearchUsedLinkByLLIndx((_t21[6]) & 0xff, _t21, _v32 + 30560); _v16 = _t21; if(_v16 == 0) { } else { _t16 = *_v16 & 255; if(_t16 != 0) { (_v16[0x11]) = __dl; return (_v16[0x11]) & 255; } } return _t16; } _LCEVHDR_ModeChangeEvent( _unknown_ __eax, // r0 _unknown_ __rax, // r53 signed char* __rsi // r58 ) {// addr = 0x0042992B long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t36; // _t36 signed char* _t41; // _t41 long long _t54; // _t54 _v64 = _t54; _v72 = __rsi; _v16 = *fs:0x28]; _v56 = &(_v72[0x20]); _t41 = _v72; _t28 = LLINK_SearchUsedLinkByLLIndx((_t41[6]) & 0xff, _t41, _v64 + 30560); _v48 = _t41; if(_v48 != 0) { _t28 = *_v48 & 255; if(( *_v48 & 255) != 0) { _v39 = *_v56 & 255; if(LLINK_UpdateConnectionMode() == 1) { _t36 = *((intOrPtr*)(_v64 + 59760)); if(_t36 != 0) { r8 = *((intOrPtr*)(_v64 + 59760)); r8(); } } } } if(_t36 != 0) { __stack_chk_fail(); return; } return; } _LCEVHDR_CommandComplete() {// addr = 0x004299F5 long long _v16; // _cfa_fffffff0 signed int _v38; // _cfa_ffffffda signed int _v39; // _cfa_ffffffd9 signed int _v40; // _cfa_ffffffd8 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed int _v43; // _cfa_ffffffd5 long long _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 long long _t117; // _t117 intOrPtr _t118; // _t118 intOrPtr _t119; // _t119 intOrPtr _t120; // _t120 intOrPtr _t122; // _t122 _unknown_ _t135; // _t135 long long _t143; // _t143 long long _t148; // _t148 _v96 = _t143; _v104 = _t148; _v16 = *fs:0x28]; _v64 = _v104 + 32; _v72 = 0; _v88 = 0; _v56 = 0; _v43 = *_v64 & 255; _v42 = (_v64[1]) & 255; _t117 = _v104; _t138 = _v96 + 30560; _t144 = _v96 + 30560; LCCMD_SearchByTransactionID( *(_t117 + 4) & 0xff, _v96 + 30560); _v56 = _t117; __eflags = _v56; if(_v56 != 0) { _t118 = _v56; __eflags = ( *(_t118 + 2) & 255) - _v43; if(( *(_t118 + 2) & 255) == _v43) { _t119 = _v104; _t120 = _v56; __eflags = ( *(_t119 + 6) & 255) - ( *(_t120 + 3) & 255); if(( *(_t119 + 6) & 255) != ( *(_t120 + 3) & 255)) { r9d = *(_v104 + 6) & 0xff; r8d = *(_v56 + 3) & 0xff; DebugPrint(0, _v56, _t135, _t138, _t144, _t148); } _v41 = *(_v56 + 3) & 255; __eflags = (_v43 & 255) - 58; if((_v43 & 255) <= 58) { goto __rax; } _t122 = _v56; __eflags = *((intOrPtr*)(_t122 + 8)); if( *((intOrPtr*)(_t122 + 8)) != 0) { _v38 = *(_v104 + 4) & 255; _v40 = _v43 & 255; _v39 = _v42 & 255; r8 = *((intOrPtr*)(_v56 + 8)); r8(); } __eflags = (_v43 & 255) - 17; if((_v43 & 255) == 17) { } _t76 = *(_v104 + 4) & 0xff; LCCMD_DelTransaction( *(_v104 + 4) & 0xff, _v96 + 30560); } else { r8d = _v43 & 255; DebugPrint(0, _v56, _t135, _t138, _t144, _t148); _t76 = *(_v104 + 4) & 0xff; LCCMD_DelTransaction( *(_v104 + 4) & 0xff, _v96 + 30560); } } else { DebugPrint(0, _t117, _t135, _t138, _t144, _t148); } if(__eflags != 0) { __stack_chk_fail(); return; } return; } _LCEVHDR_ErroneousSyncDataReporting( _unknown_ __rax, // r53 long long __rsi // r58 ) {// addr = 0x0042A4A3 long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t31; // _t31 long long _t36; // _t36 intOrPtr _t39; // _t39 intOrPtr _t40; // _t40 long long _t48; // _t48 _v64 = _t48; _v72 = __rsi; _v16 = *fs:0x28]; _v56 = _v72 + 32; _v48 = 0; _t36 = _v72; __esi = *(_t36 + 6) & 0xff; LLINK_SearchUsedLinkByLLIndx( *(_t36 + 6) & 0xff, _t36, _v64 + 30560); _v48 = _t36; if(_v48 != 0) { _t39 = _v48; _t28 = *(_t39 + 2) & 255; if(( *(_t39 + 2) & 255) == 0) { _t40 = _v56; _t28 = *(_t40 + 1) & 255; _v39 = *(_t40 + 1) & 255; _t31 = *((intOrPtr*)(_v64 + 59832)); if(_t31 != 0) { r8 = *((intOrPtr*)(_v64 + 59832)); r8(); } } } if(_t31 == 0) { return; } __stack_chk_fail(); return; } _LCEVHDR_LCErrorReport( _unknown_ __rax, // r53 long long __rsi // r58 ) {// addr = 0x0042A55E long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t28; // _t28 signed char* _t33; // _t33 signed char* _t37; // _t37 long long _t45; // _t45 _v64 = _t45; _v72 = __rsi; _v16 = *fs:0x28]; _v56 = _v72 + 32; _t33 = _v56; __esi = *_t33 & 0xff; LLINK_SearchUsedLinkByLLIndx( *_t33 & 0xff, _t33, _v64 + 30560); _v48 = _t33; if(_v48 != 0) { _t25 = *_v48 & 255; if(( *_v48 & 255) != 0) { _t37 = _v56; _t25 = (_t37[1]) & 255; _v39 = (_t37[1]) & 255; _t28 = *((intOrPtr*)(_v64 + 59848)); if(_t28 != 0) { r8 = *((intOrPtr*)(_v64 + 59848)); r8(); } } } if(_t28 == 0) { return; } __stack_chk_fail(); return; } _LCEVHDR_LCLinkFlushComplete( _unknown_ __rax, // r53 signed char* __rsi // r58 ) {// addr = 0x0042A60F long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char _v152; // _cfa_ffffff68 signed int _v231; // _cfa_ffffff19 signed int _v233; // _cfa_ffffff17 signed int _v240; // _cfa_ffffff10 signed char* _v248; // _cfa_ffffff08 long long _v256; // _cfa_ffffff00 signed char* _v264; // _cfa_fffffef8 _unknown_ __rbp; // r59 signed char _t50; // _t50 signed char* _t53; // _t53 long long _t76; // _t76 _v256 = _t76; _v264 = __rsi; _v16 = *fs:0x28]; _v233 = 0; _t53 = _v264; __esi = (_t53[6]) & 0xff; _t42 = LLINK_SearchUsedLinkByLLIndx((_t53[6]) & 0xff, _t53, _v256 + 30560); _v248 = _t53; if(_v248 == 0) { L8: if(_t50 == 0) { return; } __stack_chk_fail(); return; } _t42 = *_v248 & 255; if(( *_v248 & 255) == 0) { goto L8; } _v152 = (_v248[0x50]); _t42 = (_v248[1]) & 255; _v231 = _t42; LLINK_EventCallback(); _v240 = _t42; if(_v240 != 0) { goto L8; } _v39 = 0; if((_v248[0x40]) != 0) { r8 = (_v248[0x40]); r8(); _v233 = _t42; } if(_v233 == 0) { _t50 = *(_v256 + 59856); if(_t50 != 0) { r8 = *(_v256 + 59856); r8(); } } goto L8; } _LCEVHDR_LCLEAdvertiseComplete( _unknown_ __rax, // r53 signed char* __rsi // r58 ) {// addr = 0x0042A782 long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t28; // _t28 signed char* _t33; // _t33 long long _t45; // _t45 _v64 = _t45; _v72 = __rsi; _v16 = *fs:0x28]; _v56 = &(_v72[0x20]); _t33 = _v72; __esi = (_t33[6]) & 0xff; LLINK_SearchUsedLinkByLLIndx((_t33[6]) & 0xff, _t33, _v64 + 30560); _v48 = _t33; if(_v48 != 0) { _t25 = *_v48 & 255; if(( *_v48 & 255) != 0) { _t25 = *_v56 & 255; _v39 = *_v56 & 255; _t28 = *((intOrPtr*)(_v64 + 59952)); if(_t28 != 0) { r8 = *((intOrPtr*)(_v64 + 59952)); r8(); } } } if(_t28 == 0) { return; } __stack_chk_fail(); return; } _LCEVHDR_LCLEMICErrorDetected( _unknown_ __rax, // r53 signed char* __rsi // r58 ) {// addr = 0x0042A833 long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t28; // _t28 signed char* _t33; // _t33 long long _t45; // _t45 _v64 = _t45; _v72 = __rsi; _v16 = *fs:0x28]; _v56 = &(_v72[0x20]); _t33 = _v72; __esi = (_t33[6]) & 0xff; LLINK_SearchUsedLinkByLLIndx((_t33[6]) & 0xff, _t33, _v64 + 30560); _v48 = _t33; if(_v48 != 0) { _t25 = *_v48 & 255; if(( *_v48 & 255) != 0) { _t25 = *_v56 & 255; _v39 = *_v56 & 255; _t28 = *((intOrPtr*)(_v64 + 59960)); if(_t28 != 0) { r8 = *((intOrPtr*)(_v64 + 59960)); r8(); } } } if(_t28 == 0) { return; } __stack_chk_fail(); return; } _LCEVHDR_LCLEConnectReqSent( _unknown_ __rax, // r53 signed char* __rsi // r58 ) {// addr = 0x0042A8E4 long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t28; // _t28 signed char* _t33; // _t33 long long _t45; // _t45 _v64 = _t45; _v72 = __rsi; _v16 = *fs:0x28]; _v56 = &(_v72[0x20]); _t33 = _v72; __esi = (_t33[6]) & 0xff; LLINK_SearchUsedLinkByLLIndx((_t33[6]) & 0xff, _t33, _v64 + 30560); _v48 = _t33; if(_v48 != 0) { _t25 = *_v48 & 255; if(( *_v48 & 255) != 0) { _t25 = *_v56 & 255; _v39 = *_v56 & 255; _t28 = *((intOrPtr*)(_v64 + 59968)); if(_t28 != 0) { r8 = *((intOrPtr*)(_v64 + 59968)); r8(); } } } if(_t28 == 0) { return; } __stack_chk_fail(); return; } _LCEVHDR_LCLEConnectionEstablished( _unknown_ __rax, // r53 signed char* __rsi // r58 ) {// addr = 0x0042A995 long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 _unknown_ _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t28; // _t28 signed char* _t33; // _t33 long long _t45; // _t45 _v64 = _t45; _v72 = __rsi; _v16 = *fs:0x28]; _v56 = &(_v72[0x20]); _t33 = _v72; __esi = (_t33[6]) & 0xff; LLINK_SearchUsedLinkByLLIndx((_t33[6]) & 0xff, _t33, _v64 + 30560); _v48 = _t33; if(_v48 != 0) { _t25 = *_v48 & 255; if(( *_v48 & 255) != 0) { _t25 = *_v56 & 255; _v39 = *_v56 & 255; _t28 = *((intOrPtr*)(_v64 + 59984)); if(_t28 != 0) { r8 = *((intOrPtr*)(_v64 + 59984)); r8(); } } } if(_t28 == 0) { return; } __stack_chk_fail(); return; } dump_list() {// addr = 0x0042AA48 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0042AB10 signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LCEQ_Initialise() {// addr = 0x0042AEF1 signed char _v9; // _cfa_fffffff7 signed long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed long long _t94; // _t94 signed long long _t105; // _t105 long long _t131; // _t131 _v48 = _t131; _v32 = _v48 + 26424; RtlFillMemory(2088, 0, _v32); *(_v32 + 16) = _v32 + 8; *(_v32 + 8) = *(_v32 + 16); check_list_constant(); *((long long*)(_v32 + 32)) = _v32 + 24; *((long long*)(_v32 + 24)) = *((intOrPtr*)(_v32 + 32)); check_list_constant(); _v9 = 0; while(_v9 <= 31) { *(_v32 + ((_v9 & 255) << 6) + 0x28) = _v9 & 255; _t94 = *(_v32 + 16); _v24 = _t94; *_v24 = (_t94 << 6) + 48 + _v32 + 8; *((intOrPtr*)(_v32 + ((_v9 & 255) << 6) + 56)) = _v32 + 8; _t105 = _v24; *(_v32 + ((_v9 & 255) << 6) + 64) = _t105; *(_v32 + 16) = (_t105 << 6) + 48 + _v32 + 8; check_list_constant(); _v9 = _v9 + 1; } return; } LCEQ_EnqueueRequest() {// addr = 0x0042B08A _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t82; // _t82 signed char _t94; // _t94 long long _t114; // _t114 intOrPtr _t138; // _t138 intOrPtr _t141; // _t141 long long _t158; // _t158 _unknown_ _t160; // _t160 _v64 = _t158; _v68 = _t94; _v72 = _t82; _v32 = _v64 + 56984; _v40 = 0; _v48 = 0; _t162 = ?_? ( &_v48); _t159 = _v64 + 30472; ral_spin_lock(_v64 + 30472, ?_? ( &_v48)); if( *((intOrPtr*)(_v32 + 8)) != _v32 + 8) { L2: _t114 = *((intOrPtr*)(_v32 + 8)); _t147 = _v32 + 8; if(_t114 != _v32 + 8) { _t114 = *((intOrPtr*)(_v32 + 8)); } _v24 = _t114; _v16 = *((intOrPtr*)(_v32 + 8)); if(_v32 + 8 != _v16) { *((long long*)(_v32 + 8)) = *_v16; if( *_v16 != _v32 + 8) { _t147 = _v32 + 8; *((long long*)( *_v16 + 8)) = _v32 + 8; } else { _t138 = _v32; _t147 = _t138 + 8; *((long long*)(_v32 + 16)) = _t138 + 8; } } _t120 = _v32 + 8; _t160 = _v32 + 8; check_list_constant(); if(_v24 == 0) { _t68 = DebugPrint(0, _t120, __rcx, _t147, _t160, _t162); } else { _v40 = _v24 - 16; if(( *(_v40 + 1) & 255) != 0) { r8 = _v40; _t68 = DebugPrint(0, _v40, __rcx, _v40, _t160, _t162); _v40 = 0; } else { *(_v40 + 3) = _v68 & 255; *(_v40 + 4) = _v72 & 255; *(_v40 + 2) = 1; *(_v40 + 1) = 1; r9d = _v72 & 255; r8 = _v40; DebugPrint(0, _v40, __rcx, _v40, _t160, _t162); } } L15: ral_spin_unlock(_v64 + 30472, _v48); return; } _t141 = _v32; _t142 = *((intOrPtr*)(_t141 + 16)); _t157 = _v32 + 8; if( *((intOrPtr*)(_t141 + 16)) == _v32 + 8) { _t68 = DebugPrint(0, _t142, __rcx, _t157, _t159, &_v48); goto L15; } goto L2; } LCEQ_EnqueueCancel() {// addr = 0x0042B2B7 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t74; // _t74 _unknown_ _t98; // _t98 long long _t108; // _t108 long long _t112; // _t112 _v48 = _t108; _v56 = _t112; _v32 = 0; if(_v48 == 0) { DebugPrint(0, _t74, __rcx, _t98, _t108, _t112); return 0; } if(_v56 != 0) { if(_v56 == 0 || ( *(_v56 + 1) & 255) != 0 && ( *(_v56 + 2) & 255) != 0) { _v24 = _v48 + 56984; ral_spin_lock(_v48 + 30472, &_v32); *(_v56 + 1) = 0; *(_v56 + 2) = 0; _v16 = *((intOrPtr*)(_v24 + 16)); *_v16 = _v56 + 16; *((long long*)(_v56 + 16)) = _v24 + 8; *((long long*)(_v56 + 24)) = _v16; *((long long*)(_v24 + 16)) = _v56 + 16; check_list_constant(); ral_spin_unlock(_v48 + 30472, _v32); return 1; } else { r9d = *(_v56 + 4) & 0xff; r8 = _v56; DebugPrint(0, _v56, __rcx, _v56, _t108, _t112); return 0; } } DebugPrint(0, _t74, __rcx, _t98, _t108, _t112); return 0; } LCEQ_EnqueueCommit() {// addr = 0x0042B448 signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t74; // _t74 long long _t78; // _t78 _v48 = _t74; _v56 = _t78; _v32 = _v48 + 56984; _v9 = 0; _v40 = 0; r8 = _v56; DebugPrint(0, _v56, __rcx, _v56, _t74, _t78); ral_spin_lock(_v48 + 30472, &_v40); *(_v56 + 2) = 0; _v24 = *((intOrPtr*)(_v32 + 32)); *_v24 = _v56 + 16; *((long long*)(_v56 + 16)) = _v32 + 24; *((long long*)(_v56 + 24)) = _v24; *((long long*)(_v32 + 32)) = _v56 + 16; check_list_constant(); ral_spin_unlock(_v48 + 30472, _v40); return _v9 & 255; } LCEQ_DequeueRequest() {// addr = 0x0042B549 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t100; // _t100 intOrPtr _t123; // _t123 long long _t143; // _t143 _unknown_ _t145; // _t145 _v64 = _t143; _v32 = _v64 + 56984; _v40 = 0; _v48 = 0; _t147 = ?_? ( &_v48); ral_spin_lock(_v64 + 30472, &_v48); if( *((intOrPtr*)(_v32 + 24)) != _v32 + 24 || *((intOrPtr*)(_v32 + 32)) != _v32 + 24) { _t100 = *((intOrPtr*)(_v32 + 24)); _t132 = _v32 + 24; if(_t100 != _v32 + 24) { _t100 = *((intOrPtr*)(_v32 + 24)); } _v24 = _t100; _v16 = *((intOrPtr*)(_v32 + 24)); if(_v32 + 24 != _v16) { *((long long*)(_v32 + 24)) = *_v16; if( *_v16 != _v32 + 24) { _t132 = _v32 + 24; *((long long*)( *_v16 + 8)) = _v32 + 24; } else { _t123 = _v32; _t132 = _t123 + 24; *((long long*)(_v32 + 32)) = _t123 + 24; } } _t106 = _v32 + 24; _t145 = _v32 + 24; check_list_constant(); if(_v24 == 0) { _t58 = DebugPrint(0, _t106, __rcx, _t132, _t145, _t147); } else { _v40 = _v24 - 16; if(( *(_v40 + 1) & 255) == 0) { r9d = *(_v40 + 4) & 0xff; r8 = _v40; _t58 = DebugPrint(0, _v40, __rcx, _v40, _t145, _t147); _v40 = 0; } else { *((char*)(_v40 + 2)) = 1; r9d = *(_v40 + 4) & 0xff; r8 = _v40; DebugPrint(0, _v40, __rcx, _v40, _t145, _t147); } } goto L14; } else { L14: ral_spin_unlock(_v64 + 30472, _v48); return; } } LCEQ_DequeueCommit() {// addr = 0x0042B748 signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t76; // _t76 _unknown_ _t100; // _t100 long long _t110; // _t110 long long _t114; // _t114 _v48 = _t110; _v56 = _t114; _v9 = 0; _v40 = 0; if(_v48 != 0) { if(_v56 != 0) { if(_v56 != 0) { _t115 = &_v40; _t111 = _v48 + 30472; ral_spin_lock(_v48 + 30472, &_v40); if(( *(_v56 + 1) & 255) == 0 || ( *(_v56 + 2) & 255) == 0) { r9d = *(_v56 + 4) & 0xff; r8 = _v56; DebugPrint(0, _v56, __rcx, _v56, _t111, _t115); } else { *(_v56 + 1) = 0; *(_v56 + 2) = 0; _v32 = _v48 + 56984; _v24 = *((intOrPtr*)(_v32 + 16)); *_v24 = _v56 + 16; *((long long*)(_v56 + 16)) = _v32 + 8; *((long long*)(_v56 + 24)) = _v24; *((long long*)(_v32 + 16)) = _v56 + 16; check_list_constant(); _v9 = 1; } ral_spin_unlock(_v48 + 30472, _v40); } return; } DebugPrint(0, _t76, __rcx, _t100, _t110, _t114); return; } DebugPrint(0, _t76, __rcx, _t100, _t110, _t114); return; } LCEQ_IsEmpty() {// addr = 0x0042B8E4 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t19; // _t19 long long _t39; // _t39 _v48 = _t39; _v24 = _v48 + 56984; _v9 = 1; _v32 = 0; ral_spin_lock(_v48 + 30472, &_v32); if( *((intOrPtr*)(_v24 + 24)) != _v24 + 24 || *((intOrPtr*)(_v24 + 32)) != _v24 + 24) { _t19 = 0; } else { _t19 = 1; } _v9 = _t19; ral_spin_unlock(_v48 + 30472, _v32); return _v9 & 255; } _AUXCTL_Initialise() {// addr = 0x0042B980 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t22; // _t22 _v16 = _t22; RtlFillMemory(32, 0, _v16 + 24152); RtlFillMemory(16, 0, _v16 + 24184); RtlFillMemory(32, 0, _v16 + 24200); RtlFillMemory(7, 0, _v16 + 24232); return; } _AUXCTL_WriteMcuInqCtl() {// addr = 0x0042B9FE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t9; // _t9 long long _t20; // _t20 _v16 = _t20; _v24 = __rsi; if((_t9 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } _AUXCTL_ReadMcuInqCtl( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0042BA4E intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t15; // _t15 _v32 = __rdi; _v40 = __rsi; _v12 = 0; if((_t15 & 1) == 0) { _v12 = 4294967295; *_v40 = _v12; return; } RT_PCI_IO_READ32(); *_v40 = _v12; return; } _AUXCTL_WriteMcuInqScanCtl() {// addr = 0x0042BABF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t9; // _t9 long long _t20; // _t20 _v16 = _t20; _v24 = __rsi; if((_t9 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } _AUXCTL_ReadMcuInqScanCtl( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0042BB0F intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t15; // _t15 _v32 = __rdi; _v40 = __rsi; _v12 = 0; if((_t15 & 1) == 0) { _v12 = 4294967295; *_v40 = _v12; return; } RT_PCI_IO_READ32(); *_v40 = _v12; return; } _AUXCTL_WriteMcuPageCtl() {// addr = 0x0042BB80 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; __rdx = _v24 + 8; __ecx = 20; MCU_Write_Memory(20, _v24 + 8); return; } _AUXCTL_ReadMcuPageCtl() {// addr = 0x0042BBB0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; __rdx = _v24 + 8; __ecx = 20; MCU_Read_Memory(20, _v24 + 8); return; } _AUXCTL_WriteMcuPageScanCtl() {// addr = 0x0042BBE0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t10; // _t10 long long _t21; // _t21 _v16 = _t21; _v24 = __rsi; if((_t10 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } _AUXCTL_ReadMcuPageScanCtl( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0042BC31 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t17; // _t17 _v32 = __rdi; _v40 = __rsi; _v12 = 0; if((_t17 & 1) == 0) { _v12 = 4294967295; *((intOrPtr*)(_v40 + 8)) = _v12; return; } RT_PCI_IO_READ32(); *((intOrPtr*)(_v40 + 8)) = _v12; return; } BDADDR_Assign( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x0042BCA4 signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } SYNCWORD_Assign( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0042BD0A _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24; *((intOrPtr*)(_v16 + 4)) = *((intOrPtr*)(_v24 + 4)); return; } LLINK_ReadMasterPicoClock( long long __rdi // r57 ) {// addr = 0x0042BD35 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t18; // _t18 _v32 = __rdi; _v24 = 0; _v12 = 0; if((_t18 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } return _v24 & 268435455; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0042BDB6 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LINK_SerachLEConnHandle( signed int __esi, // r5 signed int __rdi // r57 ) {// addr = 0x0042BEF7 signed char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t20; // _t20 signed long long _t27; // _t27 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _t20 = __esi; _v36 = __esi; _v24 = 0; _v9 = 0; while(_v9 <= 1) { _t27 = _t27 * 184 + _v32 + 33792; _t20 = *(_t27 + 8) & 255; if(_t20 == 0) { L4: _v9 = _v9 + 1; continue; } else { _t27 = _t27 * 184 + _v32 + 33792; _t20 = *(_t27 + 16) & 65535; if(_t20 != _v36) { goto L4; } else { _t33 = _v32; _t20 = _v9 & 255; _v24 = 4416 + _v32 * 184 + _t33 + 33800; } } break; } return _t20; } LINK_Initialise() {// addr = 0x0042BF94 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t12; // _t12 _v16 = _t12; _LLINK_Initialise(); _LTRANS_Initialise(); _LELTRANS_Initialise(); _PLINK_Initialise(); _AUXCTL_Initialise(); return; } LINK_NewInuqiry() {// addr = 0x0042BFDE unsigned char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc unsigned int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 unsigned short _v102; // _cfa_ffffff9a signed int _v103; // _cfa_ffffff99 signed int _v104; // _cfa_ffffff98 signed int _v116; // _cfa_ffffff8c signed int _v118; // _cfa_ffffff8a unsigned int _v119; // _cfa_ffffff89 char _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 unsigned int _v158; // _cfa_ffffff62 unsigned int _v160; // _cfa_ffffff60 signed int _v164; // _cfa_ffffff5c signed int _v165; // _cfa_ffffff5b signed int _v167; // _cfa_ffffff59 char _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 unsigned int _v180; // _cfa_ffffff4c signed int _v184; // _cfa_ffffff48 signed int* _v192; // _cfa_ffffff40 _unknown_ __rbp; // r59 signed int _t134; // _t134 signed int _t188; // _t188 unsigned int _t205; // _t205 signed int _t220; // _t220 signed int _t221; // _t221 signed int _t222; // _t222 signed int* _t244; // _t244 signed int _t259; // _t259 signed int _t262; // _t262 signed int _t263; // _t263 signed int _t264; // _t264 signed int _t277; // _t277 signed int _t278; // _t278 _v176 = _t259; _v180 = _t205; _v184 = _t188; _v192 = _t244; _v48 = 7; _v120 = 0; _v116 = 0; _v144 = 0; _v136 = 0; _v128 = 0; _v88 = 0; _t217 = _v176; _t260 = _v176; _AUXCTL_ReadMcuInqCtl(_v176, &_v104); _v9 = (_v104 & 255) >> 7; if(_v9 == 0) { _v12 = _LINK_DecideNinquiry(_v176 + 30560, _v176 + 30560); _v120 = _v180; _v119 = _v180 >> 8; _t134 = _v180 >> 16; _v118 = _t134; _t220 = _v176; _t262 = _t220; _PLINK_NewInquiry(); _v144 = _t220; if(_v144 != 0) { _t249 = _v144; _t221 = _v176; _t277 = _v144; _t263 = _t221; _LTRANS_NewInquiry(); _v136 = _t221; if(_v136 != 0) { _t250 = _v136; _t222 = _v176; _t278 = _v136; _t264 = _t222; _LLINK_NewInquiry(); _v128 = _t222; if(_v128 != 0) { _PLINK_WriteMcuLink(); _LTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _v52 = 0; if((_t134 & 1) == 0) { _v52 = 4294967295; _v88 = _v52; } else { RT_PCI_IO_READ32(); _v88 = _v52; } _v36 = _v88 & 268435455; _v32 = _v36; _v28 = 32; _v72 = _v28 + _v32; _v44 = _v72 & 0xe0; _v24 = _v44; _v20 = _v24; _v16 = 32; _v56 = _v16 + _v20; _v44 = _v56 & 0xe0; _v40 = _v184 << 12 >> 1; *_v192 = _v44; *(_v144 + 96) = _v44; RtlFillMemory(16, 0, &_v168); _v167 = _v167 & 0xfc; _v165 = _v165 & 255 | 1; _v164 = _v164 & 4026531840 | _v44 & 0xfffffff; _v160 = _v40; _v158 = _v40 >> 16; MCU_Write_Memory(16, &_v168); _v104 = _v104 & 0x7f; _v104 = _v104 & 255 | 128; _v103 = _v12 & 65535; _t174 = (_v12 & 65535) >> 8; _v102 = (_v12 & 65535) >> 8; _AUXCTL_WriteMcuInqCtl(); _v48 = 0; } else { _t174 = DebugPrint(0, _t222, _t244, _t250, _t264, _t278); } } else { _t174 = DebugPrint(0, _t221, _t244, _t249, _t263, _t277); } } else { _t174 = DebugPrint(0, _t220, _t244, &_v120, _t262, &_v120); } } else { DebugPrint(0, _t217, _t244, &_v104, _t260, &_v104); } if(_v48 != 0) { if(_v144 != 0) { _t174 = _PLINK_Delete(_v176, _v144); _v144 = 0; } if(_v136 != 0) { _t174 = _LTRANS_DelInquiry(); _v136 = 0; } if(_v128 != 0) { _LLINK_DelInquiry(); _v128 = 0; } } return; } LINK_NewInquiryScan( signed int* _a8 // _cfa_8 ) {// addr = 0x0042C422 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 unsigned char _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 intOrPtr _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 signed int _v104; // _cfa_ffffff98 signed int _v118; // _cfa_ffffff8a signed int _v120; // _cfa_ffffff88 signed int _v132; // _cfa_ffffff7c signed int _v134; // _cfa_ffffff7a unsigned int _v135; // _cfa_ffffff79 char _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v174; // _cfa_ffffff52 signed int _v176; // _cfa_ffffff50 signed int _v180; // _cfa_ffffff4c signed int _v181; // _cfa_ffffff4b signed int _v183; // _cfa_ffffff49 char _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 unsigned int* _v200; // _cfa_ffffff38 char _v204; // _cfa_ffffff34 signed short _v208; // _cfa_ffffff30 signed short _v212; // _cfa_ffffff2c signed char _v216; // _cfa_ffffff28 signed int* _v224; // _cfa_ffffff20 _unknown_ __rbp; // r59 signed int _t191; // _t191 signed int _t192; // _t192 signed int _t193; // _t193 signed int _t250; // _t250 signed short _t262; // _t262 char _t270; // _t270 signed int _t323; // _t323 signed int _t330; // _t330 signed int _t331; // _t331 signed int _t332; // _t332 signed int _t333; // _t333 signed int _t415; // _t415 signed int _t417; // _t417 signed int _t418; // _t418 signed int _t419; // _t419 signed int _t420; // _t420 unsigned int* _t440; // _t440 signed int _t442; // _t442 signed int _t443; // _t443 signed int _t444; // _t444 _v192 = _t415; _v200 = _t440; _v204 = _t270; _v208 = _t262; _v212 = r8d; _v216 = r9d; _v224 = _a8; _v16 = *fs:0x28]; _v60 = 7; _v26 = 0; _v168 = 0; _v160 = 0; _v152 = 0; _v144 = 0; _v136 = 0; _v132 = 0; _v104 = 0; _t326 = _v192; _t416 = _v192; _AUXCTL_ReadMcuInqScanCtl(_v192, &_v120); _v25 = (_v120 & 255) >> 7; if(_v25 == 0) { _v136 = *_v200; _v135 = *_v200 >> 8; _t191 = *_v200 >> 16; _v134 = _t191; _t330 = _v192; _t417 = _t330; PNET_NewSlavePiconet(); _v144 = _t330; if(_v144 != 0) { _t398 = _v144; _t331 = _v192; _t442 = _v144; _t418 = _t331; _PLINK_NewInquiryScan(); _v168 = _t331; if(_v168 != 0) { _t402 = _v168; _t332 = _v192; _t443 = _v168; _t419 = _t332; _LTRANS_NewInquiryScan(); _v160 = _t332; if(_v160 != 0) { _t403 = _v160; _t333 = _v192; _t444 = _v160; _t420 = _t333; _LLINK_NewInquiryScan(); _v152 = _t333; if(_v152 != 0) { _PLINK_WriteMcuLink(); _LTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _t192 = _t191 & 1; if(_t192 != 0) { _t192 = RT_PCI_IO_WRITE32(); } _t193 = _t192 & 1; if(_t193 != 0) { _t193 = RT_PCI_IO_WRITE32(); } if(_v204 > 1) { BT_SyncWordGenerator(_v200[1], &_v24); _t250 = _t193 & 1; if(_t250 != 0) { _t250 = RT_PCI_IO_WRITE32(); } _t193 = _t250 & 1; if(_t193 != 0) { _t193 = RT_PCI_IO_WRITE32(); } _v26 = 1; } _v64 = 0; if((_t193 & 1) == 0) { _v64 = 4294967295; _v104 = _v64; } else { _t398 = &_v64; RT_PCI_IO_READ32(); _v104 = _v64; } _v52 = _v104 & 268435455; _v48 = _v52; _v44 = 32; _v88 = _v44 + _v48; _v56 = _v88 & 0xe0; _v40 = _v56; _v36 = _v40; _v32 = 32; _v72 = _v32 + _v36; _v56 = _v72 & 0xe0; *_v224 = _v56; *(_v168 + 96) = _v56; RtlFillMemory(16, 0, &_v184); _v183 = _v183 & 0xfc | *( *((intOrPtr*)( *((intOrPtr*)(_v152 + 104)) + 16)) + 2) & 3; _v181 = _v181 & 255 | 1; _v180 = _v180 & 4026531840 | _v56 & 0xfffffff; _v176 = _v212 & 65535; _v174 = _v208 & 65535; MCU_Write_Memory(16, &_v184); _v120 = _v120 & 0xfe; _v120 = _v120 & 255 | _v26 & 1; _v120 = _v120 & 0xdf; _v120 = (_v216 & 1) << 5 | _v120 & 255; _v120 = _v120 & 0x7f; _v120 = _v120 & 255 | 128; _t241 = _v176 & 65535; _v118 = _v176 & 65535; _AUXCTL_WriteMcuInqScanCtl(); _v60 = 0; } else { _t241 = DebugPrint(0, _t333, _t398, _t403, _t420, _t444); } } else { _t241 = DebugPrint(0, _t332, _t398, _t402, _t419, _t443); } } else { _t241 = DebugPrint(0, _t331, _t398, &_v136, _t418, _t442); } } else { _t241 = DebugPrint(0, _t330, _t398, &_v120, _t417, &_v120); _PLINK_PiconetClockUsage(); } } else { _t241 = DebugPrint(0, _t326, _t398, &_v120, _t416, &_v120); } if(_v60 != 0) { if(_v144 != 0) { _t414 = _v192 + 30560; _t452 = _v144; PNET_DeleteSlavePiconet(_v192 + 30560, _v144); _v144 = 0; _t359 = _v192 + 191308; _t431 = _v192 + 191308; if(BTSTS_CheckDeviceState(32, _v192 + 191308) != 0) { DebugPrint(0, _t359, _t398, _t414, _t431, _t452); _t241 = LCCMD_PageScanRequest(); } } if(_v168 != 0) { _t241 = _PLINK_Delete(_v192, _v168); _v168 = 0; } if(_v160 != 0) { _t241 = _LTRANS_DelInquiryScan(); _v160 = 0; } _t323 = _v152; if(_t323 != 0) { _LLINK_DelInquiryScan(_v192 + 30560, _v152); _v152 = 0; } } if(_t323 != 0) { __stack_chk_fail(); return; } return; } LINK_NewPage( intOrPtr _a8, // _cfa_8 intOrPtr _a16, // _cfa_10 signed int* _a24 // _cfa_18 ) {// addr = 0x0042CB57 unsigned char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 signed char* _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 short _v144; // _cfa_ffffff70 signed int _v148; // _cfa_ffffff6c signed int _v149; // _cfa_ffffff6b signed int _v151; // _cfa_ffffff69 char _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 _unknown_ _v168; // _cfa_ffffff58 signed char _v172; // _cfa_ffffff54 unsigned int _v176; // _cfa_ffffff50 short _v180; // _cfa_ffffff4c char _v184; // _cfa_ffffff48 _unknown_ __rbp; // r59 signed int _t181; // _t181 unsigned int _t239; // _t239 signed char _t242; // _t242 signed int _t297; // _t297 signed int _t301; // _t301 signed int _t302; // _t302 signed int _t303; // _t303 signed int _t304; // _t304 signed int _t305; // _t305 signed int _t353; // _t353 _unknown_ _t357; // _t357 intOrPtr _t360; // _t360 intOrPtr _t363; // _t363 signed int _t364; // _t364 intOrPtr _t366; // _t366 signed int _t386; // _t386 signed int _t387; // _t387 signed int _t388; // _t388 signed int _t389; // _t389 signed int _t390; // _t390 signed int _t391; // _t391 signed int _t408; // _t408 long long _t411; // _t411 _unknown_ _t412; // _t412 _unknown_ _t413; // _t413 signed int _t414; // _t414 signed int _t415; // _t415 signed int _t429; // _t429 _v160 = _t386; _v168 = _t411; _v176 = _t239; _v180 = r8d; _v172 = _t242; _v184 = r9d; _v44 = 7; _v136 = 0; _v128 = 0; _v120 = 0; _v112 = 0; _v104 = 0; _v96 = 0; _v88 = 0; _v96 = _v160 + 54720; _t297 = _v160; _t362 = _t297 + 54712; _t412 = _t297 + 54712; _t387 = _v160; _AUXCTL_ReadMcuPageCtl(); _v9 = ( *_v96 & 255) >> 7; if(_v9 == 0) { _t301 = _v160 + 30560; _t388 = _t301; PNET_NewLTAddr(); _v136 = _t301; if(_v136 != 0) { _t302 = _v160; _t358 = _t302 + 55568; _t363 = _v168; _t303 = _v160; _t413 = _t302 + 55568; _t389 = _t303; _PLINK_NewActiveMember(); _v128 = _t303; if(_v128 != 0) { _t364 = _v136; _t359 = _v128; _t304 = _v160; _t414 = _v128; _t390 = _t304; _LTRANS_NewACL(); _v120 = _t304; if(_v120 != 0) { _t415 = _v120; _t305 = _v160; _t360 = _a16; _t366 = _a8; _t391 = _t305; _LLINK_NewACLC(_t305); _v112 = _t305; if(_v112 != 0) { if(_v184 == 0) { L14: _PLINK_WriteMcuLink(); _LTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); *(_v160 + 54712) = _v112; BDADDR_Assign( *((intOrPtr*)(_v128 + 24)) + 4, _v168); _t181 = _LINK_DesireNpage(_v172 & 255, _v168, _v160 + 30560); _v12 = _t181; _v48 = 0; if((_t181 & 1) == 0) { _v48 = 4294967295; _v88 = _v48; } else { RT_PCI_IO_READ32(); _v88 = _v48; } _v36 = _v88 & 268435455; _v32 = _v36; _v28 = 32; _v72 = _v28 + _v32; _v40 = _v72 & 0xe0; _v24 = _v40; _v20 = _v24; _v16 = 32; _v56 = _v16 + _v20; _v40 = _v56 & 0xe0; *_a24 = _v40; *(_v128 + 96) = _v40; RtlFillMemory(16, 0, &_v152); _v151 = _v151 & 0xfc | *( *((intOrPtr*)(_v128 + 16)) + 2) & 3; _v149 = _v149 & 255 | 1; _v148 = _v148 & 4026531840 | _v40 & 0xfffffff; _v144 = _v180; MCU_Write_Memory(16, &_v152); *_v96 = *_v96 & 0x7f; *_v96 = *_v96 & 255 | 128; *_v96 = *_v96 & 0x8f; *_v96 = ( *(_v136 + 1) & 7) << 4 | *_v96 & 255; (_v96[1]) = _v12 & 65535; (_v96[2]) = (_v12 & 65535) >> 8; (_v96[4]) = _v176; _t227 = _v176 >> 8; (_v96[5]) = _v176 >> 8 & 127; BDADDR_Assign( &(_v96[6]), _v168); SYNCWORD_Assign( &(_v96[0xc]), _v128 + 8); _AUXCTL_WriteMcuPageCtl(); _v44 = 0; L18: if(_v44 != 0) { if(_v136 != 0) { _t227 = PNET_DeleteLTAddr(); _v136 = 0; } if(_v128 != 0) { _t227 = _PLINK_Delete(_v160, _v128); _v128 = 0; } if(_v120 != 0) { _LTRANS_DelACL(); _v120 = 0; } if(_v112 != 0) { _t227 = _LLINK_Delete(_t227); _v112 = 0; } if(_v104 != 0) { _t227 = _LLINK_Delete(_t227); _v104 = 0; } } return; } _t383 = _v112; _t353 = _v160; _t429 = _v112; _t408 = _t353; _LLINK_NewACLU(_t353); _v104 = _t353; if(_v104 != 0) { _LLink_BindACLU(); _LLINK_WriteMcuLink(); goto L14; } _t227 = DebugPrint(0, _t353, _t360, _t383, _t408, _t429); goto L18; } _t227 = DebugPrint(0, _t305, _t360, _t366, _t391, _t415); goto L18; } _t227 = DebugPrint(0, _t304, _t359, _t364, _t390, _t414); goto L18; } _t227 = DebugPrint(0, _t303, _t358, _t363, _t389, _t413); goto L18; } _t227 = DebugPrint(0, _t301, _t357, _t362, _t388, _t412); goto L18; } _t227 = DebugPrint(0, _v96, _t357, _t362, _t387, _t412); goto L18; } LINK_NewPageScan() {// addr = 0x0042D198 signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v142; // _cfa_ffffff72 signed int _v144; // _cfa_ffffff70 signed int _v148; // _cfa_ffffff6c signed int _v149; // _cfa_ffffff6b signed int _v151; // _cfa_ffffff69 char _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed short _v164; // _cfa_ffffff5c signed int _v168; // _cfa_ffffff58 signed char _v172; // _cfa_ffffff54 signed int* _v184; // _cfa_ffffff48 _unknown_ __rbp; // r59 signed int _t162; // _t162 signed char _t222; // _t222 signed short _t226; // _t226 signed short _t265; // _t265 signed int _t285; // _t285 signed int _t288; // _t288 signed int _t290; // _t290 signed int _t291; // _t291 signed int _t292; // _t292 signed int _t321; // _t321 signed int _t325; // _t325 signed int _t326; // _t326 _unknown_ _t332; // _t332 _unknown_ _t336; // _t336 signed int _t345; // _t345 signed int _t347; // _t347 signed int _t348; // _t348 signed int _t349; // _t349 signed int _t350; // _t350 signed int _t362; // _t362 signed int _t363; // _t363 signed int _t364; // _t364 _v160 = _t345; _v184 = r8; _v164 = _t265; _v168 = _t226; _v172 = _t222; _v44 = 7; _v96 = 0; _v136 = 0; _v128 = 0; _v120 = 0; _v112 = 0; _v104 = 0; _v96 = _v160 + 54752; _t285 = _v160; _t335 = _t285 + 54744; _t361 = _t285 + 54744; _t346 = _v160; _AUXCTL_ReadMcuPageScanCtl(_v160, _t285 + 54744); _t162 = ( *_v96 & 255) >> 7; _v9 = _t162; if(_v9 == 0) { _t288 = _v160; _t347 = _t288; PNET_NewSlavePiconet(); _v136 = _t288; if(_v136 != 0) { _t336 = _v160 + 191072; _t333 = _v136; _t290 = _v160; _t362 = _v136; _t348 = _t290; _PLINK_NewActiveMember(); _v104 = _t290; if(_v104 != 0) { _t333 = _v104; _t291 = _v160; _t363 = _v104; _t349 = _t291; _LTRANS_NewACL(); _v128 = _t291; if(_v128 != 0) { _t364 = _v128; _t292 = _v160; _t350 = _t292; _LLINK_NewACLC(_t292); _v120 = _t292; if(_v120 != 0) { _t337 = _v120; _t293 = _v160; _t365 = _v120; _t351 = _t293; _LLINK_NewACLU(_t293); _v112 = _t293; if(_v112 != 0) { _LLink_BindACLU(); _PLINK_WriteMcuLink(); _LTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _LLINK_WriteMcuLink(); *(_v160 + 54744) = _v120; _v88 = 0; _v48 = 0; if((_t162 & 1) == 0) { _v48 = 4294967295; _v88 = _v48; } else { _t333 = &_v48; RT_PCI_IO_READ32(); _v88 = _v48; } _v36 = _v88 & 268435455; _v32 = _v36; _v28 = 32; _v72 = _v28 + _v32; _v40 = _v72 & 0xe0; _v24 = _v40; _v20 = _v24; _v16 = 32; _v56 = _v16 + _v20; _v40 = _v56 & 0xe0; *_v184 = _v40; *(_v104 + 96) = _v40; RtlFillMemory(16, 0, &_v152); _v151 = _v151 & 0xfc | *( *((intOrPtr*)(_v104 + 16)) + 2) & 3; _v149 = _v149 & 255 | 1; _v148 = _v148 & 4026531840 | _v40 & 0xfffffff; _v144 = _v168 & 65535; _v142 = _v164 & 65535; MCU_Write_Memory(16, &_v152); *_v96 = *_v96 & 0xbf; *_v96 = *_v96 & 255; *_v96 = *_v96 & 0xdf; *_v96 = (_v172 & 1) << 5 | *_v96 & 255; *_v96 = *_v96 & 0x7f; _t203 = *_v96 & 255; *_v96 = *_v96 & 255 | 128; *(_v96 + 2) = _v168 & 65535; _t321 = _v160; _t337 = _t321 + 54744; _t293 = _v160; _t365 = _t321 + 54744; _t351 = _v160; _AUXCTL_WriteMcuPageScanCtl(); _v44 = 0; } else { _t203 = DebugPrint(0, _t293, _t333, _t337, _t351, _t365); } } else { _t203 = DebugPrint(0, _t292, _t333, _t336, _t350, _t364); } } else { _t203 = DebugPrint(0, _t291, _t333, _t336, _t349, _t363); } } else { _t203 = DebugPrint(0, _t290, _t333, _t336, _t348, _t362); } } else { _t203 = DebugPrint(0, _t288, _t332, _t335, _t347, _t361); _t293 = _v160; _t351 = _v160; _PLINK_PiconetClockUsage(); } } else { _t293 = _v96; _t203 = DebugPrint(0, _v96, _t332, _t335, _t346, _t361); } if(_v44 != 0) { if(_v136 != 0) { _t326 = _v160; _t337 = _t326 + 30560; _t293 = _v136; _t365 = _v136; _t351 = _t326 + 30560; _t203 = PNET_DeleteSlavePiconet(_t326 + 30560, _v136); _v136 = 0; } if(_v104 != 0) { _t337 = _v104; _t293 = _v160; _t365 = _v104; _t351 = _v160; _t203 = _PLINK_Delete(_v160, _v104); _v104 = 0; } if(_v128 != 0) { _t325 = _v160; _t337 = _t325 + 30560; _t293 = _v128; _t365 = _v128; _t351 = _t325 + 30560; _LTRANS_DelACL(); _v128 = 0; } if(_v120 != 0) { _t337 = _v120; _t293 = _v160; _t365 = _v120; _t351 = _v160; _t203 = _LLINK_Delete(_t203); _v120 = 0; } if(_v112 != 0) { _t337 = _v112; _t293 = _v160; _t365 = _v112; _t351 = _v160; _LLINK_Delete(_t203); _v112 = 0; } _t203 = DebugPrint(0, _t293, _t333, _t337, _t351, _t365); BTSTS_SetDeviceState(); } return; } LINK_New() {// addr = 0x0042D79A long long _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t217; // _t217 intOrPtr _t232; // _t232 long long _t233; // _t233 intOrPtr _t272; // _t272 long long _t273; // _t273 long long _t274; // _t274 long long _t275; // _t275 long long _t286; // _t286 long long _t310; // _t310 long long _t325; // _t325 long long _t326; // _t326 long long _t327; // _t327 long long _t348; // _t348 long long _t349; // _t349 _v48 = _t310; _t140 = _t217; _v64 = _t286; _v52 = _t217; _v12 = 7; _v24 = 0; _v40 = 0; _v32 = 0; if(_v52 != 4) { if(_v52 != 2) { if(_v52 != 3) { if(_v52 != 8 || _v64 == 0) { goto L38; } else { _t232 = _v64; _t140 = *(_t232 + 1) & 255; if(( *(_t232 + 1) & 255) != 15) { goto L38; } _t233 = _v48; _LLINK_NewACLU(_t233); _v32 = _t233; if(_v32 != 0) { *((long long*)(_v64 + 88)) = _v32; _LLINK_WriteMcuLink(); r9d = *(_v64 + 11) & 0xff; r8d = *(_v32 + 1) & 0xff; DebugPrint(0, _v32, __rcx, _v32, _v48, _v32); *__rsp = *(_v32 + 128) & 0xff; r9d = *(_v32 + 129) & 0x1f; r8d = *( *((intOrPtr*)(_v32 + 32)) + 1) & 0xff; DebugPrint(0, *((intOrPtr*)(_v32 + 48)), __rcx, _v32, _v48, _v32); r8d = ( *(_v32 + 121) & 255) >> 1 & 1; _t140 = DebugPrint(0, _v32, __rcx, _v32, _v48, _v32); } return; } } _PLINK_NewBroadcast(_t140, _v48 + 191072); _v24 = _v48; if(_v24 != 0) { _PLINK_WriteMcuLink(); } _LTRANS_NewBroadcast(); _v40 = _v48; if(_v40 != 0) { _LTRANS_WriteMcuLink(); } _LLINK_NewPSBU(); _v32 = _v48; if(_v32 != 0) { _LLINK_WriteMcuLink(); r9d = *( *((intOrPtr*)(_v32 + 48)) + 1) & 0xff; r8d = *(_v32 + 1) & 0xff; _t162 = DebugPrint(0, _v32, __rcx, _v32, _v48, _v32); } return; } _PLINK_NewBroadcast(_t140, _v48 + 191072); _v24 = _v48; if(_v24 != 0) { _PLINK_WriteMcuLink(); } _LTRANS_NewBroadcast(); _v40 = _v48; if(_v40 != 0) { _LTRANS_WriteMcuLink(); } _LLINK_NewASBU(); _v32 = _v48; if(_v32 != 0) { _LLINK_WriteMcuLink(); r9d = *( *((intOrPtr*)(_v32 + 48)) + 1) & 0xff; r8d = *(_v32 + 1) & 0xff; _t168 = DebugPrint(0, _v32, __rcx, _v32, _v48, _v32); } return; } else { _t272 = _v48; _t302 = _t272 + 191072; _t273 = _v48; _t347 = _t272 + 191072; _t325 = _t273; _t140 = _PLINK_NewBroadcast(_t140, _t272 + 191072); _v24 = _t273; if(_v24 != 0) { _t303 = _v24; _t274 = _v48; _t348 = _v24; _t326 = _t274; _LTRANS_NewBroadcast(); _v40 = _t274; if(_v40 != 0) { _t304 = _v40; _t275 = _v48; _t349 = _v40; _t327 = _t275; _LLINK_NewPSBC(); _v32 = _t275; if(_v32 != 0) { _LTRANS_WriteMcuLink(); _PLINK_WriteMcuLink(); _t304 = _v32; _t349 = _v32; _t327 = _v48; _LLINK_WriteMcuLink(); _v12 = 0; } else { _t140 = DebugPrint(0, _t275, __rcx, _t304, _t327, _t349); } } else { _t140 = DebugPrint(0, _t274, __rcx, _t303, _t326, _t348); } } else { _t140 = DebugPrint(0, _t273, __rcx, _t302, _t325, _t347); } if(_v12 != 0) { if(_v24 != 0) { _t140 = _PLINK_Delete(_v48, _v24); _v24 = 0; } if(_v40 != 0) { _t140 = _LTRANS_DelBroadcast(_t140); _v40 = 0; } if(_v32 != 0) { _t140 = _LLINK_Delete(_t140); _v32 = 0; } } else { r9d = *( *((intOrPtr*)(_v32 + 48)) + 1) & 0xff; r8d = *(_v32 + 1) & 0xff; _t140 = DebugPrint(0, _v32, __rcx, _t304, _t327, _t349); } L38: return; } } LINK_NewSCO() {// addr = 0x0042DCC4 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 intOrPtr _t27; // _t27 signed int _t29; // _t29 long long _t36; // _t36 long long _t46; // _t46 long long _t51; // _t51 _v32 = _t46; _v40 = _t51; __eax = _t29; _v48 = _t27; _v52 = r8d; _v44 = __al; _v56 = r9d; _v16 = 0; if(_v40 == 0) { L2: return; } __eax = *(_v40 + 1) & 255; if(__al == 15) { _t36 = _v32; _LLINK_NewSCO(__eax, _t36); _v16 = _t36; if(_v16 != 0) { _LTRANS_NewSCO( *((intOrPtr*)(_v40 + 96))); _LLINK_WriteMcuLink(); *((char*)(_v16 + 2)) = 1; BTCoex_EventCallback(); } return; } goto L2; } LINK_NewESCO( signed int _a8, // _cfa_8 _unknown_ _a16, // _cfa_10 _unknown_ _a32, // _cfa_20 char _a40 // _cfa_28 ) {// addr = 0x0042DD7A char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 intOrPtr _v68; // _cfa_ffffffbc signed short _v72; // _cfa_ffffffb8 signed short _v76; // _cfa_ffffffb4 signed char _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t59; // _t59 char _t62; // _t62 intOrPtr _t77; // _t77 long long _t79; // _t79 long long _t80; // _t80 _unknown_ _t88; // _t88 long long _t89; // _t89 long long _t93; // _t93 long long _t94; // _t94 long long _t95; // _t95 long long _t101; // _t101 intOrPtr _t102; // _t102 intOrPtr _t103; // _t103 _v48 = _t93; _v56 = _t101; _t56 = _t59; r10d = r8d; r8d = _a8; _v60 = _t62; _v64 = _t59; _v68 = r10b; _v72 = r9w; _v76 = r8w; _v80 = dil; _v84 = sil; _v88 = _a40; _v9 = 0; _v32 = 0; _v24 = 0; if(_v56 == 0) { L2: return; } _t77 = _v56; _t56 = *(_t77 + 1) & 255; if(( *(_t77 + 1) & 255) == 15) { __rcx = *((intOrPtr*)(_v56 + 104)); _t79 = _v48; _t102 = __rcx; _t94 = _t79; _LTRANS_NewESCO(); _v24 = _t79; if(_v24 != 0) { r8d = _v80 & 255; r9d = _v76 & 65535; r10d = _v64 & 255; _t89 = _v24; _t103 = _v56; _t80 = _v48; _v96 = r8d; *__rsp = _v72 & 65535; r8d = r10d; _t95 = _t80; _LLINK_NewESCO(_t56); _v32 = _t80; if(_v32 != 0) { _LTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); *((char*)(_v32 + 2)) = 1; BTCoex_EventCallback(); _v9 = 1; } else { _t56 = DebugPrint(0, _t80, __rcx, _t89, _t95, _t103); } } else { _t56 = DebugPrint(0, _t79, __rcx, _t88, _t94, _t102); } if(_v9 == 0) { if(_v24 != 0) { _t56 = _LTRANS_DelSCO(_t56); _v24 = 0; } if(_v32 != 0) { _t56 = _LLINK_Delete(_t56); _v32 = 0; } } return; } goto L2; } LINK_NewLEScan() {// addr = 0x0042DF17 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v78; // _cfa_ffffffb2 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v85; // _cfa_ffffffab signed int _v87; // _cfa_ffffffa9 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 signed short _v100; // _cfa_ffffff9c signed short _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed short _t87; // _t87 signed short _t98; // _t98 long long _t109; // _t109 long long _t110; // _t110 long long _t111; // _t111 long long _t123; // _t123 _unknown_ _t125; // _t125 intOrPtr _t127; // _t127 long long _t135; // _t135 long long _t136; // _t136 long long _t137; // _t137 long long _t138; // _t138 _unknown_ _t148; // _t148 long long _t149; // _t149 long long _t150; // _t150 _v96 = _t135; _v112 = _t123; _v100 = _t98; _v104 = _t87; _v24 = 7; _v48 = 0; _v64 = 0; _v56 = 0; _t109 = _v96; _t136 = _t109; _PLINK_NewLEScan(); _v48 = _t109; if(_v48 != 0) { _t126 = _v48; _t110 = _v96; _t149 = _v48; _t137 = _t110; _LELTRANS_NewScan(); _v64 = _t110; if(_v64 != 0) { _t127 = _v112; _t124 = _v64; _t111 = _v96; _t150 = _v64; _t138 = _t111; _LLINK_NewLEScan(); _v56 = _t111; if(_v56 != 0) { RtlFillMemory(16, 0, &_v88); _v87 = _v87 & 0xfc; _v85 = _v85 & 255 | 1; _v20 = LLINK_ReadMasterPicoClock(_v96); _v16 = _v20; _v12 = 4; _v40 = _v12 + _v16; _v84 = _v84 & 4026531840 | _v40 & 0xfc; _v80 = _v104 & 65535; _v78 = _v100 & 65535; __ecx = 16; _t83 = MCU_Write_Memory(16, &_v88); _PLINK_WriteMcuLink(); _LELTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _v24 = 0; } else { _t83 = DebugPrint(0, _t111, _t124, _t127, _t138, _t150); } } else { _t83 = DebugPrint(0, _t110, _t123, _t126, _t137, _t149); } } else { DebugPrint(0, _t109, _t123, _t125, _t136, _t148); } if(_v24 != 0) { if(_v48 != 0) { _t83 = _PLINK_Delete(_v96, _v48); _v48 = 0; } if(_v64 != 0) { _t83 = _LELTRANS_DelScan(); _v64 = 0; } if(_v56 != 0) { _LLINK_DelLEScan(_v96 + 30560, _v56); _v56 = 0; } } return; } LINK_NewLEAdv() {// addr = 0x0042E15A long long _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 _unknown_ _t54; // _t54 char _t67; // _t67 long long _t79; // _t79 long long _t80; // _t80 long long _t81; // _t81 long long _t82; // _t82 long long _t93; // _t93 intOrPtr _t94; // _t94 long long _t95; // _t95 long long _t98; // _t98 long long _t105; // _t105 long long _t106; // _t106 long long _t107; // _t107 long long _t108; // _t108 long long _t109; // _t109 _unknown_ _t118; // _t118 long long _t119; // _t119 long long _t120; // _t120 _v64 = _t105; _v80 = _t95; _v88 = _t93; _v68 = _t67; _v12 = 7; _v24 = 0; _v48 = 0; _v40 = 0; _v32 = 0; _t79 = _v64; _t106 = _t79; PNET_NewSlavePiconet(); _v24 = _t79; if(_v24 != 0) { _t96 = _v24; _t80 = _v64; _t119 = _v24; _t107 = _t80; _t54 = _PLINK_NewLEAdv(); _v32 = _t80; if(_v32 != 0) { _t97 = _v32; _t81 = _v64; _t120 = _v32; _t108 = _t81; _LELTRANS_NewACL(); _v48 = _t81; if(_v48 != 0) { _t121 = _v88; _t94 = _v80; _t98 = _v48; _t82 = _v64; r8 = _v88; _t109 = _t82; _LLINK_NewLEACL(_t54, _t82); _v40 = _t82; if(_v40 != 0) { _PLINK_WriteMcuLink(); _LELTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _v12 = 0; } else { _t54 = DebugPrint(0, _t82, _t94, _t98, _t109, _t121); } } else { _t54 = DebugPrint(0, _t81, _t93, _t97, _t108, _t120); } } else { _t54 = DebugPrint(0, _t80, _t93, _t96, _t107, _t119); } } else { _t54 = DebugPrint(0, _t79, _t93, _t95, _t106, _t118); _PLINK_PiconetClockUsage(); } if(_v12 != 0) { if(_v24 != 0) { _t54 = PNET_DeleteSlavePiconet(_v64 + 30560, _v24); _v24 = 0; } if(_v32 != 0) { _t54 = _PLINK_Delete(_v64, _v32); _v32 = 0; } if(_v48 != 0) { _t54 = _LELTRANS_DelACL(_v48); _v48 = 0; } if(_v40 != 0) { _t54 = _LLINK_Delete(_t54); _v40 = 0; } } return; } LINK_NewLEInitiate( _unknown_ __rax // r53 ) {// addr = 0x0042E371 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v78; // _cfa_ffffffb2 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v85; // _cfa_ffffffab signed int _v87; // _cfa_ffffffa9 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 char _v100; // _cfa_ffffff9c signed short _v104; // _cfa_ffffff98 signed short _v108; // _cfa_ffffff94 intOrPtr _v120; // _cfa_ffffff88 intOrPtr _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 _unknown_ _t86; // _t86 _unknown_ _t111; // _t111 signed short _t115; // _t115 signed short _t117; // _t117 long long _t144; // _t144 long long _t145; // _t145 long long _t146; // _t146 intOrPtr _t162; // _t162 _unknown_ _t163; // _t163 intOrPtr _t164; // _t164 long long _t167; // _t167 long long _t176; // _t176 long long _t177; // _t177 long long _t178; // _t178 long long _t180; // _t180 long long _t191; // _t191 long long _t192; // _t192 _v96 = _t176; _v120 = r8; _v128 = r9; _v100 = sil; _v104 = _t117; _v108 = _t115; _v24 = 7; _v48 = 0; _v72 = 0; _v64 = 0; _v56 = 0; if(_v100 != 0) { _t165 = _v48; _t144 = _v96; _t191 = _v48; _t177 = _t144; _t86 = _PLINK_NewLEACL(); _v56 = _t144; } else { _t162 = _v96; _t165 = _t162 + 55568; _t144 = _v96; _t191 = _t162 + 55568; _t177 = _t144; _t86 = _PLINK_NewLEACL(); _v56 = _t144; } if(_v56 != 0) { _t166 = _v56; _t145 = _v96; _t192 = _v56; _t178 = _t145; _LELTRANS_NewACL(); _v72 = _t145; if(_v72 != 0) { _t164 = _v120; _t167 = _v72; _t146 = _v96; r8 = _v128; _t180 = _t146; _LLINK_NewLEACL(_t86, _t146); _v64 = _t146; if(_v64 != 0) { RtlFillMemory(16, 0, &_v88); _v87 = _v87 & 0xfc | *( *((intOrPtr*)(_v56 + 16)) + 2) & 3; _v85 = _v85 & 255 | 1; _v20 = LLINK_ReadPicoClock(_v96, _v64); _v16 = _v20; _v12 = 4; _v40 = _v12 + _v16; _v84 = _v84 & 4026531840 | _v40 & 0xfc; _v80 = _v108 & 65535; _v78 = _v104 & 65535; _t111 = MCU_Write_Memory(16, &_v88); _PLINK_WriteMcuLink(); _LELTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _v24 = 0; } else { _t111 = DebugPrint(0, _t146, _t164, _t167, _t180, _t192); } } else { _t111 = DebugPrint(0, _t145, _t163, _t166, _t178, _t192); } } else { _t111 = DebugPrint(0, _t144, _t163, _t165, _t177, _t191); } if(_v24 != 0) { if(_v48 != 0) { _t111 = PNET_DeleteSlavePiconet(_v96 + 30560, _v48); _v48 = 0; } if(_v56 != 0) { _t111 = _PLINK_Delete(_v96, _v56); _v56 = 0; } if(_v72 != 0) { _t111 = _LELTRANS_DelACL(_v72); _v72 = 0; } if(_v64 != 0) { _t111 = _LLINK_Delete(_t111); _v64 = 0; } } return; } LINK_NewLETxTest() {// addr = 0x0042E645 long long _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t50; // _t50 char _t58; // _t58 long long _t69; // _t69 long long _t70; // _t70 long long _t71; // _t71 _unknown_ _t79; // _t79 long long _t81; // _t81 long long _t87; // _t87 long long _t88; // _t88 long long _t89; // _t89 long long _t90; // _t90 _unknown_ _t97; // _t97 long long _t98; // _t98 _v48 = _t87; _t43 = _t50; _v52 = _t58; _v56 = _t50; _v12 = 7; _v40 = 0; _v32 = 0; _v24 = 0; _t97 = _v48 + 55568; _t69 = _v48; _t88 = _t69; _PLINK_NewLETest(_v56 & 255); _v24 = _t69; if(_v24 != 0) { _t80 = _v24; _t70 = _v48; _t98 = _v24; _t89 = _t70; _LELTRANS_NewACL(); _v40 = _t70; if(_v40 != 0) { _t81 = _v40; _t71 = _v48; r8d = 0; _t90 = _t71; _LLINK_NewLEACL(_t43, _t71); _v32 = _t71; if(_v32 != 0) { _PLINK_WriteMcuLink(); _LELTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _v12 = 0; } else { _t43 = DebugPrint(0, _t71, __rcx, _t81, _t90, _t98); } } else { _t43 = DebugPrint(0, _t70, __rcx, _t80, _t89, _t98); } } else { _t43 = DebugPrint(0, _t69, __rcx, _t79, _t88, _t97); } if(_v12 != 0) { if(_v24 != 0) { _t43 = _PLINK_Delete(_v48, _v24); _v24 = 0; } if(_v40 != 0) { _t43 = _LELTRANS_DelACL(_v40); _v40 = 0; } if(_v32 != 0) { _t43 = _LLINK_Delete(_t43); _v32 = 0; } } return; } LINK_NewLERxTest() {// addr = 0x0042E7EF long long _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc signed char _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t60; // _t60 char _t70; // _t70 long long _t82; // _t82 long long _t83; // _t83 long long _t84; // _t84 long long _t85; // _t85 _unknown_ _t96; // _t96 long long _t98; // _t98 long long _t105; // _t105 long long _t106; // _t106 long long _t107; // _t107 long long _t108; // _t108 long long _t109; // _t109 _unknown_ _t118; // _t118 long long _t119; // _t119 long long _t120; // _t120 _v64 = _t105; _t52 = _t60; _v68 = _t70; _v72 = _t60; _v12 = 7; _v24 = 0; _v48 = 0; _v40 = 0; _v32 = 0; _t82 = _v64; _t106 = _t82; PNET_NewSlavePiconet(); _v24 = _t82; if(_v24 != 0) { _t119 = _v24; _t83 = _v64; _t107 = _t83; _PLINK_NewLETest(_v72 & 255); _v32 = _t83; if(_v32 != 0) { _t97 = _v32; _t84 = _v64; _t120 = _v32; _t108 = _t84; _LELTRANS_NewACL(); _v48 = _t84; if(_v48 != 0) { _t98 = _v48; _t85 = _v64; r8d = 0; _t109 = _t85; _LLINK_NewLEACL(_t52, _t85); _v40 = _t85; if(_v40 != 0) { _PLINK_WriteMcuLink(); _LELTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _v12 = 0; } else { _t52 = DebugPrint(0, _t85, __rcx, _t98, _t109, _t120); } } else { _t52 = DebugPrint(0, _t84, __rcx, _t97, _t108, _t120); } } else { _t52 = DebugPrint(0, _t83, __rcx, _t96, _t107, _t119); } } else { _t52 = DebugPrint(0, _t82, __rcx, _t96, _t106, _t118); _PLINK_PiconetClockUsage(); } if(_v12 != 0) { if(_v24 != 0) { _t52 = PNET_DeleteSlavePiconet(_v64 + 30560, _v24); _v24 = 0; } if(_v32 != 0) { _t52 = _PLINK_Delete(_v64, _v32); _v32 = 0; } if(_v48 != 0) { _t52 = _LELTRANS_DelACL(_v48); _v48 = 0; } if(_v40 != 0) { _t52 = _LLINK_Delete(_t52); _v40 = 0; } } return; } LINK_Delete( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0042EA08 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v48 = __rdi; _v56 = __rsi; _v12 = 31; _v32 = _v48 + 30560; if(( *(_v56 + 1) & 0xff) <= 15) { goto __rax; } return _v12; } LINK_DelInquiry() {// addr = 0x0042ECFE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t35; // _t35 long long _t39; // _t39 _v16 = _t35; _v24 = _t39; _PLINK_Delete(_v16, *((intOrPtr*)(_v24 + 104))); *((long long*)( *((intOrPtr*)(_v24 + 96)) + 32)) = 0; *((long long*)(_v24 + 104)) = 0; _LTRANS_DelInquiry(); *((long long*)(_v24 + 96)) = 0; _LLINK_DelInquiry(); _v24 = 0; return; } LINK_DelInquiryScan() {// addr = 0x0042ED88 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t35; // _t35 long long _t39; // _t39 _v16 = _t35; _v24 = _t39; _PLINK_Delete(_v16, *((intOrPtr*)(_v24 + 104))); *((long long*)( *((intOrPtr*)(_v24 + 96)) + 32)) = 0; *((long long*)(_v24 + 104)) = 0; _LTRANS_DelInquiryScan(); *((long long*)(_v24 + 96)) = 0; _LLINK_DelInquiryScan(_v16 + 30560, _v24); _v24 = 0; return; } LINK_DelLEACL() {// addr = 0x0042EE12 intOrPtr _v12; // _cfa_fffffff4 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t76; // _t76 long long _t83; // _t83 _v32 = _t76; _v40 = _t83; _v12 = *((intOrPtr*)(_v32 + 191376)); _LMbw_ReAlloc_Driven_By_Master_Connection(); ral_spin_lock(_v32 + 30504, &_v24); if( *((intOrPtr*)(_v40 + 168)) != 0) { *((char*)( *((intOrPtr*)(_v40 + 168)) + 2)) = 0; *((long long*)(_v40 + 168)) = 0; } if( *((intOrPtr*)(_v40 + 176)) != 0) { *((char*)( *((intOrPtr*)(_v40 + 176)) + 2)) = 0; *((long long*)(_v40 + 176)) = 0; } ral_spin_unlock(_v32 + 30504, _v24); _PLINK_Delete(_v32, *((intOrPtr*)(_v40 + 104))); *((long long*)( *((intOrPtr*)(_v40 + 112)) + 16)) = 0; *((long long*)(_v40 + 104)) = 0; _LELTRANS_DelACL( *((intOrPtr*)(_v40 + 112))); *((long long*)(_v40 + 112)) = 0; _LLINK_DelLEACL(); _v40 = 0; return; } LINK_DelLEScan() {// addr = 0x0042EF3F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t35; // _t35 long long _t39; // _t39 _v16 = _t35; _v24 = _t39; _PLINK_Delete(_v16, *((intOrPtr*)(_v24 + 104))); *((long long*)( *((intOrPtr*)(_v24 + 112)) + 16)) = 0; *((long long*)(_v24 + 104)) = 0; _LELTRANS_DelScan(); *((long long*)(_v24 + 112)) = 0; _LLINK_DelLEScan(_v16 + 30560, _v24); _v24 = 0; return; } LINK_PrepareUnPark() {// addr = 0x0042EFC9 char _v9; // _cfa_fffffff7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 intOrPtr _t163; // _t163 long long _t164; // _t164 long long _t165; // _t165 long long _t168; // _t168 long long _t169; // _t169 intOrPtr _t179; // _t179 intOrPtr _t195; // _t195 _unknown_ _t196; // _t196 _unknown_ _t200; // _t200 long long _t201; // _t201 long long _t202; // _t202 long long _t216; // _t216 long long _t217; // _t217 long long _t218; // _t218 long long _t219; // _t219 long long _t220; // _t220 long long _t232; // _t232 _unknown_ _t233; // _t233 long long _t234; // _t234 long long _t235; // _t235 _v80 = _t216; _v88 = _t232; _v16 = 7; _v72 = 0; _v64 = 0; _v56 = 0; _v48 = 0; _v40 = 0; _v32 = 0; _v9 = 0; _t160 = _v88; _v24 = _v88; _v9 = 0; while(_v9 <= 6) { _t160 = _v80 + 30560; _t216 = _t160; PNET_NewLTAddr(); _v72 = _t160; if(_v72 == 0) { L5: _v9 = _v9 + 1; continue; } r8d = *(_v72 + 1) & 0xff; DebugPrint(0, _v72, _t196, _t199, _t216, _t232); _t160 = _v72; if(( *(_v72 + 1) & 255) == 1) { break; } if(_v9 == 6) { break; } else { _t195 = _v80; _t199 = _t195 + 30560; _t160 = _v72; _t232 = _v72; _t216 = _t195 + 30560; PNET_DeleteLTAddr(); _v72 = 0; goto L5; } } if(_v72 != 0) { _t200 = _v80 + 191072; _t163 = _v80; _t197 = _t163 + 55568; _t164 = _v80; _t233 = _t163 + 55568; _t217 = _t164; _PLINK_NewActiveMember(); _v64 = _t164; if(_v64 != 0) { _t201 = _v72; _t198 = _v64; _t165 = _v80; _t234 = _v64; _t218 = _t165; _LTRANS_NewACL(); _v56 = _t165; if(_v56 != 0) { *(_v56 + 40) = *(_v56 + 40) & 0xf8 | *(_v72 + 1) & 7; _t235 = _v56; _t168 = _v80; _t219 = _t168; _LLINK_NewACLC(_t168); _v48 = _t168; if(_v48 != 0) { _t202 = _v48; _t169 = _v80; _t220 = _t169; LINK_New(); _v40 = _t169; if(_v40 != 0) { *((long long*)(_v24 + 432)) = _v48; _LLink_BindACLU(); _PLINK_WriteMcuLink(); _LTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); _LLINK_WriteMcuLink(); _v32 = _v24 + 624; *_v32 = 2047; _t179 = _v24; _t109 = *(_t179 + 117) & 255; *((char*)(_v32 + 4)) = ( *(_t179 + 117) & 255) != 0; *((long long*)(_v32 + 144)) = _v40; BDADDR_Assign( *((intOrPtr*)(_v64 + 24)) + 4, _v24 + 424); _v16 = 0; } else { _t109 = DebugPrint(0, _t169, _t198, _t202, _t220, _t235); } } else { _t109 = DebugPrint(0, _t168, _t198, _t201, _t219, _t235); } } else { _t109 = DebugPrint(0, _t165, _t198, _t201, _t218, _t234); } } else { _t109 = DebugPrint(0, _t164, _t197, _t200, _t217, _t233); } } else { _t109 = DebugPrint(0, _t160, _t196, _t199, _t216, _t232); } if(_v16 != 0) { if(_v72 != 0) { _t109 = PNET_DeleteLTAddr(); _v72 = 0; } if(_v64 != 0) { _t109 = _PLINK_Delete(_v80, _v64); _v64 = 0; } if(_v56 != 0) { _LTRANS_DelACL(); _v56 = 0; } if(_v48 != 0) { _t109 = _LLINK_Delete(_t109); _v48 = 0; } if(_v40 != 0) { _t109 = _LLINK_Delete(_t109); _v40 = 0; } } return; } LLINK_EventCallback() {// addr = 0x0042F3A6 char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 char _v12; // _cfa_fffffff4 char _v13; // _cfa_fffffff3 char _v20; // _cfa_ffffffec signed long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed int _t88; // _t88 signed char _t126; // _t126 signed long long _t142; // _t142 signed long long _t144; // _t144 signed long long _t157; // _t157 _v32 = _t174; _v40 = __rsi; _v44 = _t126; _v12 = 0; _v20 = 31; if(_v40 != 0) { _t142 = _v40; _v11 = *(_t142 + 5) & 255; _v10 = _v11 & 255; _t88 = _v10 & 255; if(_t88 == 2) { if(_v44 != 20) { L27: L28: if(_v20 != 0) { *__rsp = _v11 & 255; r9d = _v10 & 255; r8d = _v44 & 255; DebugPrint(0, _v40, _t169, _t171, _t174, __rsi); } else { *__rsp = _v11 & 255; r9d = _v10 & 255; r8d = _v44 & 255; DebugPrint(0, _v40, _t169, _t171, _t174, __rsi); } return; } _v11 = 4; *((char*)(_v40 + 5)) = _v11 & 255; _t171 = _v40; _t144 = _v32; __rsi = _v40; _t174 = _t144; LINK_Delete(_t144, __rsi); _v13 = 0; while(_v13 <= 26) { _t171 = _v32; _t144 = _t144 * 184 + _v32 + 33792; if(( *(_t144 + 8) & 255) == 0) { L21: _v13 = _v13 + 1; continue; } _t171 = _v32; _t144 = _t144 * 184 + _v32 + 33792; if(( *(_t144 + 13) & 255) != 3) { goto L21; } _v11 = 2; *(_t144 * 184 + _v32 + 0x840d) = _v11 & 255; _t171 = _v32; _v9 = QUEUE_GetPktSeq( *((intOrPtr*)((_t144 * 184 + _v32) * 184 + _v32 + 33848))); _t157 = _v32; _t169 = _t157 + 33800 + _t157 * 184; __rsi = _t157 + 33800 + _t157 * 184; _t174 = _v32; LCCMD_LinkFlushRequest(); break; } _v20 = 0; goto L27; } if(_t88 == 3) { goto L28; } if(_t88 != 1) { goto L28; } if(_v44 != 0) { L26: goto L28; } _v13 = 0; while(_v13 <= 26) { _t171 = _v32; _t142 = _t142 * 184 + _v32 + 33792; if(( *(_t142 + 8) & 255) == 0) { L10: _v13 = _v13 + 1; continue; } _t171 = _v32; _t142 = _t142 * 184 + _v32 + 33792; if(( *(_t142 + 13) & 255) != 2) { goto L10; } _v12 = 1; break; } if(_v12 != 1) { _v11 = 2; *((char*)(_v40 + 5)) = _v11 & 255; _v9 = QUEUE_GetPktSeq( *((intOrPtr*)(_v40 + 48))); _t169 = _v40; __rsi = _v40; _t174 = _v32; LCCMD_LinkFlushRequest(); } else { _v11 = 3; *(_v40 + 5) = _v11 & 255; } _v20 = 0; goto L26; } return; } LLINK_ChangeLCLinkPriority( signed char __edx // r3 ) {// addr = 0x0042F664 intOrPtr _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed int _t60; // _t60 long long _t98; // _t98 long long _t101; // _t101 _v32 = _t98; _v40 = _t101; _t39 = _t60; _v44 = __edx; _v48 = _t39; _v16 = 0; _v24 = &_v16; _v12 = 0; if((_t39 & 1) == 0) { _v12 = 4294967295; _v16 = _v12; } else { RT_PCI_IO_READ32(); _v16 = _v12; } *(_v24 + 1) = *(_v24 + 1) & 0xfe | _v44 & 1; *(_v24 + 1) = *(_v24 + 1) & 0xfd | __rdx + __rdx; if((_v48 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } LLINK_SanityCheck() {// addr = 0x0042F782 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; _PLINK_SanityCheck(); return; } LINK_InitLEAdvDcg() {// addr = 0x0042F79C intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v30; // _cfa_ffffffe2 short _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v37; // _cfa_ffffffdb signed int _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t57; // _t57 long long _t75; // _t75 long long _t79; // _t79 _v48 = _t75; _v56 = _t79; _v60 = _t57; RtlFillMemory(16, 0, &_v40); _v39 = _v39 & 0xfc | *( *((intOrPtr*)( *((intOrPtr*)(_v56 + 104)) + 16)) + 2) & 3; _v37 = _v37 & 255 | 1; _v20 = LLINK_ReadPicoClock(_v48, _v56); _v16 = _v20; _v12 = 4; _v24 = _v12 + _v16; _v36 = _v36 & 4026531840 | _v24 & 0xfc; _v32 = 2; _v30 = _v60 & 255; __ecx = 16; MCU_Write_Memory(16, &_v40); return; } _LELTRANS_Initialise() {// addr = 0x0042F884 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t35; // _t35 _v32 = _t35; __esi = 0; RtlFillMemory(128, 0, _v32 + 2592); *((char*)(_v32 + 2593)) = 0; *((char*)(_v32 + 2594)) = 0; _v9 = 1; while(_v9 <= 3) { *(_v32 + ((_v9 & 255) + 81 << 5) + 1) = 1; *((char*)(((_v9 & 255) + 81 << 5) + _v32 + 2)) = __al; _v9 = _v9 + 1; } return; } _LELTRANS_NewScan() {// addr = 0x0042F90B signed char* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t44; // _t44 _v32 = __rdi; _v40 = __rsi; _v24 = _v32 + 33152; _t34 = _v24; if(( *_v24 & 255) != 0) { DebugPrint(0, _t34, __rcx, _t44, __rdi, __rsi); } else { *_v24 = 1; (_v24[0x10]) = _v40; (_v24[8]) = 0; _v16 = &(_v24[0x18]); *_v16 = 0; (_v16[2]) = (_v16[2]) & 0xf0 | *(_v40 + 2) & 0xf; } return; } _LELTRANS_NewACL() {// addr = 0x0042F9AC signed char _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _v48 = __rdi; _v56 = __rsi; _v32 = 0; _v9 = 1; while(_v9 <= 3) { _t57 = (_v9 & 255) + 1036 << 5; _t44 = _v48 + ((_v9 & 255) + 1036 << 5); if(( *(_v48 + ((_v9 & 255) + 1036 << 5)) & 255) != 0) { _v9 = _v9 + 1; continue; } else { _v32 = (_v48 << 5) + _v48 + 33152; *_v32 = 1; _t57 = _v56; *(_v32 + 16) = _v56; *(_v32 + 8) = 0; _v24 = _v32 + 24; *_v24 = 0; _t44 = _v24; (_v24[2]) = (_v24[2]) & 0xf0 | *(_v56 + 2) & 0xf; } break; } if(_v32 == 0) { DebugPrint(0, _t44, __rcx, _t57, __rdi, __rsi); } return; } _LELTRANS_DelScan() {// addr = 0x0042FA94 signed char _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t29; // _t29 signed char* _t31; // _t31 _v32 = _t29; _v40 = _t31; _v9 = 0; if(_v40 != 0 && ((_v40[1]) & 255) == 0 && ( *_v40 & 255) != 0) { *_v40 = 0; _v24 = &(_v40[0x18]); *_v24 = 0; _LELTRANS_WriteMcuLink(); _v9 = 1; } return _v9 & 255; } _LELTRANS_DelACL( signed char* __rdi // r57 ) {// addr = 0x0042FB00 signed char _v9; // _cfa_fffffff7 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v9 = 0; if(( *_v32 & 255) != 0) { *_v32 = 0; _v9 = 1; } return _v9 & 255; } _LELTRANS_WriteMcuLink() {// addr = 0x0042FB28 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t12; // _t12 long long _t28; // _t28 long long _t30; // _t30 _v16 = _t28; _v24 = _t30; if((_t12 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } _LINK_DecideNinquiry( _unknown_ __rax, // r53 long long __rdi // r57 ) {// addr = 0x0042FB8C short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t40; // _t40 __rdi = __rdi; _t40 = __rax; _v32 = __rdi; _v10 = 0; _v14 = 0; while(_v14 <= 26) { _v14 = _v14 + 1; } if(_v10 != 0) { if(_v10 != 1) { _v12 = 768; } else { _v12 = 512; } } else { _v12 = 256; } _v12 = _v12 + 2; return _v12 & 65535; } _LINK_DesireNpage( signed char __esi, // r5 signed long long __rax, // r53 long long __rdi // r57 ) {// addr = 0x0042FC57 signed short _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed short _v16; // _cfa_fffffff0 signed long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t43; // _t43 signed long long _t56; // _t56 __rdi = __rdi; _t56 = __rax; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v12 = 0; _v10 = 0; _v16 = 0; L6: L6: if(_v16 <= 26) { _t56 = _t56 * 184 + _v32 + 3232; if(( *(_t56 + 8) & 255) != 0) { _t56 = _t56 * 184 + _v32 + 3232; if(( *(_t56 + 9) & 255) == 5) { _v24 = *(_t56 * 184 + _v32 + 3312); _t56 = _v24; if(( *(_t56 + 1) & 255) == 7) { _v10 = _v10 + 1; } } } goto L5; } else { _t43 = _v36 & 255; if(_t43 == 1) { if(_v10 != 2) { if(_v10 != 1) { _v12 = 128; } else { _v12 = 256; } } else { _v12 = 384; } } else { if(_t43 == 2) { if(_v10 != 2) { if(_v10 != 1) { _v12 = 256; } else { _v12 = 512; } } else { _v12 = 768; } } else { if(_t43 == 0) { if(_v10 != 2) { if(_v10 != 1) { _v12 = 1; } else { _v12 = 2; } } else { _v12 = 3; } } } } } return _v12 & 65535; L5: _v16 = _v16 + 1; goto L6; } _LLINK_GetAvailableConnHandle( signed long long __rax, // r53 long long __rdi // r57 ) {// addr = 0x0042FD7F char _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t25; // _t25 __rdi = __rdi; _t25 = __rax; _v32 = __rdi; _v9 = 24; _v12 = 20; while(_v9 <= 26) { _t25 = _t25 * 184 + _v32 + 3232; if(( *(_t25 + 8) & 255) == 0) { L4: _v9 = _v9 + 1; } else { _t25 = _t25 * 184 + _v32 + 3232; if(( *(_t25 + 16) & 65535) != _v12) { goto L4; } else { _v12 = _v12 + 1; _v9 = 24; } } } return _v12 & 65535; } _LLINK_Initialise() {// addr = 0x0042FDF4 signed char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t149; // _t149 signed long long _t152; // _t152 signed long long _t156; // _t156 signed long long _t160; // _t160 signed long long _t164; // _t164 signed long long _t178; // _t178 _v32 = _t178; RtlFillMemory(4968, 0, _v32 + 3240); RtlFillMemory(84, 0, _v32 + 8208); RtlFillMemory(224, 0, _v32 + 8296); RtlFillMemory(12, 0, _v32 + 8520); RtlFillMemory(12, 0, _v32 + 8532); RtlFillMemory(12, 0, _v32 + 8544); RtlFillMemory(3720, 0, _v32 + 8560); RtlFillMemory(11376, 0, _v32 + 12280); *((char*)(_v32 + 3241)) = 0; *((char*)(_v32 + 3251)) = 0; *((char*)(_v32 + 3425)) = 1; *((char*)(_v32 + 3435)) = 1; *((char*)(_v32 + 3609)) = 2; *((char*)(_v32 + 3619)) = 2; *((char*)(_v32 + 3793)) = 3; *((char*)(_v32 + 3803)) = 3; *((char*)(_v32 + 3977)) = 4; *((char*)(_v32 + 3987)) = 4; *((char*)(_v32 + 7473)) = 23; _t149 = _v32; *((char*)(_t149 + 7483)) = 23; _v9 = 5; while(_v9 <= 7) { _t152 = _t149 * 184 + _v32 + 3232; *(_t152 + 9) = 5; _t149 = _t152 * 184 + _v32; *(_t149 + 0xcb3) = _v9 & 255; _v9 = _v9 + 1; } _v9 = 8; while(_v9 <= 14) { _t156 = _t149 * 184 + _v32 + 3232; *(_t156 + 9) = 8; _t149 = _t156 * 184 + _v32; *(_t149 + 0xcb3) = _v9 & 255; _v9 = _v9 + 1; } _v9 = 15; while(_v9 <= 21) { _t160 = _t149 * 184 + _v32 + 3232; *(_t160 + 9) = 15; _t149 = _t160 * 184 + _v32; *(_t149 + 0xcb3) = _v9 & 255; _v9 = _v9 + 1; } _v9 = 24; while(_v9 <= 25) { _t164 = _t149 * 184 + _v32 + 3232; *(_t164 + 9) = 24; _t149 = _t164 * 184 + _v32; *(_t149 + 0xcb3) = _v9 & 255; _v9 = _v9 + 1; } _v12 = 16; return; } _LLINK_NewInquiry() {// addr = 0x004300AC signed char* _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 intOrPtr _t91; // _t91 long long _t107; // _t107 _unknown_ _t126; // _t126 long long _t131; // _t131 intOrPtr _t132; // _t132 long long _t134; // _t134 _unknown_ _t135; // _t135 _v32 = _t131; _v40 = _t134; _v24 = 0; _t89 = _v32; if(( *(_v32 + 33800) & 255) != 0) { _t68 = DebugPrint(0, _t89, __rcx, _t126, _t131, _t134); } else { _t91 = _v32; _t127 = _t91 + 33800; _t135 = _t91 + 33800; _t132 = _v32; _LLINK_ReadMcuLink(); _t93 = _v32; if(( *(_v32 + 33920) & 1) != 0) { DebugPrint(0, _t93, __rcx, _t127, _t132, _t135); } else { _v24 = _v32 + 33800; *_v24 = 1; *((char*)(_v24 + 2)) = 1; *(_v24 + 3) = 255; *(_v24 + 4) = 0; *(_v24 + 5) = 0; *(_v24 + 8) = 0; *(_v24 + 10) = 0; *(_v24 + 6) = 0; *(_v24 + 12) = 0; *(_v24 + 13) = 0; _t107 = _v32 + 72952; QUEUE_New(40, _t107, _t107); *((long long*)(_v24 + 32)) = _t107; *(_v24 + 40) = 0; *(_v24 + 48) = 0; *(_v24 + 64) = 0; *(_v24 + 72) = 0; *((long long*)(_v24 + 96)) = _v40; *((long long*)(_v24 + 104)) = *((intOrPtr*)(_v40 + 32)); _v16 = _v24 + 120; *_v16 = *_v16 & 255 | 1; *_v16 = *_v16 & 0xfd; *_v16 = *_v16 & 0xef; *_v16 = *_v16 & 0xdf; (_v16[2]) = *( *((intOrPtr*)(_v24 + 96)) + 2) & 255; (_v16[3]) = 0; (_v16[4]) = 255; } } return; } _LLINK_NewInquiryScan() {// addr = 0x0043026C signed char* _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t143; // _t143 intOrPtr _t144; // _t144 signed char _t145; // _t145 signed char* _t146; // _t146 _v32 = _t143; _v40 = _t145; _v24 = _v32 + 33984; _t140 = _v24; _t146 = _v24; _t144 = _v32; _LLINK_ReadMcuLink(); if(( *_v24 & 255) != 0 || ((_v24[0x78]) & 1) != 0) { r9d = (_v24[0x78]) & 1; r8d = *_v24 & 0xff; DebugPrint(0, _v24, __rcx, _t140, _t144, _t146); _v24 = 0; } else { *_v24 = 1; (_v24[2]) = 1; (_v24[3]) = 255; (_v24[4]) = 0; (_v24[5]) = 0; (_v24[8]) = 0; (_v24[0xa]) = 0; (_v24[6]) = 0; (_v24[0xc]) = 0; (_v24[0xd]) = 0; (_v24[0x20]) = 0; (_v24[0x30]) = 0; (_v24[0x48]) = 0; (_v24[0x60]) = _v40; (_v24[0x68]) = *(_v40 + 32); _v16 = &(_v24[0x78]); *_v16 = *_v16 & 255 | 1; *_v16 = *_v16 & 0xfd; *_v16 = *_v16 & 0xef; *_v16 = *_v16 & 0xdf; *_v16 = *_v16 & 0x3f; (_v16[1]) = (_v16[1]) & 0xfe; (_v16[1]) = (_v16[1]) & 0xfd; (_v16[2]) = *((_v24[0x60]) + 2) & 255; (_v16[3]) = 1; (_v16[4]) = 255; } return; } _LLINK_NewASBU() {// addr = 0x0043042B signed char* _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t158; // _t158 long long _t195; // _t195 intOrPtr _t196; // _t196 signed char _t198; // _t198 signed char* _t199; // _t199 _v48 = _t195; _v56 = _t198; _v32 = _v48 + 34168; _t190 = _v32; _t199 = _v32; _t196 = _v48; _LLINK_ReadMcuLink(); if(( *_v32 & 255) != 0 || ((_v32[0x78]) & 1) != 0) { r9d = (_v32[0x78]) & 1; r8d = *_v32 & 0xff; DebugPrint(0, _v32, __rcx, _t190, _t196, _t199); _v32 = 0; } else { _v24 = _v48 + 39104; *_v32 = 1; (_v32[2]) = 0; (_v32[3]) = 255; (_v32[4]) = 0; (_v32[5]) = 0; (_v32[8]) = 0; (_v32[0xe]) = 0; (_v32[0x10]) = 0; (_v32[0x11]) = 0; (_v32[0x20]) = 0; (_v32[0x28]) = 0; _t158 = _v48 + 72952; QUEUE_New(25, _t158, _t158); (_v32[0x30]) = _t158; (_v32[0x40]) = 0; (_v32[0x60]) = _v56; (_v32[0x68]) = *(_v56 + 32); (_v32[0xa]) = 0; (_v32[6]) = 0; (_v32[0xc]) = 1; (_v32[0xd]) = 1; (_v32[0x50]) = 0; (_v32[0x58]) = 0; (_v32[0x48]) = _v24; *_v24 = 3; *((char*)(_v24 + 4)) = 3; *(_v24 + 1) = 1; _v16 = &(_v32[0x78]); *_v16 = *_v16 & 255 | 1; *_v16 = *_v16 & 0xfd; *_v16 = *_v16 & 255 | 16; *_v16 = *_v16 & 255 | 32; *_v16 = *_v16 & 0x3f; (_v16[1]) = (_v16[1]) & 0xfe; (_v16[1]) = (_v16[1]) & 0xfd; (_v16[2]) = *((_v32[0x60]) + 2) & 255; (_v16[9]) = (_v16[9]) & 0xe0; (_v16[8]) = 1; (_v16[3]) = 2; (_v16[4]) = 255; (_v16[0xc]) = 0; } return; } _LLINK_NewPSBU() {// addr = 0x0043068D signed char* _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t159; // _t159 long long _t196; // _t196 intOrPtr _t197; // _t197 signed char _t199; // _t199 signed char* _t200; // _t200 _v48 = _t196; _v56 = _t199; _v32 = _v48 + 34352; _t191 = _v32; _t200 = _v32; _t197 = _v48; _LLINK_ReadMcuLink(); if(( *_v32 & 255) != 0 || ((_v32[0x78]) & 1) != 0) { r9d = (_v32[0x78]) & 1; r8d = *_v32 & 0xff; DebugPrint(0, _v32, __rcx, _t191, _t197, _t200); _v32 = 0; } else { _v24 = _v48 + 39092; *_v32 = 1; (_v32[2]) = 0; (_v32[3]) = 255; (_v32[4]) = 0; (_v32[5]) = 0; (_v32[8]) = 0; (_v32[0xe]) = 0; (_v32[0x10]) = 0; (_v32[0x11]) = 0; (_v32[0x20]) = 0; (_v32[0x28]) = 0; _t159 = _v48 + 72952; QUEUE_New(25, _t159, _t159); (_v32[0x30]) = _t159; (_v32[0x40]) = 0; (_v32[0x60]) = _v56; (_v32[0x68]) = *(_v56 + 32); (_v32[0xa]) = 0; (_v32[6]) = 0; (_v32[0xc]) = 1; (_v32[0xd]) = 1; (_v32[0x50]) = 0; (_v32[0x58]) = 0; (_v32[0x48]) = _v24; *_v24 = 3; *(_v24 + 4) = 3; *(_v24 + 1) = 1; _v16 = &(_v32[0x78]); *_v16 = *_v16 & 255 | 1; *_v16 = *_v16 & 0xfd; *_v16 = *_v16 & 255 | 16; *_v16 = *_v16 & 255 | 32; *_v16 = *_v16 & 0x3f; (_v16[1]) = (_v16[1]) & 0xfe; (_v16[1]) = (_v16[1]) & 0xfd; (_v16[2]) = *((_v32[0x60]) + 2) & 255; (_v16[9]) = (_v16[9]) & 0xe0 | 1; (_v16[8]) = 1; (_v16[3]) = 3; (_v16[4]) = 255; (_v16[0xc]) = 0; } return; } _LLINK_NewPSBC() {// addr = 0x004308F2 signed char* _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t156; // _t156 long long _t193; // _t193 intOrPtr _t194; // _t194 signed char _t196; // _t196 signed char* _t197; // _t197 _v48 = _t193; _v56 = _t196; _v32 = _v48 + 34536; _t188 = _v32; _t197 = _v32; _t194 = _v48; _LLINK_ReadMcuLink(); if(( *_v32 & 255) != 0 || ((_v32[0x78]) & 1) != 0) { r9d = (_v32[0x78]) & 1; r8d = *_v32 & 0xff; DebugPrint(0, _v32, __rcx, _t188, _t194, _t197); _v32 = 0; } else { _v24 = _v48 + 39080; *_v32 = 1; (_v32[2]) = 0; (_v32[3]) = 255; (_v32[4]) = 0; (_v32[5]) = 0; (_v32[0xe]) = 0; (_v32[0x10]) = 0; (_v32[0x11]) = 0; (_v32[0x20]) = 0; (_v32[0x28]) = 0; _t156 = _v48 + 72952; QUEUE_New(10, _t156, _t156); (_v32[0x30]) = _t156; (_v32[0x40]) = 0; (_v32[0x60]) = _v56; (_v32[0x68]) = *(_v56 + 32); (_v32[0xa]) = 0; (_v32[6]) = 0; (_v32[0xc]) = 1; (_v32[0xd]) = 1; (_v32[0x50]) = 0; (_v32[0x58]) = 0; (_v32[0x48]) = _v24; *_v24 = 3; *((char*)(_v24 + 4)) = 3; *(_v24 + 1) = 1; _v16 = &(_v32[0x78]); *_v16 = *_v16 & 255 | 1; *_v16 = *_v16 & 0xfd; *_v16 = *_v16 & 255 | 16; *_v16 = *_v16 & 255 | 32; *_v16 = *_v16 & 0x3f; (_v16[1]) = (_v16[1]) & 0xfe; (_v16[1]) = (_v16[1]) & 0xfd; (_v16[2]) = *((_v32[0x60]) + 2) & 255; (_v16[9]) = (_v16[9]) & 0xe0 | 2; (_v16[8]) = 1; (_v16[3]) = 4; (_v16[4]) = 255; (_v16[0xc]) = 0; } return; } _LLINK_NewSCO( _unknown_ __eax, // r0 signed long long __rax // r53 ) {// addr = 0x00430B4D char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t209; // _t209 signed char _t216; // _t216 signed long long _t262; // _t262 signed long long _t269; // _t269 signed long long _t272; // _t272 long long _t291; // _t291 long long _t294; // _t294 intOrPtr _t308; // _t308 signed int _t369; // _t369 signed long long _t370; // _t370 long long _t374; // _t374 _unknown_ _t375; // _t375 _t262 = __rax; _v48 = _t369; _v56 = _t374; _t175 = _t209; _v60 = _t216; _v64 = _t209; _v40 = 0; if(_v56 == 0) { } else { _v10 = 0; while(_v10 <= 2) { _t262 = _t262 * 184 + _v48 + 33792; _t175 = *(_t262 + 8) & 255; if(( *(_t262 + 8) & 255) != 0) { L6: _v10 = _v10 + 1; continue; } else { _t269 = _v48; _t375 = _v48 + 33800 + 920 + _v48 * 184; _t370 = _t269; _LLINK_ReadMcuLink(); _t272 = _t269 * 184 + _v48 + 33904; if(( *(_t272 + 16) & 1) != 1) { _v32 = _v48 * 1240 + _v48 + 39120; _v40 = 920 + _v48 * 184 + _v48 + 33800; DebugPrint(0, _v40, __rcx, _v48 + 33800, _t370, _t375); *_v40 = 1; *(_v40 + 2) = 1; *(_v40 + 3) = 255; *(_v40 + 4) = 0; *(_v40 + 5) = 0; *(_v40 + 8) = 0; *(_v40 + 14) = 0; *(_v40 + 16) = 0; *(_v40 + 17) = 0; _t291 = _v48 + 72952; QUEUE_New(34, _t291, _t291); *((long long*)(_v40 + 32)) = _t291; *(_v40 + 40) = 0; _t294 = _v48 + 72952; QUEUE_New(37, _t294, _t294); *((long long*)(_v40 + 48)) = _t294; *(_v40 + 64) = 0; *((long long*)(_v40 + 96)) = *((intOrPtr*)(_v56 + 96)); *((long long*)(_v40 + 104)) = *((intOrPtr*)(_v56 + 104)); *(_v40 + 10) = 0; *(_v40 + 6) = 0; *(_v40 + 12) = 1; *(_v40 + 13) = 1; *((long long*)(_v40 + 72)) = _v32; *((long long*)(_v40 + 80)) = _v56; *(_v40 + 88) = 0; *((long long*)(_v40 + 72)) = _v32; _t308 = _v32; *(_t308 + 1) = _v60 & 255; *(_v32 + 2) = *(_t308 + (((_v60 & 255) >> 4 & 3) << 4) + _t308 + (((_v60 & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 65535; *(_v32 + 3) = _v64 & 255; *(_v32 + 4) = 0; *(_v32 + 84) = 0; *(_v32 + 88) = 0; *(_v32 + 92) = 0; *(_v32 + 96) = 0; *((char*)(_v32 + 72)) = 2; *((char*)(_v32 + 73)) = 2; *((char*)(_v32 + 74)) = 2; *((char*)(_v32 + 75)) = 2; *(_v32 + 76) = 0; *(_v32 + 80) = 0; *((long long*)(_v32 + 1128)) = _v32 + 1144; *((long long*)(_v32 + 1136)) = _v32 + 1174; _v24 = _v40 + 120; *_v24 = *_v24 & 255 | 1; *_v24 = *_v24 & 0xfd; *_v24 = *_v24 & 255 | 16; *_v24 = *_v24 & 255 | 32; *_v24 = *_v24 & 0x3f; (_v24[1]) = (_v24[1]) & 255 | 1; (_v24[1]) = (_v24[1]) & 255 | 2; (_v24[2]) = *( *((intOrPtr*)(_v40 + 96)) + 2) & 255; (_v24[3]) = *(_v56 + 11) & 255; (_v24[4]) = 255; (_v24[9]) = (_v24[9]) & 0xe0 | (_v10 & 255) + 3 & 0x1f; (_v24[8]) = 1; (_v24[5]) = (_v24[5]) & 0xc0 | _v60 & 0x3f; (_v24[5]) = (_v24[5]) & 0x3f; (_v24[0xc]) = 0; _v9 = PDMA_Is_TxRing_Empty( *(_v40 + 129) & 0x1f, _v48); } else { _t262 = _t272 * 184 + _v48 + 33792; _t175 = DebugPrint(0, _t262, __rcx, _v48, _t370, _t375); goto L6; } } goto L8; } } L8: return; } _LLINK_NewESCO( _unknown_ __eax, // r0 signed short _a8, // _cfa_8 signed char _a16 // _cfa_10 ) {// addr = 0x00430FC2 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed short _v80; // _cfa_ffffffb0 signed char _v84; // _cfa_ffffffac _unknown_ __rbp; // r59 signed int _t227; // _t227 signed long long _t293; // _t293 signed long long _t300; // _t300 signed long long _t303; // _t303 long long _t322; // _t322 long long _t325; // _t325 long long _t383; // _t383 signed int _t401; // _t401 signed long long _t402; // _t402 long long _t406; // _t406 _unknown_ _t407; // _t407 _v48 = _t401; _v56 = _t406; _v64 = _t383; _t190 = _t227; _v68 = _t227; _v72 = dil; _v76 = r9d; _v80 = _a8; _v84 = _a16; _v40 = 0; if(_v56 == 0 || _v64 == 0) { L9: return; } else { _v10 = 0; while(_v10 <= 2) { _t293 = _t293 * 184 + _v48 + 33792; _t190 = *(_t293 + 8) & 255; if(( *(_t293 + 8) & 255) != 0) { L7: _v10 = _v10 + 1; continue; } _t300 = _v48; _t407 = _v48 + 33800 + 920 + _v48 * 184; _t402 = _t300; _LLINK_ReadMcuLink(); _t303 = _t300 * 184 + _v48 + 33904; if(( *(_t303 + 16) & 1) != 1) { _v32 = _v48 * 3792 + _v48 + 42840; _v40 = 920 + _v48 * 184 + _v48 + 33800; DebugPrint(0, _v40, __rcx, _v48 + 33800, _t402, _t407); *_v40 = 1; *(_v40 + 2) = 1; *(_v40 + 3) = 255; *(_v40 + 4) = 0; *(_v40 + 5) = 0; *(_v40 + 8) = 0; *(_v40 + 14) = 0; *(_v40 + 16) = 0; *(_v40 + 17) = 0; _t322 = _v48 + 72952; QUEUE_New(34, _t322, _t322); *((long long*)(_v40 + 32)) = _t322; *(_v40 + 40) = 0; _t325 = _v48 + 72952; QUEUE_New(37, _t325, _t325); *((long long*)(_v40 + 48)) = _t325; *(_v40 + 64) = 0; *((long long*)(_v40 + 96)) = _v64; *((long long*)(_v40 + 104)) = *((intOrPtr*)(_v64 + 32)); *(_v40 + 10) = 0; *(_v40 + 6) = 0; *(_v40 + 12) = 1; *(_v40 + 13) = 1; *((long long*)(_v40 + 72)) = _v32; *((long long*)(_v40 + 80)) = _v56; *(_v40 + 88) = 0; *((long long*)(_v40 + 72)) = _v32; *(_v32 + 1) = _v68 & 255; *(_v32 + 2) = _v72 & 255; *(_v32 + 4) = _v76 & 65535; *(_v32 + 6) = _v80 & 65535; *(_v32 + 3) = _v84 & 255; *(_v32 + 8) = 0; *(_v32 + 1108) = 0; *(_v32 + 1112) = 0; *(_v32 + 1116) = 0; *(_v32 + 1120) = 0; *((char*)(_v32 + 1096)) = 2; *((char*)(_v32 + 1097)) = 2; *((char*)(_v32 + 1098)) = 2; *((char*)(_v32 + 1099)) = 2; *(_v32 + 1100) = 0; *(_v32 + 1104) = 0; *((long long*)(_v32 + 2152)) = _v32 + 2168; *((long long*)(_v32 + 2160)) = _v32 + 2708; _v24 = _v40 + 120; *_v24 = *_v24 & 255 | 1; *_v24 = *_v24 & 255 | 4; *_v24 = *_v24 & 0xfd; *_v24 = *_v24 & 255 | 16; *_v24 = *_v24 & 255 | 32; *_v24 = *_v24 & 0x3f | ((_v68 & 255) >> 4 & 3) << 6; (_v24[1]) = (_v24[1]) & 255 | 1; (_v24[1]) = (_v24[1]) & 255 | 2; (_v24[2]) = *( *((intOrPtr*)(_v40 + 96)) + 2) & 255; (_v24[3]) = *(_v56 + 11) & 255; (_v24[4]) = 255; (_v24[9]) = (_v24[9]) & 0xe0 | (_v10 & 255) + 3 & 0x1f; (_v24[8]) = 1; (_v24[5]) = (_v24[5]) & 0xc0 | _v72 & 0x3f; (_v24[6]) = _v76 & 65535; (_v24[5]) = (_v24[5]) & 0x3f | (LCPKT_GeSlotOccupancy(_v68 & 255, _v24) & 3) << 6; (_v24[0xc]) = 0; _v9 = PDMA_Is_TxRing_Empty( *(_v40 + 129) & 0x1f, _v48); goto L9; } _t293 = _t303 * 184 + _v48 + 33792; _t190 = DebugPrint(0, _t293, __rcx, _v48, _t402, _t407); goto L7; } goto L9; } } _LLINK_NewACLU( signed long long __rax // r53 ) {// addr = 0x004314AE char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed char _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed int _v55; // _cfa_ffffffc9 signed char _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed long long _t281; // _t281 signed long long _t287; // _t287 signed long long _t290; // _t290 signed long long _t310; // _t310 signed long long _t313; // _t313 signed char* _t347; // _t347 _t267 = __rax; _v64 = _t370; _v72 = __rsi; _v11 = 0; _v10 = 0; _v40 = 0; _v56 = 0; if(_v72 == 0) { } else { _v12 = 0; while(_v12 <= 6) { _t359 = _v64; _t267 = _t267 * 184 + _v64 + 33792; _t177 = *(_t267 + 8) & 255; if(( *(_t267 + 8) & 255) != 0) { L9: _v12 = _v12 + 1; continue; } else { _t287 = _v64; __rsi = _v64 + 33800 + 1472 + _v64 * 184; _t370 = _t287; _LLINK_ReadMcuLink(); _t290 = _t287 * 184 + _v64 + 33904; if(( *(_t290 + 16) & 1) != 1) { _v32 = (_v64 << 5) + _v64 + 38856; _v40 = 1472 + _v64 * 184 + _v64 + 33800; _v16 = 0; if((_v12 & 1) == 0) { _v16 = 4294967295; _v56 = _v16; } else { __rcx = &_v16; __rsi = __rcx; RT_PCI_IO_READ32(); _v56 = _v16; } _v11 = (_v55 & 255) >> 6 & 1; _v10 = (_v55 & 255) >> 7; *_v40 = 1; *(_v40 + 2) = 1; *((char*)(_v40 + 3)) = 255; *(_v40 + 4) = 0; *(_v40 + 5) = 0; *(_v40 + 8) = 0; *(_v40 + 14) = 0; *(_v40 + 16) = 0; *(_v40 + 17) = 0; _t310 = _v64 + 72952; QUEUE_New(18, _t310, _t310); *(_v40 + 32) = _t310; *(_v40 + 40) = 0; _t313 = _v64 + 72952; QUEUE_New(25, _t313, _t313); *(_v40 + 48) = _t313; *(_v40 + 64) = 0; *(_v40 + 96) = (_v72[0x60]); *(_v40 + 10) = 0; *(_v40 + 6) = 0; *(_v40 + 12) = 1; *(_v40 + 13) = 1; *(_v40 + 72) = 0; *(_v40 + 80) = _v72; *(_v40 + 88) = 0; *(_v40 + 104) = (_v72[0x68]); _t359 = _v32; *(_v40 + 72) = _t359; *_v32 = 3; *((char*)(_v32 + 4)) = 3; *(_v32 + 1) = 1; *(_v32 + 15) = 0; *(_v32 + 16) = 0; *(_v32 + 20) = 0; *(_v32 + 17) = 0; _v24 = _v40 + 120; *_v24 = *_v24 & 255 | 1; *_v24 = *_v24 & 0xfd; *_v24 = *_v24 & 255 | 16; *_v24 = *_v24 & 255 | 32; *_v24 = *_v24 & 0x3f; (_v24[1]) = (_v24[1]) & 0xfe | _v11 & 1; (_v24[1]) = (_v24[1]) & 0xfd | _t359 + _t359; (_v24[2]) = *( *(_v40 + 96) + 2) & 255; _t347 = _v24; (_t347[3]) = (_v72[0xb]) & 255; (_v24[4]) = &(_t347[8]); (_v24[9]) = (_v24[9]) & 0xe0 | (_v12 & 255) + 6 & 0x1f; (_v24[8]) = 1; (_v24[0xc]) = 0; _t267 = _v64; _t370 = _v64; _v9 = PDMA_Is_TxRing_Empty( *(_v40 + 129) & 0x1f, _v64); } else { _t359 = _v64; _t267 = _t290 * 184 + _v64 + 33792; _t177 = DebugPrint(0, _t267, __rcx, _v64, _t370, __rsi); goto L9; } } goto L11; } } L11: if(_v40 == 0) { } else { if( *(_v40 + 32) == 0) { L14: if( *(_v40 + 32) != 0) { _t370 = *(_v40 + 32); QUEUE_Delete(); *(_v40 + 32) = 0; } if( *(_v40 + 48) != 0) { _t370 = *(_v40 + 48); QUEUE_Delete(); *(_v40 + 48) = 0; } _t267 = _v40; *_v40 = 0; _v40 = 0; } else { _t281 = _v40; _t267 = *(_t281 + 48); if( *(_t281 + 48) == 0) { goto L14; } } } if(_v40 == 0) { _t177 = DebugPrint(0, _t267, __rcx, _t359, _t370, __rsi); } return; } _LLink_BindACLU() {// addr = 0x00431966 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t49; // _t49 _v16 = __rdi; _v24 = __rsi; if(( *(_v24 + 1) & 255) != 8 || ( *(_v16 + 1) & 255) != 15) { *__rsp = *(_v24 + 1) & 0xff; r9d = *(_v24 + 11) & 0xff; r8d = *(_v16 + 1) & 0xff; DebugPrint(0, _v16, __rcx, _t49, __rdi, __rsi); return; } else { *((long long*)(_v16 + 88)) = _v24; *(_v16 + 124) = *(_v24 + 11) & 255; return; } } _LLink_ReBindACLC() {// addr = 0x004319FD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t54; // _t54 _v16 = __rdi; _v24 = __rsi; if(( *(_v16 + 1) & 255) != 8 || ( *(_v24 + 1) & 255) != 15) { *__rsp = *(_v16 + 1) & 0xff; r9d = *(_v16 + 11) & 0xff; r8d = *(_v24 + 1) & 0xff; DebugPrint(0, _v24, __rcx, _t54, __rdi, __rsi); return; } else { *((long long*)(_v16 + 80)) = _v24; *((long long*)(_v16 + 96)) = *((intOrPtr*)(_v24 + 96)); *((long long*)(_v16 + 104)) = *((intOrPtr*)(_v24 + 104)); return; } } _LLINK_NewACLC( signed long long __rax // r53 ) {// addr = 0x00431AA5 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed long long _t227; // _t227 signed long long _t233; // _t233 signed long long _t236; // _t236 signed long long _t257; // _t257 signed long long _t260; // _t260 signed char* _t289; // _t289 signed int _t299; // _t299 _t213 = __rax; _v48 = _t307; _v56 = __rsi; _v64 = _t296; _v72 = __rcx; _v40 = 0; if(_v56 == 0) { } else { _v10 = 0; while(_v10 <= 6) { _t296 = _v48; _t213 = _t213 * 184 + _v48 + 33792; _t147 = *(_t213 + 8) & 255; if(( *(_t213 + 8) & 255) != 0) { L6: _v10 = _v10 + 1; continue; } else { _t233 = _v48; __rsi = _v48 + 33800 + 2760 + _v48 * 184; _t307 = _t233; _LLINK_ReadMcuLink(); _t299 = _v48; _t236 = _t233 * 184 + _t299 + 33904; if(( *(_t236 + 16) & 1) == 0) { __rcx = _v48 + 38768; _v32 = (_t299 + _t299 + _t299 << 2) + __rcx; _v40 = 2760 + _v48 * 184 + _v48 + 33800; *_v40 = 1; *((char*)(_v40 + 2)) = 1; *(_v40 + 3) = 255; *(_v40 + 4) = 0; *(_v40 + 5) = 0; *(_v40 + 8) = 0; *(_v40 + 14) = 0; *(_v40 + 16) = 0; *(_v40 + 17) = 0; _t257 = _v48 + 72952; QUEUE_New(3, _t257, _t257); *(_v40 + 32) = _t257; *(_v40 + 40) = _v64; _t260 = _v48 + 72952; QUEUE_New(10, _t260, _t260); *(_v40 + 48) = _t260; *((long long*)(_v40 + 64)) = _v72; *((long long*)(_v40 + 96)) = _v56; *((long long*)(_v40 + 104)) = *((intOrPtr*)(_v56 + 32)); *(_v40 + 10) = 0; *(_v40 + 6) = 0; *((char*)(_v40 + 12)) = 1; *((char*)(_v40 + 13)) = 1; *(_v40 + 72) = 0; *(_v40 + 80) = 0; *(_v40 + 88) = 0; _t296 = _v32; *(_v40 + 72) = _v32; *_v32 = 3; *((char*)(_v32 + 4)) = 3; *((char*)(_v32 + 1)) = 1; _v24 = _v40 + 120; *_v24 = *_v24 & 255 | 1; *_v24 = *_v24 & 0xfd; *_v24 = *_v24 & 255 | 16; *_v24 = *_v24 & 255 | 32; *_v24 = *_v24 & 0x3f; (_v24[1]) = (_v24[1]) & 255 | 1; (_v24[1]) = (_v24[1]) & 255 | 2; (_v24[2]) = *( *((intOrPtr*)(_v40 + 96)) + 2) & 255; (_v24[9]) = (_v24[9]) & 0xe0 | (_v10 & 255) + 13 & 0x1f; _t289 = _v24; (_t289[8]) = 0; (_v24[3]) = &(_t289[0xf]); (_v24[4]) = 255; (_v24[0xc]) = 0; _t213 = _v48; _t307 = _v48; _v9 = PDMA_Is_TxRing_Empty( *(_v40 + 129) & 0x1f, _v48); } else { _t296 = _v48; _t213 = _t236 * 184 + _v48 + 33792; _t147 = DebugPrint(0, _t213, __rcx, _v48, _t307, __rsi); goto L6; } } goto L8; } } L8: if(_v40 == 0) { } else { if( *(_v40 + 32) == 0) { L11: if( *(_v40 + 32) != 0) { _t307 = *(_v40 + 32); QUEUE_Delete(); *(_v40 + 32) = 0; } if( *(_v40 + 48) != 0) { _t307 = *(_v40 + 48); QUEUE_Delete(); *(_v40 + 48) = 0; } _t213 = _v40; *_v40 = 0; _v40 = 0; } else { _t227 = _v40; _t213 = *(_t227 + 48); if( *(_t227 + 48) == 0) { goto L11; } } } if(_v40 == 0) { _t147 = DebugPrint(0, _t213, __rcx, _t296, _t307, __rsi); } return; } _LLINK_Delete( _unknown_ __eax // r0 ) {// addr = 0x00431EA1 char _v9; // _cfa_fffffff7 signed char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t56; // _t56 _v32 = _t56; _v40 = __rsi; _v16 = 31; if(_v40 != 0 && ( *_v40 & 255) != 0) { DebugPrint(0, _v40, __rcx, __rdx, _t56, __rsi); (_v40[2]) = 1; (_v40[3]) = 255; QUEUE_Delete(); (_v40[0x30]) = 0; QUEUE_Delete(); (_v40[0x20]) = 0; _v9 = PDMA_Is_TxRing_Empty((_v40[0x81]) & 0x1f, _v32); *_v40 = 0; _v16 = 0; } return _v16; } _LLINK_DelInquiry() {// addr = 0x00431F75 long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; if(_v16 + 3240 == _v24) { QUEUE_Delete(); *((long long*)(_v24 + 32)) = 0; *_v24 = 0; return; } return; } _LLINK_DelInquiryScan( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00431FBA long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; if(_v16 + 3424 == _v24) { *_v24 = 0; return; } return; } _LLINK_WriteMcuLink() {// addr = 0x00431FDF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; __rdx = _v24 + 120; __ecx = 16; MCU_Write_Memory(16, _v24 + 120); return; } _LLINK_ReadMcuLink() {// addr = 0x0043201F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; __rdx = _v24 + 120; __ecx = 16; MCU_Read_Memory(16, _v24 + 120); return; } LLINK_SearchUsedLinkByLLIndx( signed int __esi, // r5 signed int __rax, // r53 signed int __rdi // r57 ) {// addr = 0x0043205F long long _v16; // _cfa_fffffff0 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t13; // _t13 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _t13 = __esi; _v36 = __esi; _v16 = 0; if(_v36 <= 26) { _t13 = *(__rax * 184 + _v32 + 0xca8) & 255; if(_t13 != 0) { _t13 = _v36 & 255; _v16 = _v32 * 184 + _v32 + 3240; } } return _t13; } LLINK_UpdateConnectionMode() {// addr = 0x004320BF signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t45; // _t45 char _t69; // _t69 _v32 = __rdi; _v36 = _t69; _v10 = 0; if(( *(_v32 + 1) & 255) != 15) { r8d = *(_v32 + 1) & 0xff; DebugPrint(0, _v32, __rcx, __rdx, __rdi, __rsi); return 0; } _v9 = *(_v32 + 3) & 255; _t45 = *(_v32 + 3) & 0xff; if(_t45 == 4) { goto L31; } else { if(_t45 > 4) { if(_t45 == 32) { if(_v36 == 1) { _v9 = 1; } L31: r9d = _v9 & 255; r8d = *(_v32 + 3) & 0xff; DebugPrint(0, _v32, __rcx, __rdx, __rdi, __rsi); if(( *(_v32 + 3) & 255) != _v9) { *(_v32 + 3) = _v9 & 255; _v10 = 1; } return _v10 & 255; } if(_t45 == 255) { if(_v36 == 1) { _v9 = 1; } goto L31; } if(_t45 == 5) { goto L31; } L24: goto L31; } if(_t45 == 1) { if(_v36 != 1) { if(_v36 != 2) { if(_v36 != 4 && _v36 != 5 && _v36 == 32) { _v9 = 32; } } else { _v9 = 2; } } goto L31; } if(_t45 == 2) { if(_v36 == 1) { _v9 = 1; } goto L31; } else { goto L24; } } } _LLINK_NewLEScan() {// addr = 0x0043221A signed char* _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed char _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t166; // _t166 long long _t171; // _t171 intOrPtr _t172; // _t172 signed char _t173; // _t173 signed char* _t174; // _t174 _v32 = _t171; _v40 = _t173; _v48 = _t166; _v24 = _v32 + 38032; _t167 = _v24; _t174 = _v24; _t172 = _v32; _LLINK_ReadMcuLink(); if(( *_v24 & 255) != 0 || ((_v24[0x78]) & 1) != 0) { r9d = (_v24[0x78]) & 1; r8d = *_v24 & 0xff; DebugPrint(0, _v24, __rcx, _t167, _t172, _t174); _v24 = 0; } else { *_v24 = 1; (_v24[2]) = 1; (_v24[3]) = 255; (_v24[4]) = 0; (_v24[5]) = 0; (_v24[8]) = 0; (_v24[0xe]) = 0; (_v24[0x10]) = 0; (_v24[0x11]) = 0; (_v24[0x20]) = 0; (_v24[0x28]) = _v48; (_v24[0x30]) = 0; (_v24[0xa]) = 0; (_v24[0xc]) = 0; (_v24[0xd]) = 0; (_v24[0x48]) = 0; (_v24[0x60]) = 0; (_v24[0x70]) = _v40; (_v24[0x50]) = 0; (_v24[0x58]) = 0; (_v24[0x68]) = *(_v40 + 16); _v16 = &(_v24[0x78]); *_v16 = *_v16 & 255 | 1; *_v16 = *_v16 & 0xfd; *_v16 = *_v16 & 0xef; *_v16 = *_v16 & 0xdf; (_v16[1]) = (_v16[1]) & 255 | 1; (_v16[1]) = (_v16[1]) & 255 | 2; (_v16[2]) = *(_v40 + 2) & 255; (_v16[3]) = 23; (_v16[4]) = 255; (_v24[0x90]) = 0; (_v24[0x92]) = 0; (_v24[0x94]) = 0; (_v24[0x96]) = 0; } return; } _LLINK_DelLEScan( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00432441 long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; if(_v16 + 7472 == _v24) { *_v24 = 0; return; } return; } _LLINK_NewLEACL( _unknown_ __eax, // r0 signed long long __rax // r53 ) {// addr = 0x00432466 char _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed char* _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t207; // _t207 signed long long _t216; // _t216 signed long long _t223; // _t223 signed long long _t226; // _t226 long long _t246; // _t246 long long _t250; // _t250 signed char* _t285; // _t285 long long _t301; // _t301 long long _t304; // _t304 signed int _t320; // _t320 signed long long _t321; // _t321 _t216 = __rax; _v64 = _t320; _t154 = _t207; _v80 = _t304; _v88 = _t301; _v96 = r8; _v68 = _t207; _v56 = 0; if(_v80 == 0) { } else { _v26 = 0; while(_v26 <= 1) { _t216 = _t216 * 184 + _v64 + 33792; _t154 = *(_t216 + 8) & 255; if(( *(_t216 + 8) & 255) != 0) { L6: _v26 = _v26 + 1; continue; } else { _t223 = _v64; __rsi = _v64 + 33800 + 4416 + _v64 * 184; _t321 = _t223; _LLINK_ReadMcuLink(); _t226 = _t223 * 184 + _v64 + 33904; if(( *(_t226 + 16) & 1) == 0) { _v56 = 4416 + _v64 * 184 + _v64 + 33800; _v48 = (_v64 << 3 << 5) - (_v64 << 3) + _v64 + 54216; *((char*)(_v56 + 2)) = 1; *(_v56 + 3) = 255; *(_v56 + 4) = 0; *(_v56 + 5) = 0; *(_v56 + 8) = 0; *(_v56 + 8) = _LLINK_GetAvailableConnHandle(_v64 + 30560, _v64 + 30560); *(_v56 + 14) = 0; *(_v56 + 16) = 0; *(_v56 + 17) = 0; _t246 = _v64 + 72952; QUEUE_New(42, _t246, _t246); *((long long*)(_v56 + 32)) = _t246; *((long long*)(_v56 + 40)) = _v88; *((long long*)(_v56 + 64)) = _v96; _t250 = _v64 + 72952; QUEUE_New(44, _t250, _t250); *((long long*)(_v56 + 48)) = _t250; *(_v56 + 96) = 0; *((long long*)(_v56 + 112)) = _v80; *(_v56 + 10) = 0; *((char*)(_v56 + 12)) = 1; *((char*)(_v56 + 13)) = 1; *(_v56 + 72) = _v48; *(_v56 + 80) = 0; *(_v56 + 88) = 0; *((long long*)(_v56 + 104)) = *((intOrPtr*)(_v80 + 16)); *_v56 = 1; RtlFillMemory(248, 0, _v48); *_v48 = _v68 & 255; (_v48[0]) = 0; (_v48[0]) = 0; (_v48[0]) = 0; (_v48[1]) = 0; (_v48[1]) = 0; (_v48[1]) = 0; (_v48[1]) = 0; (_v48[2]) = 0; (_v48[2]) = 0; _v40 = _v56 + 120; *_v40 = *_v40 & 255 | 1; *_v40 = *_v40 & 0xfd; *_v40 = *_v40 & 255 | 16; *_v40 = *_v40 & 255 | 32; *_v40 = *_v40 & 0x3f; (_v40[1]) = (_v40[1]) & 255 | 1; (_v40[1]) = (_v40[1]) & 255 | 2; (_v40[2]) = *(_v80 + 2) & 255; (_v40[9]) = (_v40[9]) & 0xe0 | (_v26 & 255) + 20 & 0x1f; _t285 = _v40; (_t285[8]) = 0; (_v40[3]) = &(_t285[0x18]); (_v40[4]) = 255; (_v40[0xc]) = 0; *(_v56 + 144) = 0; *(_v56 + 146) = 0; *(_v56 + 148) = 0; *(_v56 + 150) = 0; RtlFillMemory(10, 0, _v56 + 152); _v25 = PDMA_Is_TxRing_Empty( *(_v56 + 129) & 0x1f, _v64); } else { _t216 = _t226 * 184 + _v64 + 33792; _t154 = DebugPrint(0, _t216, _t301, _v64, _t321, __rsi); goto L6; } } goto L8; } } L8: return; } _LLINK_DelLEACL() {// addr = 0x0043287F _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t24; // _t24 _v16 = _t24; if(__al == 24) { QUEUE_Delete(); *((long long*)(_v16 + 48)) = 0; QUEUE_Delete(); *((long long*)(_v16 + 32)) = 0; *_v16 = 0; *((char*)(_v16 + 144)) = 0; return; } return; } dump_list() {// addr = 0x004328E4 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x004329AC signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } _LTRANS_Initialise() {// addr = 0x00432D8D signed char _v9; // _cfa_fffffff7 signed long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t111; // _t111 signed long long _t121; // _t121 long long _t147; // _t147 _v32 = _t147; *(_v32 + 1944) = _v32 + 1936; *(_v32 + 1936) = *(_v32 + 1944); check_list_constant(); RtlFillMemory(640, 0, _v32 + 1952); RtlFillMemory(280, 0, _v32 + 2720); RtlFillMemory(120, 0, _v32 + 3000); RtlFillMemory(120, 0, _v32 + 3120); *((char*)(_v32 + 1953)) = 0; *((char*)(_v32 + 1954)) = 0; *((char*)(_v32 + 2017)) = 1; *((char*)(_v32 + 2018)) = 1; *((char*)(_v32 + 2081)) = 2; *((char*)(_v32 + 2082)) = 2; _v9 = 3; while(_v9 <= 9) { *(_v32 + ((_v9 & 255) << 6) + 0x7a1) = 3; *(_v32 + ((_v9 & 255) << 6) + 0x7a2) = _v9 & 255; _t111 = *(_v32 + 1944); _v24 = _t111; *_v24 = (_t111 << 6) + 2000 + _v32; *((intOrPtr*)(_v32 + ((_v9 & 255) << 6) + 2000)) = _v32 + 1936; _t121 = _v24; *(_v32 + ((_v9 & 255) << 6) + 2008) = _t121; *(_v32 + 1944) = (_t121 << 6) + 2000 + _v32; check_list_constant(); _v9 = _v9 + 1; } return; } _LTRANS_NewInquiry() {// addr = 0x00432FB3 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t73; // _t73 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t56 = _v32; if(( *(_v32 + 32512) & 255) != 0) { DebugPrint(0, _t56, __rcx, _t73, __rdi, __rsi); } else { _v24 = _v32 + 32512; *_v24 = 1; *((long long*)(_v24 + 32)) = _v40; *((long long*)(_v24 + 16)) = 0; *((long long*)(_v24 + 24)) = 0; _v16 = _v24 + 40; *_v16 = 0; *(_v16 + 1) = *(_v16 + 1) & 0xfe; *(_v16 + 1) = *(_v16 + 1) & 0xfd; *(_v16 + 1) = *(_v16 + 1) & 0xfb; *(_v16 + 1) = *(_v16 + 1) & 0xbf; *(_v16 + 2) = *(_v16 + 2) & 0xf0 | *(_v40 + 2) & 0xf; } return; } _LTRANS_NewInquiryScan() {// addr = 0x004330A8 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t73; // _t73 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t56 = _v32; if(( *(_v32 + 32576) & 255) != 0) { DebugPrint(0, _t56, __rcx, _t73, __rdi, __rsi); } else { _v24 = _v32 + 32576; *_v24 = 1; *((long long*)(_v24 + 32)) = _v40; *((long long*)(_v24 + 16)) = 0; *((long long*)(_v24 + 24)) = 0; _v16 = _v24 + 40; *_v16 = 0; *(_v16 + 1) = *(_v16 + 1) & 0xfe; *(_v16 + 1) = *(_v16 + 1) & 0xfd; *(_v16 + 1) = *(_v16 + 1) & 0xfb; *(_v16 + 1) = *(_v16 + 1) & 0xbf; *(_v16 + 2) = *(_v16 + 2) & 0xf0 | *(_v40 + 2) & 0xf; } return; } _LTRANS_NewBroadcast() {// addr = 0x0043319D signed char* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t73; // _t73 long long _t76; // _t76 _v32 = _t76; _v40 = __rsi; _v24 = _v32 + 32640; _t57 = _v24; if(( *_v24 & 255) != 0) { DebugPrint(0, _t57, __rcx, _t73, _t76, __rsi); } else { *_v24 = 1; (_v24[0x20]) = _v40; _LTRANS_NewBcPktBuf(); (_v24[0x10]) = _v32 + 30560; (_v24[0x18]) = 0; _v16 = &(_v24[0x28]); *_v16 = 0; (_v16[1]) = (_v16[1]) & 0xfe; (_v16[1]) = (_v16[1]) & 255 | 2; (_v16[1]) = (_v16[1]) & 0xfb; (_v16[1]) = (_v16[1]) & 0xbf; (_v16[2]) = (_v16[2]) & 0xf0 | *(_v40 + 2) & 0xf; } return; } _LTRANS_NewACL() {// addr = 0x00433294 signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t109; // _t109 intOrPtr _t143; // _t143 long long _t148; // _t148 long long _t162; // _t162 _unknown_ _t163; // _t163 _v48 = _t162; _v56 = __rsi; _v64 = _t148; _v40 = 0; if(_v56 == 0) { return; } if( *((intOrPtr*)(_v48 + 32496)) != _v48 + 32496 || *((intOrPtr*)(_v48 + 32504)) != _v48 + 32496) { _t109 = *((intOrPtr*)(_v48 + 32496)); _t152 = _v48 + 32496; if(_t109 != _v48 + 32496) { _t109 = *((intOrPtr*)(_v48 + 32496)); } _v32 = _t109; _v24 = *((intOrPtr*)(_v48 + 32496)); if(_v48 + 32496 != _v24) { *((long long*)(_v48 + 32496)) = *_v24; if( *_v24 != _v48 + 32496) { _t152 = _v48 + 32496; *((long long*)( *_v24 + 8)) = _v48 + 32496; } else { _t143 = _v48; _t152 = _t143 + 32496; *((long long*)(_v48 + 32504)) = _t143 + 32496; } } _t163 = _v48 + 32496; check_list_constant(); if(_v32 != 0) { _v40 = _v32 - 48; if(( *_v40 & 255) != 0) { DebugPrint(0, _v40, __rcx, _t152, _t163, __rsi); _v40 = 0; } else { *_v40 = 1; *((long long*)(_v40 + 8)) = _v64; *((long long*)(_v40 + 32)) = _v56; _LTRANS_NewACLPktBuf(); *((long long*)(_v40 + 16)) = _v48 + 30560; *(_v40 + 24) = 0; _v16 = _v40 + 40; *_v16 = 0; *_v16 = *_v16 & 0xf8; (_v16[1]) = (_v16[1]) & 0xfe; (_v16[1]) = (_v16[1]) & 0xfd; (_v16[1]) = (_v16[1]) & 0xfb; (_v16[1]) = (_v16[1]) & 0xbf; (_v16[2]) = (_v16[2]) & 0xf0 | *(_v56 + 2) & 0xf; } } } return; } _LTRANS_NewSCO( _unknown_ __rax // r53 ) {// addr = 0x004334E0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t15; // _t15 _v16 = _t15; _v24 = __rsi; if(_v24 != 0 && __al != 0) { _LTRANS_NewSyncPktBuf(); *((long long*)(_v24 + 24)) = _v16; } return; } _LTRANS_NewESCO() {// addr = 0x0043351C signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t88; // _t88 long long _t114; // _t114 intOrPtr _t147; // _t147 long long _t164; // _t164 _unknown_ _t165; // _t165 _v48 = _t164; _v56 = __rsi; _v60 = _t88; _v40 = 0; if(_v56 == 0) { return; } if( *((intOrPtr*)(_v48 + 32496)) != _v48 + 32496 || *((intOrPtr*)(_v48 + 32504)) != _v48 + 32496) { _t114 = *((intOrPtr*)(_v48 + 32496)); _t155 = _v48 + 32496; if(_t114 != _v48 + 32496) { _t114 = *((intOrPtr*)(_v48 + 32496)); } _v32 = _t114; _v24 = *((intOrPtr*)(_v48 + 32496)); if(_v48 + 32496 != _v24) { *((long long*)(_v48 + 32496)) = *_v24; if( *_v24 != _v48 + 32496) { _t155 = _v48 + 32496; *((long long*)( *_v24 + 8)) = _v48 + 32496; } else { _t147 = _v48; _t155 = _t147 + 32496; *((long long*)(_v48 + 32504)) = _t147 + 32496; } } _t165 = _v48 + 32496; check_list_constant(); if(_v32 != 0) { _v40 = _v32 - 48; if(( *_v40 & 255) != 0) { DebugPrint(0, _v40, __rcx, _t155, _t165, __rsi); _v40 = 0; } else { *_v40 = 1; *((long long*)(_v40 + 32)) = _v56; *(_v40 + 16) = 0; _LTRANS_NewSyncPktBuf(); *((long long*)(_v40 + 24)) = _v48 + 30560; _v16 = _v40 + 40; *_v16 = 0; *_v16 = *_v16 & 0xf8 | _v60 & 7; (_v16[1]) = (_v16[1]) & 0xfe; (_v16[1]) = (_v16[1]) & 255 | 2; (_v16[1]) = (_v16[1]) & 0xfb; (_v16[1]) = (_v16[1]) & 0xbf; (_v16[2]) = (_v16[2]) & 0xf0 | *(_v56 + 2) & 0xf; } } } return; } _LTRANS_DelInquiry() {// addr = 0x0043376D signed char _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t29; // _t29 signed char* _t31; // _t31 _v32 = _t29; _v40 = _t31; _v12 = 31; if(_v40 != 0 && ((_v40[1]) & 255) == 0 && ( *_v40 & 255) != 0) { *_v40 = 0; _v24 = &(_v40[0x28]); *_v24 = 0; _LTRANS_WriteMcuLink(); _v12 = 0; } return _v12; } _LTRANS_DelInquiryScan() {// addr = 0x004337DE signed char _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t29; // _t29 signed char* _t31; // _t31 _v32 = _t29; _v40 = _t31; _v12 = 31; if(_v40 != 0 && ((_v40[1]) & 255) == 1 && ( *_v40 & 255) != 0) { *_v40 = 0; _v24 = &(_v40[0x28]); *_v24 = 0; _LTRANS_WriteMcuLink(); _v12 = 0; } return _v12; } _LTRANS_DelBroadcast( _unknown_ __eax // r0 ) {// addr = 0x0043384F signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t42; // _t42 signed char* _t45; // _t45 _v32 = _t42; _v40 = _t45; _v9 = 0; if(( *_v40 & 255) == 0) { L6: return _v9 & 255; } *_v40 = 0; if((_v40[0x10]) != 0 && (_v40[0x18]) != 0 && _LTRANS_DeletePktBuf(_v40[0x18]) != 0) { (_v40[0x18]) = 0; } _v24 = &(_v40[0x28]); *_v24 = 0; _LTRANS_WriteMcuLink(); _v9 = 1; goto L6; } _LTRANS_DelACL() {// addr = 0x004338E2 intOrPtr _v12; // _cfa_fffffff4 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t92; // _t92 long long _t98; // _t98 _v32 = _t98; _v40 = __rsi; _v12 = 31; if(_v40 == 0) { L12: return; } if(((_v40[1]) & 255) != 2 && ((_v40[1]) & 255) != 3) { DebugPrint(0, _v40, __rcx, _t92, _t98, __rsi); } else { if(( *_v40 & 255) != 0) { if(((_v40[1]) & 255) == 3) { _v24 = *(_v32 + 1944); *_v24 = &(_v40[0x30]); (_v40[0x30]) = _v32 + 1936; (_v40[0x38]) = _v24; *(_v32 + 1944) = &(_v40[0x30]); check_list_constant(); } _v12 = 0; } } goto L12; } _LTRANS_DelSCO( _unknown_ __eax // r0 ) {// addr = 0x00433A24 intOrPtr _v12; // _cfa_fffffff4 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed char* _t37; // _t37 _v32 = _t37; _v12 = 31; if(_v32 != 0) { if(((_v32[1]) & 255) == 3 && ( *_v32 & 255) != 0) { _v12 = 0; } } return _v12; } _LTRANS_DelESCO( _unknown_ __eax // r0 ) {// addr = 0x00433A9B intOrPtr _v12; // _cfa_fffffff4 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t77; // _t77 _v32 = _t77; _v40 = __rsi; _v12 = 31; if(_v40 != 0) { if(((_v40[1]) & 255) == 3 && ( *_v40 & 255) != 0) { _v24 = *(_v32 + 1944); *_v24 = &(_v40[0x30]); (_v40[0x30]) = _v32 + 1936; (_v40[0x38]) = _v24; *(_v32 + 1944) = &(_v40[0x30]); check_list_constant(); _v12 = 0; } } return _v12; } _LTRANS_NewBcPktBuf() {// addr = 0x00433B9D _unknown_ _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t15; // _t15 _v32 = _t15; _v16 = _v32 + 3000; if(__al == 0) { __edx = 40; __esi = 0; RtlFillMemory(40, 0, _v32 + 3000); *_v16 = 1; } return; } _LTRANS_NewACLPktBuf() {// addr = 0x00433BEB signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t47; // _t47 _v32 = _t47; _v24 = 0; _v12 = 0; while(_v12 <= 6) { if(( *(((_v12 << 2) + _v12 << 3) + _v32 + 2720) & 255) != 0) { _v12 = _v12 + 1; continue; } else { __edx = 40; __esi = 0; RtlFillMemory(40, 0, ((_v12 << 2) + _v12 << 3) + _v32 + 2720); _v24 = ((_v12 << 2) + _v12 << 3) + _v32 + 2720; *_v24 = 1; } break; } return; } _LTRANS_NewSyncPktBuf() {// addr = 0x00433CAA signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t37; // _t37 _v32 = _t37; _v24 = 0; _v12 = 0; while(_v12 <= 2) { if(( *(((_v12 << 2) + _v12 << 3) + _v32 + 3120) & 255) != 0) { _v12 = _v12 + 1; continue; } else { _v24 = ((_v12 << 2) + _v12 << 3) + _v32 + 3120; __edx = 40; __esi = 0; RtlFillMemory(40, 0, _v24); *_v24 = 1; } break; } return; } _LTRANS_DeletePktBuf( signed char* __rdi // r57 ) {// addr = 0x00433D44 signed char _v9; // _cfa_fffffff7 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v9 = 0; if(( *_v32 & 255) != 0) { *_v32 = 0; _v9 = 1; } return _v9 & 255; } _LTRANS_WriteMcuLink() {// addr = 0x00433D6C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t12; // _t12 long long _t28; // _t28 long long _t30; // _t30 _v16 = _t28; _v24 = _t30; if((_t12 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } BDADDR_Assign( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x00433DD0 signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } casting_uint24( signed char* __rdi // r57 ) {// addr = 0x00433E36 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff) << 8) << 8; } dump_list() {// addr = 0x00433E78 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x00433F40 signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } SYNCWORD_Assign( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00434321 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24; *((intOrPtr*)(_v16 + 4)) = *((intOrPtr*)(_v24 + 4)); return; } _PLINK_Initialise() {// addr = 0x0043434C signed char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t139; // _t139 signed long long _t142; // _t142 signed long long _t146; // _t146 signed long long _t150; // _t150 signed long long _t153; // _t153 signed long long _t156; // _t156 signed long long _t167; // _t167 signed long long _t211; // _t211 _v32 = _t211; *(_v32 + 16) = _v32 + 8; *(_v32 + 8) = *(_v32 + 16); check_list_constant(); RtlFillMemory(10, 0, _v32 + 24); RtlFillMemory(70, 0, _v32 + 34); RtlFillMemory(1800, 0, _v32 + 136); *((char*)(_v32 + 137)) = 0; *((char*)(_v32 + 138)) = 0; *((char*)(_v32 + 257)) = 1; *((char*)(_v32 + 258)) = 1; *((char*)(_v32 + 377)) = 2; *((char*)(_v32 + 378)) = 2; *((char*)(_v32 + 1457)) = 11; _t139 = _v32; *((char*)(_t139 + 1458)) = 11; _v9 = 3; while(_v9 <= 9) { _t142 = _v32 + (_t139 << 3 << 4) - (_t139 << 3) - 128; *(_t142 + 9) = 3; *(_v32 + (_t142 << 3 << 4) - (_t142 << 3) + 0x8a) = _v9 & 255; _t146 = *(_v32 + 16); _v24 = _t146; _t150 = _v24; *_t150 = (_t146 << 3 << 4) - (_t146 << 3) + 224 + _v32 + 16; _t153 = _v32 + (_t150 << 3 << 4) - (_t150 << 3) + 240; *_t153 = _v32 + 8; _t156 = _v24; *(_v32 + (_t153 << 3 << 4) - (_t153 << 3) + 248) = _t156; *(_v32 + 16) = (_t156 << 3 << 4) - (_t156 << 3) + 224 + _v32 + 16; _t139 = _v32 + 8; check_list_constant(); _v9 = _v9 + 1; } _v9 = 12; while(_v9 <= 14) { _t167 = _v32 + (_t139 << 3 << 4) - (_t139 << 3) - 128; *(_t167 + 9) = 12; _t139 = _v32 + (_t167 << 3 << 4) - (_t167 << 3); *(_t139 + 0x8a) = _v9 & 255; _v9 = _v9 + 1; } _v12 = 64; return; } _PLINK_NewInquiry() {// addr = 0x004345FF long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t168; // _t168 long long _t171; // _t171 _v32 = _t171; _v40 = __rsi; _v24 = 0; if(_v40 != 0) { _t125 = _v32; if(( *(_v32 + 30696) & 255) != 0) { DebugPrint(0, _t125, __rcx, _t168, _t171, __rsi); } else { _v24 = _v32 + 30696; *_v24 = 1; *((char*)(_v24 + 3)) = 3; *(_v24 + 4) = *(_v32 + 190507) & 255; *((long long*)(_v24 + 16)) = _v32 + 55568; *((long long*)(_v24 + 24)) = 0; _v16 = _v24 + 32; RtlFillMemory(64, 0, _v16); *(_v16 + 8) = *_v40 & 255; *(_v16 + 9) = (_v40[1]) & 255; *(_v16 + 10) = (_v40[2]) & 255; *(_v16 + 11) = (_v40[3]) & 255; *(_v16 + 12) = (_v40[4]) & 255; *(_v16 + 13) = (_v40[5]) & 255; BT_SyncWordGenerator(casting_uint24(_v40), _v16); *(_v16 + 33) = *(_v16 + 33) & 0xfe | *( *((intOrPtr*)(_v24 + 16)) + 1) & 1; *(_v16 + 34) = *(_v16 + 34) & 0xfc | *( *((intOrPtr*)(_v24 + 16)) + 2) & 3; *(_v16 + 35) = *(_v16 + 35) & 0xf8; *(_v16 + 35) = *(_v16 + 35) & 0xf7; *(_v16 + 36) = *(_v24 + gTxPwrTable) & 255; *((intOrPtr*)(_v16 + 48)) = 0; *((short*)(_v16 + 40)) = 0; *((short*)(_v16 + 42)) = 0; *((short*)(_v16 + 44)) = 0; *((short*)(_v16 + 46)) = 0; } } return; } _PLINK_NewInquiryScan() {// addr = 0x004347F5 long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t165; // _t165 long long _t168; // _t168 _v32 = _t168; _v40 = __rsi; _v48 = _t165; _v24 = 0; if(_v48 != 0) { _t124 = _v32; if(( *(_v32 + 30816) & 255) != 0) { DebugPrint(0, _t124, __rcx, _t165, _t168, __rsi); } else { _v24 = _v32 + 30816; *_v24 = 1; *((char*)(_v24 + 3)) = 3; *(_v24 + 4) = *(_v32 + 190508) & 255; *((long long*)(_v24 + 16)) = _v40; *((long long*)(_v24 + 24)) = 0; _v16 = _v24 + 32; RtlFillMemory(64, 0, _v16); *(_v16 + 8) = *_v48 & 255; *(_v16 + 9) = (_v48[1]) & 255; *(_v16 + 10) = (_v48[2]) & 255; *(_v16 + 11) = (_v48[3]) & 255; *(_v16 + 12) = (_v48[4]) & 255; *(_v16 + 13) = (_v48[5]) & 255; BT_SyncWordGenerator(casting_uint24(_v48), _v16); *(_v16 + 33) = *(_v16 + 33) & 0xfe | *( *((intOrPtr*)(_v24 + 16)) + 1) & 1; *(_v16 + 34) = *(_v16 + 34) & 0xfc | *(_v40 + 2) & 3; *(_v16 + 35) = *(_v16 + 35) & 0xf8; *(_v16 + 35) = *(_v16 + 35) & 0xf7; *(_v16 + 36) = *(_v24 + gTxPwrTable) & 255; *((intOrPtr*)(_v16 + 48)) = 0; *((short*)(_v16 + 40)) = 0; *((short*)(_v16 + 42)) = 0; *((short*)(_v16 + 44)) = 0; *((short*)(_v16 + 46)) = 0; } } return; } _PLINK_NewBroadcast( _unknown_ __eax, // r0 signed char* __rsi // r58 ) {// addr = 0x004349E4 signed char* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t86; // _t86 signed char* _t160; // _t160 long long _t171; // _t171 __rsi = __rsi; _v32 = _t171; _v40 = __rsi; _v24 = 0; if(_v40 == 0) { return 0; } _v24 = _v32 + 30936; _t86 = *_v24 & 255; if(_t86 == 0) { *_v24 = 1; (_v24[3]) = 1; (_v24[4]) = *(_v32 + 191078) & 255; (_v24[0x10]) = _v32 + 55568; (_v24[0x18]) = _v32 + 30584; _v16 = &(_v24[0x20]); RtlFillMemory(64, 0, _v16); (_v16[8]) = *_v40 & 255; (_v16[9]) = (_v40[1]) & 255; (_v16[0xa]) = (_v40[2]) & 255; (_v16[0xb]) = (_v40[3]) & 255; (_v16[0xc]) = (_v40[4]) & 255; (_v16[0xd]) = (_v40[5]) & 255; BT_SyncWordGenerator(casting_uint24(_v40), _v16); (_v16[0x21]) = (_v16[0x21]) & 0xfe | *((_v24[0x10]) + 1) & 1; (_v16[0x22]) = (_v16[0x22]) & 0xfc | *((_v24[0x10]) + 2) & 3; (_v16[0x23]) = (_v16[0x23]) & 0xf8; (_v16[0x23]) = (_v16[0x23]) & 0xf7; _t160 = _v24; _t86 = (_t160[4]) & 0xff; (_v16[0x24]) = (_t160[gTxPwrTable]) & 255; (_v16[0x30]) = 0; (_v16[0x28]) = 0; (_v16[0x2a]) = 0; (_v16[0x2c]) = 0; (_v16[0x2e]) = 0; } return _t86; } _PLINK_NewActiveMember() {// addr = 0x00434BC9 signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t183; // _t183 intOrPtr _t246; // _t246 _unknown_ _t251; // _t251 signed char* _t253; // _t253 signed long long _t258; // _t258 long long _t270; // _t270 _unknown_ _t271; // _t271 signed long long _t276; // _t276 _v48 = _t270; _v56 = _t276; _v64 = _t253; _v40 = 0; if(_v56 == 0 || _v64 == 0 || *((intOrPtr*)(_v48 + 30568)) == _v48 + 30568 && *((intOrPtr*)(_v48 + 30576)) == _v48 + 30568) { L15: return; } else { _t183 = *((intOrPtr*)(_v48 + 30568)); _t257 = _v48 + 30568; if(_t183 != _v48 + 30568) { _t183 = *((intOrPtr*)(_v48 + 30568)); } _v32 = _t183; _v24 = *((intOrPtr*)(_v48 + 30568)); if(_v48 + 30568 != _v24) { *((long long*)(_v48 + 30568)) = *_v24; if( *_v24 != _v48 + 30568) { _t257 = _v48 + 30568; *((long long*)( *_v24 + 8)) = _v48 + 30568; } else { _t246 = _v48; _t257 = _t246 + 30568; *((long long*)(_v48 + 30576)) = _t246 + 30568; } } _t271 = _v48 + 30568; check_list_constant(); if(_v32 != 0) { _v40 = _v32 - 104; if(( *_v40 & 255) != 0) { DebugPrint(0, _v40, _t251, _t257, _t271, _t276); _v40 = 0; } else { *_v40 = 1; (_v40[3]) = 0; (_v40[4]) = *(_v48 + 191078) & 255; _t258 = _v56; (_v40[0x10]) = _t258; (_v40[0x18]) = _v48 + 30594 + (_t258 << 2) + _t258 + (_t258 << 2) + _t258 - 30; BT_SyncWordGenerator(casting_uint24(_v64), &(_v40[8])); _v16 = &(_v40[0x20]); RtlFillMemory(64, 0, _v16); (_v16[8]) = *_v64 & 255; (_v16[9]) = (_v64[1]) & 255; (_v16[0xa]) = (_v64[2]) & 255; (_v16[0xb]) = (_v64[3]) & 255; (_v16[0xc]) = (_v64[4]) & 255; (_v16[0xd]) = (_v64[5]) & 255; SYNCWORD_Assign(_v16, &(_v40[8])); (_v16[0x21]) = (_v16[0x21]) & 0xfe | *((_v40[0x10]) + 1) & 1; (_v16[0x22]) = (_v16[0x22]) & 0xfc | *(_v56 + 2) & 3; (_v16[0x23]) = (_v16[0x23]) & 0xf8; (_v16[0x23]) = (_v16[0x23]) & 0xf7; (_v16[0x24]) = (_v40[gTxPwrTable]) & 255; (_v16[0x30]) = 64000; (_v16[0x28]) = 0; (_v16[0x2a]) = 0; (_v16[0x2c]) = 0; (_v16[0x2e]) = 0; } } goto L15; } } _PLINK_SpawnActiveMember() {// addr = 0x00434F1F signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t159; // _t159 intOrPtr _t215; // _t215 _unknown_ _t220; // _t220 long long _t222; // _t222 signed long long _t227; // _t227 long long _t239; // _t239 _unknown_ _t240; // _t240 signed long long _t243; // _t243 _v48 = _t239; _v56 = _t243; _v64 = _t222; _v40 = 0; if( *((intOrPtr*)(_v48 + 30568)) != _v48 + 30568 || *((intOrPtr*)(_v48 + 30576)) != _v48 + 30568) { _t159 = *((intOrPtr*)(_v48 + 30568)); _t226 = _v48 + 30568; if(_t159 != _v48 + 30568) { _t159 = *((intOrPtr*)(_v48 + 30568)); } _v32 = _t159; _v24 = *((intOrPtr*)(_v48 + 30568)); if(_v48 + 30568 != _v24) { *((long long*)(_v48 + 30568)) = *_v24; if( *_v24 != _v48 + 30568) { _t226 = _v48 + 30568; *((long long*)( *_v24 + 8)) = _v48 + 30568; } else { _t215 = _v48; _t226 = _t215 + 30568; *((long long*)(_v48 + 30576)) = _t215 + 30568; } } _t240 = _v48 + 30568; check_list_constant(); if(_v32 != 0) { _v40 = _v32 - 104; if(( *_v40 & 255) != 0) { DebugPrint(0, _v40, _t220, _t226, _t240, _t243); _v40 = 0; } else { *_v40 = 1; (_v40[3]) = *(_v56 + 1) & 255; (_v40[4]) = *(_v64 + 4) & 255; _t227 = _v56; (_v40[0x10]) = _t227; (_v40[0x18]) = _v48 + 30594 + (_t227 << 2) + _t227 + (_t227 << 2) + _t227 - 30; *(_v40[0x18]) = 1; *((_v40[0x18]) + 2) = *( *((intOrPtr*)(_v64 + 24)) + 2) & 65535; BDADDR_Assign((_v40[0x18]) + 4, *((intOrPtr*)(_v64 + 24)) + 4); _v16 = &(_v40[0x20]); MCU_Read_Memory(64, _v16); (_v16[0x21]) = (_v16[0x21]) & 0xfe | (_v40[3]) & 1; (_v16[0x22]) = (_v16[0x22]) & 0xfc | *(_v56 + 2) & 3; (_v16[0x23]) = (_v16[0x23]) & 0xf8; (_v16[0x23]) = (_v16[0x23]) & 0xf7; (_v16[0x30]) = 64000; (_v16[0x28]) = 0; (_v16[0x2a]) = 0; (_v16[0x2c]) = 0; (_v16[0x2e]) = 0; } } } return; } _PLINK_NewLEScan() {// addr = 0x0043520C long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t67; // _t67 long long _t70; // _t70 _v32 = _t70; _v24 = 0; _t46 = _v32; if(( *(_v32 + 32016) & 255) != 0) { DebugPrint(0, _t46, __rcx, _t67, _t70, __rsi); } else { _v24 = _v32 + 32016; *_v24 = 1; *((char*)(_v24 + 3)) = 3; *(_v24 + 4) = *(_v32 + 191296) & 255; *((long long*)(_v24 + 16)) = _v32 + 55568; *((long long*)(_v24 + 24)) = 0; _v16 = _v24 + 32; RtlFillMemory(64, 0, _v16); *((intOrPtr*)(_v16 + 8)) = 2391391958; *((char*)(_v16 + 12)) = 85; *((char*)(_v16 + 13)) = 85; *((char*)(_v16 + 14)) = 85; *(_v16 + 36) = *(_v24 + gTxPwrTable) & 255; } return; } _PLINK_NewLEAdv() {// addr = 0x00435306 char _v25; // _cfa_ffffffe7 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t61; // _t61 signed long long _t92; // _t92 intOrPtr _t125; // _t125 signed long long _t138; // _t138 signed int _t141; // _t141 _v64 = _t141; _v72 = __rsi; _v48 = 0; if(_v72 == 0) { } else { _v25 = 0; while(_v25 <= 2) { _t92 = _v64 + (_t92 << 3 << 4) - (_t92 << 3) + 30688; _t61 = *(_t92 + 8) & 255; if(_t61 != 0) { _v25 = _v25 + 1; continue; } else { _v48 = (_v64 << 3 << 4) - (_v64 << 3) + 1440 + _v64 + 30696; *_v48 = 1; *((char*)(_v48 + 3)) = 0; *(_v48 + 4) = *(_v64 + 191297) & 255; _t138 = _v72; *(_v48 + 16) = _t138; *((long long*)(_v48 + 24)) = _v64 + 30664 + (_t138 << 2) + _t138 + (_t138 << 2) + _t138; RtlFillMemory(8, 0, *((intOrPtr*)(_v48 + 24))); _v40 = _v48 + 32; RtlFillMemory(64, 0, _v40); *((intOrPtr*)(_v40 + 8)) = 2391391958; *(_v40 + 33) = *(_v40 + 33) & 0xfe | *(_v72 + 1) & 1; *(_v40 + 34) = *(_v40 + 34) & 0xf8 | *(_v72 + 2) & 7; *((char*)(_v40 + 12)) = 85; *((char*)(_v40 + 13)) = 85; *((char*)(_v40 + 14)) = 85; _t125 = _v48; _t61 = *(_t125 + 4) & 0xff; *(_v40 + 36) = *(_t125 + gTxPwrTable) & 255; } goto L6; } } L6: return _t61; } _PLINK_NewLEACL() {// addr = 0x004354C6 char _v25; // _cfa_ffffffe7 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t61; // _t61 signed long long _t92; // _t92 intOrPtr _t125; // _t125 signed long long _t138; // _t138 signed int _t141; // _t141 _v64 = _t141; _v72 = __rsi; _v48 = 0; if(_v72 == 0) { } else { _v25 = 0; while(_v25 <= 2) { _t92 = _v64 + (_t92 << 3 << 4) - (_t92 << 3) + 30688; _t61 = *(_t92 + 8) & 255; if(_t61 != 0) { _v25 = _v25 + 1; continue; } else { _v48 = (_v64 << 3 << 4) - (_v64 << 3) + 1440 + _v64 + 30696; *_v48 = 1; *((char*)(_v48 + 3)) = 0; *(_v48 + 4) = *(_v64 + 191296) & 255; _t138 = _v72; *(_v48 + 16) = _t138; *((long long*)(_v48 + 24)) = _v64 + 30664 + (_t138 << 2) + _t138 + (_t138 << 2) + _t138; RtlFillMemory(8, 0, *((intOrPtr*)(_v48 + 24))); _v40 = _v48 + 32; RtlFillMemory(64, 0, _v40); *((intOrPtr*)(_v40 + 8)) = 2391391958; *(_v40 + 33) = *(_v40 + 33) & 0xfe | *(_v72 + 1) & 1; *(_v40 + 34) = *(_v40 + 34) & 0xf8 | *(_v72 + 2) & 7; *((char*)(_v40 + 12)) = 85; *((char*)(_v40 + 13)) = 85; *((char*)(_v40 + 14)) = 85; _t125 = _v48; _t61 = *(_t125 + 4) & 0xff; *(_v40 + 36) = *(_t125 + gTxPwrTable) & 255; } goto L6; } } L6: return _t61; } _PLINK_NewLETest( signed char __ecx // r2 ) {// addr = 0x00435686 long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed char _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t74; // _t74 long long _t132; // _t132 _v32 = _t132; _v40 = __rsi; _v44 = _t74; _v48 = __ecx; _v24 = 0; if(_v40 != 0 && ( *(_v32 + 32136) & 255) == 0) { _v24 = _v32 + 32136; *_v24 = 1; *((char*)(_v24 + 3)) = 0; *(_v24 + 4) = *(_v32 + 191296) & 255; *((long long*)(_v24 + 16)) = _v40; *((long long*)(_v24 + 24)) = _v32 + 30664; RtlFillMemory(8, 0, *((intOrPtr*)(_v24 + 24))); _v16 = _v24 + 32; RtlFillMemory(64, 0, _v16); *((intOrPtr*)(_v16 + 8)) = 1903575337; *((char*)(_v16 + 12)) = 85; *((char*)(_v16 + 13)) = 85; *((char*)(_v16 + 14)) = 85; *((char*)(_v16 + 15)) = 0; *(_v16 + 43) = _v44 & 255; *(_v16 + 33) = *(_v16 + 33) & 0xfe | *(_v40 + 1) & 1; *(_v16 + 34) = *(_v16 + 34) & 0xf8 | *(_v40 + 2) & 7; *(_v16 + 36) = *(_v24 + gTxPwrTable) & 255; *(_v16 + 35) = *(_v16 + 35) & 0xf8 | _v48 & 7; } return; } _PLINK_SetupLEConnACL( signed short _a8, // _cfa_8 signed char _a16 // _cfa_10 ) {// addr = 0x0043580B long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 signed short _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 intOrPtr _t58; // _t58 long long _t105; // _t105 long long _t111; // _t111 _v32 = _t105; _v40 = _t111; _v44 = _t58; _v56 = __rcx; _v48 = sil; _v60 = r9d; _v64 = _a8; _v68 = _a16; _v16 = _v40 + 32; _PLINK_ReadMcuLink(); *((intOrPtr*)(_v16 + 8)) = _v44; *(_v16 + 12) = *_v56 & 255; *(_v16 + 13) = (_v56[1]) & 255; *(_v16 + 14) = (_v56[2]) & 255; *(_v16 + 15) = _v48 & 255; *(_v16 + 43) = _v48 & 255; *((short*)(_v16 + 44)) = 0; *(_v16 + 46) = _v60 & 65535; *(_v16 + 38) = _v64 & 65535; *(_v16 + 35) = *(_v16 + 35) & 0xf8 | _v68 & 7; RtlFillMemory(5, 0, _v16 + 48); RtlFillMemory(5, 0, _v16 + 53); RtlFillMemory(2, 0, _v16 + 58); _PLINK_WriteMcuLink(); return 0; } _PLINK_Delete( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00435950 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v12 = 31; if(_v40 == 0 || ( *(_v40 + 1) & 0xff) > 12) { return _v12; } else { goto __rax; } } _PLINK_IncreaseTxPower( _unknown_ __eax // r0 ) {// addr = 0x00435C07 long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; if(RADIO_IncTxPwr(_v16 + 4) == 0) { return 0; } *_v24 = __dl; return 1; } _PLINK_DecreaseTxPower( _unknown_ __eax // r0 ) {// addr = 0x00435C57 long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; if(RADIO_DecTxPwr(_v16 + 4) == 0) { return 0; } *_v24 = __dl; return 1; } _PLINK_WriteMcuLink() {// addr = 0x00435CA7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; __rdx = _v24 + 32; __ecx = 64; MCU_Write_Memory(64, _v24 + 32); return; } _PLINK_ReadMcuLink() {// addr = 0x00435CE7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; __rdx = _v24 + 32; __ecx = 64; MCU_Read_Memory(64, _v24 + 32); return; } _PLINK_PiconetClockUsage() {// addr = 0x00435D27 char _v41; // _cfa_ffffffd7 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t122; // _t122 signed long long _t131; // _t131 signed long long _t135; // _t135 signed long long _t139; // _t139 signed long long _t160; // _t160 signed long long _t164; // _t164 signed long long _t168; // _t168 _unknown_ _t176; // _t176 _unknown_ _t183; // _t183 _push(r13); _push(r12); _push(_t174); __rsp = __rsp - 104; _v64 = __rdi; DebugPrint(0, _t122, _t176, _t183, __rdi, _v64); _v41 = 0; while(_v41 <= 6) { _t122 = _v64 + (_t122 << 3 << 4) - (_t122 << 3) + 30688; _t63 = *(_t122 + 8) & 255; if(( *(_t122 + 8) & 255) != 0) { _t63 = _t122; _t122 = *(_v64 + (_t122 << 3 << 4) - (_t122 << 3) + 30712); if(_t122 != 0) { _t131 = *(_v64 + (_t122 << 3 << 4) - (_t122 << 3) + 30720); if(_t131 == 0) { _t135 = *(_v64 + (_t131 << 3 << 4) - (_t131 << 3) + 30712); _t139 = *(_v64 + (_t135 << 3 << 4) - (_t135 << 3) + 30712); _t220 = _v64; _t142 = _v64 + (_t139 << 3 << 4) - (_t139 << 3) + 30688; r8 = _v64; _t122 = r8+rdx] + 30688; *__rsp = *(_t135 + 1) & 0xff; r9d = *(_t139 + 2) & 0xff; r8d = *(_v64 + (_t139 << 3 << 4) - (_t139 << 3) + 0x77e9) & 0xff; _t63 = DebugPrint(0, _t122, _v64, (_t142 << 3 << 4) - (_t142 << 3), __rdi, _v64); } else { _v56 = *((intOrPtr*)(_v64 + (_t131 << 3 << 4) - (_t131 << 3) + 30720)) + 4; r11d = *_v56 & 0xff; r10d = (_v56[1]) & 0xff; r9d = (_v56[2]) & 0xff; r8d = (_v56[3]) & 0xff; _t160 = &(_v56[5]); _t164 = *(_v64 + (_t160 << 3 << 4) - (_t160 << 3) + 30712); _t168 = *(_v64 + (_t164 << 3 << 4) - (_t164 << 3) + 30712); r12d = *(_t168 + 2) & 0xff; _t174 = _v64; _t171 = _v64 + (_t168 << 3 << 4) - (_t168 << 3) + 30688; r13 = _v64; _t122 = r13+rdx+0x0] + 30688; _v80 = r11d; _v88 = r10d; _v96 = r9d; _v104 = r8d; _v112 = (_v56[4]) & 0xff; _v120 = *_t160 & 0xff; *__rsp = *(_t164 + 1) & 0xff; r9d = r12d; r8d = *(_v64 + (_t168 << 3 << 4) - (_t168 << 3) + 0x77e9) & 0xff; _t63 = DebugPrint(0, _t122, _v64, (_t171 << 3 << 4) - (_t171 << 3), __rdi, _t220); } } } _v41 = _v41 + 1; } __rsp = &(__rsp[0x1a]); _pop(__rbx); _pop(r12); _pop(r13); return; } _PLINK_SanityCheck() {// addr = 0x0043603D char _v25; // _cfa_ffffffe7 char _v26; // _cfa_ffffffe6 signed long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t59; // _t59 signed long long _t62; // _t62 signed long long _t63; // _t63 signed long long _t67; // _t67 signed long long _t68; // _t68 _v96 = __rdi; _t59 = _v96 + 55568; _v88 = _t59; _v26 = 0; while(_v26 <= 2) { _t59 = _t59 + 1; *((long long*)(__rbp + _t59 * 8 - 80)) = _v96 + 55584 + (_v96 << 4); _v26 = _v26 + 1; } _v26 = 0; while(_v26 <= 6) { _t62 = _v96; _t63 = _t62 << 3; _t75 = _t63 << 4; _v40 = (_t63 << 4) - _t63 + _t62 + 30696; if(( *_v40 & 255) == 0) { L12: _v26 = _v26 + 1; continue; } _v48 = 0; _v25 = 0; while(_v25 <= 3) { _t67 = _v40; _t68 = *(__rbp + _t67 * 8 - 80); if( *((intOrPtr*)(_t67 + 16)) != _t68) { _v25 = _v25 + 1; continue; } _v48 = *((intOrPtr*)(__rbp + _t68 * 8 - 80)); break; } if(_v48 == 0) { r8 = *((intOrPtr*)(_v40 + 16)); DebugPrint(0, _v40, _t75, *((intOrPtr*)(_v40 + 16)), __rdi, __rsi); } goto L12; } return; } dump_list() {// addr = 0x0043615C _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x00436224 signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } _AMCTL_Initialise() {// addr = 0x00436605 signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t119; // _t119 long long _t131; // _t131 _v32 = _t131; *((long long*)(_v32 + 28792)) = _v32 + 28784; *((long long*)(_v32 + 28784)) = *((intOrPtr*)(_v32 + 28792)); check_list_constant(); _v9 = 0; while(_v9 <= 6) { _t119 = _v9 & 255; *((_t119 + _t119 + _t119 << 3) + _v32 + 28800) = 0; *((char*)(((_v9 & 255) + (_v9 & 255) + (_v9 & 255) << 3) + _v32 + 0x7081)) = _t119 + 1; _v24 = *((intOrPtr*)(_v32 + 28792)); *_v24 = ((_v9 & 255) + (_v9 & 255) + (_v9 & 255) << 3) + 28800 + _v32 + 8; *((intOrPtr*)(((_v9 & 255) + (_v9 & 255) + (_v9 & 255) << 3) + _v32 + 28808)) = _v32 + 28784; *((intOrPtr*)(((_v9 & 255) + (_v9 & 255) + (_v9 & 255) << 3) + _v32 + 28816)) = _v24; *((long long*)(_v32 + 28792)) = ((_v9 & 255) + (_v9 & 255) + (_v9 & 255) << 3) + 28800 + _v32 + 8; check_list_constant(); _v9 = _v9 + 1; } return; } PNET_NewLTAddr() {// addr = 0x004367C1 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t45; // _t45 long long _t79; // _t79 _v48 = _t79; _v32 = 0; if( *((intOrPtr*)(_v48 + 28784)) != _v48 + 28784 || *((intOrPtr*)(_v48 + 28792)) != _v48 + 28784) { _t45 = *((intOrPtr*)(_v48 + 28784)); if(_t45 != _v48 + 28784) { _t45 = *((intOrPtr*)(_v48 + 28784)); } _v24 = _t45; _v16 = *((intOrPtr*)(_v48 + 28784)); if(_v48 + 28784 != _v16) { *((long long*)(_v48 + 28784)) = *_v16; if( *_v16 != _v48 + 28784) { *((long long*)( *_v16 + 8)) = _v48 + 28784; } else { *((long long*)(_v48 + 28792)) = _v48 + 28784; } } check_list_constant(); _v32 = _v24 - 8; *_v32 = 1; } return; } PNET_DeleteLTAddr() {// addr = 0x004368F0 signed char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t46; // _t46 _v32 = _t46; _v40 = __rsi; _v9 = 0; if(_v40 != 0) { *_v40 = 0; _v24 = *(_v32 + 28792); *_v24 = &(_v40[8]); (_v40[8]) = _v32 + 28784; (_v40[0x10]) = _v24; *(_v32 + 28792) = &(_v40[8]); check_list_constant(); _v9 = 1; } return _v9 & 255; } PNET_Initialise() {// addr = 0x00436990 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t73; // _t73 _unknown_ _t77; // _t77 _unknown_ _t79; // _t79 long long _t103; // _t103 _v32 = _t103; RtlFillMemory(16, 0, _v32 + 25008); RtlFillMemory(48, 0, _v32 + 25024); *((char*)(_v32 + 25008)) = 1; *(_v32 + 25009) = 0; *((short*)(_v32 + 25012)) = 1568; *(_v32 + 25020) = 0; _v9 = 0; while(_v9 <= 2) { _t73 = _v32 + ((_v9 & 255) + 1564 << 4); *((char*)(_t73 + 1)) = 1; *((char*)(_v32 + ((_v9 & 255) + 1564 << 4) + 2)) = _t73 + 1; _t77 = _v32 + ((_v9 & 255) + 1564 << 4); *(_t77 + 8) = (_v9 & 255) + 99 << 4; _t79 = _v32 + ((_v9 & 255) + 1564 << 4); *((short*)(_t79 + 6)) = _t77 + 1588; *((short*)(_v32 + ((_v9 & 255) + 1564 << 4) + 4)) = _t79 + 1596; *(_v32 + ((_v9 & 255) + 1564 << 4) + 12) = 0; _v9 = _v9 + 1; } _AMCTL_Initialise(); return; } PNET_NewSlavePiconet() {// addr = 0x00436B07 signed char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t32; // _t32 signed long long _t53; // _t53 signed char _t63; // _t63 _v32 = __rdi; _v24 = 0; _v9 = 0; while(_v9 <= 2) { if(( *(_v32 + ((_v9 & 255) + 3474 << 4)) & 255) != 0) { _v9 = _v9 + 1; continue; } else { _t53 = _v32; _t71 = _t53 + 55584; _v24 = (_t53 << 4) + _t53 + 55584; *_v24 = 1; _t32 = _v9 & 1; if(_t32 != 0) { __rcx = *_v32; __rdi = _v24 + __rcx; _t32 = RT_PCI_IO_WRITE32(); } _t60 = *(_v32 + 191488); if((_t32 & 1) != 0) { __rcx = *_v32; _t63 = _v24; _t60 = _t63 + __rcx; __rdi = _t63 + __rcx; RT_PCI_IO_WRITE32(); } DebugPrint(0, _t60, __rcx, _t71, __rdi, __rsi); } break; } return; } PNET_DeleteSlavePiconet( long long __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x00436C24 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v9 = 0; if(_v40 != 0 && _v32 + 25008 != _v40 && ( *_v40 & 255) != 0) { *_v40 = 0; _v9 = 1; } return _v9 & 255; } LDM_InquiryRequest( _unknown_ __rax // r53 ) {// addr = 0x00436C68 signed char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 char _t20; // _t20 intOrPtr _t23; // _t23 long long _t31; // _t31 signed char _t33; // _t33 _v32 = _t33; _v36 = _t23; _v48 = _t31; _v40 = _t20; _v9 = 0; _v24 = 0; RtlFillMemory(256, 0, _v32 + 59072); *(_v32 + 30560) = 0; LINK_NewInuqiry(); _v24 = _v32; if(_v24 != 0) { _v9 = 1; } return _v9 & 255; } LDM_InquiryCancelRequest( long long __rdi // r57 ) {// addr = 0x00436CDF long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 30560)) = 0; return; } LDM_ReceiveInquiryPacket() {// addr = 0x00436CF4 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 char _t140; // _t140 long long _t182; // _t182 _v32 = _t182; _v48 = __rdx; _v56 = __rcx; _v64 = r8; _v36 = _t140; _v11 = 0; _v24 = 0; if(_v36 != 2) { if(_v36 == 3 || _v36 == 10 || _v36 == 14 || _v36 == 4 || _v36 == 11 || _v36 == 15) { _v10 = 3; } else { _v10 = 0; } } else { _v24 = _v56; if(( *(_v24 + 7) & 4) == 0) { _v10 = 1; } else { _v10 = 2; } } _v9 = *(_v32 + 30560) & 255; _t94 = *(_v32 + 30560) & 0xff; if(_t94 == 0) { if(_v10 != 1) { if(_v10 == 2) { _t94 = *(_v48 + 8) & 268435455; r8 = _v24; LDM_PreprocessInquiryResultEvent(); *(_v32 + 30560) = 1; } } else { r8 = _v24; LDM_PreprocessInquiryResultEvent(); LDM_GenerateInquiryResultEvent(); _v11 = 1; } } else { if(_t94 == 1) { if(_v10 != 1) { if(_v10 != 2) { if(_v10 != 3) { _t182 = _v32; LDM_GenerateInquiryResultEvent(); _v11 = 1; *(_v32 + 30560) = 0; } else { __rcx = _v56; __rsi = __rcx; _t182 = _v32; LDM_GenerateExtendedInquiryResultEvent(); _v11 = 1; *(_v32 + 30560) = 0; } } else { LDM_GenerateInquiryResultEvent(); r8 = _v24; _t182 = _v32; LDM_PreprocessInquiryResultEvent(); _v11 = 1; } } else { LDM_GenerateInquiryResultEvent(); r8 = _v24; LDM_PreprocessInquiryResultEvent(); _t182 = _v32; LDM_GenerateInquiryResultEvent(); _v11 = 1; *(_v32 + 30560) = 0; } } } r9d = *(_v32 + 30560) & 0xff; r8d = _v9 & 255; DebugPrint(0, _v32, __rcx, __rdx, _t182, __rsi); return _v11 & 255; } LDM_InquiryScanRequest( _unknown_ __rax, // r53 intOrPtr _a8 // _cfa_8 ) {// addr = 0x00436F98 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 short _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 short _t21; // _t21 char _t24; // _t24 long long _t28; // _t28 long long _t31; // _t31 _v32 = _t28; _v40 = _t31; _v44 = _t24; _v48 = _t21; _v52 = __si; _v56 = r9d; _v9 = 0; r9d = _v56 & 255; r8d = _v52 & 65535; *__rsp = _a8; LINK_NewInquiryScan(); _v24 = _v32; if(_v24 != 0) { _v9 = 1; } return _v9 & 255; } LDM_InquiryScanCancelRequest() {// addr = 0x00437001 _unknown_ __rbp; // r59 return 1; } LDM_PageCancelRequest() {// addr = 0x0043700C unsigned char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t48; // _t48 _v48 = _t48; _v10 = 0; _v32 = 0; _v32 = _v48 + 54720; _AUXCTL_ReadMcuPageCtl(); _v9 = ( *_v32 & 255) >> 7; if(_v9 == 0) { _v24 = *((intOrPtr*)(_v48 + 54712)); if(_v24 != 0) { if( *((intOrPtr*)(_v24 + 88)) != 0) { LINK_Delete(_v48, *((intOrPtr*)(_v24 + 88))); } LINK_Delete(_v48, _v24); _v10 = 1; } } return _v10 & 255; } LDM_PageScanRequest( _unknown_ __rax // r53 ) {// addr = 0x004370B8 signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc short _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 intOrPtr* _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 char _t21; // _t21 short _t23; // _t23 short _t25; // _t25 long long _t30; // _t30 _v32 = _t30; _v56 = r8; _v64 = r9; _v36 = _t25; _v40 = _t23; _v44 = _t21; r8 = _v64; LINK_NewPageScan(); _v24 = _v32; _v9 = 0; if(_v24 != 0) { *_v56 = _v24; _v9 = 1; } return _v9 & 255; } LDM_PageScanCancelRequest() {// addr = 0x0043711C unsigned char _v9; // _cfa_fffffff7 signed char* _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t54; // _t54 signed char* _t71; // _t71 long long _t75; // _t75 _v48 = _t75; _v10 = 0; _v32 = 0; _v32 = _v48 + 54752; _t54 = _v48; _t73 = _t54 + 54744; _t78 = _t54 + 54744; _t76 = _v48; _AUXCTL_ReadMcuPageScanCtl(_v48, _t54 + 54744); _v9 = ( *_v32 & 255) >> 7; if(_v9 == 0) { _v24 = *(_v48 + 54744); if(_v24 != 0) { if((_v24[0x58]) != 0) { _t71 = _v24; _t73 = (_t71[0x58]); _t78 = (_t71[0x58]); _t76 = _v48; LINK_Delete(_v48, _t71[0x58]); } if((_v24[0x68]) == 0 || (_v24[0x60]) == 0) { r9d = (_v24[0x60]) != 0 & 255; r8d = (_v24[0x68]) != 0 & 255; DebugPrint(0, _v24[0x68], __rcx, _t73, _t76, _t78); } else { LINK_Delete(_v48, _v24); } *(_v48 + 54744) = 0; _v10 = 1; } } return; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x00437240 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } LDM_SwitchToMasterRequest() {// addr = 0x00437252 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t94; // _t94 long long _t96; // _t96 intOrPtr _t98; // _t98 long long _t99; // _t99 long long _t100; // _t100 long long _t101; // _t101 _unknown_ _t118; // _t118 _unknown_ _t121; // _t121 intOrPtr _t122; // _t122 long long _t123; // _t123 long long _t131; // _t131 long long _t132; // _t132 long long _t133; // _t133 long long _t134; // _t134 long long _t135; // _t135 long long _t143; // _t143 _unknown_ _t144; // _t144 long long _t145; // _t145 long long _t146; // _t146 _v64 = _t131; _v72 = _t143; _v9 = 0; _v24 = 0; _v48 = 0; _v40 = 0; _v32 = 0; _t94 = _v64; _t70 = *(_t94 + 54792) & 255; if(( *(_t94 + 54792) & 255) != 0) { return; } _t96 = _v64 + 30560; _t132 = _t96; PNET_NewLTAddr(); _v24 = _t96; if(_v24 != 0) { _t122 = *((intOrPtr*)(_v72 + 104)); _t98 = _v64; _t119 = _t98 + 55568; _t99 = _v64; _t144 = _t98 + 55568; _t133 = _t99; _PLINK_SpawnActiveMember(); _v48 = _t99; if(_v48 != 0) { _t123 = _v24; _t120 = _v48; _t100 = _v64; _t145 = _v48; _t134 = _t100; _LTRANS_NewACL(); _v40 = _t100; if(_v40 != 0) { _t146 = _v40; _t101 = _v64; _t135 = _t101; _LLINK_NewACLC(_t101); _v32 = _t101; if(_v32 != 0) { _PLINK_WriteMcuLink(); _LTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); *(_v64 + 54796) = *(_v24 + 1) & 255; *(_v64 + 54797) = *(_v72 + 11) & 255; *(_v64 + 54798) = *(_v32 + 11) & 255; *((char*)(_v64 + 54792)) = 1; _v9 = 1; } else { _t70 = DebugPrint(0, _t101, _t120, _t123, _t135, _t146); } } else { _t70 = DebugPrint(0, _t100, _t120, _t123, _t134, _t145); } } else { _t70 = DebugPrint(0, _t99, _t119, _t122, _t133, _t144); } } else { _t70 = DebugPrint(0, _t96, _t118, _t121, _t132, _t143); } if(_v9 != 1) { if(_v24 != 0) { _t70 = PNET_DeleteLTAddr(); _v24 = 0; } if(_v48 != 0) { _t70 = _PLINK_Delete(_v64, _v48); _v48 = 0; } if(_v40 != 0) { _LTRANS_DelACL(); _v40 = 0; } if(_v32 != 0) { _LLINK_Delete(_t70); _v32 = 0; } } return; } LDM_SwitchToSlaveRequest() {// addr = 0x004374C9 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t101; // _t101 long long _t102; // _t102 long long _t104; // _t104 long long _t105; // _t105 long long _t106; // _t106 _unknown_ _t126; // _t126 _unknown_ _t128; // _t128 intOrPtr _t129; // _t129 long long _t137; // _t137 long long _t138; // _t138 long long _t139; // _t139 long long _t140; // _t140 long long _t141; // _t141 long long _t152; // _t152 long long _t153; // _t153 long long _t154; // _t154 long long _t155; // _t155 _v64 = _t137; _v72 = _t152; _v9 = 0; _v24 = 0; _v48 = 0; _v40 = 0; _v32 = 0; _t101 = _v64; _t69 = *(_t101 + 54760) & 255; if(( *(_t101 + 54760) & 255) != 0) { return; } _t102 = _v64; _t138 = _t102; PNET_NewSlavePiconet(); _v24 = _t102; if(_v24 != 0) { _t129 = *((intOrPtr*)(_v72 + 104)); _t127 = _v24; _t104 = _v64; _t153 = _v24; _t139 = _t104; _PLINK_SpawnActiveMember(); _v48 = _t104; if(_v48 != 0) { _t127 = _v48; _t105 = _v64; _t154 = _v48; _t140 = _t105; _LTRANS_NewACL(); _v40 = _t105; if(_v40 != 0) { _t155 = _v40; _t106 = _v64; _t141 = _t106; _LLINK_NewACLC(_t106); _v32 = _t106; if(_v32 != 0) { _PLINK_WriteMcuLink(); _LTRANS_WriteMcuLink(); _LLINK_WriteMcuLink(); *(_v64 + 54768) = *(_v72 + 11) & 255; *(_v64 + 54769) = *(_v32 + 11) & 255; *((char*)(_v64 + 54760)) = 1; *((intOrPtr*)(_v64 + 54764)) = 0; _v9 = 1; } else { _t69 = DebugPrint(0, _t106, _t127, _t129, _t141, _t155); } } else { _t69 = DebugPrint(0, _t105, _t127, _t129, _t140, _t154); } } else { _t69 = DebugPrint(0, _t104, _t127, _t129, _t139, _t153); } } else { _t69 = DebugPrint(0, _t102, _t126, _t128, _t138, _t152); _PLINK_PiconetClockUsage(); } if(_v9 != 1) { if(_v24 != 0) { _t136 = _v64 + 30560; _t162 = _v24; PNET_DeleteSlavePiconet(_v64 + 30560, _v24); _t123 = _v64 + 191308; _t149 = _v64 + 191308; if(BTSTS_CheckDeviceState(32, _v64 + 191308) != 0) { DebugPrint(0, _t123, _t127, _t136, _t149, _t162); _t69 = LCCMD_PageScanRequest(); } _v24 = 0; } if(_v48 != 0) { _t69 = _PLINK_Delete(_v64, _v48); _v48 = 0; } if(_v40 != 0) { _LTRANS_DelACL(); _v40 = 0; } if(_v32 != 0) { _LLINK_Delete(_t69); _v32 = 0; } } return; } _AUXCTL_RoleSwitchFinished( _unknown_ __rax, // r53 signed char* __rcx, // r55 signed char* __rdx // r56 ) {// addr = 0x00437781 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 signed char _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc signed char* _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 intOrPtr* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 char _t73; // _t73 signed char _t89; // _t89 signed char _t90; // _t90 signed char _t116; // _t116 __rcx = __rcx; _v48 = _t116; _v64 = __rdx; _v72 = __rcx; _v80 = r8; _v52 = _t73; _v10 = 0; _v9 = 0; _v32 = 0; _v24 = 0; if(( *(_v48 + 24200) & 255) == 0) { if(( *(_v48 + 24232) & 255) != 0) { _v10 = *(_v48 + 24237) & 255; _v9 = *(_v48 + 24238) & 255; *(_v48 + 24232) = 0; } L7: if(_v10 != 0 || _v9 != 0) { _t89 = _v48; LLINK_SearchUsedLinkByLLIndx(_v10 & 255, _t89, _t89); _v32 = _t89; _t90 = _v48; LLINK_SearchUsedLinkByLLIndx(_v9 & 255, _t90, _t90); _v24 = _t90; if(_v32 == 0 || _v24 == 0) { goto L16; } else { *_v64 = _v32; *_v72 = _v24; if(_v52 != 0) { L16: return; } LLINK_Resume(_v24); _t67 = LLINK_UpdateConnectionMode(); if( *((intOrPtr*)(_v32 + 88)) == 0) { goto L16; } _LLink_ReBindACLC(); _LLink_BindACLU(); *(_v32 + 88) = 0; return; } } else { return; } } _v10 = *(_v48 + 24208) & 255; _v9 = *(_v48 + 24209) & 255; if(_v52 == 0) { if( *((intOrPtr*)(_v48 + 24204)) != 0) { *_v80 = *((intOrPtr*)(_v48 + 24204)); } } *(_v48 + 24200) = 0; goto L7; } LDM_PreprocessM2SResultEvent( intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x00437922 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; if(__al != 0) { *((intOrPtr*)(_v16 + 24204)) = _v20; return; } return; } BBTEST_PrepareToChangeTestMode( signed char __edx, // r3 signed int _a8, // _cfa_8 _unknown_ _a16, // _cfa_10 signed char _a24, // _cfa_18 signed int* _a32 // _cfa_20 ) {// addr = 0x0043794C signed int _v9; // _cfa_fffffff7 signed char _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed int _v38; // _cfa_ffffffda signed int _v39; // _cfa_ffffffd9 signed int _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed int _t95; // _t95 signed int _t134; // _t134 signed int _t145; // _t145 signed int _t171; // _t171 signed long long _t210; // _t210 signed long long _t217; // _t217 signed long long _t219; // _t219 _v48 = __rdi; _t95 = _t171; r10d = r8d; r8d = _a8; _v52 = sil; _v56 = __edx; _v60 = _t95; _v64 = r10b; _v68 = r9b; _v72 = r8b; _v76 = dil; _v80 = _a24; _v16 = 1; _v40 = 0; _v9 = 0; while(_v9 <= 1) { _v20 = 0; _t210 = *(_v48 + 191488); if((_t95 & 1) == 0) { _v20 = 4294967295; _v40 = _v20; } else { _t210 = _v48 + *_v48; _t223 = &_v20; __rsi = &_v20; __rdi = _t210; RT_PCI_IO_READ32(); _v40 = _v20; } _t95 = _v40 & 0x80; if(_t95 != 0) { _v9 = _v9 + 1; continue; } else { _v40 = 0; _v40 = _v40 & 0xfc | _v52 & 3; _v40 = _v40 & 0xe3 | 0 + _t210 * 4; _v40 = _v40 & 0xdf | (_v72 & 1) << 5; _v40 = _v40 & 0xbf | (_v68 & 1) << 6; _v40 = _v40 & 255 | 128; _v39 = _v39 & 0xc0 | _v56 & 0x3f; _t134 = _v38 & 0xfc00 | _v60 & 0x3ff; _v38 = _t134; if((_t134 & 1) != 0) { _t219 = _v48; __rsi = *_t219; __rdi = &(__rsi[_t219]); RT_PCI_IO_WRITE32(); } _v24 = 0; _v24 = _v24 & 0x80 | _v76 & 0x7f; _t145 = _v23 & 0x80 | _v80 & 0x7f; _v23 = _t145; _t214 = *(_v48 + 191488); if((_t145 & 1) != 0) { _t217 = _v48; __rsi = *_t217; _t214 = &(__rsi[_t217]); __rdi = &(__rsi[_t217]); RT_PCI_IO_WRITE32(); } _v16 = 0; DebugPrint(0, _t214, _t223, __rdx, __rdi, __rsi); r9d = _v9 & 255; r8d = _v80 & 255; r11d = _v60 & 65535; r10d = _v56 & 255; _v96 = r9d; _v104 = r8d; _v112 = _v76 & 255; _v120 = _v72 & 255; _v128 = _v68 & 255; *__rsp = _v64 & 255; r9d = r11d; r8d = r10d; DebugPrint(0, _t214, _t223, __rdx, __rdi, __rsi); *_a32 = _v9 & 255; } break; } return _v16; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x00437C24 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } LC_BecomeMasterByPageResult() {// addr = 0x00437C36 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t30; // _t30 _v32 = _t30; _v16 = *((intOrPtr*)(_v32 + 104)); *((char*)(_v16 + 3)) = 1; *((char*)(_v32 + 2)) = 0; LLINK_UpdateConnectionMode(); if(( *(_v32 + 1) & 255) != 15 || *((intOrPtr*)(_v32 + 88)) == 0) { return; } else { LLINK_Resume( *((intOrPtr*)(_v32 + 88))); return; } } LC_BecomeSlaveByPageScanIncoming() {// addr = 0x00437C9A long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t30; // _t30 _v32 = _t30; _v16 = *((intOrPtr*)(_v32 + 104)); *((char*)(_v16 + 3)) = 2; *((char*)(_v32 + 2)) = 0; LLINK_UpdateConnectionMode(); if(( *(_v32 + 1) & 255) != 15 || *((intOrPtr*)(_v32 + 88)) == 0) { return; } else { LLINK_Resume( *((intOrPtr*)(_v32 + 88))); return; } } LC_MasterUnparkComplete( long long __rdi // r57 ) {// addr = 0x00437CFE long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } __rand() {// addr = 0x00437D10 _unknown_ __rbp; // r59 return 999999; } LL_RandBin( _unknown_ __eax // r0 ) {// addr = 0x00437D1B _unknown_ __rbp; // r59 signed int _t2; // _t2 _t2 = __rand(); return (_t2 + (_t2 >> 31 >> 31) & 1) - (_t2 >> 31 >> 31); } LL_RandSize( _unknown_ __eax, // r0 _unknown_ __rdx // r56 ) {// addr = 0x00437D35 _unknown_ __rbp; // r59 __rdx = __rdx; __rand(); return __rdx + 1; } LL_AccessAddressGenerator( _unknown_ __eax // r0 ) {// addr = 0x00437D62 intOrPtr _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _v24 = 0; _v40 = 0; _v36 = LL_RandBin(__eax); _v32 = 0; while(1) { _v20 = LL_RandSize(_t32, __rdx); _v28 = _v32; while(_v20 + _v32 > _v28) { _v40 = _v40 | _v36 << __cl; if(_v28 != 25) { _v28 = _v28 + 1; continue; } else { _v24 = 1; } break; } if(_v24 == 0) { _v36 = _v36 == 0 & 255; _t32 = _v20; _v32 = _v32 + _v20; continue; } if(_v36 == 0) { _v40 = _v40 | 872415232; } else { _v40 = _v40 | 3355443200; } return _v40; } } LL_AccessAddressCheck() {// addr = 0x00437E05 unsigned int _v26; // _cfa_ffffffe6 unsigned int _v28; // _cfa_ffffffe4 unsigned int _v30; // _cfa_ffffffe2 signed short _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 unsigned int _v60; // _cfa_ffffffc4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t81; // _t81 signed int _t83; // _t83 signed int _t125; // _t125 _v60 = _t125; _v52 = 0; _v48 = 0; _v44 = 0; _v40 = 0; _v32 = _v60 & 255; _v30 = (_v60 & 65280) >> 8; _v28 = (_v60 & 16711680) >> 16; _v26 = _v60 >> 24; if((_v32 & 65535) == _v30 && (_v30 & 65535) == _v28 && (_v28 & 65535) == _v26) { DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); _v40 = _v40 + 1; } _v44 = 0; _v48 = 0; _v56 = 0; while(_v56 <= 31) { _v36 = _v60 >> _v56 & 1; if(_v36 != 0) { _t81 = 1; } else { _t81 = 4294967295; } _v52 = _t81; if(_v48 == _v52) { _t83 = _v48; } else { _t83 = _v52 + _v48; } _v48 = _t83; if(_v48 == 0) { _v48 = _v52; _v44 = _v44 + 1; } if(_v44 <= 24) { _v56 = _v56 + 1; continue; } else { DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); _v40 = _v40 + 1; break; } } DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); if(_v60 == 2391391958) { DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); _v40 = _v40 + 1; } _v52 = 0; _v36 = _v60 ^ 2391391958; _v56 = 0; while(_v56 <= 31) { _v52 = _v52 + (_v36 >> _v56 & 1); _v56 = _v56 + 1; } if(_v52 == 1) { DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); _v40 = _v40 + 1; } return _v40; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00437FEC signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0043801B signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00438071 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004380B0 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LLadv_LCCmdAdvertiseCB() {// addr = 0x004380E2 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t11; // _t11 _unknown_ _t14; // _t14 long long _t16; // _t16 _unknown_ _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t20; _v24 = _t22; _v40 = _t16; _v28 = _t11; DebugPrint(0, _t14, _t16, _t18, _t20, _t22); LLadv_StateHandler(); return; } LLadv_LCCmdConnSetupCB() {// addr = 0x00438132 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t14; // _t14 _unknown_ _t22; // _t22 long long _t24; // _t24 _unknown_ _t26; // _t26 long long _t28; // _t28 long long _t30; // _t30 _v16 = _t28; _v24 = _t30; _v40 = _t24; _v28 = _t14; DebugPrint(0, _t22, _t24, _t26, _t28, _t30); if(_v24 == 0) { DebugPrint(0, _t22, _t24, _t26, _t28, _t30); return; } LLadv_StateHandler(); return; } LLadv_LCCmdAvertiseCancelCB() {// addr = 0x004381A4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t11; // _t11 _unknown_ _t14; // _t14 long long _t16; // _t16 _unknown_ _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t20; _v24 = _t22; _v40 = _t16; _v28 = _t11; DebugPrint(0, _t14, _t16, _t18, _t20, _t22); LLadv_StateHandler(); return; } LLadv_LCEventCB() {// addr = 0x004381F4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 _unknown_ _t13; // _t13 long long _t15; // _t15 long long _t17; // _t17 long long _t19; // _t19 _v16 = _t17; _v24 = _t19; _v32 = _t15; DebugPrint(0, _t11, _t13, _t15, _t17, _t19); LLadv_StateHandler(); return; } LLadv_ReceiveCB( long long __rcx, // r55 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0043823F signed char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 intOrPtr _v96; // _cfa_ffffffa0 char* _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; __rcx = __rcx; _v64 = __rdi; _v72 = __rsi; _v80 = __rdx; _v88 = __rcx; _v96 = r8; _v104 = r9; _v9 = 0; if(_v64 == 0 || _v72 == 0 || _v80 == 0) { *_v104 = 1; return 0; } _v32 = _v80; if(( *(_v32 + 3) & 1) == 0) { if(( *(_v32 + 3) & 2) == 0) { L10: *_v104 = 1; return _v9 & 255; } _v24 = *(_v32 + 14) & 65535; if((_v24 & 0xf) > 5) { goto L10; } goto __rax; } *_v104 = 1; return 0; } LLadv_StateHandler() {// addr = 0x0043836F long long _v48; // _cfa_ffffffd0 signed int _v109; // _cfa_ffffff93 char _v114; // _cfa_ffffff8e intOrPtr _v140; // _cfa_ffffff74 intOrPtr _v144; // _cfa_ffffff70 intOrPtr _v148; // _cfa_ffffff6c char _v152; // _cfa_ffffff68 signed char _v216; // _cfa_ffffff28 long long _v224; // _cfa_ffffff20 char _v264; // _cfa_fffffef8 _unknown_ _v272; // _cfa_fffffef0 long long _v280; // _cfa_fffffee8 signed char _v284; // _cfa_fffffee4 long long _v296; // _cfa_fffffed8 signed int _v300; // _cfa_fffffed4 char _v308; // _cfa_fffffecc _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t79; // _t79 char _t102; // _t102 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 288; _v272 = _t116; _v280 = __rsi; _v296 = __rcx; _v284 = _t79; _v48 = *fs:0x28]; _v152 = 12; _v109 = 0; _v224 = &_v264; _v216 = 0; _v148 = *((intOrPtr*)(_v272 + 191380)); _v140 = _v148; _v144 = *((intOrPtr*)(_v272 + 191376)); DebugPrint(0, _v272, __rcx, ?_? ( &_v264), __rcx, __rsi); if((_v284 & 255) - 5 <= 6) { goto __rax; } _v152 = 31; *((intOrPtr*)(_v272 + 191380)) = _v148; _t108 = _v272; *((intOrPtr*)(_v272 + 191376)) = _v144; _t102 = _v152; if(_t102 != 0) { _v300 = _v109 & 255; _v308 = _v152; *__rsp = _v148; r9d = _v140; r8d = _v144; DebugPrint(0, _t108, __rcx, _t112, _t116, __rsi); if(_v109 == 1) { _v114 = 8202; write_du(1, &_v152, _v224, __rsi); __rcx = _v272 + 190168; _t112 = &_v264; _t108 = ?_? ( &_v114); __rsi = &_v114; _t116 = __rcx; EG_Generate_Command_Complete_Event(); } } else { *__rsp = _v148; r9d = _v140; r8d = _v144; DebugPrint(0, _t108, __rcx, _t112, _t116, __rsi); } DebugPrint(0, _t108, __rcx, _t112, _t116, __rsi); if(_t102 != 0) { __stack_chk_fail(); } __rsp = __rsp + 288; _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } LL_SetAdvertiseEnable() {// addr = 0x004394FC signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t11; // _t11 long long _t22; // _t22 _v32 = _t22; _v40 = __rsi; _t11 = *_v40 & 255; _v9 = _t11; if(_v9 != 1) { LLadv_StateHandler(); _v16 = _t11; } else { LLadv_StateHandler(); _v16 = _t11; } return _v16; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00439560 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0043958F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004395CE _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x00439600 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } LLcon_GenerateCRCInit( unsigned int __eax // r0 ) {// addr = 0x00439612 unsigned int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t25; // _t25 _v32 = _t25; _v40 = __rsi; BTRAND_Seed_Initialize(); BTRAND_Rand(); _v12 = __eax; *_v40 = __dl; *(_v40 + 1) = _v12 >> 8; *(_v40 + 2) = _v12 >> 16; return; } LLcon_LCCmdInitCB() {// addr = 0x00439663 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t11; // _t11 _unknown_ _t14; // _t14 long long _t16; // _t16 _unknown_ _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t20; _v24 = _t22; _v40 = _t16; _v28 = _t11; DebugPrint(0, _t14, _t16, _t18, _t20, _t22); LLcon_StateHandler(); return; } LLcon_LCCmdInitCancelCB() {// addr = 0x004396B3 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t11; // _t11 _unknown_ _t14; // _t14 long long _t16; // _t16 _unknown_ _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t20; _v24 = _t22; _v40 = _t16; _v28 = _t11; DebugPrint(0, _t14, _t16, _t18, _t20, _t22); LLcon_StateHandler(); return; } LLcon_LCCmdConnSetupCB() {// addr = 0x00439703 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t11; // _t11 _unknown_ _t14; // _t14 long long _t16; // _t16 _unknown_ _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t20; _v24 = _t22; _v40 = _t16; _v28 = _t11; DebugPrint(0, _t14, _t16, _t18, _t20, _t22); LLcon_StateHandler(); return; } LLcon_LCEventCB() {// addr = 0x00439753 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t12; // _t12 _unknown_ _t15; // _t15 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v16 = _t19; _v24 = _t21; _v32 = _t17; DebugPrint(0, _t12, _t15, _t17, _t19, _t21); LLcon_StateHandler(); return; } LLcon_LCConnectionEstablishedCB() {// addr = 0x004397A2 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t12; // _t12 _unknown_ _t15; // _t15 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v16 = _t19; _v24 = _t21; _v32 = _t17; DebugPrint(0, _t12, _t15, _t17, _t19, _t21); LLcon_StateHandler(); return; } LLcon_ReceiveCB() {// addr = 0x004397F1 signed char _v9; // _cfa_fffffff7 signed int _v23; // _cfa_ffffffe9 signed char _v24; // _cfa_ffffffe8 signed char _v40; // _cfa_ffffffd8 long long _v176; // _cfa_ffffff50 long long _v192; // _cfa_ffffff40 long long _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 long long _v216; // _cfa_ffffff28 long long _v224; // _cfa_ffffff20 long long _v232; // _cfa_ffffff18 intOrPtr _v240; // _cfa_ffffff10 char* _v248; // _cfa_ffffff08 _unknown_ __rbp; // r59 signed int _t85; // _t85 _unknown_ _t137; // _t137 long long _t162; // _t162 long long _t166; // _t166 long long _t170; // _t170 _v208 = _t166; _v216 = _t170; _v224 = _t162; _v232 = _t158; _v240 = r8; _v248 = r9; _v9 = 0; DebugPrint(0, _t137, _t158, _t162, _t166, _t170); if(_v208 == 0 || _v216 == 0 || _v224 == 0) { DebugPrint(0, _t137, _t158, _t162, _t166, _t170); *_v248 = 1; return 0; } _v200 = _v224; _t140 = _v200; if(( *(_v200 + 3) & 1) != 0) { DebugPrint(0, _t140, _t158, _t162, _t166, _t170); *_v248 = 1; return 0; } if(( *(_v200 + 3) & 2) == 0) { _v176 = _v200; _v24 = *(_v200 + 14) & 65535; _v192 = *((intOrPtr*)(_v216 + 72)); *(_v192 + 108) = *(_v176 + 6) & 65535; *(_v192 + 112) = *(_v176 + 8) & 268435455; _t150 = _v176; if(( *(_v176 + 13) & 0xf0) != 0) { DebugPrint(0, _t150, _t158, _t162, _t166, _t170); _t162 = _v176; _t158 = _v216; _t150 = _v208; _t170 = _v216; _t166 = _v208; LLcp_LCBBAckCB(); } DebugPrint(0, _t150, _t158, _t162, _t166, _t170); _t85 = _v24 & 3; if(_t85 == 2) { r8d = _v23 & 0x1f; LLcon_ProcessLEUData(); } else { if(_t85 == 3) { r8d = _v23 & 0x1f; LLcp_ProcessControlPDU(); } else { if(_t85 == 1) { r8d = _v23 & 0x1f; LLcon_ProcessLEUData(); } } } goto L19; } else { _v40 = *(_v200 + 14) & 65535; DebugPrint(0, _v200, _t158, _t162, _t166, _t170); if((_v40 & 0xf) > 6) { L19: *_v248 = 1; return _v9 & 255; } goto __rax; } } LLcon_LCLinkFlushCB() {// addr = 0x00439CAD long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t37; // _t37 long long _t39; // _t39 long long _t41; // _t41 long long _t43; // _t43 _v32 = _t41; _v40 = _t43; _v48 = _t39; _v16 = *((intOrPtr*)(_v40 + 72)); DebugPrint(0, *((intOrPtr*)(_v40 + 72)), _t37, _t39, _t41, _t43); if( *((intOrPtr*)(_v16 + 240)) != 0 && *((intOrPtr*)( *((intOrPtr*)(_v16 + 240)) + 48)) != 0) { r8 = *((intOrPtr*)( *((intOrPtr*)(_v16 + 240)) + 48)); r8(); } return 0; } LLcon_LCSupervisionTimeoutCB() {// addr = 0x00439D41 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t49; // _t49 long long _t57; // _t57 signed char* _t59; // _t59 _v16 = _t57; _v24 = _t59; _v32 = __rdx; DebugPrint(0, _t49, __rcx, __rdx, _t57, _t59); if(_v24 != 0) { if(( *_v24 & 255) != 0) { if((_v24[0x18]) != 0) { r8 = (_v24[0x18]); r8(); return 0; } DebugPrint(0, _v24, __rcx, __rdx, _t57, _t59); return 31; } DebugPrint(0, _v24, __rcx, __rdx, _t57, _t59); return 31; } DebugPrint(0, _t49, __rcx, __rdx, _t57, _t59); return 31; } LLcon_LCMICErrorCB() {// addr = 0x00439E31 signed char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t61; // _t61 long long _t73; // _t73 signed char* _t75; // _t75 _v32 = _t73; _v40 = _t75; _v48 = __rdx; if(_v40 != 0) { if(( *_v40 & 255) != 0) { if((_v40[0x18]) != 0) { _v16 = (_v40[0x48]); if(( *(_v16 + 106) & 255) != 0) { r8 = (_v40[0x18]); r8(); return 0; } DebugPrint(0, _v40, __rcx, __rdx, _t73, _t75); return 31; } DebugPrint(0, _v40, __rcx, __rdx, _t73, _t75); return 31; } DebugPrint(0, _v40, __rcx, __rdx, _t73, _t75); return 31; } DebugPrint(0, _t61, __rcx, __rdx, _t73, _t75); return 31; } LLcon_StateHandler() {// addr = 0x00439F50 long long _v16; // _cfa_fffffff0 signed int _v43; // _cfa_ffffffd5 signed int _v44; // _cfa_ffffffd4 char _v60; // _cfa_ffffffc4 intOrPtr _v68; // _cfa_ffffffbc intOrPtr _v76; // _cfa_ffffffb4 intOrPtr _v80; // _cfa_ffffffb0 char _v84; // _cfa_ffffffac long long _v112; // _cfa_ffffff90 signed char _v120; // _cfa_ffffff88 char _v152; // _cfa_ffffff68 _unknown_ _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 signed char _v172; // _cfa_ffffff54 long long _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 char _v208; // _cfa_ffffff30 _unknown_ __rbp; // r59 signed char _t91; // _t91 char _t115; // _t115 _v160 = _t132; _v168 = __rsi; _v184 = __rcx; _v172 = _t91; _v16 = *fs:0x28]; _v84 = 12; _v44 = 0; _v43 = 0; _v120 = 0; _v112 = &_v152; _v80 = *((intOrPtr*)(_v160 + 191380)); _v68 = _v80; _v76 = *((intOrPtr*)(_v160 + 191376)); DebugPrint(0, _v160, __rcx, ?_? ( &_v152), __rcx, __rsi); if((_v172 & 255) - 12 > 29) { _v84 = 31; *((intOrPtr*)(_v160 + 191380)) = _v80; _t121 = _v160; *((intOrPtr*)(_v160 + 191376)) = _v76; _t115 = _v84; if(_t115 != 0) { r8d = _v68; _v192 = _v43 & 255; _v200 = _v44 & 255; _v208 = _v84; *__rsp = _v80; r9d = r8d; r8d = _v76; DebugPrint(0, _t121, __rcx, _t127, _t132, __rsi); if(_v44 != 1) { if(_v43 == 1) { _v60 = 8205; write_du(1, &_v84, _v112, __rsi); __rcx = _v160 + 190168; _t127 = &_v152; _t121 = ?_? ( &_v60); __rsi = &_v60; _t132 = __rcx; EG_Generate_Command_Complete_Event(); } } else { _v60 = 8206; write_du(1, &_v84, _v112, __rsi); __rcx = _v160 + 190168; _t127 = &_v152; _t121 = ?_? ( &_v60); __rsi = &_v60; _t132 = __rcx; EG_Generate_Command_Complete_Event(); } } else { *__rsp = _v80; r9d = _v68; r8d = _v76; DebugPrint(0, _t121, __rcx, _t127, _t132, __rsi); } DebugPrint(0, _t121, __rcx, _t127, _t132, __rsi); if(_t115 == 0) { return; } else { __stack_chk_fail(); return; } } goto __rax; } LLcon_ProcessLEUData() {// addr = 0x0043B443 signed int _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed int _t68; // _t68 signed char _t83; // _t83 long long _t110; // _t110 long long _t113; // _t113 long long _t127; // _t127 _unknown_ _t130; // _t130 long long _t132; // _t132 long long _t135; // _t135 long long _t142; // _t142 _v64 = _t132; _v72 = _t142; _v88 = _t127; _v76 = _t83; _v80 = r8d; if(_v80 == 0) { return; } _v24 = 0; _v24 = _v24 & 0xf000 | *(_v72 + 8) & 0xfff; _v23 = _v23 & 0xcf | (_v76 & 3) << 4; _v23 = _v23 & 0x3f; _t68 = _v80 & 255; _v22 = _t68; LLcp_IsEncProc(); if(_t68 == 0) { } else { LLcp_IsIncomingLEUAllowedInEnc(); if(_t68 == 0) { _v48 = *((intOrPtr*)(_v72 + 72)); r8 = *((intOrPtr*)( *((intOrPtr*)(_v48 + 240)) + 48)); r8(); return; } } if(LLcp_IsTerminateProc(_v72) == 0) { _t110 = *((intOrPtr*)(_v72 + 32)); _t135 = _t110; QUEUE_EnqueueRequest(); _v40 = _t110; if(_v40 == 0) { *((char*)(_v64 + 190501)) = 1; r8d = _v80 & 255; DebugPrint(0, _v72, _t127, _t130, _t135, _t142); return; } _t113 = _v40; QUEUE_GetDataBuf(_t113); _v32 = _t113; RtlCopyMemory(_v80 & 255, _v32, _v88); QUEUE_EnqueueCommit(); KeSetEvent(0, _v64 + 190464, _v88); r8d = _v80 & 255; DebugPrint(0, _v72, _v88, _t130, _v64 + 190464, _v88); return; } return; } LL_LCEventCB() {// addr = 0x0043B623 signed char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t33; // _t33 _v48 = __rdi; _v56 = __rsi; _v72 = __rcx; _v60 = _t33; _v20 = 0; _v10 = 0; _t42 = _v48; _v16 = *((intOrPtr*)(_v48 + 191376)); r8d = _v16; DebugPrint(0, _t42, __rcx, __rdx, __rdi, __rsi); if((_v60 & 255) - 5 <= 32) { goto __rax; } _t43 = _v48; *((intOrPtr*)(_v48 + 191376)) = _v16; DebugPrint(0, _t43, __rcx, __rdx, __rdi, __rsi); return _v10 & 255; } LL_CreateConnection( intOrPtr __eax // r0 ) {// addr = 0x0043B89C intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t9; // _t9 _v32 = _t9; _v40 = __rsi; LLcon_StateHandler(); _v12 = __eax; return _v12; } LL_CreateConnectionCancel( intOrPtr __eax // r0 ) {// addr = 0x0043B8D1 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v32 = _t7; LLcon_StateHandler(); _v12 = __eax; return _v12; } LL_Disconnect() {// addr = 0x0043B900 intOrPtr _v12; // _cfa_fffffff4 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t56; // _t56 signed short _t65; // _t65 _unknown_ _t74; // _t74 long long _t75; // _t75 intOrPtr _t88; // _t88 intOrPtr _t92; // _t92 intOrPtr _t94; // _t94 long long _t101; // _t101 intOrPtr _t106; // _t106 _v48 = _t101; _v52 = _t65; _v56 = _t56; _v12 = 2; DebugPrint(0, _t74, _t94, _t97, _t101, _t106); _t75 = _v48; _t102 = _t75; LINK_SerachLEConnHandle(_v52 & 65535, _t75); _v40 = _t75; if(_v40 == 0) { L7: return; } _v32 = *((intOrPtr*)(_v40 + 72)); _v24 = 1030; if( *((intOrPtr*)(_v32 + 240)) != 0) { _t88 = *((intOrPtr*)(_v32 + 240)); _t89 = *((intOrPtr*)(_t88 + 48)); if( *((intOrPtr*)(_t88 + 48)) != 0) { DebugPrint(0, _t89, _t94, _t97, _t102, _t106); r8 = *((intOrPtr*)( *((intOrPtr*)(_v32 + 240)) + 48)); _t92 = _v32; _t97 = *((intOrPtr*)(_t92 + 240)); _t106 = _v40; _t94 = *((intOrPtr*)(_t92 + 240)); _t102 = _v48; r8(); } } _t80 = _v32; if(( *(_v32 + 184) & 255) == 0) { DebugPrint(0, _t80, _t94, _t97, _t102, _t106); r8d = _v56 & 255; LLcp_InitLlcpTerminateDisconnect(); _v12 = 0; EG_Generate_Command_Status_Event(); } else { _v12 = 12; EG_Generate_Command_Status_Event(); } goto L7; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x0043BA78 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0043BAA7 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0043BAFD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0043BB3C _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LLINK_Suspend( long long __rdi // r57 ) {// addr = 0x0043BB6E long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 1; return; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x0043BB80 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0043BB92 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LLcp_LCCmdConnUpdateCB() {// addr = 0x0043BCD3 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 intOrPtr _t54; // _t54 intOrPtr _t57; // _t57 long long _t63; // _t63 _unknown_ _t65; // _t65 long long _t67; // _t67 long long _t69; // _t69 _v32 = _t67; _v40 = _t69; _v56 = _t63; _v44 = _t34; _t51 = _v40; DebugPrint(0, _v40, _t63, _t65, _t67, _t69); if(_v40 == 0) { DebugPrint(0, _t51, _t63, _t65, _t67, _t69); return; } _v16 = *((intOrPtr*)(_v40 + 72)); _t54 = _v16; _t55 = *((intOrPtr*)(_t54 + 240)); if( *((intOrPtr*)(_t54 + 240)) == 0) { DebugPrint(0, _t55, _t63, _t65, _t67, _t69); return; } _t57 = *((intOrPtr*)(_v16 + 240)); _t58 = *((intOrPtr*)(_t57 + 48)); if( *((intOrPtr*)(_t57 + 48)) == 0) { DebugPrint(0, _t58, _t63, _t65, _t67, _t69); return; } r8 = *((intOrPtr*)( *((intOrPtr*)(_v16 + 240)) + 48)); r8(); return; } LLcp_LCCmdEncCB() {// addr = 0x0043BDD0 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t30; // _t30 _unknown_ _t47; // _t47 intOrPtr _t50; // _t50 intOrPtr _t53; // _t53 long long _t59; // _t59 _unknown_ _t61; // _t61 long long _t63; // _t63 long long _t65; // _t65 _v32 = _t63; _v40 = _t65; _v56 = _t59; _v44 = _t30; DebugPrint(0, _t47, _t59, _t61, _t63, _t65); if(_v40 == 0) { DebugPrint(0, _t47, _t59, _t61, _t63, _t65); return; } _v16 = *((intOrPtr*)(_v40 + 72)); _t50 = _v16; _t51 = *((intOrPtr*)(_t50 + 240)); if( *((intOrPtr*)(_t50 + 240)) == 0) { DebugPrint(0, _t51, _t59, _t61, _t63, _t65); return; } _t53 = *((intOrPtr*)(_v16 + 240)); _t54 = *((intOrPtr*)(_t53 + 48)); if( *((intOrPtr*)(_t53 + 48)) == 0) { DebugPrint(0, _t54, _t59, _t61, _t63, _t65); return; } r8 = *((intOrPtr*)( *((intOrPtr*)(_v16 + 240)) + 48)); r8(); return; } LLcp_LCCmdChannelUpdateCB() {// addr = 0x0043BEC0 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t52; // _t52 intOrPtr _t79; // _t79 intOrPtr _t82; // _t82 long long _t95; // _t95 _unknown_ _t97; // _t97 long long _t103; // _t103 long long _t107; // _t107 _v32 = _t103; _v40 = _t107; _v56 = _t95; _v44 = _t52; _t71 = _v40; DebugPrint(0, _v40, _t95, _t97, _t103, _t107); if(_v40 == 0) { DebugPrint(0, _t71, _t95, _t97, _t103, _t107); return; } ral_spin_lock(_v32 + 30504, &_v24); if( *((intOrPtr*)(_v40 + 168)) != 0 && *((intOrPtr*)(_v40 + 176)) != 0) { *((char*)( *((intOrPtr*)(_v40 + 168)) + 2)) = 0; *((long long*)(_v40 + 168)) = *((intOrPtr*)(_v40 + 176)); *((long long*)(_v40 + 176)) = 0; } _t100 = _v32 + 30504; _t109 = _v24; _t105 = _v32 + 30504; ral_spin_unlock(_v32 + 30504, _v24); _v16 = *((intOrPtr*)(_v40 + 72)); _t79 = _v16; _t80 = *((intOrPtr*)(_t79 + 240)); if( *((intOrPtr*)(_t79 + 240)) == 0) { DebugPrint(0, _t80, _t95, _t100, _t105, _t109); return; } else { _t82 = *((intOrPtr*)(_v16 + 240)); _t83 = *((intOrPtr*)(_t82 + 48)); if( *((intOrPtr*)(_t82 + 48)) == 0) { DebugPrint(0, _t83, _t95, _t100, _t105, _t109); return; } r8 = *((intOrPtr*)( *((intOrPtr*)(_v16 + 240)) + 48)); r8(); return; } } LLcp_Response_Timeout_CB() {// addr = 0x0043C045 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 intOrPtr _t44; // _t44 _unknown_ _t53; // _t53 _unknown_ _t55; // _t55 long long _t57; // _t57 long long _t59; // _t59 _v32 = _t57; _v40 = _t59; _t43 = _v40; _v24 = _v40; DebugPrint(0, _v40, _t53, _t55, _t57, _t59); if(_v24 != 0) { _t44 = _v24; _t45 = *((intOrPtr*)(_t44 + 8)); if( *((intOrPtr*)(_t44 + 8)) != 0) { _v16 = *((intOrPtr*)(_v24 + 8)); if( *((intOrPtr*)(_v24 + 48)) == 0) { DebugPrint(0, _v16, _t53, _t55, _t57, _t59); return; } r8 = *((intOrPtr*)(_v24 + 48)); r8(); return; } DebugPrint(0, _t45, _t53, _t55, _t57, _t59); return; } DebugPrint(0, _t43, _t53, _t55, _t57, _t59); return; } LLcp_LCBBAckCB() {// addr = 0x0043C128 signed int _v9; // _cfa_fffffff7 signed int* _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t133; // _t133 long long _t135; // _t135 long long _t138; // _t138 signed char* _t140; // _t140 _v48 = _t138; _v56 = _t140; _v64 = _t135; _v9 = ( *(_v64 + 13) & 255) >> 4; _t109 = _v56; r8d = _v9 & 255; DebugPrint(0, _v56, _t133, _t135, _t138, _t140); if(_v56 == 0) { DebugPrint(0, _t109, _t133, _t135, _t138, _t140); return; } if(( *_v56 & 255) != 0) { if((_v9 & 255) - 1 > 1) { r8d = _v9 & 255; DebugPrint(0, _v56, _t133, _t135, _t138, _t140); } else { _v32 = (_v56[0x48]); if( *((intOrPtr*)(_v32 + 240)) == 0) { DebugPrint(0, _v56, _t133, _t135, _t138, _t140); } else { if( *((intOrPtr*)( *((intOrPtr*)(_v32 + 240)) + 48)) == 0) { DebugPrint(0, _v56, _t133, _t135, _t138, _t140); } else { _v24 = *((intOrPtr*)(_v32 + 240)) + 16; *_v24 = *(_v64 + 8) & 268435455; (_v24[1]) = *(_v64 + 6) & 0xffff; r8 = *((intOrPtr*)( *((intOrPtr*)(_v32 + 240)) + 48)); r8(); } } } return; } else { DebugPrint(0, _v56, _t133, _t135, _t138, _t140); return; } } LLcp_Terminate_Timeout_CB() {// addr = 0x0043C313 signed char _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t54; // _t54 _unknown_ _t56; // _t56 long long _t58; // _t58 signed char* _t60; // _t60 _v32 = _t58; _v40 = _t60; _v24 = _v40; DebugPrint(0, _v40, _t54, _t56, _t58, _t60); if(_v24 == 0) { L7: return; } _t24 = *_v24 & 255; if(( *_v24 & 255) == 0 || (_v24[8]) == 0) { goto L7; } else { _v16 = (_v24[8]); _t24 = *_v16 & 255; if(( *_v16 & 255) == 0) { goto L7; } if((_v24[0x30]) == 0) { DebugPrint(0, _v16, _t54, _t56, _t58, _t60); return; } r8 = (_v24[0x30]); r8(); return; } } LLcp_ReadRemoteUsedFeaturesHandler() {// addr = 0x0043C3DB long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed char _v41; // _cfa_ffffffd7 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v136; // _cfa_ffffff78 _unknown_ __rbp; // r59 signed int _t258; // _t258 signed int _t274; // _t274 signed char _t346; // _t346 signed int _t402; // _t402 signed int _t404; // _t404 signed int _t405; // _t405 long long _t409; // _t409 long long _t427; // _t427 long long _t437; // _t437 signed int _t442; // _t442 signed int _t455; // _t455 intOrPtr _t458; // _t458 intOrPtr _t468; // _t468 _unknown_ _t479; // _t479 long long _t492; // _t492 intOrPtr _t495; // _t495 long long _t505; // _t505 char* _t506; // _t506 _v112 = _t492; _v120 = _t505; _v136 = _t477; _v124 = _t346; _v16 = *fs:0x28]; _v48 = 31; _v72 = _v136; _v64 = ?_? ( &_v104); DebugPrint(0, ?_? ( &_v104), _t477, _t479, _t492, _t505); __eflags = _v72; if(_v72 != 0) { _t401 = _v72; __eflags = *_v72 & 255; if(( *_v72 & 255) != 0) { _t402 = _v72; __eflags = *((intOrPtr*)(_t402 + 8)) - _v120; if( *((intOrPtr*)(_t402 + 8)) == _v120) { _t404 = _v72; __eflags = ( *(_t404 + 1) & 255) - 8; if(( *(_t404 + 1) & 255) == 8) { _t258 = _v124 & 255; __eflags = _t258 - 25; if(_t258 == 25) { _t405 = _v72; __eflags = *(_t405 + 2) & 255; if(( *(_t405 + 2) & 255) != 0) { DM_Clear_Timer(); *(_v72 + 2) = 0; } _v48 = *(_v72 + 16) & 0xff; _v56 = *((intOrPtr*)(_v120 + 72)); _t409 = _v56; *(_t409 + 2) = 8; _v41 = 0; *(__rbp + _t409 - 32) = 4; _v41 = _v41 + 1; *(__rbp + _t409 - 32) = _v48; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v120 + 8) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v120 + 8) & 65535) >> 8; _v41 = _v41 + 1; RtlFillMemory(8, 0, (_v41 & 255) + &_v40); _v41 = _v41 + 8; write_du(_v41 & 255, &_v40, _v64, _t505); _t482 = ?_? ( &_v104); _t506 = &_v104; _t495 = _v112; EG_Generate_LE_Event(); *_v72 = 0; *(_v56 + 240) = 0; _v48 = 0; } else { __eflags = _t258 - 25; if(_t258 > 25) { __eflags = _t258 - 26; if(_t258 == 26) { *(_v72 + 2) = 0; _v56 = *((intOrPtr*)(_v120 + 72)); _t427 = _v56; *(_t427 + 2) = 34; _v41 = 0; *(__rbp + _t427 - 32) = 4; _v41 = _v41 + 1; *(__rbp + _t427 - 32) = 34; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v120 + 8) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v120 + 8) & 65535) >> 8; _v41 = _v41 + 1; RtlFillMemory(8, 0, (_v41 & 255) + &_v40); _v41 = _v41 + 8; write_du(_v41 & 255, &_v40, _v64, _t505); _t482 = ?_? ( &_v104); _t506 = &_v104; _t495 = _v112; EG_Generate_LE_Event(); *_v72 = 0; *(_v56 + 240) = 0; _t437 = _v56; __eflags = *(_t437 + 184) & 255; if(( *(_t437 + 184) & 255) == 0) { _t482 = _v56 + 184; _t506 = _v120; _t495 = _v112; LLcp_InitLlcpTerminate(); } _v48 = 0; } else { __eflags = _t258 - 28; if(_t258 == 28) { _v56 = *((intOrPtr*)(_v120 + 72)); _t442 = _v72; __eflags = *(_t442 + 2) & 255; if(( *(_t442 + 2) & 255) != 0) { DM_Clear_Timer(); _t442 = _v72; *(_t442 + 2) = 0; } _v41 = 0; *(__rbp + _t442 - 32) = 4; _v41 = _v41 + 1; *(__rbp + _t442 - 32) = 0; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v120 + 8) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v120 + 8) & 65535) >> 8; _v41 = _v41 + 1; _t477 = _v72 + 16; RtlCopyMemory(8, _v72 + &_v40, _v72 + 16); _v41 = _v41 + 8; write_du(_v41 & 255, &_v40, _v64, _v72 + 16); _t482 = ?_? ( &_v104); _t506 = &_v104; _t495 = _v112; EG_Generate_LE_Event(); *_v72 = 0; *(_v56 + 240) = 0; _v48 = 0; } else { goto L29; } } } else { __eflags = _t258 - 19; if(_t258 == 19) { _t455 = _v72; __eflags = *(_t455 + 2) & 255; if(( *(_t455 + 2) & 255) != 0) { DM_Clear_Timer(); *(_v72 + 2) = 0; } _v56 = *((intOrPtr*)(_v120 + 72)); _t458 = _v56; *(_t458 + 2) = 8; _v41 = 0; *(__rbp + _t458 - 32) = 4; _v41 = _v41 + 1; *(__rbp + _t458 - 32) = 8; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v120 + 8) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v120 + 8) & 65535) >> 8; _v41 = _v41 + 1; RtlFillMemory(8, 0, (_v41 & 255) + &_v40); _v41 = _v41 + 8; write_du(_v41 & 255, &_v40, _v64, _t505); _t482 = ?_? ( &_v104); _t506 = &_v104; _t495 = _v112; EG_Generate_LE_Event(); *_v72 = 0; *(_v56 + 240) = 0; _t468 = _v120; __eflags = *(_t468 + 24); if( *(_t468 + 24) != 0) { r8 = *((intOrPtr*)(_v120 + 24)); _t506 = _v120; _t495 = _v112; r8(); } _v48 = 0; } else { L29: } } } __eflags = _v48; if(_v48 != 0) { r9d = _v48; r8d = _v124 & 255; DebugPrint(0, _v120, _t477, _t482, _t495, _t506); } else { r9d = _v48; r8d = _v124 & 255; DebugPrint(0, _v120, _t477, _t482, _t495, _t506); } _t274 = _v48; } else { r8d = *(_v72 + 1) & 0xff; DebugPrint(0, _v72, _t477, _t479, _t492, _t505); _t274 = 31; } } else { r9 = *((intOrPtr*)(_v72 + 8)); r8 = _v120; DebugPrint(0, _v72, *((intOrPtr*)(_v72 + 8)), _v120, _t492, _t505); _t274 = 31; } } else { DebugPrint(0, _t401, _t477, _t479, _t492, _t505); _t274 = 31; } } else { DebugPrint(0, &_v104, _t477, _t479, _t492, _t505); _t274 = 31; } if(__eflags != 0) { __stack_chk_fail(); return _t274; } return _t274; } LLcp_InitReadRemoteUsedFeatures() {// addr = 0x0043CA46 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t51; // _t51 long long _t56; // _t56 _v32 = _t56; _v40 = __rsi; _v48 = _t51; _v16 = *((intOrPtr*)(_v48 + 72)); *_v40 = 1; *((char*)(_v40 + 1)) = 8; *((char*)(_v40 + 2)) = DM_Set_Timer(); *((long long*)(_v40 + 8)) = _v48; *((long long*)(_v40 + 48)) = LLcp_ReadRemoteUsedFeaturesHandler; *((long long*)(_v16 + 240)) = _v40; LLcp_SendFeatureReq(__eflags); return; } LLcp_ReadRemoteVersionHandler() {// addr = 0x0043CAF5 signed char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed int _t144; // _t144 signed char _t195; // _t195 signed char* _t296; // _t296 char* _t301; // _t301 long long _t306; // _t306 _v48 = _t306; _v56 = __rsi; _v72 = _t296; _v60 = _t195; _v12 = 31; _t230 = _v72; _v32 = _v72; DebugPrint(0, _v72, _t296, _t301, _t306, __rsi); if(_v32 != 0) { _t231 = _v32; if(( *_v32 & 255) != 0) { if((_v32[8]) == _v56) { if(((_v32[1]) & 255) == 12) { _t144 = _v60 & 255; if(_t144 == 26) { (_v32[2]) = 0; _v24 = *((intOrPtr*)(_v56 + 72)); *(_v24 + 2) = 34; _v12 = 34; r8 = _v24 + 5; __rsi = _v24 + 4; _t306 = _v48 + 190168; *__rsp = _v24 + 7; r9 = r8; r8 = __rsi; _t296 = _v56 + 8; _t301 = &_v12; EG_Event_Composer(0); *_v32 = 0; *(_v24 + 240) = 0; if(( *((signed char*)(_v24 + 184)) & 255) == 0) { _t301 = _v24 + 184; __rsi = _v56; _t306 = _v48; LLcp_InitLlcpTerminate(); } _v12 = 0; } else { if(_t144 == 29) { if(((_v32[2]) & 255) != 0) { _t306 = _v48; DM_Clear_Timer(); (_v32[2]) = 0; } _v24 = *((intOrPtr*)(_v56 + 72)); if( *(_v24 + 240) != 0) { _v24 = *((intOrPtr*)(_v56 + 72)); DM_Clear_Timer(); (_v32[2]) = 0; _v24 = *((intOrPtr*)(_v56 + 72)); _v12 = 0; r8 = _v24 + 5; __rsi = _v24 + 4; _t306 = _v48 + 190168; *__rsp = _v24 + 7; r9 = r8; r8 = __rsi; _t296 = _v56 + 8; _t301 = &_v12; EG_Event_Composer(0); *_v32 = 0; *(_v24 + 240) = 0; } _v12 = 0; } else { if(_t144 == 19) { if(((_v32[2]) & 255) != 0) { DM_Clear_Timer(); (_v32[2]) = 0; } _v24 = *((intOrPtr*)(_v56 + 72)); *(_v24 + 2) = 34; _v12 = 8; r8 = _v24 + 5; __rsi = _v24 + 4; _t306 = _v48 + 190168; *__rsp = _v24 + 7; r9 = r8; r8 = __rsi; _t296 = _v56 + 8; _t301 = &_v12; EG_Event_Composer(0); *_v32 = 0; *(_v24 + 240) = 0; if( *(_v56 + 24) != 0) { r8 = *(_v56 + 24); __rsi = _v56; _t306 = _v48; r8(); } _v12 = 0; } } } if(_v12 != 0) { r9d = _v12; r8d = _v60 & 255; DebugPrint(0, _v56, _t296, _t301, _t306, __rsi); } else { r9d = _v12; r8d = _v60 & 255; DebugPrint(0, _v56, _t296, _t301, _t306, __rsi); } return _v12; } r8d = (_v32[1]) & 0xff; DebugPrint(0, _v32, _t296, _t301, _t306, __rsi); return 31; } r9 = (_v32[8]); r8 = _v56; DebugPrint(0, _v32, _v32[8], _v56, _t306, __rsi); return 31; } DebugPrint(0, _t231, _t296, _t301, _t306, __rsi); return 31; } DebugPrint(0, _t230, _t296, _t301, _t306, __rsi); return 31; } LLcp_InitReadRemoteVersion() {// addr = 0x0043CF62 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t55; // _t55 long long _t60; // _t60 _v32 = _t60; _v40 = __rsi; _v48 = _t55; _v16 = *((intOrPtr*)(_v48 + 72)); *_v40 = 1; *((char*)(_v40 + 1)) = 12; *((char*)(_v40 + 2)) = DM_Set_Timer(); *((long long*)(_v40 + 8)) = _v48; *((long long*)(_v40 + 48)) = LLcp_ReadRemoteVersionHandler; *((long long*)(_v16 + 240)) = _v40; *(_v16 + 3) = *(_v16 + 3) & 255 | 1; LLcp_SendVersionId(__eflags); return; } LLcp_LlcpTerminateDisconnectHandler() {// addr = 0x0043D01C signed int _v9; // _cfa_fffffff7 signed char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed int _t103; // _t103 signed char _t153; // _t153 _unknown_ _t224; // _t224 long long _t229; // _t229 intOrPtr _t231; // _t231 signed char _t237; // _t237 signed char _t238; // _t238 _v48 = _t229; _v56 = _t237; _v72 = _t221; _v60 = _t153; _v9 = 0; _v16 = 31; _t186 = _v72; _v32 = _v72; DebugPrint(0, _v72, _v56 + 8, _t224, _t229, _t237); if(_v32 != 0) { _t187 = _v32; if(( *_v32 & 255) != 0) { if((_v32[8]) == _v56) { if(((_v32[1]) & 255) == 2) { _v9 = *(_v56 + 11) & 255; _t103 = _v60 & 255; if(_t103 == 22) { _v24 = *((intOrPtr*)(_v56 + 72)); _v16 = 0; r8 = _v24 + 2; _t221 = _v56 + 8; EG_Event_Composer(0); _t227 = _v56; _t238 = _v56; _t231 = _v48; LINK_DelLEACL(); _v56 = 0; *_v32 = 0; _t200 = _v48; *(_v48 + 191380) = 0; L23: if(_v16 != 0) { r9d = _v16; r8d = _v60 & 255; DebugPrint(0, _t200, _t221, _t227, _t231, _t238); } else { r9d = _v16; r8d = _v60 & 255; DebugPrint(0, _t200, _t221, _t227, _t231, _t238); } return; } if(_t103 > 22) { if(_t103 == 26) { (_v32[2]) = 0; _v24 = *((intOrPtr*)(_v56 + 72)); *(_v24 + 2) = 34; _t227 = _v56; LLINK_ReadPicoClock(_v48, _v56); _t238 = _v56; _t200 = _v48; _t231 = _v48; LCCMD_LinkDeleteRequest(); _v16 = 0; goto L23; } if(_t103 != 27) { L22: goto L23; } if(((_v32[2]) & 255) != 0) { DM_Clear_Timer(); (_v32[2]) = 0; } _t227 = _v56; LLINK_ReadPicoClock(_v48, _v56); _t238 = _v56; _t200 = _v48; _t231 = _v48; LCCMD_LinkDeleteRequest(); _v16 = 0; goto L23; } if(_t103 == 19) { if(((_v32[2]) & 255) != 0) { DM_Clear_Timer(); (_v32[2]) = 0; } _v24 = *((intOrPtr*)(_v56 + 72)); *(_v24 + 2) = 8; _t227 = _v56; LLINK_ReadPicoClock(_v48, _v56); _t238 = _v56; _t200 = _v48; _t231 = _v48; LCCMD_LinkDeleteRequest(); _v16 = 0; goto L23; } goto L22; } r8d = (_v32[1]) & 0xff; DebugPrint(0, _v32, _t221, _t224, _t229, _t237); return; } r9 = (_v32[8]); r8 = _v56; DebugPrint(0, _v32, _v32[8], _v56, _t229, _t237); return; } DebugPrint(0, _t187, _t221, _t224, _t229, _t237); return; } DebugPrint(0, _t186, _t221, _t224, _t229, _t237); return; } LLcp_InitLlcpTerminateDisconnect() {// addr = 0x0043D39C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t46; // _t46 _unknown_ _t70; // _t70 long long _t72; // _t72 long long _t77; // _t77 _v32 = _t77; _v40 = __rsi; _v48 = _t72; _v52 = _t46; _v56 = r8d; _v16 = *((intOrPtr*)(_v40 + 72)); DebugPrint(0, *((intOrPtr*)(_v40 + 72)), _t70, _t72, _t77, __rsi); LLINK_Suspend(_v40); *(_v16 + 2) = _v52 & 255; *((long long*)(_v16 + 240)) = _v48; *_v48 = 1; *((char*)(_v48 + 1)) = 2; *((long long*)(_v48 + 8)) = _v40; *((long long*)(_v48 + 48)) = LLcp_LlcpTerminateDisconnectHandler; *((char*)(_v48 + 2)) = DM_Set_Timer(); LLcp_SendTerminateInd(); return; } LLcp_PeerTerminateHandler() {// addr = 0x0043D48A signed char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t79; // _t79 signed char* _t114; // _t114 _unknown_ _t118; // _t118 long long _t123; // _t123 signed char _t126; // _t126 _v48 = _t123; _v56 = _t126; _v72 = _t114; _v60 = _t79; _v12 = 31; _t97 = _v72; _v32 = _v72; DebugPrint(0, _v72, _t114, _t118, _t123, _t126); if(_v32 != 0) { _t98 = _v32; if(( *_v32 & 255) != 0) { if((_v32[8]) == _v56) { if(((_v32[1]) & 255) == 2) { if((_v60 & 255) == 22) { if(_v72 != 0) { _v24 = *((intOrPtr*)(_v56 + 72)); *_v32 = 0; *(_v24 + 240) = 0; _v12 = 0; r8 = _v24 + 2; EG_Event_Composer(0); LINK_DelLEACL(); _v56 = 0; *(_v48 + 191380) = 0; } } return _v12; } r8d = (_v32[1]) & 0xff; DebugPrint(0, _v32, _t114, _t118, _t123, _t126); return 31; } r9 = (_v32[8]); r8 = _v56; DebugPrint(0, _v32, _v32[8], _v56, _t123, _t126); return 31; } DebugPrint(0, _t98, _t114, _t118, _t123, _t126); return 31; } DebugPrint(0, _t97, _t114, _t118, _t123, _t126); return 31; } LLcp_LlcpTerminateHandler() {// addr = 0x0043D66C char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t45; // _t45 _unknown_ _t51; // _t51 long long _t63; // _t63 _unknown_ _t66; // _t66 long long _t70; // _t70 long long _t73; // _t73 _v48 = _t70; _v56 = _t73; _v72 = _t63; _v60 = _t45; _v16 = 31; DebugPrint(0, _t51, _t63, _t66, _t70, _t73); if((_v60 & 255) == 22) { if(_v72 != 0) { _v32 = _v72; _v24 = *((intOrPtr*)(_v56 + 72)); *_v32 = 0; *((long long*)(_v24 + 240)) = 0; _v16 = 0; _v12 = *(_v56 + 8) & 65535; _v9 = *(_v24 + 2) & 255; LINK_DelLEACL(); _v56 = 0; r8 = &_v9; EG_Event_Composer(0); *((intOrPtr*)(_v48 + 191380)) = 0; } } return _v16; } LLcp_InitLlcpTerminate() {// addr = 0x0043D76D signed char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t44; // _t44 long long _t73; // _t73 long long _t78; // _t78 signed char* _t81; // _t81 _v32 = _t78; _v40 = _t81; _v48 = _t73; _v52 = _t44; _v16 = (_v40[0x48]); DebugPrint(0, _v40[0x48], __rcx, _t73, _t78, _t81); if(( *_v40 & 255) == 0 || (_v40[0x70]) == 0) { r8 = (_v40[0x70]); DebugPrint(0, _v40, __rcx, _v40[0x70], _t78, _t81); return; } else { *(_v16 + 2) = _v52 & 255; *((long long*)(_v16 + 240)) = _v48; *_v48 = 1; *((char*)(_v48 + 1)) = 2; *(_v48 + 8) = _v40; *((long long*)(_v48 + 48)) = LLcp_LlcpTerminateHandler; LLINK_ReadPicoClock(_v32, _v40); LCCMD_LinkDeleteRequest(); return; } } LLcp_InitPeerTerminate() {// addr = 0x0043D868 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc intOrPtr _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t44; // _t44 long long _t62; // _t62 long long _t65; // _t65 long long _t68; // _t68 _v32 = _t65; _v40 = _t68; _v48 = _t62; _v56 = r8d; _v52 = _t44; _v16 = *((intOrPtr*)(_v48 + 72)); DebugPrint(0, *((intOrPtr*)(_v48 + 72)), __rcx, _t62, _t65, _t68); LLINK_Suspend(_v48); *(_v16 + 2) = _v52 & 255; *((long long*)(_v16 + 240)) = _v40; *_v40 = 1; *((char*)(_v40 + 1)) = 2; *((long long*)(_v40 + 8)) = _v48; *((long long*)(_v40 + 48)) = LLcp_PeerTerminateHandler; _v56 = _v56 + (( *(_v16 + 16) & 0xffff) + ( *(_v16 + 12) & 0xffff) << 3); _v56 = _v56 + 4; LCCMD_LinkDeleteRequest(); return; } LLcp_LinkSupervisionTimeoutHandler() {// addr = 0x0043D933 signed char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t78; // _t78 signed char* _t113; // _t113 _unknown_ _t117; // _t117 long long _t122; // _t122 signed char _t125; // _t125 _v48 = _t122; _v56 = _t125; _v72 = _t113; _v60 = _t78; _v12 = 31; _t96 = _v72; _v32 = _v72; DebugPrint(0, _v72, _t113, _t117, _t122, _t125); if(_v32 != 0) { _t97 = _v32; if(( *_v32 & 255) != 0) { if((_v32[8]) == _v56) { if(((_v32[1]) & 255) == 2) { if((_v60 & 255) == 22) { _v24 = *((intOrPtr*)(_v56 + 72)); *_v32 = 0; *(_v24 + 240) = 0; _v12 = 0; r8 = _v24 + 2; EG_Event_Composer(0); LINK_DelLEACL(); _v56 = 0; *(_v48 + 191380) = 0; } return _v12; } r8d = (_v32[1]) & 0xff; DebugPrint(0, _v32, _t113, _t117, _t122, _t125); return 31; } r9 = (_v32[8]); r8 = _v56; DebugPrint(0, _v32, _v32[8], _v56, _t122, _t125); return 31; } DebugPrint(0, _t97, _t113, _t117, _t122, _t125); return 31; } DebugPrint(0, _t96, _t113, _t117, _t122, _t125); return 31; } LLcp_InitLinkSupervisionTimeout() {// addr = 0x0043DB08 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t39; // _t39 long long _t43; // _t43 long long _t47; // _t47 _v32 = _t43; _v40 = _t47; _v48 = _t39; _v16 = *((intOrPtr*)(_v48 + 72)); DebugPrint(0, *((intOrPtr*)(_v48 + 72)), __rcx, _t39, _t43, _t47); LLINK_Suspend(_v48); *((long long*)(_v16 + 240)) = _v40; *_v40 = 1; *((char*)(_v40 + 1)) = 2; *((long long*)(_v40 + 8)) = _v48; *((long long*)(_v40 + 48)) = LLcp_LinkSupervisionTimeoutHandler; LLINK_ReadPicoClock(_v32, _v48); LCCMD_LinkDeleteRequest(); return; } LLcp_SetHostChannelClassificationHandler() {// addr = 0x0043DBAF short _v10; // _cfa_fffffff6 signed char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 signed char* _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed int _t62; // _t62 signed char _t87; // _t87 signed char* _t129; // _t129 _unknown_ _t133; // _t133 long long _t136; // _t136 long long _t140; // _t140 _v80 = _t136; _v88 = _t140; _v104 = _t129; _v92 = _t87; _v16 = 31; _v10 = 8212; _v40 = _v104; _v32 = ?_? ( &_v72); DebugPrint(0, ?_? ( &_v72), _t129, _t133, _t136, _t140); if(_v40 != 0) { _t108 = _v40; if(( *_v40 & 255) != 0) { if((_v40[8]) == _v88) { if(((_v40[1]) & 255) == 1) { _t62 = _v92 & 255; if(_t62 == 19) { _v24 = *((intOrPtr*)(_v88 + 72)); *(_v24 + 240) = 0; *_v40 = 0; if( *((intOrPtr*)(_v88 + 24)) != 0) { r8 = *((intOrPtr*)(_v88 + 24)); r8(); } _v16 = 0; } else { if(_t62 == 39) { _v24 = *((intOrPtr*)(_v88 + 72)); _v16 = 0; write_end_du(1, _v32, &_v16); EG_Generate_Command_Complete_Event(); *_v40 = 0; *(_v24 + 240) = 0; } } return _v16; } r8d = (_v40[1]) & 0xff; DebugPrint(0, _v40, _t129, _t133, _t136, _t140); return 31; } r9 = (_v40[8]); r8 = _v88; DebugPrint(0, _v40, _v40[8], _v88, _t136, _t140); return 31; } DebugPrint(0, _t108, _t129, _t133, _t136, _t140); return 31; } DebugPrint(0, &_v72, _t129, _t133, _t136, _t140); return 31; } LLcp_InitSetHostChannelClassification() {// addr = 0x0043DDC5 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 unsigned short _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed short _v32; // _cfa_ffffffe0 unsigned int _v36; // _cfa_ffffffdc unsigned int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v64; // _cfa_ffffffc0 _unknown_ _v80; // _cfa_ffffffb0 char* _v88; // _cfa_ffffffa8 char _v96; // _cfa_ffffffa0 char* _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed int _t120; // _t120 signed int _t129; // _t129 long long _t220; // _t220 intOrPtr _t221; // _t221 char _t223; // _t223 char _t248; // _t248 long long _t256; // _t256 char* _t264; // _t264 _v80 = _t256; _v88 = _t264; _v96 = _t248; _v104 = _t243; _v32 = 7; _v12 = 0; _v10 = 0; _v56 = *((intOrPtr*)(_v96 + 72)); DebugPrint(0, _v96, _t243, _t248, _t256, _t264); *_v88 = 1; (_v88[1]) = 1; (_v88[8]) = _v96; (_v88[0x30]) = LLcp_SetHostChannelClassificationHandler; _t250 = _v88; *(_v56 + 240) = _v88; _t120 = (( *( *((intOrPtr*)(_v96 + 104)) + 2) & 0xff) + 912 << 6) + 56; _v28 = _t120; _v36 = 0; if((_t120 & 1) == 0) { _v36 = 4294967295; _v40 = _v36; } else { _t243 = &_v36; _t264 = &_v36; _t256 = _v80 + *_v80; RT_PCI_IO_READ32(); _v40 = _v36; } _v40 = _v40 >> 16; _t129 = _v40 >> 8 & 255 | _v40 << 8; _v12 = _t129; _v36 = 0; if((_t129 & 1) == 0) { _v36 = 4294967295; _v40 = _v36; } else { _t243 = &_v36; _t264 = &_v36; _t256 = _v80 + *_v80; RT_PCI_IO_READ32(); _v40 = _v36; } _v40 = _v40 >> 16; _v10 = _v40 >> 8 & 255 | _v40 << 8; _v10 = (_v10 & 65535) + ( *(_v56 + 16) & 65535) + 9; DebugPrint(0, _v56, _t243, _t250, _t256, _t264); DebugPrint(0, _v56, _t243, _t250, _t256, _t264); _t220 = _v80; CH_NewAdaptedChannelInfo(_t220); _v48 = _t220; if(_v48 != 0) { _t221 = _v80; _t251 = _t221 + 30504; _t258 = _t221 + 30504; ral_spin_lock(_t221 + 30504, ?_? ( &_v64)); _t223 = _v96; _t204 = *((intOrPtr*)(_t223 + 176)); if( *((intOrPtr*)(_t223 + 176)) != 0) { DebugPrint(0, *((intOrPtr*)(_v96 + 176)), _t243, _t251, _t258, &_v64); *( *((intOrPtr*)(_v96 + 176)) + 2) = 0; } *((long long*)(_v96 + 176)) = _v48; ral_spin_unlock(_v80 + 30504, _v64); _v24 = _v10 & 65535; _v23 = (_v10 & 65535) >> 8; LL_UpdateChannelMap(); r8d = LLcp_LCCmdChannelUpdateCB; LCCMD_LEChannelUpdateRequest(); r8 = &_v24; LLcp_SendChannelMapReq(_t204); _v32 = 0; } return _v32; } LLcp_PeerInitSetHostChannelClassification() {// addr = 0x0043E104 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec unsigned int _v24; // _cfa_ffffffe8 unsigned int _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v64; // _cfa_ffffffc0 char* _v72; // _cfa_ffffffb8 char _v80; // _cfa_ffffffb0 char* _v88; // _cfa_ffffffa8 signed short _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 signed int _t92; // _t92 signed int _t101; // _t101 long long _t156; // _t156 char _t171; // _t171 long long _t176; // _t176 char* _t181; // _t181 _v64 = _t176; _v72 = _t181; _v80 = _t171; _v88 = _t167; _v92 = r8d; _v20 = 7; _v12 = 0; _v10 = 0; _v48 = *((intOrPtr*)(_v80 + 72)); *_v72 = 1; (_v72[1]) = 1; (_v72[8]) = _v80; (_v72[0x30]) = LLcp_SetHostChannelClassificationHandler; _t173 = _v72; *(_v48 + 240) = _v72; _t92 = (( *( *((intOrPtr*)(_v80 + 104)) + 2) & 0xff) + 912 << 6) + 56; _v16 = _t92; _v24 = 0; if((_t92 & 1) == 0) { _v24 = 4294967295; _v28 = _v24; } else { _t167 = &_v24; _t181 = &_v24; _t176 = _v64 + *_v64; RT_PCI_IO_READ32(); _v28 = _v24; } _v28 = _v28 >> 16; _t101 = _v28 >> 8 & 255 | _v28 << 8; _v12 = _t101; _v24 = 0; if((_t101 & 1) == 0) { _v24 = 4294967295; _v28 = _v24; } else { _t167 = &_v24; _t181 = &_v24; _t176 = _v64 + *_v64; RT_PCI_IO_READ32(); _v28 = _v24; } _v28 = _v28 >> 16; _v10 = _v28 >> 8 & 255 | _v28 << 8; if(_v92 <= (_v10 & 65535)) { _t153 = _v48; if(( *(_v48 + 184) & 255) != 0) { DebugPrint(0, _t153, _t167, _t173, _t176, _t181); } else { LLcp_InitLlcpTerminate(); _v20 = 0; } } else { _t156 = _v64; CH_NewAdaptedChannelInfo(_t156); _v40 = _t156; if(_v40 != 0) { LL_UpdateChannelMap(); r8d = 0; LCCMD_LEChannelUpdateRequest(); *(_v48 + 240) = 0; _v20 = 0; } } return _v20; } LLcp_LocalInitConnectionUpdateHandler() {// addr = 0x0043E358 long long _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 signed char _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 signed int _v59; // _cfa_ffffffc5 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v104; // _cfa_ffffff98 signed int _v120; // _cfa_ffffff88 signed int _v136; // _cfa_ffffff78 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 char _v200; // _cfa_ffffff38 _unknown_ _v208; // _cfa_ffffff30 _unknown_ _v216; // _cfa_ffffff28 signed int _v220; // _cfa_ffffff24 signed int _v232; // _cfa_ffffff18 long long _v236; // _cfa_ffffff14 signed int _v244; // _cfa_ffffff0c signed int _v252; // _cfa_ffffff04 signed int _v260; // _cfa_fffffefc signed int _v268; // _cfa_fffffef4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t396; // _t396 signed int _t397; // _t397 signed int _t417; // _t417 signed int _t482; // _t482 signed char _t571; // _t571 signed int _t655; // _t655 signed int _t657; // _t657 signed int _t660; // _t660 intOrPtr _t681; // _t681 signed int _t690; // _t690 intOrPtr _t730; // _t730 signed int _t756; // _t756 long long _t765; // _t765 _push(r12); _push(__rbx); __rsp = __rsp - 256; _v208 = _t765; _v216 = __rsi; _v232 = _t756; _v220 = _t571; _v32 = *fs:0x28]; _v104 = 31; _v176 = _v232; _v168 = &_v200; _t653 = _v176 + 20; _t766 = _v176 + 20; r8d = casting_uint16(_v176 + 20) & 65535; DebugPrint(0, _v176 + 20, _t756, _t758, _v176 + 20, __rsi); __eflags = _v176; if(_v176 != 0) { _t654 = _v176; __eflags = *_v176 & 255; if(( *_v176 & 255) != 0) { _t655 = _v176; __eflags = *((intOrPtr*)(_t655 + 8)) - _v216; if( *((intOrPtr*)(_t655 + 8)) == _v216) { _t657 = _v176; __eflags = *(_t657 + 1) & 255; if(( *(_t657 + 1) & 255) == 0) { _v160 = *(_v216 + 72); _t660 = _v176; _v59 = *(_t660 + 3) & 255; _v58 = _v59 & 255; _t396 = _v58 & 255; __eflags = _t396 - 1; if(_t396 == 1) { _t397 = _v220 & 255; __eflags = _t397 - 19; if(_t397 == 19) { _v57 = 0; *(__rbp + _t660 - 48) = 3; _v57 = _v57 + 1; *(__rbp + _t660 - 48) = 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v216 + 8) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v216 + 8) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 12) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 12) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 16) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 16) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 10) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 10) & 65535) >> 8; _v57 = _v57 + 1; write_du(_v57 & 255, &_v56, _v168, __rsi); _t758 = ?_? ( &_v200); __rsi = &_v200; _t768 = _v208; EG_Generate_LE_Event(); *_v176 = 0; *((long long*)(_v160 + 240)) = 0; _t681 = _v216; __eflags = *(_t681 + 24); if( *(_t681 + 24) != 0) { r8 = *((intOrPtr*)(_v216 + 24)); __rsi = _v216; _t768 = _v208; r8(); } _v104 = 0; } else { __eflags = _t397 - 27; if(_t397 == 27) { _v100 = casting_uint32(_v176 + 16); _t768 = _v176 + 20; _v96 = casting_uint16(_v176 + 20) & 65535; _t690 = _v160; __eflags = ( *(_t690 + 36) & 0xffff) - _v96; if(( *(_t690 + 36) & 0xffff) <= _v96) { r9d = _v96; r8d = *(_v160 + 36) & 0xffff; DebugPrint(0, _v160, _t756, _t758, _t768, __rsi); } else { _v92 = _v100; __eflags = (_v92 & 252) - _v100; if((_v92 & 252) != _v100) { _v64 = _v100; r9d = _v64 & 252; r8d = _v100; DebugPrint(0, _t690, _t756, _t758, _t768, __rsi); } else { _v88 = _v100; _v84 = 0 + _v160 * 4; _v152 = _v84 + _v88; _v100 = _v152 & 268435455; _v80 = _v100; _v76 = ( *(_v160 + 32) & 0xffff) << 2; _v136 = _v76 + _v80; _v100 = _v136 & 268435455; _v72 = _v100; _v68 = (( *(_v160 + 34) & 255) >> 1 & 255) << 2; _v120 = _v68 + _v72; _v100 = _v120 & 268435455; _v100 = *(_v160 + 116); *(_v160 + 40) = _v100; *(_v160 + 12) = *(_v160 + 14) & 65535; r11d = *(_v160 + 26) & 0xff; r10d = *(_v160 + 36) & 0xffff; r9d = *(_v160 + 10) & 0xffff; r8d = ( *(_v160 + 12) & 0xffff) - 1 << 2 & 65535; r12d = ( *(_v160 + 12) & 65535) + ( *(_v160 + 12) & 65535) & 65535; __rsi = _v216; _v236 = LLcp_LCCmdConnUpdateCB; _v244 = r11d; _v252 = r10d; _v260 = r9d; _v268 = r8d; *__rsp = *(_v160 + 16) & 0xffff; r9d = r12d; r8d = ( *(_v160 + 12) & 0xffff) << 2; _t768 = _v208; LCCMD_LEConnectionUpdateRequest(); _v59 = 2; _v104 = 0; } } } } } else { __eflags = _t396 - 2; if(_t396 == 2) { _t482 = _v220 & 255; __eflags = _t482 - 19; if(_t482 == 19) { _v57 = 0; *(__rbp + _t660 - 48) = 3; _v57 = _v57 + 1; *(__rbp + _t660 - 48) = 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v216 + 8) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v216 + 8) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 12) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 12) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 16) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 16) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 10) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 10) & 65535) >> 8; _v57 = _v57 + 1; write_du(_v57 & 255, &_v56, _v168, __rsi); _t758 = ?_? ( &_v200); __rsi = &_v200; _t768 = _v208; EG_Generate_LE_Event(); *_v176 = 0; *((long long*)(_v160 + 240)) = 0; _t730 = _v216; __eflags = *(_t730 + 24); if( *(_t730 + 24) != 0) { r8 = *((intOrPtr*)(_v216 + 24)); __rsi = _v216; _t768 = _v208; r8(); } _v104 = 0; } else { __eflags = _t482 - 23; if(_t482 == 23) { _v57 = 0; *(__rbp + _t660 - 48) = 3; _v57 = _v57 + 1; *(__rbp + _t660 - 48) = 0; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v216 + 8) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v216 + 8) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 12) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 12) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 16) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 16) & 65535) >> 8; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = *(_v160 + 10) & 65535; _v57 = _v57 + 1; *(__rbp + (_v57 & 255) - 48) = ( *(_v160 + 10) & 65535) >> 8; _v57 = _v57 + 1; write_du(_v57 & 255, &_v56, _v168, __rsi); _t758 = ?_? ( &_v200); __rsi = &_v200; _t768 = _v208; EG_Generate_LE_Event(); *_v176 = 0; *(_v160 + 240) = 0; _v104 = 0; } } } } _t683 = _v176; *(_v176 + 3) = _v59 & 255; __eflags = _v104; if(_v104 != 0) { *__rsp = _v104; r9d = _v59 & 255; r8d = _v58 & 255; DebugPrint(0, _t683, _t756, _t758, _t768, __rsi); } else { *__rsp = _v104; r9d = _v59 & 255; r8d = _v58 & 255; DebugPrint(0, _t683, _t756, _t758, _t768, __rsi); } _t417 = _v104; } else { r8d = *(_v176 + 1) & 0xff; DebugPrint(0, _v176, _t756, _t758, _t766, __rsi); _t417 = 31; } } else { r9 = *((intOrPtr*)(_v176 + 8)); r8 = _v216; DebugPrint(0, _v176, *((intOrPtr*)(_v176 + 8)), _v216, _t766, __rsi); _t417 = 31; } } else { DebugPrint(0, _t654, _t756, _t758, _t766, __rsi); _t417 = 31; } } else { DebugPrint(0, _t653, _t756, _t758, _t766, __rsi); _t417 = 31; } if(__eflags != 0) { __stack_chk_fail(); } __rsp = &(__rsp[0x40]); _pop(__rbx); _pop(r12); return _t417; } LLcp_LocalInitConnectionUpdate() {// addr = 0x0043ED75 signed int _v9; // _cfa_fffffff7 unsigned int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 signed int _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed char _v32; // _cfa_ffffffe0 unsigned int _v36; // _cfa_ffffffdc unsigned int _v40; // _cfa_ffffffd8 signed int _v53; // _cfa_ffffffcb signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed char _v78; // _cfa_ffffffb2 short _v80; // _cfa_ffffffb0 signed char _v84; // _cfa_ffffffac signed char _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed char _v96; // _cfa_ffffffa0 short _v100; // _cfa_ffffff9c signed int _v104; // _cfa_ffffff98 char _v232; // _cfa_ffffff18 _unknown_ _v744; // _cfa_fffffd18 _unknown_ _v752; // _cfa_fffffd10 char* _v760; // _cfa_fffffd08 char _v768; // _cfa_fffffd00 signed short _v772; // _cfa_fffffcfc signed int _v776; // _cfa_fffffcf8 signed int _v780; // _cfa_fffffcf4 signed int _v808; // _cfa_fffffcd8 signed int _v816; // _cfa_fffffcd0 _unknown_ __rbp; // r59 signed int _t250; // _t250 signed int _t259; // _t259 signed short _t381; // _t381 signed int _t513; // _t513 signed int _t547; // _t547 char _t582; // _t582 long long _t587; // _t587 char* _t590; // _t590 _v752 = _t587; _v760 = _t590; _v768 = _t582; _v772 = _t381; _v776 = r8d; _v780 = r9d; _v32 = 7; _v10 = 0; _v14 = 0; _v12 = 0; _v64 = *(_v768 + 72); DebugPrint(0, _v768, _t578, _t582, _t587, _t590); *(_v64 + 14) = _v772 & 65535; *(_v64 + 16) = _v776 & 65535; *(_v64 + 10) = _v780 & 65535; *(_v64 + 32) = 0; *(_v64 + 34) = _v64 - 1; if(( *(_v64 + 34) & 255) != 0) { _t513 = _v64; __eflags = ( *(_t513 + 34) & 255) - 8; if(( *(_t513 + 34) & 255) > 8) { *(_v64 + 34) = 8; } } else { *(_v64 + 34) = 1; } _t250 = (( *( *((intOrPtr*)(_v768 + 104)) + 2) & 0xff) + 912 << 6) + 56; _v28 = _t250; _v36 = 0; if((_t250 & 1) == 0) { _v36 = 4294967295; _v40 = _v36; } else { _t578 = &_v36; _t590 = &_v36; _t587 = _v752 + *_v752; RT_PCI_IO_READ32(); _v40 = _v36; } _v40 = _v40 >> 16; _t259 = _v40 >> 8 & 255 | _v40 << 8; _v14 = _t259; _v12 = _t259; _v12 = (_v12 & 65535) + ( *(_v64 + 16) & 65535) + 9; *(_v64 + 36) = _v12 & 65535; DebugPrint(0, _v64, _t578, _t582, _t587, _t590); DebugPrint(0, _v64, _t578, _t582, _t587, _t590); DebugPrint(0, _v64, _t578, _t582, _t587, _t590); DebugPrint(0, _v64, _t578, _t582, _t587, _t590); *(_v64 + 116) = *((intOrPtr*)(_v64 + 112)) + (( *(_v64 + 12) & 0xffff) * ((_v12 & 0xffff) - ( *(_v64 + 108) & 0xffff)) << 2); *(_v64 + 116) = *(_v64 + 116) & 268435455; _v10 = ( *(_v64 + 116) & 134217728) >> 27; *(_v64 + 120) = *(_v64 + 116) - *(_v752 + 55580) >> 1; DebugPrint(0, _v64, _t578, _t582, _t587, _t590); DebugPrint(0, _v64, _t578, _t582, _t587, _t590); DebugPrint(0, _v64, _t578, _t582, _t587, _t590); _v9 = 0; _t591 = _v768; _t588 = _v752; LMpol_Find_Periodic_Transport(); _v92 = ( *(_v64 + 14) & 0xffff) + ( *(_v64 + 14) & 0xffff); _v104 = _v92; _v100 = 4; _v96 = 0; _v88 = 0; _v84 = 0; _v80 = 4; _v78 = 0; _t580 = ?_? ( &_v232); _t584 = &_v104; _v24 = LMslt_Get_Best_Offset( *(_v64 + 120) & 0xffff); _t543 = *((intOrPtr*)( *((intOrPtr*)(_v768 + 104)) + 24)); r8d = *( *((intOrPtr*)( *((intOrPtr*)(_v768 + 104)) + 24)) + 4) & 0xff; DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v768 + 104)) + 24)), ?_? ( &_v232), &_v104, _v752, _v768); DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v768 + 104)) + 24)), ?_? ( &_v232), &_v104, _v752, _v768); DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v768 + 104)) + 24)), ?_? ( &_v232), &_v104, _v752, _v768); DebugPrint(0, _t543, &_v232, &_v104, _v752, _v768); r8d = _v72; DebugPrint(0, _t543, _t580, _t584, _t588, _t591); _v56 = *(_v752 + 55580) + _v96 + _v96; _v53 = _v53 & 0xf; _v9 = (_v56 & 134217728) >> 27; _v20 = (LMdm_Calc_Offset_from_Instant(_v104 & 65535, _v56 & 268435455, _v9 & 255) & 65535) % _v104; _v56 = *(_v64 + 116); _v56 = LMdm_Calc_Instance_2(_v20 & 65535, _v104 & 65535, _v56 & 268435455); *__rsp = _v9 & 255; r9d = _v56; r8d = *(_v752 + 55580); DebugPrint(0, _v752, _t580, _t584, _t588, _t591); _t547 = _v64; _t502 = _v56 - *((intOrPtr*)(_t547 + 116)); if(_v56 != *((intOrPtr*)(_t547 + 116))) { *(_v64 + 116) = _v56; *(_v64 + 36) = (_v56 - *((intOrPtr*)(_v64 + 112))) / (0 + _v64 * 4) + ( *(_v64 + 108) & 65535); r8d = *(_v64 + 36) & 0xffff; DebugPrint(0, _v64, _t580, _t584, _t588, _t591); } *(_v768 + 146) = _v104; *((short*)(_v768 + 148)) = _v100; *(_v768 + 150) = _v96; r9d = *(_v64 + 36) & 0xffff; r8d = *(_v64 + 10) & 0xffff; r11d = *(_v64 + 14) & 0xffff; r10d = *(_v64 + 32) & 0xffff; _v808 = r9d; _v816 = r8d; *__rsp = *(_v64 + 16) & 0xffff; r9d = r11d; r8d = r10d; LLcp_SendConnectionUpdateReq(_t502); *_v760 = 1; (_v760[1]) = 0; (_v760[8]) = _v768; (_v760[0x30]) = LLcp_LocalInitConnectionUpdateHandler; (_v760[3]) = 1; *(_v64 + 240) = _v760; _v32 = 0; return _v32; } LLcp_PeerInitConnectionUpdateHandler() {// addr = 0x0043F47C long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed char _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed int _v43; // _cfa_ffffffd5 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ _v120; // _cfa_ffffff88 signed char _v124; // _cfa_ffffff84 signed int _v136; // _cfa_ffffff78 _unknown_ __rbp; // r59 signed int _t228; // _t228 signed int _t233; // _t233 signed char _t311; // _t311 signed int _t362; // _t362 signed int _t364; // _t364 signed int _t368; // _t368 intOrPtr _t371; // _t371 signed int _t394; // _t394 signed int _t417; // _t417 long long _t425; // _t425 _v112 = _t425; _v120 = __rsi; _v136 = _t417; _v124 = _t311; _v16 = *fs:0x28]; _v48 = 31; _v72 = _v136; _v64 = ?_? ( &_v104); DebugPrint(0, ?_? ( &_v104), _t417, _t419, _t425, __rsi); __eflags = _v72; if(_v72 != 0) { _t361 = _v72; __eflags = *_v72 & 255; if(( *_v72 & 255) != 0) { _t362 = _v72; __eflags = *((intOrPtr*)(_t362 + 8)) - _v120; if( *((intOrPtr*)(_t362 + 8)) == _v120) { _t364 = _v72; __eflags = *(_t364 + 1) & 255; if(( *(_t364 + 1) & 255) == 0) { _v56 = *((intOrPtr*)(_v120 + 72)); _v44 = *(_v72 + 3) & 255; _v43 = _v44 & 255; __eflags = (_v43 & 255) - 2; if((_v43 & 255) == 2) { _t228 = _v124 & 255; __eflags = _t228 - 19; if(_t228 == 19) { _t368 = _v72; _v42 = *(_t368 + 16) & 255; __eflags = _v42; if(_v42 != 0) { _v41 = 0; *(__rbp + _t368 - 32) = 3; _v41 = _v41 + 1; *(__rbp + _t368 - 32) = 8; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v120 + 8) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v120 + 8) & 65535) >> 8; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v56 + 12) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v56 + 12) & 65535) >> 8; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v56 + 16) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v56 + 16) & 65535) >> 8; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v56 + 10) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v56 + 10) & 65535) >> 8; _v41 = _v41 + 1; write_du(_v41 & 255, &_v40, _v64, __rsi); _t419 = ?_? ( &_v104); __rsi = &_v104; _t425 = _v112; EG_Generate_LE_Event(); } *_v72 = 0; *(_v56 + 240) = 0; _t371 = _v120; __eflags = *(_t371 + 24); if( *(_t371 + 24) != 0) { r8 = *((intOrPtr*)(_v120 + 24)); __rsi = _v120; _t425 = _v112; r8(); } _v48 = 0; } else { __eflags = _t228 - 23; if(_t228 == 23) { _t394 = _v72; _v42 = *(_t394 + 16) & 255; __eflags = _v42; if(_v42 != 0) { _v41 = 0; *(__rbp + _t394 - 32) = 3; _v41 = _v41 + 1; *(__rbp + _t394 - 32) = 0; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v120 + 8) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v120 + 8) & 65535) >> 8; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v56 + 12) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v56 + 12) & 65535) >> 8; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v56 + 16) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v56 + 16) & 65535) >> 8; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v56 + 10) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v56 + 10) & 65535) >> 8; _v41 = _v41 + 1; write_du(_v41 & 255, &_v40, _v64, __rsi); _t419 = ?_? ( &_v104); __rsi = &_v104; _t425 = _v112; EG_Generate_LE_Event(); } *_v72 = 0; *(_v56 + 240) = 0; _v48 = 0; } } } _t373 = _v72; *(_v72 + 3) = _v44 & 255; __eflags = _v48; if(_v48 != 0) { *__rsp = _v48; r9d = _v44 & 255; r8d = _v43 & 255; DebugPrint(0, _t373, _t417, _t419, _t425, __rsi); } else { *__rsp = _v48; r9d = _v44 & 255; r8d = _v43 & 255; DebugPrint(0, _t373, _t417, _t419, _t425, __rsi); } _t233 = _v48; } else { r8d = *(_v72 + 1) & 0xff; DebugPrint(0, _v72, _t417, _t419, _t425, __rsi); _t233 = 31; } } else { r9 = *((intOrPtr*)(_v72 + 8)); r8 = _v120; DebugPrint(0, _v72, *((intOrPtr*)(_v72 + 8)), _v120, _t425, __rsi); _t233 = 31; } } else { DebugPrint(0, _t361, _t417, _t419, _t425, __rsi); _t233 = 31; } } else { DebugPrint(0, &_v104, _t417, _t419, _t425, __rsi); _t233 = 31; } if(__eflags == 0) { return _t233; } __stack_chk_fail(); return _t233; } LLcp_PeerInitConnectionUpdate( _unknown_ __eax // r0 ) {// addr = 0x0043F988 signed char _v25; // _cfa_ffffffe7 signed int _v28; // _cfa_ffffffe4 signed int _v30; // _cfa_ffffffe2 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 unsigned int _v64; // _cfa_ffffffc0 unsigned int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 char* _v120; // _cfa_ffffff88 char _v128; // _cfa_ffffff80 char* _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 long long _v156; // _cfa_ffffff64 signed int _v164; // _cfa_ffffff5c signed int _v172; // _cfa_ffffff54 signed int _v180; // _cfa_ffffff4c signed int _v188; // _cfa_ffffff44 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t181; // _t181 signed int _t190; // _t190 char _t374; // _t374 long long _t384; // _t384 char* _t400; // _t400 _push(r12); _push(__rbx); __rsp = __rsp - 176; _v112 = _t384; _v120 = _t400; _v128 = _t374; _v136 = _t371; _v144 = r8; _v60 = 7; _v25 = 0; _v30 = 0; _v28 = 0; _v104 = *((intOrPtr*)(_v128 + 72)); _v96 = _v144; DebugPrint(0, _v128, _t371, _t374, _t384, _t400); *_v120 = 1; (_v120[1]) = 0; (_v120[8]) = _v128; (_v120[0x30]) = LLcp_PeerInitConnectionUpdateHandler; _t376 = _v120; *(_v104 + 240) = _v120; _t181 = (( *( *((intOrPtr*)(_v128 + 104)) + 2) & 0xff) + 912 << 6) + 56; _v56 = _t181; _v64 = 0; if((_t181 & 1) == 0) { _v64 = 4294967295; _v68 = _v64; } else { _t371 = &_v64; _t400 = &_v64; RT_PCI_IO_READ32(); _v68 = _v64; } _v68 = _v68 >> 16; _t190 = _v68 >> 8 & 255 | _v68 << 8; _v30 = _t190; _v64 = 0; if((_t190 & 1) == 0) { _v64 = 4294967295; _v68 = _v64; } else { _t371 = &_v64; _t400 = &_v64; RT_PCI_IO_READ32(); _v68 = _v64; } _v68 = _v68 >> 16; _v28 = _v68 >> 8 & 255 | _v68 << 8; if(( *(_v104 + 12) & 65535) == casting_uint16(_v96 + 4)) { if(( *(_v104 + 16) & 65535) == casting_uint16(_v96 + 6)) { if(( *(_v104 + 10) & 65535) != casting_uint16(_v96 + 8)) { _v25 = 1; } } else { _v25 = 1; } } else { _v25 = 1; } (_v120[0x10]) = _v25 & 255; if(casting_uint16(_v96 + 10) <= (_v28 & 65535)) { _t389 = _v96 + 10; casting_uint16(_v96 + 10); r8d = _v28 & 0xffff; DebugPrint(0, _v96 + 10, _t371, _t376, _v96 + 10, _t400); _t332 = _v104; if(( *(_v104 + 184) & 255) != 0) { DebugPrint(0, _t332, _t371, _t376, _t389, _t400); } else { LLcp_InitLlcpTerminate(); _v60 = 0; } } else { *(_v104 + 34) = *(_v96 + 1) & 255; *(_v104 + 32) = casting_uint16(_v96 + 2); *(_v104 + 14) = casting_uint16(_v96 + 4); *(_v104 + 16) = casting_uint16(_v96 + 6); *(_v104 + 10) = casting_uint16(_v96 + 8); *(_v104 + 36) = casting_uint16(_v96 + 10); _v48 = (_v136[8]) & 268435455; _v44 = ( *(_v104 + 12) & 0xffff) * (( *(_v104 + 36) & 0xffff) - (_v28 & 0xffff)) << 2; _v88 = _v44 + _v48; _v52 = _v88 & 268435455; _v40 = _v52; _v36 = ( *(_v104 + 32) & 0xffff) << 2; _v72 = _v36 + _v40; _v52 = _v72 & 268435455; *(_v104 + 40) = _v52; *(_v104 + 12) = *(_v104 + 14) & 65535; r10d = casting_uint16(_v96 + 10) & 65535; r9d = *(_v104 + 10) & 0xffff; r8d = ( *(_v104 + 12) & 0xffff) - 1 << 2 & 65535; r12d = ( *(_v104 + 12) & 65535) + ( *(_v104 + 12) & 65535) & 65535; r11d = ( *(_v104 + 12) & 0xffff) << 2; _v156 = LLcp_LCCmdConnUpdateCB; _v164 = *(_v104 + 26) & 0xff; _v172 = r10d; _v180 = r9d; _v188 = r8d; *__rsp = *(_v104 + 16) & 0xffff; r9d = r12d; r8d = r11d; LCCMD_LEConnectionUpdateRequest(); (_v120[3]) = 2; _v60 = 0; } __rsp = &(__rsp[0x2c]); _pop(__rbx); _pop(r12); return _v60; } LLcp_GenerateSKD() {// addr = 0x0043FE55 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t5; // _t5 long long _t9; // _t9 _v16 = _t9; _v24 = __rsi; BTRAND_Seed_Initialize(); BTRAND_Rand64Bit(_t5, _v24); return; } LLcp_GenerateIV( intOrPtr __eax // r0 ) {// addr = 0x0043FE7F long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 __eax = __eax; _v16 = _t5; _v24 = __rsi; BTRAND_Seed_Initialize(); BTRAND_Rand(); *_v24 = __eax; return; } LLcp_GenerateSK() {// addr = 0x0043FEA8 signed int _v32; // _cfa_ffffffe0 _unknown_ _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 char _v88; // _cfa_ffffffa8 _unknown_ _v104; // _cfa_ffffff98 signed char _v105; // _cfa_ffffff97 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 long long _v152; // _cfa_ffffff68 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t58; // _t58 signed int _t72; // _t72 signed int _t74; // _t74 signed int _t76; // _t76 _unknown_ _t83; // _t83 signed int _t84; // _t84 signed int* _t88; // _t88 long long _t91; // _t91 long long _t93; // _t93 long long _t96; // _t96 long long _t98; // _t98 _v128 = _t96; _v136 = _t98; _v144 = _t93; _v152 = _t91; _t84 = *fs:0x28]; _v32 = _t84; _v105 = 0; while(_v105 <= 7) { _t72 = *(_t84 + _v136) & 255; _t84 = _v105 & 255; *(__rbp + _t84 - 80) = _t72; _v105 = _v105 + 1; } _v105 = 0; while(_v105 <= 7) { _t74 = *(_t84 + _v128) & 255; _t84 = _t84 + 8; *(__rbp + _t84 - 80) = _t74; _v105 = _v105 + 1; } _v105 = 0; while(_v105 <= 15) { _t58 = _t84; _t76 = *(_t84 + _v144) & 255; _t84 = _v105 & 255; *(__rbp + _t84 - 96) = _t76; _v105 = _v105 + 1; } _t88 = &_v88; aes_encrypt_128( &_v72); _v105 = 0; while(1) { _t83 = _v105 - 15; if(_t83 > 0) { break; } _t58 = _v105 & 255; _t88 = _t88 + _v152; *_t88 = *(__rbp + 15 - (_v105 & 255) - 48) & 255; _v105 = _v105 + 1; } if(_t83 != 0) { __stack_chk_fail(); return _t58; } return _t58; } LLcp_LocalInitEncryptHandler() {// addr = 0x0043FFE2 long long _v16; // _cfa_fffffff0 signed int _v41; // _cfa_ffffffd7 signed char _v42; // _cfa_ffffffd6 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed int _t225; // _t225 signed int _t232; // _t232 signed int _t236; // _t236 signed int _t246; // _t246 signed int _t249; // _t249 signed int _t253; // _t253 signed int _t258; // _t258 signed char _t290; // _t290 signed int _t343; // _t343 signed int _t345; // _t345 long long _t362; // _t362 signed int _t365; // _t365 signed int _t377; // _t377 intOrPtr _t383; // _t383 signed int _t390; // _t390 intOrPtr _t396; // _t396 long long _t418; // _t418 signed int _t421; // _t421 signed int _t426; // _t426 intOrPtr _t432; // _t432 signed int _t441; // _t441 long long _t451; // _t451 _v80 = _t451; _v88 = __rsi; _v104 = _t441; _v92 = _t290; _v16 = *fs:0x28]; _v48 = 31; _t341 = _v104; _v64 = _v104; DebugPrint(0, _v104, _t441, _t444, _t451, __rsi); __eflags = _v64; if(_v64 != 0) { _t342 = _v64; __eflags = *_v64 & 255; if(( *_v64 & 255) != 0) { _t343 = _v64; __eflags = *((intOrPtr*)(_t343 + 8)) - _v88; if( *((intOrPtr*)(_t343 + 8)) == _v88) { _t345 = _v64; __eflags = ( *(_t345 + 1) & 255) - 5; if(( *(_t345 + 1) & 255) == 5) { _v56 = *((intOrPtr*)(_v88 + 72)); _v42 = *(_v64 + 3) & 255; _v41 = _v42 & 255; _t225 = _v41 & 255; __eflags = _t225 - 5; if(_t225 == 5) { __eflags = (_v92 & 255) - 19 - 16; if((_v92 & 255) - 19 > 16) { L63: _t349 = _v64; *(_v64 + 3) = _v42 & 255; __eflags = _v48; if(_v48 != 0) { *__rsp = _v48; r9d = _v42 & 255; r8d = _v41 & 255; DebugPrint(0, _t349, _t441, _t444, _t451, __rsi); } else { *__rsp = _v48; r9d = _v42 & 255; r8d = _v41 & 255; DebugPrint(0, _t349, _t441, _t444, _t451, __rsi); } _t232 = _v48; goto L67; } goto __rax; } __eflags = _t225 - 5; if(_t225 > 5) { __eflags = _t225 - 6; if(_t225 == 6) { _t236 = _v92 & 255; __eflags = _t236 - 26; if(_t236 == 26) { *(_v64 + 2) = 0; _v56 = *((intOrPtr*)(_v88 + 72)); *(_v56 + 2) = 34; __rsi = _v56 + 106; _t441 = _v88 + 8; _t444 = _v56 + 2; r8 = __rsi; _t451 = _v80 + 190168; EG_Event_Composer(0); *_v64 = 0; *(_v56 + 240) = 0; _t362 = _v56; __eflags = *(_t362 + 184) & 255; if(( *(_t362 + 184) & 255) == 0) { _t444 = _v56 + 184; __rsi = _v88; _t451 = _v80; LLcp_InitLlcpTerminate(); } _v48 = 0; } else { __eflags = _t236 - 34; if(_t236 == 34) { _t365 = _v64; __eflags = *(_t365 + 2) & 255; if(( *(_t365 + 2) & 255) != 0) { DM_Clear_Timer(); *(_v64 + 2) = 0; } *((char*)(_v56 + 106)) = 1; LLINK_Resume(_v88); _v48 = 0; _t451 = _v80 + 190168; r8 = _v56 + 106; _t441 = _v88 + 8; _t444 = &_v48; EG_Event_Composer(0); *_v64 = 0; *(_v56 + 240) = 0; _v42 = 0; _v48 = 0; } else { __eflags = _t236 - 19; if(_t236 == 19) { _t377 = _v64; __eflags = *(_t377 + 2) & 255; if(( *(_t377 + 2) & 255) != 0) { _t451 = _v80; DM_Clear_Timer(); *(_v64 + 2) = 0; } _v56 = *((intOrPtr*)(_v88 + 72)); *(_v56 + 2) = 8; *_v64 = 0; *(_v56 + 240) = 0; _t383 = _v88; __eflags = *(_t383 + 24); if( *(_t383 + 24) != 0) { r8 = *((intOrPtr*)(_v88 + 24)); __rsi = _v88; _t451 = _v80; r8(); } _v48 = 0; } } } goto L63; } __eflags = _t225 - 7; if(_t225 == 7) { _t246 = _v92 & 255; __eflags = _t246 - 19; if(_t246 == 19) { _t390 = _v64; __eflags = *(_t390 + 2) & 255; if(( *(_t390 + 2) & 255) != 0) { _t451 = _v80; DM_Clear_Timer(); *(_v64 + 2) = 0; } _v56 = *((intOrPtr*)(_v88 + 72)); *(_v56 + 2) = 8; *_v64 = 0; *(_v56 + 240) = 0; _t396 = _v88; __eflags = *(_t396 + 24); if( *(_t396 + 24) != 0) { r8 = *((intOrPtr*)(_v88 + 24)); __rsi = _v88; _t451 = _v80; r8(); } _v48 = 0; } else { __eflags = _t246 - 38; if(_t246 == 38) { _t441 = _v64; _t249 = DM_Set_Timer(); _t444 = _v64; *(_v64 + 2) = _t249; _t451 = _v80; LLcp_SendStartEncRsp(); _v42 = 6; _v48 = 0; } } goto L63; } L62: goto L63; } __eflags = _t225 - 3; if(_t225 == 3) { _t253 = _v92 & 255; __eflags = _t253 - 26; if(_t253 == 26) { *(_v64 + 2) = 0; _v56 = *((intOrPtr*)(_v88 + 72)); *(_v56 + 2) = 34; __rsi = _v56 + 106; _t441 = _v88 + 8; _t444 = _v56 + 2; r8 = __rsi; _t451 = _v80 + 190168; EG_Event_Composer(0); *_v64 = 0; *(_v56 + 240) = 0; _t418 = _v56; __eflags = *(_t418 + 184) & 255; if(( *(_t418 + 184) & 255) == 0) { _t444 = _v56 + 184; __rsi = _v88; _t451 = _v80; LLcp_InitLlcpTerminate(); } _v48 = 0; } else { __eflags = _t253 - 32; if(_t253 == 32) { _t421 = _v64; __eflags = *(_t421 + 2) & 255; if(( *(_t421 + 2) & 255) != 0) { DM_Clear_Timer(); *(_v64 + 2) = 0; } _t441 = _v64; _t451 = _v80; _t258 = DM_Set_Timer(); _t444 = _v64; *(_v64 + 2) = _t258; _v42 = 5; _v48 = 0; } else { __eflags = _t253 - 19; if(_t253 == 19) { _t426 = _v64; __eflags = *(_t426 + 2) & 255; if(( *(_t426 + 2) & 255) != 0) { _t451 = _v80; DM_Clear_Timer(); *(_v64 + 2) = 0; } _v56 = *((intOrPtr*)(_v88 + 72)); *(_v56 + 2) = 8; *_v64 = 0; *(_v56 + 240) = 0; _t432 = _v88; __eflags = *(_t432 + 24); if( *(_t432 + 24) != 0) { r8 = *((intOrPtr*)(_v88 + 24)); __rsi = _v88; _t451 = _v80; r8(); } _v48 = 0; } } } goto L63; } goto L62; } r8d = *(_v64 + 1) & 0xff; DebugPrint(0, _v64, _t441, _t444, _t451, __rsi); _t232 = 31; goto L67; } r9 = *((intOrPtr*)(_v64 + 8)); r8 = _v88; DebugPrint(0, _v64, *((intOrPtr*)(_v64 + 8)), _v88, _t451, __rsi); _t232 = 31; } else { DebugPrint(0, _t342, _t441, _t444, _t451, __rsi); _t232 = 31; } goto L67; } else { DebugPrint(0, _t341, _t441, _t444, _t451, __rsi); _t232 = 31; L67: if(__eflags == 0) { return _t232; } __stack_chk_fail(); return _t232; } } LLcp_LocalInitEncrypt( _unknown_ __eax // r0 ) {// addr = 0x00440A16 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t56; // _t56 long long _t93; // _t93 long long _t97; // _t97 long long _t104; // _t104 long long _t112; // _t112 _v32 = _t104; _v40 = _t112; _v48 = _t97; _v56 = _t93; _v72 = r9; _v60 = r8d; _v16 = *((intOrPtr*)(_v48 + 72)); DebugPrint(0, *((intOrPtr*)(_v48 + 72)), _t93, _t97, _t104, _t112); LLINK_Suspend(_v48); _t56 = RtlCopyMemory(16, _v16 + 80, _v72); *(_v16 + 96) = _v60 & 65535; LLcp_GenerateSKD(); LLcp_GenerateIV(_t56); *((char*)(_v40 + 2)) = DM_Set_Timer(); r9 = _v16 + 53; r8 = _v16 + 96; *__rsp = _v16 + 72; LLcp_SendEncReq(__eflags); *((long long*)(_v16 + 240)) = _v40; *_v40 = 1; *((char*)(_v40 + 1)) = 5; *((long long*)(_v40 + 8)) = _v48; *((long long*)(_v40 + 48)) = LLcp_LocalInitEncryptHandler; *((char*)(_v40 + 3)) = 3; return 0; } LLcp_PeerInitEncryptHandler() {// addr = 0x00440B71 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed int _v41; // _cfa_ffffffd7 signed char _v42; // _cfa_ffffffd6 signed char _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed int _t151; // _t151 signed int _t152; // _t152 signed char _t158; // _t158 signed char _t170; // _t170 signed int _t174; // _t174 signed char _t208; // _t208 signed int _t252; // _t252 signed int _t254; // _t254 intOrPtr _t263; // _t263 signed int _t267; // _t267 intOrPtr _t300; // _t300 signed int _t306; // _t306 long long _t317; // _t317 long long _t327; // _t327 _v80 = _t317; _v88 = _t327; _v104 = _t306; _v92 = _t208; _v16 = *fs:0x28]; _v48 = 31; _t250 = _v104; _v64 = _v104; DebugPrint(0, _v104, _t306, _t310, _t317, _t327); __eflags = _v64; if(_v64 != 0) { _t251 = _v64; __eflags = *_v64 & 255; if(( *_v64 & 255) != 0) { _t252 = _v64; __eflags = *((intOrPtr*)(_t252 + 8)) - _v88; if( *((intOrPtr*)(_t252 + 8)) == _v88) { _t254 = _v64; __eflags = ( *(_t254 + 1) & 255) - 6; if(( *(_t254 + 1) & 255) == 6) { _v56 = *((intOrPtr*)(_v88 + 72)); _v42 = *(_v64 + 3) & 255; _v41 = _v42 & 255; _t151 = _v41 & 255; __eflags = _t151 - 6; if(_t151 == 6) { _t152 = _v92 & 255; __eflags = _t152 - 26; if(_t152 == 26) { _v56 = *((intOrPtr*)(_v88 + 72)); *((char*)(_v56 + 2)) = 34; *_v64 = 0; *(_v56 + 240) = 0; _t263 = _v56; __eflags = *(_t263 + 184) & 255; if(( *(_t263 + 184) & 255) == 0) { _t310 = _v56 + 184; _t327 = _v88; _t317 = _v80; LLcp_InitLlcpTerminate(); } _v48 = 0; } else { __eflags = _t152 - 34; if(_t152 == 34) { _t267 = _v64; __eflags = *(_t267 + 2) & 255; if(( *(_t267 + 2) & 255) != 0) { DM_Clear_Timer(); *(_v64 + 2) = 0; } LLcp_SendStartEncRsp(); *((char*)(_v56 + 106)) = 1; LLINK_Resume(_v88); _v48 = 0; _t317 = _v80 + 190168; r8 = _v56 + 106; _t306 = _v88 + 8; _t310 = &_v48; EG_Event_Composer(0); *_v64 = 0; *(_v56 + 240) = 0; _v42 = 0; _v48 = 0; } } L35: _t264 = _v64; *(_v64 + 3) = _v42 & 255; __eflags = _v48; if(_v48 != 0) { *__rsp = _v48; r9d = _v42 & 255; r8d = _v41 & 255; DebugPrint(0, _t264, _t306, _t310, _t317, _t327); } else { *__rsp = _v48; r9d = _v42 & 255; r8d = _v41 & 255; DebugPrint(0, _t264, _t306, _t310, _t317, _t327); } _t158 = _v48; goto L39; } __eflags = _t151 - 7; if(_t151 == 7) { L20: __eflags = (_v92 & 255) - 38; if((_v92 & 255) == 38) { _t306 = _v64; _t170 = DM_Set_Timer(); _t310 = _v64; *(_v64 + 2) = _t170; _t317 = _v80; LLcp_SendStartEncReq(); _v42 = 6; _v48 = 0; } goto L35; } __eflags = _t151 - 4; if(_t151 != 4) { goto L35; } _t174 = _v92 & 255; __eflags = _t174 - 36; if(_t174 == 36) { LLcp_GenerateSK(); _t327 = _v88; r9d = LLcp_LCCmdEncCB; r8 = &_v40; LCCMD_LESetEncryptionRequest(); _v42 = 7; _v48 = 0; } else { __eflags = _t174 - 37; if(_t174 == 37) { LLcp_SendRejectInd(); *_v64 = 0; *(_v56 + 240) = 0; _v42 = 0; _v48 = 0; } else { __eflags = _t174 - 19; if(_t174 == 19) { *_v64 = 0; *(_v56 + 240) = 0; _t300 = _v88; __eflags = *(_t300 + 24); if( *(_t300 + 24) != 0) { r8 = *((intOrPtr*)(_v88 + 24)); _t327 = _v88; r8(); } _v48 = 0; } } } goto L20; } r8d = *(_v64 + 1) & 0xff; DebugPrint(0, _v64, _t306, _t310, _t317, _t327); _t158 = 31; } else { r9 = *((intOrPtr*)(_v64 + 8)); r8 = _v88; DebugPrint(0, _v64, *((intOrPtr*)(_v64 + 8)), _v88, _t317, _t327); _t158 = 31; } } else { DebugPrint(0, _t251, _t306, _t310, _t317, _t327); _t158 = 31; } goto L39; } else { DebugPrint(0, _t250, _t306, _t310, _t317, _t327); _t158 = 31; L39: if(__eflags == 0) { return _t158; } __stack_chk_fail(); return _t158; } } LLcp_PeerInitEncrypt( intOrPtr _a8 // _cfa_8 ) {// addr = 0x00441050 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed char _v41; // _cfa_ffffffd7 unsigned short _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 signed short _v124; // _cfa_ffffff84 intOrPtr _v136; // _cfa_ffffff78 _unknown_ __rbp; // r59 intOrPtr _t108; // _t108 unsigned short _t121; // _t121 _unknown_ _t147; // _t147 _unknown_ _t148; // _t148 long long _t187; // _t187 long long _t191; // _t191 long long _t201; // _t201 long long _t212; // _t212 _v96 = _t201; _v104 = _t212; _v112 = _t191; _v120 = _t187; _v136 = r9; _v124 = r8d; _v16 = *fs:0x28]; _v64 = &_v88; _v56 = *((intOrPtr*)(_v112 + 72)); DebugPrint(0, *((intOrPtr*)(_v112 + 72)), _t187, _t191, _t201, _t212); LLINK_Suspend(_v112); *(_v56 + 96) = _v124 & 65535; _t108 = RtlCopyMemory(8, _v56 + 53, _v136); *((intOrPtr*)(_v56 + 72)) = _a8; LLcp_GenerateSKD(); LLcp_GenerateIV(_t108); r8 = _v56 + 76; LLcp_SendEncRsp(_t147); _v41 = 0; *((char*)(__rbp + _v96 - 32)) = 5; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = *(_v112 + 8) & 65535; _v41 = _v41 + 1; *(__rbp + (_v41 & 255) - 32) = ( *(_v112 + 8) & 65535) >> 8; _v41 = _v41 + 1; RtlCopyMemory(8, &_v40 + (_v41 & 255), _v120); _v41 = _v41 + 8; *(__rbp + (_v41 & 255) - 32) = *(_v56 + 96) & 65535; _v41 = _v41 + 1; _t121 = ( *(_v56 + 96) & 65535) >> 8; *(__rbp + (_v41 & 255) - 32) = _t121; _v41 = _v41 + 1; write_du(_v41 & 255, &_v40, _v64, _v120); EG_Generate_LE_Event(); _v48 = _t121; _t148 = _v48 - 12; if(_t148 != 0) { *((long long*)(_v56 + 240)) = _v104; *_v104 = 1; *((char*)(_v104 + 1)) = 6; *((long long*)(_v104 + 8)) = _v112; *((long long*)(_v104 + 48)) = LLcp_PeerInitEncryptHandler; *((char*)(_v104 + 3)) = 4; } else { LLcp_SendRejectInd(); } if(_t148 != 0) { __stack_chk_fail(); return 0; } return 0; } LLcp_LocalInitRestartEncryptHandler() {// addr = 0x004412B6 long long _v16; // _cfa_fffffff0 signed int _v41; // _cfa_ffffffd7 signed int _v42; // _cfa_ffffffd6 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 char _v92; // _cfa_ffffffa4 signed int _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 char _t91; // _t91 signed int _t122; // _t122 signed int _t124; // _t124 signed int _t132; // _t132 _unknown_ _t134; // _t134 _v80 = __rdi; _v88 = __rsi; _v104 = _t132; _v92 = _t91; _v16 = *fs:0x28]; _v48 = 31; _t120 = _v104; _v64 = _v104; DebugPrint(0, _v104, _t132, _t134, __rdi, __rsi); __eflags = _v64; if(_v64 != 0) { _t121 = _v64; __eflags = *_v64 & 255; if(( *_v64 & 255) != 0) { _t122 = _v64; __eflags = *((intOrPtr*)(_t122 + 8)) - _v88; if( *((intOrPtr*)(_t122 + 8)) == _v88) { _t124 = _v64; __eflags = ( *(_t124 + 1) & 255) - 10; if(( *(_t124 + 1) & 255) == 10) { _v56 = *((intOrPtr*)(_v88 + 72)); _v42 = *(_v64 + 3) & 255; _v41 = _v42 & 255; __eflags = (_v41 & 255) - 7; if((_v41 & 255) <= 7) { goto __rax; } _t128 = _v64; *(_v64 + 3) = _v42 & 255; __eflags = _v48; if(_v48 != 0) { *__rsp = _v48; r9d = _v42 & 255; r8d = _v41 & 255; DebugPrint(0, _t128, _t132, _t134, __rdi, __rsi); } else { *__rsp = _v48; r9d = _v42 & 255; r8d = _v41 & 255; DebugPrint(0, _t128, _t132, _t134, __rdi, __rsi); } } else { r8d = *(_v64 + 1) & 0xff; DebugPrint(0, _v64, _t132, _t134, __rdi, __rsi); } } else { r9 = *((intOrPtr*)(_v64 + 8)); r8 = _v88; DebugPrint(0, _v64, *((intOrPtr*)(_v64 + 8)), _v88, __rdi, __rsi); } } else { DebugPrint(0, _t121, _t132, _t134, __rdi, __rsi); } } else { DebugPrint(0, _t120, _t132, _t134, __rdi, __rsi); } if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_LocalInitRestartEncrypt() {// addr = 0x00441FF7 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t52; // _t52 long long _t88; // _t88 long long _t92; // _t92 long long _t99; // _t99 long long _t107; // _t107 _v32 = _t99; _v40 = _t107; _v48 = _t92; _v56 = _t88; _v72 = r9; _v60 = r8d; _v16 = *((intOrPtr*)(_v48 + 72)); DebugPrint(0, *((intOrPtr*)(_v48 + 72)), _t88, _t92, _t99, _t107); LLINK_Suspend(_v48); RtlCopyMemory(8, _v16 + 98, _v56); _t52 = RtlCopyMemory(16, _v16 + 80, _v72); *(_v16 + 96) = _v60 & 65535; LLcp_GenerateSKD(); LLcp_GenerateIV(_t52); *((char*)(_v40 + 2)) = DM_Set_Timer(); LLcp_SendPauseEncReq(); *((long long*)(_v16 + 240)) = _v40; *_v40 = 1; *((char*)(_v40 + 1)) = 10; *((long long*)(_v40 + 8)) = _v48; *((long long*)(_v40 + 48)) = LLcp_LocalInitRestartEncryptHandler; *((char*)(_v40 + 3)) = 1; return; } LLcp_PeerInitRestartEncryptHandler() {// addr = 0x0044214B long long _v16; // _cfa_fffffff0 signed int _v58; // _cfa_ffffffc6 signed int _v59; // _cfa_ffffffc5 signed int _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 char _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 char _v140; // _cfa_ffffff74 signed int _v152; // _cfa_ffffff68 _unknown_ __rbp; // r59 char _t93; // _t93 signed int _t125; // _t125 signed int _t127; // _t127 signed int _t135; // _t135 _unknown_ _t137; // _t137 _v128 = __rdi; _v136 = __rsi; _v152 = _t135; _v140 = _t93; _v16 = *fs:0x28]; _v64 = 31; _v88 = _v152; _v80 = ?_? ( &_v120); DebugPrint(0, ?_? ( &_v120), _t135, _t137, __rdi, __rsi); __eflags = _v88; if(_v88 != 0) { _t124 = _v88; __eflags = *_v88 & 255; if(( *_v88 & 255) != 0) { _t125 = _v88; __eflags = *((intOrPtr*)(_t125 + 8)) - _v136; if( *((intOrPtr*)(_t125 + 8)) == _v136) { _t127 = _v88; __eflags = ( *(_t127 + 1) & 255) - 11; if(( *(_t127 + 1) & 255) == 11) { _v72 = *((intOrPtr*)(_v136 + 72)); _v59 = *(_v88 + 3) & 255; _v58 = _v59 & 255; __eflags = (_v58 & 255) - 7; if((_v58 & 255) <= 7) { goto __rax; } _t131 = _v88; *(_v88 + 3) = _v59 & 255; __eflags = _v64; if(_v64 != 0) { *__rsp = _v64; r9d = _v59 & 255; r8d = _v58 & 255; DebugPrint(0, _t131, _t135, _t137, __rdi, __rsi); } else { *__rsp = _v64; r9d = _v59 & 255; r8d = _v58 & 255; DebugPrint(0, _t131, _t135, _t137, __rdi, __rsi); } } else { r8d = *(_v88 + 1) & 0xff; DebugPrint(0, _v88, _t135, _t137, __rdi, __rsi); } } else { r9 = *((intOrPtr*)(_v88 + 8)); r8 = _v136; DebugPrint(0, _v88, *((intOrPtr*)(_v88 + 8)), _v136, __rdi, __rsi); } } else { DebugPrint(0, _t124, _t135, _t137, __rdi, __rsi); } } else { DebugPrint(0, &_v120, _t135, _t137, __rdi, __rsi); } if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_PeerInitRestartEncrypt( _unknown_ __eax // r0 ) {// addr = 0x0044292B long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t57; // _t57 long long _t59; // _t59 long long _t64; // _t64 _v32 = _t64; _v40 = __rsi; _v48 = _t59; _v16 = *((intOrPtr*)(_v48 + 72)); DebugPrint(0, *((intOrPtr*)(_v48 + 72)), _t57, _t59, _t64, __rsi); LLINK_Suspend(_v48); *((char*)(_v40 + 2)) = DM_Set_Timer(); LLcp_SendPauseEncRsp(); *((long long*)(_v16 + 240)) = _v40; *_v40 = 1; *((char*)(_v40 + 1)) = 11; *((long long*)(_v40 + 8)) = _v48; *((long long*)(_v40 + 48)) = LLcp_PeerInitRestartEncryptHandler; *((char*)(_v40 + 3)) = 1; return 0; } LLcp_ProcessControlPDU() {// addr = 0x00442A03 long long _v32; // _cfa_ffffffe0 signed int _v41; // _cfa_ffffffd7 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 signed char* _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t60; // _t60 long long _t64; // _t64 long long _t71; // _t71 _push(r12); _push(__rbx); __rsp = __rsp - 112; _v80 = _t71; _v88 = __rsi; _v96 = __rdx; _v104 = __rcx; _v108 = r8d; _v32 = *fs:0x28]; _v41 = *_v104 & 255; _t64 = *((intOrPtr*)(_v88 + 72)); _v64 = _t64; DebugPrint(0, _t64, __rcx, __rdx, _t71, __rsi); if(_v41 > 13) { L3: if((_v41 & 255) <= 13) { goto __rax; } _t38 = *(_v88 + 11) & 255; LLcp_SendUnknownRsp(); } else { _t60 = ( *(_t64 + &LLCPPDUSizeTable) & 255) - _v108; if(_t60 <= 0) { goto L3; } else { r9d = *(_t64 + &LLCPPDUSizeTable) & 0xff; r8d = _v108 & 255; DebugPrint(0, _t64, __rcx, __rdx, _t71, __rsi); } } if(_t60 != 0) { __stack_chk_fail(); } __rsp = __rsp + 112; _pop(__rbx); _pop(r12); return; } LL_ReadRemoteUsedFeatures() {// addr = 0x004433DF intOrPtr _v12; // _cfa_fffffff4 short _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed short _t28; // _t28 long long _t33; // _t33 signed char* _t39; // _t39 long long _t46; // _t46 _v48 = _t46; _v52 = _t28; _v12 = 2; _v24 = 8214; _t33 = _v48; LINK_SerachLEConnHandle(_v52 & 65535, _t33); _v40 = _t33; if(_v40 != 0) { _v32 = *(_v40 + 72); _t27 = *_v32 & 255; if(( *_v32 & 255) != 0) { _v12 = 12; } else { _t39 = _v32; _t27 = (_t39[0x80]) & 255; if(((_t39[0x80]) & 255) != 0) { _v12 = 58; } else { LLcp_InitReadRemoteUsedFeatures(); _v12 = 0; } } } EG_Generate_Command_Status_Event(); return; } LL_ReadRemoteVersion() {// addr = 0x00443498 intOrPtr _v12; // _cfa_fffffff4 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed short _t63; // _t63 long long _t68; // _t68 long long _t103; // _t103 _v48 = _t103; _v52 = _t63; _v12 = 2; _t68 = _v48; LINK_SerachLEConnHandle(_v52 & 0xffff, _t68); _v40 = _t68; if(_v40 != 0) { _v32 = *((intOrPtr*)(_v40 + 72)); _v24 = 1053; if(( *(_v32 + 3) & 255) != 3) { if(( *(_v32 + 3) & 255) != 0) { _v12 = 58; EG_Generate_Command_Status_Event(); } else { if(( *(_v32 + 128) & 255) != 0) { _v12 = 42; EG_Generate_Command_Status_Event(); } else { LLcp_InitReadRemoteVersion(); _v12 = 0; EG_Generate_Command_Status_Event(); } } } else { _v12 = 0; EG_Generate_Command_Status_Event(); _v12 = 0; r8 = _v32 + 5; *__rsp = _v32 + 7; r9 = r8; r8 = _v32 + 4; EG_Event_Composer(0); } } return _v12; } LL_ReadChannelMap( _unknown_ __rax // r53 ) {// addr = 0x0044361F intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed short _t29; // _t29 long long _t32; // _t32 long long _t37; // _t37 long long _t40; // _t40 long long _t42; // _t42 _v48 = _t42; _v64 = _t40; _v52 = _t29; _v12 = 2; _t32 = _v48; LINK_SerachLEConnHandle(_v52 & 65535, _t32); _v32 = _t32; if(_v32 == 0) { _v12 = 12; } else { _v24 = *((intOrPtr*)(_v32 + 72)); _t37 = _v64; __ecx = 2; write_du(2, _v32 + 8, _t37, _v64 + 24); _v64 = _t37; write_end_du(5, _v64, _v24 + 21); _v12 = 0; } return _v12; } LL_SetHostChannelClassification( _unknown_ __eax // r0 ) {// addr = 0x004436BB char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 char _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed char* _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed long long _t101; // _t101 _unknown_ _t120; // _t120 _unknown_ _t126; // _t126 signed int _t133; // _t133 signed char* _t140; // _t140 _v80 = _t133; _v88 = _t140; _v48 = _v88; _v12 = 8212; _v16 = 12; _v40 = &_v72; _t101 = &(_v88[4]); _v96 = *_v88 & 0xff; *__rsp = (_v88[1]) & 0xff; r9d = (_v88[2]) & 0xff; r8d = (_v88[3]) & 0xff; DebugPrint(0, _t101, _t120, _t126, _t133, _t140); _v9 = 0; while(_v9 <= 1) { _t101 = _t101 * 184 + _v80 + 33792; if(( *(_t101 + 8) & 255) == 0) { L7: _v9 = _v9 + 1; continue; } _t101 = _v80; if(( *(_t101 + 191376) & 16) == 0) { goto L7; } _t101 = _v80; if( *((intOrPtr*)(_t101 + 191380)) != 0) { goto L7; } _v32 = 4416 + _v80 * 184 + _v80 + 33800; _v24 = *((intOrPtr*)(_v32 + 72)); if(( *(_v24 + 128) & 255) != 0) { _v16 = 42; write_end_du(1, _v40, &_v16); EG_Generate_Command_Complete_Event(); } else { _v16 = LLcp_InitSetHostChannelClassification(); } break; } if(_v9 == 2) { LLCFG_SetHostChannelClassification(_v80, _v48); _v16 = 0; write_end_du(1, _v40, &_v16); EG_Generate_Command_Complete_Event(); } return _v16; } LL_SetHostChannelMapUpdate() {// addr = 0x004438B5 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t78; // _t78 _unknown_ _t80; // _t80 signed int _t84; // _t84 signed char* _t86; // _t86 _v48 = _t84; _v56 = _t86; _v40 = _v56; _t67 = &(_v56[4]); _v64 = *_v56 & 0xff; *__rsp = (_v56[1]) & 0xff; r9d = (_v56[2]) & 0xff; r8d = (_v56[3]) & 0xff; DebugPrint(0, _t67, _t78, _t80, _t84, _t86); _v9 = 0; while(_v9 <= 1) { _t67 = _t67 * 184 + _v48 + 33792; _t43 = *(_t67 + 8) & 255; if(( *(_t67 + 8) & 255) == 0) { L6: _v9 = _v9 + 1; continue; } _t67 = _v48; _t43 = *(_t67 + 191376) & 16; if(( *(_t67 + 191376) & 16) == 0) { goto L6; } _t67 = _v48; _t43 = *(_t67 + 191380); if( *(_t67 + 191380) != 0) { goto L6; } _v32 = 4416 + _v48 * 184 + _v48 + 33800; _v24 = *((intOrPtr*)(_v32 + 72)); if(( *(_v24 + 128) & 255) == 0) { _t67 = _v48; _t43 = LLcp_InitSetHostChannelClassification(); } return; } return; } LL_ConnectionUpdate() {// addr = 0x004439F6 signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee signed short _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 short _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t108; // _t108 intOrPtr _t114; // _t114 signed char* _t116; // _t116 _unknown_ _t119; // _t119 _unknown_ _t122; // _t122 long long _t125; // _t125 long long _t134; // _t134 _v64 = _t125; _v72 = _t134; _v24 = 2; _v18 = casting_uint16(_v72); _v16 = casting_uint16(_v72 + 2); _v14 = casting_uint16(_v72 + 4); _v12 = casting_uint16(_v72 + 6); _v10 = casting_uint16(_v72 + 8); r9d = _v10 & 65535; r8d = _v14 & 65535; DebugPrint(0, _v72 + 8, _t119, _t122, _v72 + 8, _t134); _v20 = ((_v16 & 0xffff) * 58255 >> 16 >> 3 << 3) + ((_v16 & 0xffff) * 58255 >> 16 >> 3); if((_v20 & 65535) < _v16) { _v20 = _v20 + 9; } _v40 = 8211; _t108 = _v64; _t131 = _t108; _t72 = LINK_SerachLEConnHandle(_v18 & 65535, _t108); _v56 = _t108; if(_v56 == 0) { _v24 = 2; } else { _v48 = *(_v56 + 72); r9 = (_v48[0xf0]); r8d = _v10 & 65535; DebugPrint(0, _v48, _v48[0xf0], _t122, _t131, _t134); _t114 = _v64; _t72 = *(_t114 + 191376) & 16; if(( *(_t114 + 191376) & 16) == 0) { _v24 = 12; } else { _t72 = *_v48 & 255; if(( *_v48 & 255) != 0) { _v24 = 12; } else { _t116 = _v48; _t72 = (_t116[0x80]) & 255; if(((_t116[0x80]) & 255) != 0) { _v24 = 58; } else { r8d = _v10 & 65535; r9d = r8d; r8d = _v12 & 65535; _v24 = LLcp_LocalInitConnectionUpdate(); } } } } EG_Generate_Command_Status_Event(); return; } LL_Rand( _unknown_ __eflags, // r9 _unknown_ __rax // r53 ) {// addr = 0x00443BD1 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 short _v26; // _cfa_ffffffe6 char _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t29; // _t29 long long _t39; // _t39 __eflags = __eflags; _v96 = _t39; _v16 = *fs:0x28]; _v32 = 0; _v26 = 8216; _v40 = &_v88; BTRAND_Seed_Initialize(); BTRAND_Rand64Bit(0, &_v24); _t29 = _v40; __ecx = 1; write_du(1, &_v32, _t29, _v40 + 24); _v40 = _t29; __edx = 8; write_end_du(8, _v40, &_v24); EG_Generate_Command_Complete_Event(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LL_Encrypt( _unknown_ __rax // r53 ) {// addr = 0x00443C86 long long _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 char _v88; // _cfa_ffffffa8 _unknown_ _v104; // _cfa_ffffff98 signed char _v105; // _cfa_ffffff97 short _v108; // _cfa_ffffff94 char _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 char _v184; // _cfa_ffffff48 long long _v192; // _cfa_ffffff40 long long _v200; // _cfa_ffffff38 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t65; // _t65 signed int _t67; // _t67 _unknown_ _t73; // _t73 signed int _t79; // _t79 char* _t84; // _t84 signed int _t86; // _t86 char* _t98; // _t98 _unknown_ _t101; // _t101 char* _t102; // _t102 long long _t105; // _t105 long long _t110; // _t110 _v192 = _t105; _v200 = _t110; _v32 = *fs:0x28]; _v112 = 0; _v136 = _v200; _v128 = _v200 + 16; _v108 = 8215; _t79 = &_v184; _v120 = _t79; _v105 = 0; while(_v105 <= 15) { _t65 = *(_t101 - _t79 + _v128) & 255; _t79 = _v105 & 255; *(__rbp + _t79 - 64) = _t65; _v105 = _v105 + 1; } _v105 = 0; while(_v105 <= 15) { _t67 = *(_t101 - _t79 + _v136) & 255; _t79 = _v105 & 255; *(__rbp + _t79 - 48) = _t67; _v105 = _v105 + 1; } _t98 = &_v88; _t102 = &_v56; _t84 = &_v72; aes_encrypt_128(_t98); _v105 = 0; while(1) { _t73 = _v105 - 15; if(_t73 > 0) { break; } _t102 = _t98 - _t102; *(__rbp + _t84 - 64) = *(__rbp + _t102 - 96) & 255; _v105 = _v105 + 1; } _t86 = _v120; write_du(1, &_v112, _t86, _v120 + 24); _v120 = _t86; write_end_du(16, _v120, &_v72); EG_Generate_Command_Complete_Event(); if(_t73 != 0) { __stack_chk_fail(); return; } return; } LL_Start_Encrypt() {// addr = 0x00443E0D signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 short _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t68; // _t68 signed char* _t75; // _t75 long long _t86; // _t86 long long _t93; // _t93 _v64 = _t86; _v72 = _t93; _v16 = 2; _v12 = casting_uint16(_v72); _v56 = _v72 + 2; _v10 = casting_uint16(_v72 + 10); _v48 = _v72 + 12; _v24 = 8217; _t68 = _v64; __esi = _v12 & 65535; LINK_SerachLEConnHandle(_v12 & 65535, _t68); _v40 = _t68; if(_v40 != 0) { _v32 = *(_v40 + 72); if(( *_v32 & 255) != 0) { _v16 = 12; } else { if(((_v32[0x80]) & 255) != 0) { _v16 = 42; } else { _t75 = _v32; _t53 = (_t75[0x6a]) & 255; if(((_t75[0x6a]) & 255) == 0) { r8 = _v48; r9 = r8; r8d = _v10 & 65535; LLcp_LocalInitEncrypt(_t53); } else { r8 = _v48; r9 = r8; r8d = _v10 & 65535; LLcp_LocalInitRestartEncrypt(); } _v16 = 0; } } } EG_Generate_Command_Status_Event(); return; } LL_LongTermKeyRequestReply() {// addr = 0x00443F55 short _v10; // _cfa_fffffff6 char _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ _v120; // _cfa_ffffff88 _unknown_ __rbp; // r59 long long _t63; // _t63 long long _t65; // _t65 long long _t90; // _t90 long long _t98; // _t98 _v112 = _t90; _v120 = _t98; _v16 = 2; _v12 = casting_uint16(_v120); _v48 = _v120 + 2; _v10 = 8218; _v40 = &_v104; _t63 = _v112; __esi = _v12 & 0xffff; LINK_SerachLEConnHandle(_v12 & 0xffff, _t63); _v32 = _t63; if(_v32 != 0) { _v24 = *(_v32 + 72); _t50 = *_v24 & 255; if(( *_v24 & 255) != 1) { _v16 = 12; } else { if((_v24[0xf0]) == 0) { _v16 = 42; } else { if( *((intOrPtr*)((_v24[0xf0]) + 48)) != 0) { _t50 = RtlCopyMemory(16, &(_v24[0x50]), _v48); r8 = *((intOrPtr*)((_v24[0xf0]) + 48)); r8(); _v16 = 0; } } } } _t65 = _v40; __ecx = 1; write_du(1, &_v16, _t65, _v40 + 24); _v40 = _t65; write_end_du(2, _v40, &_v12); EG_Generate_Command_Complete_Event(); return; } LL_LongTermKeyRequestNegativeReply() {// addr = 0x004440B7 short _v10; // _cfa_fffffff6 char _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ _v120; // _cfa_ffffff88 _unknown_ __rbp; // r59 long long _t63; // _t63 long long _t65; // _t65 long long _t90; // _t90 long long _t98; // _t98 _v112 = _t90; _v120 = _t98; _v16 = 2; _v12 = casting_uint16(_v120); _v48 = _v120 + 2; _v10 = 8219; _v40 = &_v104; _t63 = _v112; __esi = _v12 & 0xffff; LINK_SerachLEConnHandle(_v12 & 0xffff, _t63); _v32 = _t63; if(_v32 != 0) { _v24 = *(_v32 + 72); _t50 = *_v24 & 255; if(( *_v24 & 255) != 1) { _v16 = 12; } else { if((_v24[0xf0]) == 0) { _v16 = 42; } else { if( *((intOrPtr*)((_v24[0xf0]) + 48)) != 0) { _t50 = RtlCopyMemory(16, &(_v24[0x50]), _v48); r8 = *((intOrPtr*)((_v24[0xf0]) + 48)); r8(); _v16 = 0; } } } } _t65 = _v40; __ecx = 1; write_du(1, &_v16, _t65, _v40 + 24); _v40 = _t65; write_end_du(2, _v40, &_v12); EG_Generate_Command_Complete_Event(); return; } LLcp_IsIncomingLEUAllowedInEnc() {// addr = 0x00444219 char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v32 = __rdi; _v9 = 0; _v24 = (_v32[0x48]); if(_v32 == 0) { return; } if(( *_v32 & 255) == 0) { return; } if( *(_v24 + 240) != 0) { if(( *( *(_v24 + 240)) & 255) == 0) { DebugPrint(0, *(_v24 + 240), __rcx, __rdx, __rdi, __rsi); } else { if((( *(_v24 + 240)[1]) & 255) != 5) { if((( *(_v24 + 240)[1]) & 255) == 6) { _v9 = 0; } } else { if((( *(_v24 + 240)[3]) & 255) != 3) { _v9 = 0; } else { _v9 = 1; } } if((( *(_v24 + 240)[1]) & 255) != 10) { if((( *(_v24 + 240)[1]) & 255) == 11) { _v9 = 0; } } else { if((( *(_v24 + 240)[3]) & 255) != 1) { _v9 = 0; } else { _v9 = 1; } } } } return; } LLcp_IsEncProc() {// addr = 0x0044434C char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v32 = __rdi; _v9 = 0; _v24 = (_v32[0x48]); if(_v32 == 0) { return; } if(( *_v32 & 255) == 0) { return; } if( *(_v24 + 240) != 0) { if(( *( *(_v24 + 240)) & 255) == 0) { DebugPrint(0, *(_v24 + 240), __rcx, __rdx, __rdi, __rsi); } else { if((( *(_v24 + 240)[1]) & 255) != 5) { if((( *(_v24 + 240)[1]) & 255) != 6) { if((( *(_v24 + 240)[1]) & 255) != 10) { if((( *(_v24 + 240)[1]) & 255) == 11) { _v9 = 1; } } else { _v9 = 1; } } else { _v9 = 1; } } else { _v9 = 1; } } } return; } LLcp_IsTerminateProc( signed char* __rdi // r57 ) {// addr = 0x0044444B signed char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v9 = 0; _v24 = (_v32[0x48]); if(_v32 == 0) { return 0; } if(( *_v32 & 255) != 0) { if( *(_v24 + 240) != 0 && ( *( *(_v24 + 240)) & 255) != 0 && (( *(_v24 + 240)[1]) & 255) == 2) { _v9 = 1; } return _v9 & 255; } else { return 0; } } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004444C4 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } ConvertLLCPOpcodeToStr( signed char __edi // r4 ) {// addr = 0x004444F3 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 13) { goto __rax; } return "reserved"; } LLCPTraceEmpty( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0044457A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LLCPTraceConnectionUpdateReq() {// addr = 0x00444588 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t19; // _t19 signed short _t20; // _t20 long long _t39; // _t39 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 64; _v64 = _t39; _v72 = __rsi; _v48 = _v72; r14d = casting_uint16(_v48 + 10) & 65535; r13d = casting_uint16(_v48 + 8) & 65535; r12d = casting_uint16(_v48 + 6) & 65535; _t19 = casting_uint16(_v48 + 4); _t20 = casting_uint16(_v48 + 2); _v68 = r14d; _v76 = r13d; _v84 = r12d; *__rsp = _t19 & 65535; r9d = _t20 & 65535; r8d = *(_v48 + 1) & 0xff; __rcx = _v64; DebugPrint(0, _v64, _v64, __rdx, _v48 + 2, __rsi); __rsp = &(__rsp[0x10]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } LLCPTraceChannelMapReq() {// addr = 0x00444659 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed short _t20; // _t20 long long _t43; // _t43 _v32 = _t43; _v40 = __rsi; _v16 = _v40; _t20 = casting_uint16(_v16 + 6); r9d = *(_v16 + 4) & 0xff; r8d = *(_v16 + 5) & 0xff; _v48 = _t20 & 65535; _v56 = *(_v16 + 1) & 0xff; _v64 = *(_v16 + 2) & 0xff; *__rsp = *(_v16 + 3) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v16 + 6, __rsi); return; } LLCPTraceTerminateInd() {// addr = 0x004446EE long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; r8d = *(_v16 + 1) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LLCPTraceEncReq() {// addr = 0x00444736 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 signed int _v132; // _cfa_ffffff7c _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 112; _v64 = __rdi; _v72 = __rsi; _v48 = _v72; r11d = *(_v48 + 10) & 0xff; r10d = *(_v48 + 9) & 0xff; r9d = *(_v48 + 8) & 0xff; r8d = *(_v48 + 7) & 0xff; r12d = *(_v48 + 2) & 0xff; _v84 = r11d; _v92 = r10d; _v100 = r9d; _v108 = r8d; _v116 = *(_v48 + 6) & 0xff; _v124 = *(_v48 + 5) & 0xff; _v132 = *(_v48 + 4) & 0xff; *__rsp = *(_v48 + 3) & 0xff; r9d = r12d; r8d = *(_v48 + 1) & 0xff; DebugPrint(0, _v64, _v64, __rdx, __rdi, __rsi); r12d = *(_v48 + 22) & 0xff; r11d = *(_v48 + 20) & 0xff; r10d = *(_v48 + 19) & 0xff; r9d = *(_v48 + 18) & 0xff; r8d = *(_v48 + 17) & 0xff; r14d = *(_v48 + 12) & 0xff; r13d = *(_v48 + 11) & 0xff; _v68 = r12d; _v76 = *(_v48 + 21) & 0xff; _v84 = r11d; _v92 = r10d; _v100 = r9d; _v108 = r8d; _v116 = *(_v48 + 16) & 0xff; _v124 = *(_v48 + 15) & 0xff; _v132 = *(_v48 + 14) & 0xff; *__rsp = *(_v48 + 13) & 0xff; r9d = r14d; r8d = r13d; DebugPrint(0, _v64, _v64, __rdx, __rdi, __rsi); __rsp = &(__rsp[0x1c]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } LLCPTraceEncRsp() {// addr = 0x004448FB long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 signed int _v132; // _cfa_ffffff7c _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 112; _v64 = __rdi; _v72 = __rsi; _v48 = _v72; r12d = *(_v48 + 12) & 0xff; r11d = *(_v48 + 10) & 0xff; r10d = *(_v48 + 9) & 0xff; r9d = *(_v48 + 8) & 0xff; r8d = *(_v48 + 7) & 0xff; r14d = *(_v48 + 2) & 0xff; r13d = *(_v48 + 1) & 0xff; _v68 = r12d; _v76 = *(_v48 + 11) & 0xff; _v84 = r11d; _v92 = r10d; _v100 = r9d; _v108 = r8d; _v116 = *(_v48 + 6) & 0xff; _v124 = *(_v48 + 5) & 0xff; _v132 = *(_v48 + 4) & 0xff; *__rsp = *(_v48 + 3) & 0xff; r9d = r14d; r8d = r13d; __rcx = _v64; DebugPrint(0, _v64, _v64, __rdx, __rdi, __rsi); __rsp = &(__rsp[0x1c]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); return; } LLCPTraceUnknownRsp() {// addr = 0x00444A04 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; r8d = *(_v16 + 1) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LLCPTraceFeature() {// addr = 0x00444A4C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; r9d = *(_v16 + 8) & 0xff; r8d = *(_v16 + 7) & 0xff; r11d = *(_v16 + 2) & 0xff; r10d = *(_v16 + 1) & 0xff; _v48 = r9d; _v56 = r8d; _v64 = *(_v16 + 6) & 0xff; _v72 = *(_v16 + 5) & 0xff; _v80 = *(_v16 + 4) & 0xff; *__rsp = *(_v16 + 3) & 0xff; r9d = r11d; r8d = r10d; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LLCPTraceVersionEnd() {// addr = 0x00444B01 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t10; // _t10 signed short _t11; // _t11 long long _t24; // _t24 _v48 = _t24; _v56 = __rsi; _v32 = _v56; _t10 = casting_uint16(_v32 + 4); _t11 = casting_uint16(_v32 + 2); *__rsp = _t10 & 65535; r9d = _t11 & 65535; r8d = *(_v32 + 1) & 0xff; __rcx = _v48; DebugPrint(0, _v48, _v48, __rdx, _v32 + 2, __rsi); return; } LLCPTraceRejectInd() {// addr = 0x00444B7B long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; r8d = *(_v16 + 1) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LLCP_TRACE( _unknown_ __rax // r53 ) {// addr = 0x00444BC3 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 intOrPtr _v68; // _cfa_ffffffbc char _v72; // _cfa_ffffffb8 signed int _v73; // _cfa_ffffffb7 intOrPtr _v92; // _cfa_ffffffa4 signed char _v96; // _cfa_ffffffa0 signed char* _v104; // _cfa_ffffff98 intOrPtr _v108; // _cfa_ffffff94 intOrPtr _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t34; // _t34 intOrPtr _t43; // _t43 signed char _t47; // _t47 _unknown_ _t52; // _t52 signed char* _t56; // _t56 signed long long _t57; // _t57 signed char* _t61; // _t61 signed char* _t65; // _t65 _unknown_ _t68; // _t68 _unknown_ _t70; // _t70 _v92 = _t43; _v104 = _t65; _v108 = __ecx; _v96 = _t47; _v32 = *fs:0x28]; _v72 = 1112822363; _v68 = 1278888020; _v64 = 23884; _v56 = 0; _v48 = 0; _v73 = *_v104 & 255; _t56 = _v104; __ebx = *_t56 & 0xff; ConvertLLCPOpcodeToStr(_v73 & 255); _t61 = _t56; if(_v92 != 0) { _t34 = 60; } else { _t34 = 62; } _t66 = ?_? ( &_v72); _v128 = _v108; *__rsp = __ebx; r9 = _t61; r8d = _t34; DebugPrint(0, _t56, ?_? ( &_v72), &_v72, _t68, _t70); _t57 = &_v72; r8d = _v96 & 255; DebugPrint(0, _t57, _t57, _t66, _t68, _t70); _t52 = _v73 - 13; if(_t52 <= 0) { _t38 = _t57; *((long long*)( *((intOrPtr*)(_t57 * 8 + &LLCPTraceTable))))(); } if(_t52 != 0) { __stack_chk_fail(); return; } return; } LL_Initialise() {// addr = 0x00444CDC long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t21; // _t21 _v16 = _t21; if(__al != 0) { LCEVHDR_RegisterEventHandler(32, __rdx, _v16); LCEVHDR_RegisterEventHandler(34, __rdx, _v16); LCEVHDR_RegisterEventHandler(36, __rdx, _v16); LCEVHDR_RegisterEventHandler(33, __rdx, _v16); return; } return; } LL_ConvertHCIAdvTypeToPDUAdvType( char __edi // r4 ) {// addr = 0x00444D54 signed char _v9; // _cfa_fffffff7 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edi = __edi; _v28 = __edi; if(_v28 != 0) { if(_v28 != 1) { if(_v28 != 2) { if(_v28 != 3) { _v9 = 255; } else { _v9 = 2; } } else { _v9 = 6; } } else { _v9 = 1; } } else { _v9 = 0; } return _v9 & 255; } LL_MakeUpMCUAdvertisePDU() {// addr = 0x00444D97 long long _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 signed int _v57; // _cfa_ffffffc7 signed int _v71; // _cfa_ffffffb9 signed int _v72; // _cfa_ffffffb8 signed int _v74; // _cfa_ffffffb6 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t200; // _t200 long long _t252; // _t252 _v96 = _t252; _v16 = *fs:0x28]; __edi = *(_v96 + 191246) & 0xff; _v57 = LL_ConvertHCIAdvTypeToPDUAdvType( *(_v96 + 191246) & 0xff); if(_v57 == 0 || _v57 == 2 || _v57 == 6) { _t200 = *(_v96 + 191247) & 255; if(_t200 != 0) { RtlCopyMemory(6, &_v56, _v96 + 191290); } else { RtlCopyMemory(6, &_v56, _v96 + 191072); } RtlCopyMemory( *(_v96 + 191251) & 0xff, &_v56 + 6, _v96 + 191252); RtlFillMemory(31 - ( *(_v96 + 191251) & 0xff), 0, &_v56 + 6 + _v96); MCU_Write_Memory(40, &_v56); RtlFillMemory(16, 0, &_v88); _v88 = _v88 & 0xf000 | ( *(_v96 + 191251) & 0xff) + 6 & 0xfff; RtlFillMemory(2, 0, &_v72); _v72 = _v72 & 0xf0 | _v57 & 0xf; _v72 = _v72 & 0xbf | ( *(_v96 + 191247) & 1) << 6; _v72 = _v72 & 0x7f; _v71 = _v71 & 0xc0 | ( *(_v96 + 191251) & 255) + 6 & 0x3f; _v74 = _v72 & 65535; _t92 = MCU_Write_Memory(16, &_v88); LL_MakeUpMCUScanRspPDU(); goto L12; } else { if(_v57 == 1) { if(( *(_v96 + 191247) & 255) != 0) { RtlCopyMemory(6, &_v56, _v96 + 191290); } else { RtlCopyMemory(6, &_v56, _v96 + 191072); } RtlCopyMemory(6, &_v56 + 6, _v96 + 191284); MCU_Write_Memory(40, &_v56); RtlFillMemory(16, 0, &_v88); _v88 = _v88 & 0xf000 | 12; RtlFillMemory(2, 0, &_v72); _v72 = _v72 & 0xf0 | 1; _v72 = _v72 & 0xbf | ( *(_v96 + 191247) & 1) << 6; _v72 = _v72 & 0x7f | ( *(_v96 + 191248) & 1) << 7; _v71 = _v71 & 0xc0 | 12; _v74 = _v72 & 65535; _t92 = MCU_Write_Memory(16, &_v88); } L12: if(_t200 == 0) { return; } __stack_chk_fail(); return; } } LL_MakeUpMCUScanReqPDU() {// addr = 0x0044510E long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed int _v55; // _cfa_ffffffc9 signed short _v56; // _cfa_ffffffc8 signed int _v58; // _cfa_ffffffc6 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t74; // _t74 long long _t96; // _t96 _v80 = _t96; _v16 = *fs:0x28]; if(( *(_v80 + 191120) & 255) == 1) { _t74 = *(_v80 + 191121) & 255; if(_t74 != 0) { RtlCopyMemory(6, &_v40, _v80 + 191290); } else { RtlCopyMemory(6, &_v40, _v80 + 191072); } RtlFillMemory(6, 0, &_v40 + 6); MCU_Write_Memory(12, &_v40); RtlFillMemory(16, 0, &_v72); _v72 = _v72 & 0xf000 | 12; RtlFillMemory(2, 0, &_v56); _v56 = _v56 & 0xf0 | 3; _v56 = _v56 & 0xbf | ( *(_v80 + 191121) & 1) << 6; _v56 = _v56 & 0x7f; _v55 = _v55 & 0xc0 | 12; _v58 = _v56 & 65535; MCU_Write_Memory(16, &_v72); } if(_t74 != 0) { __stack_chk_fail(); return; } return; } LL_MakeUpMCUScanRspPDU() {// addr = 0x0044527B long long _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 signed int _v71; // _cfa_ffffffb9 signed short _v72; // _cfa_ffffffb8 signed int _v74; // _cfa_ffffffb6 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t109; // _t109 long long _t137; // _t137 _v96 = _t137; _v16 = *fs:0x28]; _t109 = _v96; __eflags = *(_t109 + 191247) & 255; if(( *(_t109 + 191247) & 255) != 0) { RtlCopyMemory(6, &_v56, _v96 + 191290); } else { RtlCopyMemory(6, &_v56, _v96 + 191072); } RtlCopyMemory( *(_v96 + 191124) & 0xff, &_v56 + 6, _v96 + 191125); RtlFillMemory(31 - ( *(_v96 + 191124) & 0xff), 0, &_v56 + 6 + _v96); MCU_Write_Memory(40, &_v56); RtlFillMemory(16, 0, &_v88); _v88 = _v88 & 0xf000 | ( *(_v96 + 191124) & 0xff) + 6 & 0xfff; RtlFillMemory(2, 0, &_v72); _v72 = _v72 & 0xf0 | 4; _v72 = _v72 & 0xbf | ( *(_v96 + 191247) & 1) << 6; _v72 = _v72 & 0x7f; _v71 = _v71 & 0xc0 | ( *(_v96 + 191124) & 255) + 6 & 0x3f; _v74 = _v72 & 65535; MCU_Write_Memory(16, &_v88); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LL_MakeUpMCUConnReqPDU() {// addr = 0x00445457 long long _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 signed int _v71; // _cfa_ffffffb9 signed short _v72; // _cfa_ffffffb8 unsigned int* _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed int _v90; // _cfa_ffffffa6 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 _unknown_ __rbp; // r59 signed int _t227; // _t227 long long _t302; // _t302 long long _t311; // _t311 _v112 = _t302; _v120 = _t311; _v16 = *fs:0x28]; _v88 = *((intOrPtr*)(_v120 + 72)); if(( *(_v88 + 45) & 255) != 0) { RtlCopyMemory(6, &_v56, _v112 + 191290); } else { RtlCopyMemory(6, &_v56, _v112 + 191072); } _t227 = *(_v88 + 44) & 255; if(_t227 != 0) { RtlFillMemory(6, 0, &_v56 + 6); } else { RtlCopyMemory(6, &_v56 + 6, _v88 + 47); } _v80 = &_v56 + 12; *_v80 = *(_v88 + 28); (_v80[0]) = *(_v88 + 28) >> 8; (_v80[0]) = *(_v88 + 28) >> 16; (_v80[0]) = *(_v88 + 28) >> 24; (_v80[1]) = *(_v88 + 20) & 255; (_v80[1]) = *(_v88 + 19) & 255; (_v80[1]) = *(_v88 + 18) & 255; (_v80[1]) = *(_v88 + 34) & 255; (_v80[2]) = *(_v88 + 32) & 65535; (_v80[2]) = ( *(_v88 + 32) & 65535) >> 8; (_v80[2]) = *(_v88 + 12) & 65535; (_v80[2]) = ( *(_v88 + 12) & 65535) >> 8; (_v80[3]) = *(_v88 + 16) & 65535; (_v80[3]) = ( *(_v88 + 16) & 65535) >> 8; (_v80[3]) = *(_v88 + 10) & 65535; (_v80[3]) = ( *(_v88 + 10) & 65535) >> 8; (_v80[5]) = *(_v88 + 25) & 255; (_v80[4]) = *(_v88 + 24) & 255; (_v80[4]) = *(_v88 + 23) & 255; (_v80[4]) = *(_v88 + 22) & 255; (_v80[4]) = *(_v88 + 21) & 255; (_v80[5]) = *(_v88 + 26) & 255; MCU_Write_Memory(36, &_v56); RtlFillMemory(16, 0, &_v104); _v104 = _v104 & 0xf000 | 34; RtlFillMemory(2, 0, &_v72); _v72 = _v72 & 0xf0 | 5; _v72 = _v72 & 0xbf | ( *(_v88 + 45) & 1) << 6; _v72 = _v72 & 0x7f | ( *(_v88 + 46) & 1) << 7; _v71 = _v71 & 0xc0 | _v104 & 0x3f; _v90 = _v72 & 65535; MCU_Write_Memory(16, &_v104); if(_t227 != 0) { __stack_chk_fail(); return; } return; } LL_MakeUpMCUEmptyPDU() {// addr = 0x0044578C signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 signed int _v26; // _cfa_ffffffe6 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t44; // _t44 _v48 = _t44; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 0xfc | 1; _v24 = _v24 & 0xfb; _v24 = _v24 & 0xf7; _v24 = _v24 & 0xef; _v23 = _v23 & 0xe0; RtlFillMemory(16, 0, &_v40); _v40 = _v40 & 0xf000; _v26 = _v24 & 65535; __rdx = &_v40; __ecx = 16; MCU_Write_Memory(16, &_v40); return; } LL_MakeUpMCUTestPDU() {// addr = 0x0044582C signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 signed int _v26; // _cfa_ffffffe6 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t35; // _t35 signed char _t42; // _t42 long long _t50; // _t50 _v48 = _t50; _v52 = _t42; _v56 = _t35; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 0xf0 | _v52 & 0xf; _v23 = _v23 & 0xc0 | _v56 & 0x3f; RtlFillMemory(16, 0, &_v40); _v40 = _v40 & 0xf000; _v26 = _v24 & 65535; __rdx = &_v40; MCU_Write_Memory(16, &_v40); return; } LL_UpdateChannelMap() {// addr = 0x004458D1 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 signed char _v13; // _cfa_fffffff3 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t85; // _t85 signed int _t99; // _t99 signed int _t111; // _t111 long long _t116; // _t116 long long _t118; // _t118 _v32 = _t116; _v40 = _t118; _v48 = _t111; _v12 = 0; _v11 = 0; _v10 = 1; _t99 = _v48; _v9 = *_t99 & 255; _v13 = 0; while(_v13 <= 4) { _t85 = *(_t99 + _v48) & 255; _t99 = _v13 & 255; *(_v40 + _t99 + 84) = _t85; _v13 = _v13 + 1; } _v13 = 0; while(_v13 <= 36) { if((_v10 & 255 & _v9 & 255) != 0) { *(_v40 + _t99 + 4) = _v13 & 255; _v11 = _v11 + 1; } if((_v13 & 7) != 7) { _v10 = _v10 << 1; } else { _v10 = 1; _v12 = _v12 + 1; _t99 = _t99 + _v48; _v9 = *_t99 & 255; } _v13 = _v13 + 1; } _v13 = 5; while(_v13 <= 9) { *(_v40 + _t99 + 84) = 0; _v13 = _v13 + 1; } *(_v40 + 95) = _v11 & 255; *(_v40 + 94) = *(_v40 + 94) & 0xbf; *(_v40 + 94) = *(_v40 + 94) & 255; *(_v40 + 94) = *(_v40 + 94) & 0x7f; *(_v40 + 94) = *(_v40 + 94) & 255 | 128; CH_WriteMcuChInfo(); return; } LL_UpdateTestChannelMap() {// addr = 0x00445A0A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed char _t41; // _t41 long long _t66; // _t66 long long _t68; // _t68 _v16 = _t66; _v24 = _t68; _v28 = _t41; *(_v24 + 4) = _v28 & 255; *((char*)(_v24 + 88)) = 31; *((char*)(_v24 + 87)) = 255; *((char*)(_v24 + 86)) = 255; *((char*)(_v24 + 85)) = 255; *((char*)(_v24 + 84)) = 255; *((char*)(_v24 + 95)) = 37; *(_v24 + 94) = *(_v24 + 94) & 0xbf; *(_v24 + 94) = *(_v24 + 94) & 255; *(_v24 + 94) = *(_v24 + 94) & 0x7f; *(_v24 + 94) = *(_v24 + 94) & 255 | 128; CH_WriteMcuChInfo(); return; } LLcp_SendConnectionUpdateReq( _unknown_ __eflags, // r9 intOrPtr _a8, // _cfa_8 _unknown_ _a16, // _cfa_10 signed short _a24 // _cfa_18 ) {// addr = 0x00445ABA long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed int _v55; // _cfa_ffffffc9 signed short _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed int _v74; // _cfa_ffffffb6 signed int _v75; // _cfa_ffffffb5 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 intOrPtr _v100; // _cfa_ffffff9c char _v104; // _cfa_ffffff98 signed char _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed char _t102; // _t102 char _t104; // _t104 long long _t144; // _t144 __eflags = __eflags; _v96 = _t144; r10d = r8d; r8d = _a8; _v100 = sil; _v104 = _t104; _v108 = _t102; _v112 = r10w; _v116 = r9w; _v120 = r8w; _v124 = __di; _v128 = _a24; _v16 = *fs:0x28]; _v64 = &_v40; RtlFillMemory(2, 0, &_v56); _v56 = _v56 & 255 | 3; _v55 = _v55 & 0xe0 | 12; *_v64 = 0; *(_v64 + 1) = _v108 & 255; *(_v64 + 2) = _v112 & 65535; *(_v64 + 3) = (_v112 & 65535) >> 8; *(_v64 + 4) = _v116 & 65535; *(_v64 + 5) = (_v116 & 65535) >> 8; *(_v64 + 6) = _v120 & 65535; *(_v64 + 7) = (_v120 & 65535) >> 8; *(_v64 + 8) = _v124 & 65535; *(_v64 + 9) = (_v124 & 65535) >> 8; *(_v64 + 10) = _v128 & 65535; *(_v64 + 11) = (_v128 & 65535) >> 8; RtlFillMemory(16, 0, &_v88); _v88 = _v88 & 0xf000 | _v55 & 0x1f; _v75 = _v75 & 0xf | 32; _v74 = _v56 & 65535; r9d = 12; r8 = &_v40; PDMA_Transmit_LE_TxRing(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_SendChannelMapReq( _unknown_ __eflags // r9 ) {// addr = 0x00445C6E long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 signed int _v39; // _cfa_ffffffd9 signed short _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v58; // _cfa_ffffffc6 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 char* _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 char _t50; // _t50 long long _t74; // _t74 long long _t78; // _t78 __eflags = __eflags; _v80 = _t78; _v96 = _t74; _v104 = r8; _v84 = sil; _v88 = _t50; _v16 = *fs:0x28]; _v48 = &_v24; RtlFillMemory(2, 0, &_v40); _v40 = _v40 & 255 | 3; _v39 = _v39 & 0xe0 | 8; *_v48 = 1; RtlCopyMemory(5, _v48 + 1, _v96); RtlCopyMemory(2, _v48 + 6, _v104); RtlFillMemory(16, 0, &_v72); _v72 = _v72 & 0xf000 | _v39 & 0x1f; _v58 = _v40 & 65535; r9d = 8; r8 = &_v24; PDMA_Transmit_LE_TxRing(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_SendTerminateInd() {// addr = 0x00445D8D signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 char _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v58; // _cfa_ffffffc6 signed int _v59; // _cfa_ffffffc5 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 char _t48; // _t48 _unknown_ _t67; // _t67 long long _t69; // _t69 _v80 = _t69; _v84 = sil; _v88 = _t48; _v92 = __ecx; _v48 = ?_? ( &_v40); DebugPrint(0, &_v40, _t67, __rdx, _t69, __rsi); RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 255 | 3; _v23 = _v23 & 0xe0 | 2; *_v48 = 2; *(_v48 + 1) = _v92 & 255; RtlFillMemory(16, 0, &_v72); _v72 = _v72 & 0xf000 | _v23 & 0x1f; _v59 = _v59 & 0xf | 16; _v58 = _v24 & 65535; r9d = 2; r8 = &_v40; PDMA_Transmit_LE_TxRing(); return; } LLcp_SendEncReq( _unknown_ __eflags, // r9 long long _a8 // _cfa_8 ) {// addr = 0x00445E7D long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed int _v55; // _cfa_ffffffc9 signed short _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed int _v74; // _cfa_ffffffb6 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 intOrPtr _v100; // _cfa_ffffff9c char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 char* _v120; // _cfa_ffffff88 intOrPtr _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 _unknown_ __rbp; // r59 char _t61; // _t61 long long _t92; // _t92 long long _t98; // _t98 __eflags = __eflags; _v96 = _t98; _v112 = _t92; _v120 = r8; _v128 = r9; _v100 = sil; _v104 = _t61; _v136 = _a8; _v16 = *fs:0x28]; _v64 = &_v40; RtlFillMemory(2, 0, &_v56); _v56 = _v56 & 255 | 3; _v55 = _v55 & 0xe0 | 23; *_v64 = 3; RtlCopyMemory(8, _v64 + 1, _v112); RtlCopyMemory(2, _v64 + 9, _v120); RtlCopyMemory(8, _v64 + 11, _v128); RtlCopyMemory(4, _v64 + 19, _v136); RtlFillMemory(16, 0, &_v88); _v88 = _v88 & 0xf000 | _v55 & 0x1f; _v74 = _v56 & 65535; r9d = 23; r8 = &_v40; PDMA_Transmit_LE_TxRing(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_SendEncRsp( _unknown_ __eflags // r9 ) {// addr = 0x00445FE0 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed int _v55; // _cfa_ffffffc9 signed short _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed int _v74; // _cfa_ffffffb6 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 intOrPtr _v100; // _cfa_ffffff9c char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 char* _v120; // _cfa_ffffff88 _unknown_ __rbp; // r59 char _t50; // _t50 long long _t74; // _t74 long long _t78; // _t78 __eflags = __eflags; _v96 = _t78; _v112 = _t74; _v120 = r8; _v100 = sil; _v104 = _t50; _v16 = *fs:0x28]; _v64 = &_v40; RtlFillMemory(2, 0, &_v56); _v56 = _v56 & 255 | 3; _v55 = _v55 & 0xe0 | 13; *_v64 = 4; RtlCopyMemory(8, _v64 + 1, _v112); RtlCopyMemory(4, _v64 + 9, _v120); RtlFillMemory(16, 0, &_v88); _v88 = _v88 & 0xf000 | _v55 & 0x1f; _v74 = _v56 & 65535; r9d = 13; r8 = &_v40; PDMA_Transmit_LE_TxRing(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_SendStartEncReq() {// addr = 0x004460FF char _v9; // _cfa_fffffff7 signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 signed int _v42; // _cfa_ffffffd6 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc char _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t37; // _t37 _unknown_ _t43; // _t43 long long _t53; // _t53 _v64 = _t53; _v68 = __cl; _v72 = _t37; _v32 = &_v9; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 255 | 3; _v23 = _v23 & 0xe0 | 1; *_v32 = 5; RtlFillMemory(16, 0, &_v56); _v56 = _v56 & 0xf000 | _v23 & 0x1f; _v42 = _v24 & 65535; r9d = 1; r8 = &_v9; PDMA_Transmit_LE_TxRing(); return; } LLcp_SendStartEncRsp() {// addr = 0x004461BC char _v9; // _cfa_fffffff7 signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 signed int _v42; // _cfa_ffffffd6 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc char _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t37; // _t37 _unknown_ _t43; // _t43 long long _t53; // _t53 _v64 = _t53; _v68 = __cl; _v72 = _t37; _v32 = &_v9; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 255 | 3; _v23 = _v23 & 0xe0 | 1; *_v32 = 6; RtlFillMemory(16, 0, &_v56); _v56 = _v56 & 0xf000 | _v23 & 0x1f; _v42 = _v24 & 65535; r9d = 1; r8 = &_v9; PDMA_Transmit_LE_TxRing(); return; } LLcp_SendUnknownRsp() {// addr = 0x00446279 signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 char _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v58; // _cfa_ffffffc6 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 char _t41; // _t41 long long _t58; // _t58 _v80 = _t58; _v84 = sil; _v88 = _t41; _v92 = __ecx; _v48 = &_v40; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 255 | 3; _v23 = _v23 & 0xe0 | 2; *_v48 = 7; *(_v48 + 1) = _v92 & 255; RtlFillMemory(16, 0, &_v72); _v72 = _v72 & 0xf000 | _v23 & 0x1f; _v58 = _v24 & 65535; r9d = 2; r8 = &_v40; PDMA_Transmit_LE_TxRing(); return; } LLcp_SendFeatureReq( _unknown_ __eflags // r9 ) {// addr = 0x00446343 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed int _v55; // _cfa_ffffffc9 signed short _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed int _v74; // _cfa_ffffffb6 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 intOrPtr _v100; // _cfa_ffffff9c char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 char _t45; // _t45 long long _t66; // _t66 long long _t69; // _t69 __eflags = __eflags; _v96 = _t69; _v112 = _t66; _v100 = sil; _v104 = _t45; _v16 = *fs:0x28]; _v64 = &_v40; RtlFillMemory(2, 0, &_v56); _v56 = _v56 & 255 | 3; _v55 = _v55 & 0xe0 | 9; *_v64 = 8; __rsi = _v112; RtlCopyMemory(8, _v64 + 1, _v112); RtlFillMemory(16, 0, &_v88); _v88 = _v88 & 0xf000 | _v55 & 0x1f; _v74 = _v56 & 65535; r9d = 9; r8 = &_v40; PDMA_Transmit_LE_TxRing(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_SendFeatureRsp( _unknown_ __eflags // r9 ) {// addr = 0x00446442 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed int _v55; // _cfa_ffffffc9 signed short _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed int _v74; // _cfa_ffffffb6 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 intOrPtr _v100; // _cfa_ffffff9c char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 char _t45; // _t45 long long _t66; // _t66 long long _t69; // _t69 __eflags = __eflags; _v96 = _t69; _v112 = _t66; _v100 = sil; _v104 = _t45; _v16 = *fs:0x28]; _v64 = &_v40; RtlFillMemory(2, 0, &_v56); _v56 = _v56 & 255 | 3; _v55 = _v55 & 0xe0 | 9; *_v64 = 9; __rsi = _v112; RtlCopyMemory(8, _v64 + 1, _v112); RtlFillMemory(16, 0, &_v88); _v88 = _v88 & 0xf000 | _v55 & 0x1f; _v74 = _v56 & 65535; r9d = 9; r8 = &_v40; PDMA_Transmit_LE_TxRing(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_SendPauseEncReq() {// addr = 0x00446541 char _v9; // _cfa_fffffff7 signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 signed int _v42; // _cfa_ffffffd6 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc char _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t37; // _t37 _unknown_ _t43; // _t43 long long _t53; // _t53 _v64 = _t53; _v68 = __cl; _v72 = _t37; _v32 = &_v9; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 255 | 3; _v23 = _v23 & 0xe0 | 1; *_v32 = 10; RtlFillMemory(16, 0, &_v56); _v56 = _v56 & 0xf000 | _v23 & 0x1f; _v42 = _v24 & 65535; r9d = 1; r8 = &_v9; PDMA_Transmit_LE_TxRing(); return; } LLcp_SendPauseEncRsp() {// addr = 0x004465FE char _v9; // _cfa_fffffff7 signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 signed int _v42; // _cfa_ffffffd6 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc char _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t37; // _t37 _unknown_ _t43; // _t43 long long _t53; // _t53 _v64 = _t53; _v68 = __cl; _v72 = _t37; _v32 = &_v9; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 255 | 3; _v23 = _v23 & 0xe0 | 1; *_v32 = 11; RtlFillMemory(16, 0, &_v56); _v56 = _v56 & 0xf000 | _v23 & 0x1f; _v42 = _v24 & 65535; r9d = 1; r8 = &_v9; PDMA_Transmit_LE_TxRing(); return; } LLcp_SendVersionId( _unknown_ __eflags // r9 ) {// addr = 0x004466BB long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 signed int _v39; // _cfa_ffffffd9 signed short _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v58; // _cfa_ffffffc6 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 char _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 char _t66; // _t66 _unknown_ _t77; // _t77 long long _t100; // _t100 __eflags = __eflags; _v80 = _t100; _v84 = __cl; _v88 = _t66; _v16 = *fs:0x28]; _v48 = &_v24; RtlFillMemory(2, 0, &_v40); _v40 = _v40 & 255 | 3; _v39 = _v39 & 0xe0 | 6; *_v48 = 12; *(_v48 + 1) = *(_v80 + 191094) & 255; *(_v48 + 2) = *(_v80 + 191090) & 65535; *(_v48 + 3) = ( *(_v80 + 191090) & 65535) >> 8; *(_v48 + 4) = *(_v80 + 191092) & 65535; *(_v48 + 5) = ( *(_v80 + 191092) & 65535) >> 8; RtlFillMemory(16, 0, &_v72); _v72 = _v72 & 0xf000 | _v39 & 0x1f; _v58 = _v40 & 65535; r9d = 6; r8 = &_v24; PDMA_Transmit_LE_TxRing(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLcp_SendRejectInd() {// addr = 0x00446805 signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 char _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v58; // _cfa_ffffffc6 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 char _t41; // _t41 long long _t58; // _t58 _v80 = _t58; _v84 = sil; _v88 = _t41; _v92 = __ecx; _v48 = &_v40; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 255 | 3; _v23 = _v23 & 0xe0 | 2; *_v48 = 13; *(_v48 + 1) = _v92 & 255; RtlFillMemory(16, 0, &_v72); _v72 = _v72 & 0xf000 | _v23 & 0x1f; _v58 = _v24 & 65535; r9d = 2; r8 = &_v40; PDMA_Transmit_LE_TxRing(); return; } LLcp_SendDummyData() {// addr = 0x004468CF char _v9; // _cfa_fffffff7 signed int _v23; // _cfa_ffffffe9 signed short _v24; // _cfa_ffffffe8 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t40; // _t40 _unknown_ _t46; // _t46 long long _t54; // _t54 _v48 = _t54; _v52 = __cl; _v56 = _t40; _v9 = 255; RtlFillMemory(2, 0, &_v24); _v24 = _v24 & 0xfc | 2; _v23 = _v23 & 0xe0 | 1; RtlFillMemory(16, 0, &_v40); _v40 = _v40 & 0xf000 | _v23 & 0x1f; _v27 = _v27 & 0xf; _v26 = _v24 & 65535; r9d = 1; r8 = &_v9; PDMA_Transmit_LE_TxRing(); return; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00446990 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } LLscan_LCCmdScanCB() {// addr = 0x004469CF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t10; // _t10 _unknown_ _t14; // _t14 _unknown_ _t16; // _t16 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _v40 = __rcx; _v28 = _t10; DebugPrint(0, _t14, __rcx, _t16, _t18, __rsi); LLscan_StateHandler(); return; } ConvertPDUAdvTypeToHCIAdvType( char __edi // r4 ) {// addr = 0x00446A18 signed char _v9; // _cfa_fffffff7 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edi = __edi; _v28 = __edi; if(_v28 != 0) { if(_v28 != 1) { if(_v28 != 6) { if(_v28 != 2) { if(_v28 != 4) { _v9 = 255; } else { _v9 = 4; } } else { _v9 = 3; } } else { _v9 = 2; } } else { _v9 = 1; } } else { _v9 = 0; } return _v9 & 255; } LLscan_ReceiveCB() {// addr = 0x00446A67 long long _v32; // _cfa_ffffffe0 char _v168; // _cfa_ffffff58 signed int _v169; // _cfa_ffffff57 signed int _v170; // _cfa_ffffff56 signed char _v171; // _cfa_ffffff55 signed char _v172; // _cfa_ffffff54 signed char _v173; // _cfa_ffffff53 signed char _v174; // _cfa_ffffff52 signed int _v183; // _cfa_ffffff49 signed int _v184; // _cfa_ffffff48 long long _v192; // _cfa_ffffff40 signed long long _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 char _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 long long _v248; // _cfa_ffffff08 signed long long _v256; // _cfa_ffffff00 long long _v264; // _cfa_fffffef8 intOrPtr _v272; // _cfa_fffffef0 signed char* _v280; // _cfa_fffffee8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t167; // _t167 signed int _t186; // _t186 signed long long _t227; // _t227 signed long long _t235; // _t235 signed long long _t236; // _t236 signed long long _t242; // _t242 long long _t244; // _t244 signed int _t249; // _t249 long long _t260; // _t260 signed long long _t270; // _t270 signed int _t286; // _t286 long long _t293; // _t293 _v240 = _t286; _v248 = _t293; _v256 = _t270; _v264 = _t260; _v272 = r8; _v280 = r9; _v32 = *fs:0x28]; _v174 = 0; _v173 = 0; _v171 = 0; _v208 = ?_? ( &_v232); DebugPrint(0, &_v232, _t260, _t270, _t286, _t293); if(_v240 == 0 || _v248 == 0) { L3: *_v280 = 1; goto L40; } else { _t227 = _v256; if(_t227 != 0) { _v200 = _v256; if(( *(_v200 + 3) & 1) == 0) { if(( *(_v200 + 3) & 2) == 0) { L39: *_v280 = 1; goto L40; } _t235 = _v200; _v184 = *(_t235 + 14) & 65535; if((_v184 & 0xf) > 6) { L36: goto L39; } _t236 = _t270 << _t235; if(_t236 != 0) { _v192 = _v264; if( *((intOrPtr*)(_v240 + 191456)) == 0 || (_v183 & 0x3f) <= 5) { L34: _v174 = 1; goto L39; } else { if(( *(_v240 + 191123) & 255) == 0) { L24: if(_v173 == 0) { if((_v184 & 0xf) != 1) { _v170 = (_v183 & 0x3f) - 6; } else { _v170 = 0; } _t242 = *(pRadioFunc + 40); if(_t242 == 0) { _v169 = 201; } else { _t242 = _v200; *( *(pRadioFunc + 40))(); _v169 = *(_t242 + 12) & 255; } *(__rbp + _t242 - 160) = 2; _v171 = _v171 + 1; *(__rbp + _t242 - 160) = 1; _v171 = _v171 + 1; _t167 = _v184 & 0xf; ConvertPDUAdvTypeToHCIAdvType(_t167); *(__rbp + (_v171 & 255) - 160) = _t167; _v171 = _v171 + 1; *(__rbp + (_v171 & 255) - 160) = (_v184 & 255) >> 6 & 1; _v171 = _v171 + 1; _t244 = _v192; _t294 = _t244; RtlCopyMemory(6, &_v168 + (_v171 & 255), _t244); _v171 = _v171 + 6; *(__rbp + _t244 - 160) = _v170 & 255; _v171 = _v171 + 1; if(_v170 != 0) { _t294 = _v192 + 6; RtlCopyMemory(_v170 & 255, &_v168 + _v192, _v192 + 6); _v171 = _v171 + (_v170 & 255); } *(__rbp + _t244 - 160) = _v169 & 255; _v171 = _v171 + 1; write_du(_v171 & 255, &_v168, _v208, _t294); EG_Generate_LE_Event(); } goto L34; } else { _v172 = 0; while(1) { _t249 = _v240; if(( *(_t249 + 191385) & 255) <= _v172) { break; } _t186 = (_v184 & 255) >> 6 & 1; if(( *(_v240 + _t249 + 191386) & 255) != _t186) { L19: _v172 = _v172 + 1; continue; } RtlCompareMemory(6, _v240 + 191394 + (_v240 << 3), _v192); if(_t186 != 0) { goto L19; } _v173 = 1; break; } if(_v173 == 0 && ( *(_v240 + 191385) & 255) <= 7) { *(_v240 + ( *(_v240 + 191385) & 0xff) + 191386) = (_v184 & 255) >> 6 & 1; RtlCopyMemory(6, _v240 + 191394 + (_v240 << 3), _v192); *(_v240 + 191385) = _v240 + 1; } goto L24; } } } if(_t236 != 0) { goto L39; } if(_t236 != 0) { goto L39; } else { goto L36; } } else { *_v280 = 1; L40: if(_t227 == 0) { return; } __stack_chk_fail(); return; } } goto L3; } } LLscan_LCCmdScanCancelCB() {// addr = 0x00446F8A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t10; // _t10 _unknown_ _t14; // _t14 _unknown_ _t16; // _t16 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _v40 = __rcx; _v28 = _t10; DebugPrint(0, _t14, __rcx, _t16, _t18, __rsi); LLscan_StateHandler(); return; } LLscan_StateHandler() {// addr = 0x00446FD3 signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 short _v14; // _cfa_fffffff2 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed char _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 char _v72; // _cfa_ffffffb8 signed char _v80; // _cfa_ffffffb0 signed char _v84; // _cfa_ffffffac signed char _v96; // _cfa_ffffffa0 signed int _v120; // _cfa_ffffff88 signed char _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed int _t146; // _t146 signed char _t171; // _t171 signed char _t177; // _t177 signed char _t238; // _t238 signed char _t269; // _t269 signed char _t290; // _t290 signed char _t304; // _t304 signed char _t311; // _t311 _v80 = _t304; _v96 = _t299; _v84 = _t238; _v32 = 12; _v11 = 0; _v48 = &_v72; _v28 = *(_v80 + 191380); _v20 = _v28; _t264 = _v80; _v24 = *(_v80 + 191376); DebugPrint(0, _v80, __rcx, _t299, _t304, _t311); _t146 = _v84 & 255; if(_t146 == 2) { DebugPrint(0, _t264, __rcx, _t299, _t304, _t311); if(_v20 != 0) { _v11 = 1; } else { if((_v24 & 2) != 0) { _t269 = _v80; _t270 = *((intOrPtr*)(_t269 + 191456)); if( *((intOrPtr*)(_t269 + 191456)) == 0) { DebugPrint(0, _t270, __rcx, _t299, _t304, _t311); _v11 = 1; } else { _v40 = *(_v80 + 191456); __rcx = _v40; _t311 = __rcx; _t304 = _v80; _v10 = LCCMD_LEScanCancelRequest(); if(_v10 == 0) { _v32 = 31; _v11 = 1; } else { _v28 = _v28 | 16; _v32 = 0; } } } else { DebugPrint(0, _t264, __rcx, _t299, _t304, _t311); _v11 = 1; } } L37: *(_v80 + 191380) = _v28; _t266 = _v80; *(_v80 + 191376) = _v24; if(_v32 != 0) { _v120 = _v11 & 255; _v128 = _v32; *__rsp = _v28; r9d = _v20; r8d = _v24; DebugPrint(0, _t266, __rcx, _t299, _t304, _t311); if(_v11 == 1) { _v14 = 8204; write_du(1, &_v32, _v48, _t311); __rcx = _v80 + 190168; _t299 = &_v72; _t266 = ?_? ( &_v14); _t311 = &_v14; _t304 = __rcx; EG_Generate_Command_Complete_Event(); } } else { *__rsp = _v28; r9d = _v20; r8d = _v24; DebugPrint(0, _t266, __rcx, _t299, _t304, _t311); } DebugPrint(0, _t266, __rcx, _t299, _t304, _t311); return; } if(_t146 > 2) { if(_t146 == 3) { DebugPrint(0, _t264, __rcx, _t299, _t304, _t311); if((_v20 & 8) != 0) { _v14 = 8204; if(( *_v96 & 255) != 0) { _t171 = 3; } else { _t171 = 0; } _v32 = _t171; HCI_Fill_Data_Unit(1, &_v32, &_v72, _t311); __rcx = _v80 + 190168; _t299 = &_v72; _t311 = &_v14; _t304 = __rcx; EG_Generate_Command_Complete_Event(); _v28 = _v28 & 247; } goto L37; } if(_t146 == 4) { DebugPrint(0, _t264, __rcx, _t299, _t304, _t311); if((_v20 & 16) != 0) { _v14 = 8204; if(( *_v96 & 255) != 0) { _t177 = 3; } else { _t177 = 0; } _v32 = _t177; HCI_Fill_Data_Unit(1, &_v32, &_v72, _t311); __rcx = _v80 + 190168; EG_Generate_Command_Complete_Event(); _v40 = *(_v80 + 191456); _t299 = _v40; _t311 = _v40; LINK_DelLEScan(); _v40 = 0; *(_v80 + 191456) = 0; _v28 = _v28 & 239; _v24 = _v24 & 253; _t304 = _v80; _LMbw_ReAlloc_Driven_By_Master_Connection(); } } else { L33: _v32 = 31; } goto L37; } if(_t146 == 1) { DebugPrint(0, _t264, __rcx, _t299, _t304, _t311); if(_v20 != 0) { _v11 = 1; L34: goto L37; } if((_v24 & 2) == 0) { LL_MakeUpMCUScanReqPDU(); _t290 = _v80; _t304 = _t290; LINK_NewLEScan(); _v40 = _t290; if(_v40 != 0) { *(_v80 + 191385) = 0; _t299 = _v40; *(_v80 + 191456) = _v40; _t311 = _v40; r8d = LLscan_LCCmdScanCB; _t304 = _v80; _v10 = LCCMD_LEScanRequest(); if(_v10 != 0) { _v9 = *_v96 & 255; *(_v80 + 191123) = _v9 & 255; _v28 = _v28 | 8; _v24 = _v24 | 2; _t304 = _v80; _LMbw_ReAlloc_Driven_By_Master_Connection(); _v32 = 0; } } goto L34; } else { DebugPrint(0, _t264, __rcx, _t299, _t304, _t311); _v11 = 1; goto L37; } } else { goto L33; } } LL_SetScanEnable() {// addr = 0x004474F5 signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t13; // _t13 long long _t21; // _t21 _v32 = _t21; _v40 = __rsi; _t13 = *_v40 & 255; _v9 = _t13; if(_v9 == 0) { LLscan_StateHandler(); _v16 = _t13; } else { LLscan_StateHandler(); _v16 = _t13; } return _v16; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00447554 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00447593 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LLTest_LCCmdRxTestCB() {// addr = 0x004475C5 short _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 char _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 long long _t22; // _t22 long long _t25; // _t25 long long _t28; // _t28 _v64 = _t25; _v72 = _t28; _v88 = _t22; _v76 = __al; _v10 = 8221; _v24 = &_v56; if(_v72 != 0) { _v16 = 0; write_end_du(1, _v24, &_v16); EG_Generate_Command_Complete_Event(); return; } return; } LLTest_LCCmdTxTestCB() {// addr = 0x00447632 short _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 char _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 long long _t22; // _t22 long long _t25; // _t25 long long _t28; // _t28 _v64 = _t25; _v72 = _t28; _v88 = _t22; _v76 = __al; _v10 = 8222; _v24 = &_v56; if(_v72 != 0) { _v16 = 0; write_end_du(1, _v24, &_v16); EG_Generate_Command_Complete_Event(); return; } return; } LLTest_LCCmdTestEndCB() {// addr = 0x0044769F short _v10; // _cfa_fffffff6 char _v12; // _cfa_fffffff4 unsigned int _v16; // _cfa_fffffff0 unsigned int _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 long long _v120; // _cfa_ffffff88 _unknown_ __rbp; // r59 signed int _t41; // _t41 signed int _t52; // _t52 long long _t64; // _t64 long long _t72; // _t72 long long _t79; // _t79 signed int _t85; // _t85 _v96 = _t79; _v104 = _t85; _t41 = _t52; _v120 = _t72; _v108 = _t41; _v12 = 0; _v10 = 8223; _v20 = 0; _v32 = &_v88; if(_v104 != 0) { _v16 = 0; if((_t41 & 1) == 0) { _v16 = 4294967295; _v20 = _v16; } else { RT_PCI_IO_READ32(); _v20 = _v16; } _v12 = _v20 >> 8 & 255 | _v20 << 8; LINK_DelLEACL(); _v104 = 0; _v24 = 0; _t64 = _v32; __ecx = 1; write_du(1, &_v24, _t64, _v32 + 24); _v32 = _t64; write_end_du(2, _v32, &_v12); EG_Generate_Command_Complete_Event(); return; } return; } ConvertRFChannelToChannelIdx( signed char __edi // r4 ) {// addr = 0x004477CA signed char _v9; // _cfa_fffffff7 signed int _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edi = __edi; _v28 = __edi; _v9 = 0; if(_v28 != 0) { if(_v28 == 0 || _v28 > 11) { if(_v28 != 12) { if(_v28 <= 12 || _v28 > 38) { if(_v28 != 39) { _v9 = 39; } else { _v9 = 39; } } else { _v9 = (_v28 & 255) - 2; } } else { _v9 = 38; } } else { _v9 = (_v28 & 255) - 1; } } else { _v9 = 37; } return _v9 & 255; } LL_ReceiverTest() {// addr = 0x00447835 char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 char _v72; // _cfa_ffffffb8 signed char _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac _unknown_ __rbp; // r59 signed char _t52; // _t52 signed char _t58; // _t58 signed char _t72; // _t72 _v80 = _t72; _v84 = _t52; _v10 = 31; _v12 = 8221; _v40 = 0; _v32 = 0; _v24 = &_v72; __edi = _v84 & 255; _v9 = ConvertRFChannelToChannelIdx(_v84 & 255); _t58 = _v80; CH_NewAdaptedChannelInfo(_t58); _v32 = _t58; if(_v32 != 0) { LINK_NewLERxTest(); _v40 = _v80; if(_v40 != 0) { LL_UpdateTestChannelMap(); _v10 = 0; } } if((_v10 & 255) != 0) { if(_v32 != 0) { _v32 = 0; } if(_v40 != 0) { LINK_DelLEACL(); _v40 = 0; } _v10 = 31; write_end_du(1, _v24, &_v10); EG_Generate_Command_Complete_Event(); return; } else { r8d = LLTest_LCCmdRxTestCB; LCCMD_LESetTestModeRequest(); return; } } LL_TransmitterTest() {// addr = 0x0044796D char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 char _v72; // _cfa_ffffffb8 signed char _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 char _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 char _t51; // _t51 char _t55; // _t55 signed char _t67; // _t67 signed char _t82; // _t82 _v80 = _t82; _v84 = sil; _v88 = _t55; _v92 = _t51; _v10 = 31; _v12 = 8222; _v40 = 0; _v32 = 0; _v24 = &_v72; __edi = _v84 & 255; _v9 = ConvertRFChannelToChannelIdx(_v84 & 255); _t67 = _v80; CH_NewAdaptedChannelInfo(_t67); _v32 = _t67; if(_v32 != 0) { LINK_NewLETxTest(); _v40 = _v80; if(_v40 != 0) { LL_MakeUpMCUTestPDU(); LL_UpdateTestChannelMap(); _v10 = 0; } } if((_v10 & 255) != 0) { if(_v32 != 0) { _v32 = 0; } if(_v40 != 0) { LINK_DelLEACL(); _v40 = 0; } _v10 = 31; write_end_du(1, _v24, &_v10); EG_Generate_Command_Complete_Event(); return; } else { r8d = LLTest_LCCmdTxTestCB; LCCMD_LESetTestModeRequest(); return; } } LL_TestEnd() {// addr = 0x00447AC2 char _v9; // _cfa_fffffff7 char _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t34; // _t34 long long _t45; // _t45 _v96 = _t45; _v14 = 8223; _v12 = 0; _v32 = 0; _v24 = &_v88; if(( *(_v96 + 38216) & 255) == 0) { _v9 = 0; _t34 = _v24; write_du(1, &_v9, _t34, _v24 + 24); _v24 = _t34; write_end_du(2, _v24, &_v12); EG_Generate_Command_Complete_Event(); return; } _v32 = _v96 + 38216; r8d = LLTest_LCCmdTestEndCB; LCCMD_LESetTestModeRequest(); return; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00447B88 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00447BDE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00447C1D _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00447C4F signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LMutils_Set_Uint32( unsigned int __esi, // r5 long long __rdi // r57 ) {// addr = 0x00447D90 _unknown_ _v16; // _cfa_fffffff0 unsigned int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *_v16 = __dl; *(_v16 + 1) = _v20 >> 8; *(_v16 + 2) = _v20 >> 16; *(_v16 + 3) = _v20 >> 24; return; } LMutils_Get_Uint32( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00447DD8 long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v24 = __dl; *(_v24 + 1) = *(_v16 + 1) & 255; *(_v24 + 2) = *(_v16 + 2) & 255; *(_v24 + 3) = *(_v16 + 3) & 255; return; } _LMafh_Set_AFH_Instant() {// addr = 0x00447E29 intOrPtr _v12; // _cfa_fffffff4 unsigned int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 unsigned int _t28; // _t28 long long _t33; // _t33 _v48 = _t33; _v52 = _t28; _v32 = _v48 + 67992; _v20 = _v52; _v16 = _v20; _v12 = 4; _v24 = _v12 + _v16; _v52 = _v24 & 0xfc; LMutils_Set_Uint32(_v52 >> 1, _v32); return; } _LMafh_Get_AFH_Instant( _unknown_ __eax // r0 ) {// addr = 0x00447E89 _unknown_ _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t11; // _t11 _v32 = _t11; _v16 = _v32 + 67992; return casting_uint32(_v16) + _t6; } LMafh_Build_Channel_Classification( _unknown_ __rax // r53 ) {// addr = 0x00447EB3 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 signed char _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec signed int* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int* _t67; // _t67 signed char* _t68; // _t68 signed char* _t69; // _t69 _v48 = __rdi; _v56 = __rsi; _v64 = __rdx; _v12 = 0; _t67 = _v48 + 68008; _v32 = _t67; _v20 = 0; while(_v20 <= 9) { _v11 = 0; _v10 = 3; _t68 = _t67 + _v64; _t69 = &(_t68[_v32]); _v9 = *_t69 & 255 & *_t68 & 255; _v16 = 0; while(_v16 <= 3) { if((_v10 & 255 & _v9 & 255) == 0) { _v11 = _v11 | _v10 & 255; } _v10 = _v10 << 2; _v16 = _v16 + 1; } if(_v20 == 9) { _t69 = _v64 + 9; if(( *_t69 & 0x40) == 0) { _v11 = _v11 | 192; } } _t67 = &(_t69[_v56]); if(( *_t67 & 255) != _v11) { DebugPrint(0, _t67, __rcx, __rdx, __rdi, __rsi); _t67 = _t67 + _v56; *_t67 = _v11 & 255; _v12 = 1; } _v20 = _v20 + 1; } return _v12 & 255; } LMafh_Initialise_Classification( long long __rdi // r57 ) {// addr = 0x00447FA6 long long _v16; // _cfa_fffffff0 char _v31; // _cfa_ffffffe1 char _v32; // _cfa_ffffffe0 char _v33; // _cfa_ffffffdf char _v34; // _cfa_ffffffde char _v35; // _cfa_ffffffdd char _v36; // _cfa_ffffffdc char _v37; // _cfa_ffffffdb char _v38; // _cfa_ffffffda char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 signed int* _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int* _t37; // _t37 _unknown_ _t42; // _t42 signed int* _t47; // _t47 __rdi = __rdi; _v80 = __rdi; _v16 = *fs:0x28]; _v40 = 255; _v39 = 255; _v38 = 255; _v37 = 255; _v36 = 255; _v35 = 255; _v34 = 255; _v33 = 255; _v32 = 255; _v31 = 127; _v64 = _v80 + 67980; _t47 = _v80 + 69379; _v56 = _t47; _v44 = 0; while(_v44 <= 11) { _t37 = _t47; _t47 = _t47 + _v64; *_t47 = 85; _v44 = _v44 + 1; } _v44 = 0; while(1) { _t42 = _v44 - 9; if(_t42 > 0) { break; } _t37 = _t47; _t47 = _t47 + _v56; *_t47 = *(__rbp + _v44 - 32) & 255; _v44 = _v44 + 1; } *_v64 = 255; *((char*)(_v64 + 1)) = 17; if(_t42 != 0) { __stack_chk_fail(); return _t37; } return _t37; } LMPafh_Request_Classification_Reporting() {// addr = 0x00448075 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 long long _t28; // _t28 _v16 = _t28; _v24 = __rsi; _v28 = __edx; if(( *(_v24 + 44) & 0x10) == 0 || _v28 != 1) { return; } else { r8d = &_LMafhMasterLMPChannelClassificationReqPDU; LM_Encode_LMP_PDU_Fully_Encoded(_v16 + 60216); return; } } LMafh_Count_1_Bits( signed char* __rax, // r53 long long __rdi // r57 ) {// addr = 0x004480E2 signed int _v17; // _cfa_ffffffef signed char _v18; // _cfa_ffffffee signed char _v19; // _cfa_ffffffed long long _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 __rdi = __rdi; __rax = __rax; _v40 = __rdi; _v18 = 0; _v19 = 0; while(_v19 <= 78) { __rax = &(__rax[_v40]); _v17 = *__rax & 255; if(((_v17 & 255) >> __cl & 1) != 0) { _v18 = _v18 + 1; } _v19 = _v19 + 1; } return _v18 & 255; } LMafh_Activate_AFH( _unknown_ __rax // r53 ) {// addr = 0x00448138 long long _v32; // _cfa_ffffffe0 char _v47; // _cfa_ffffffd1 char _v48; // _cfa_ffffffd0 char _v49; // _cfa_ffffffcf char _v50; // _cfa_ffffffce char _v51; // _cfa_ffffffcd char _v52; // _cfa_ffffffcc char _v53; // _cfa_ffffffcb char _v54; // _cfa_ffffffca char _v55; // _cfa_ffffffc9 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 signed int _v74; // _cfa_ffffffb6 intOrPtr _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 void _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c intOrPtr _v104; // _cfa_ffffff98 signed char* _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 signed int* _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 _unknown_ _v144; // _cfa_ffffff70 signed char* _v152; // _cfa_ffffff68 signed char* _v160; // _cfa_ffffff60 signed char* _v168; // _cfa_ffffff58 long long _v176; // _cfa_ffffff50 long long _v184; // _cfa_ffffff48 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t134; // _t134 signed int _t166; // _t166 signed int _t213; // _t213 long long _t242; // _t242 signed int* _t244; // _t244 intOrPtr _t251; // _t251 intOrPtr _t252; // _t252 signed char* _t261; // _t261 _unknown_ _t263; // _t263 _unknown_ _t268; // _t268 long long _t276; // _t276 long long _t288; // _t288 _v176 = _t276; _v184 = _t288; _v32 = *fs:0x28]; _v56 = 255; _v55 = 255; _v54 = 255; _v53 = 255; _v52 = 255; _v51 = 255; _v50 = 255; _v49 = 255; _v48 = 255; _v47 = 127; _v168 = _v176 + 69376; _v160 = _v176 + 69377; _v152 = _v176 + 69378; _v144 = _v176 + 67969; _v136 = _v176 + 67992; _v128 = _v176 + 67996; _v120 = _v176 + 67997; _v112 = _v176 + 69295; if(( *(_v176 + 191037) & 8) == 0) { L20: if(_t213 == 0) { return; } __stack_chk_fail(); return; } if(( *(_v184 + 2) & 255) != 0) { goto L20; } _t236 = _v184; _t213 = *(_v184 + 44) & 8; if(_t213 != 0) { if(( *(_v176 + 60223) & 255) == 1) { *_v144 = DM_Set_Timer(); } LMafh_Update_Coex_Blacklist(); if(( *_v168 & 255) == 0) { L10: _t134 = *(_v184 + 56) & 65535; _t135 = _t134 - 6 < 0 ? 6 : _t134; _v74 = _t134 - 6 < 0 ? 6 : _t134; _v96 = (_v74 & 65535) + (_v74 & 65535) + _t182 + (_v74 & 65535) + (_v74 & 65535) + _t182; _t141 = _v96 - 96 >= 0 ? _v96 : 96; _v96 = _v96 - 96 >= 0 ? _v96 : 96; _t242 = _v176; _v88 = LLINK_ReadPicoClock(_t242, *((intOrPtr*)(_v184 + 432))); _v92 = _v88 & 252; _v84 = _v92; _v80 = _t242 + _t242; _v104 = _v80 + _v84; _LMafh_Set_AFH_Instant(); _t244 = _v128; *_t244 = 1; _v100 = 0; while(_v100 <= 9) { _t244 = _t244 + _v120; *_t244 = *(__rbp + _v100 - 48) & 255; _v100 = _v100 + 1; } RtlCopyMemory(4, &_v72, _v136); RtlCopyMemory(1, &_v72 + 4, _v128); RtlCopyMemory(10, &_v72 + 5, _v120); if(LMch_Disable_L2CAP_Traffic() != 0) { r9d = LMafh_LMP_Set_AFH_BB_Ack; r8 = &_v72; LMP_Send_Set_AFH(); } LMPafh_Request_Classification_Reporting(); *(_v184 + 105) = 0; _t251 = _v176; _t128 = *(_t251 + 191070) & 255; if(( *(_t251 + 191070) & 255) == 1) { _t252 = _v176; _t128 = *(_t252 + 191087) & 255; if(( *(_t252 + 191087) & 255) == 1) { _t128 = *_v112 & 255; if(( *_v112 & 255) == 0) { LMass_Activate_Channel_Assessment(); } } } goto L20; } _v100 = *_v160 & 0xff; while(1) { _t261 = _v152; if(( *_t261 & 0xff) < _v100) { goto L10; } _t166 = _v100; _t167 = _t166 >= 0 ? &(_t261[7]) : _t166; _t168 = (_t166 >= 0 ? &(_t261[7]) : _t166) >> 3; _t274 = (_t166 >= 0 ? &(_t261[7]) : _t166) >> 3; *(__rbp + _t261 - 48) = !(1 << (_v100 + (_v100 >> 31 >> 29) & 7) - (_v100 >> 31 >> 29)) & *(__rbp + ((_t166 >= 0 ? &(_t261[7]) : _t166) >> 3) - 48) & 255; _v100 = _v100 + 1; } goto L10; } else { DebugPrint(0, _t236, _t263, _t268, _t276, _t288); goto L20; } } LMafh_Inactivate_AFH( _unknown_ __rax // r53 ) {// addr = 0x0044855F long long _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 signed int _v74; // _cfa_ffffffb6 intOrPtr _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac intOrPtr _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c void _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 char _v112; // _cfa_ffffff90 intOrPtr _v120; // _cfa_ffffff88 signed int _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 signed int* _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 signed int* _v168; // _cfa_ffffff58 long long _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t107; // _t107 intOrPtr _t193; // _t193 long long _t196; // _t196 long long _t198; // _t198 long long _t200; // _t200 signed int* _t202; // _t202 _unknown_ _t217; // _t217 long long _t231; // _t231 signed int _t244; // _t244 _push(r12); _push(__rbx); __rsp = __rsp - 160; _v176 = _t231; _v184 = _t244; _v32 = *fs:0x28]; _v56 = 0; _v48 = 0; _v168 = _v176 + 67969; _v160 = _v176 + 67992; _v152 = _v176 + 67996; _v144 = _v176 + 67997; __eflags = _v184; if(__eflags != 0) { __eflags = *(_v176 + 191037) & 8; if(__eflags != 0) { __eflags = *(_v184 + 2) & 255; if(__eflags != 0) { _t107 = 31; } else { _t193 = _v176; __eflags = ( *(_t193 + 60223) & 255) - 1; if(( *(_t193 + 60223) & 255) == 1) { DM_Clear_Timer(); *_v168 = 0; } _v74 = 40; _v104 = (_v74 & 65535) + (_v74 & 65535) + _t159 + (_v74 & 65535) + (_v74 & 65535) + _t159; __eflags = _v104 - 96; _t114 = _v104 - 96 >= 0 ? _v104 : 96; _v104 = _v104 - 96 >= 0 ? _v104 : 96; _v96 = LLINK_ReadPicoClock(_v176, *((intOrPtr*)(_v184 + 432))); _v100 = _v96 & 252; _t196 = _v160; LMutils_Get_Uint32(_t196, &_v112); _t198 = _v176; LLINK_ReadPicoClock(_t198, *((intOrPtr*)(_v184 + 432))); r8d = _t196 + _t196; DebugPrint(0, _t198, _t217, *((intOrPtr*)(_v184 + 432)), _t198, *((intOrPtr*)(_v184 + 432))); r12d = _t198 + _t198; _v92 = _v100; _v88 = _t198 + _t198; _v136 = _v88 + _v92; _t200 = _v176; LLINK_ReadPicoClock(_t200, *((intOrPtr*)(_v184 + 432))); r9d = r12d; r8d = _v136 & 268435455; DebugPrint(0, _t200, _t217, *((intOrPtr*)(_v184 + 432)), _t200, *((intOrPtr*)(_v184 + 432))); _v84 = _v100; _v80 = _t200 + _t200; _v120 = _v80 + _v84; _LMafh_Set_AFH_Instant(); _t202 = _v152; *_t202 = 0; _v108 = 0; while(1) { __eflags = _v108 - 9; if(__eflags > 0) { break; } _t202 = _t202 + _v144; *_t202 = *(__rbp + _v108 - 48) & 255; _v108 = _v108 + 1; } RtlCopyMemory(4, &_v72, _v160); RtlCopyMemory(1, &_v72 + 4, _v152); _LMafh_Get_AFH_Instant(RtlCopyMemory(10, &_v72 + 5, _v144)); LCCMD_DisableAFHRequest(); r9d = 0; r8 = &_v72; LMP_Send_Set_AFH(); _t107 = 0; } } else { _t107 = 31; } } else { _t107 = 17; } if(__eflags != 0) { __stack_chk_fail(); } __rsp = __rsp + 160; _pop(__rbx); _pop(r12); return _t107; } LMafh_Deactivate_AFH() {// addr = 0x00448905 signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t95; // _t95 _v48 = _t95; _v56 = __rsi; _v40 = _v48 + 67969; _v32 = _v48 + 67968; _v24 = _v48 + 67996; _v16 = _v48 + 69295; if(( *(_v56 + 2) & 255) != 0) { *_v24 = 0; if(( *(_v48 + 60223) & 255) == 0) { DM_Clear_Timer(); *_v40 = 0; } goto L10; } else { if(( *(_v48 + 60223) & 255) == 1) { DM_Clear_Timer(); *_v40 = 0; } if(( *(_v56 + 44) & 8) == 0) { if(( *_v32 & 255) != 2) { *_v32 = 1; } else { *_v32 = 3; } } *((char*)(_v56 + 105)) = 0; RtlFillMemory(10, 85, _v56 + 95); LMafh_Initialise_Classification(_v48); *_v24 = 0; L10: if(( *(_v48 + 191087) & 255) != 1 || ( *(_v48 + 60220) & 255) > 1 || ( *_v16 & 255) != 1) { return; } else { LMass_Deactivate_Channel_Assessment(); return; } } } LCCMD_AFHRequest_CB() {// addr = 0x00448A5B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t18; // _t18 intOrPtr _t31; // _t31 intOrPtr _t32; // _t32 _v16 = __rdi; _v24 = __rsi; _v40 = __rcx; _v28 = _t18; if(_v28 == 0 && _v24 != 0) { _t31 = _v24; _t30 = *((intOrPtr*)(_t31 + 168)); if( *((intOrPtr*)(_t31 + 168)) == 0) { _t32 = _v24; _t30 = *((intOrPtr*)(_t32 + 176)); if( *((intOrPtr*)(_t32 + 176)) == 0) { DebugPrint(0, _t30, __rcx, __rdx, __rdi, __rsi); } } } if(_v28 != 0) { DebugPrint(0, _t30, __rcx, __rdx, __rdi, __rsi); return; } return; } LMafh_LMP_Set_AFH() {// addr = 0x00448AE1 long long _v32; // _cfa_ffffffe0 signed char _v45; // _cfa_ffffffd3 signed int _v46; // _cfa_ffffffd2 _unknown_ _v56; // _cfa_ffffffc8 signed int _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 signed char _v59; // _cfa_ffffffc5 signed char _v60; // _cfa_ffffffc4 signed char _v61; // _cfa_ffffffc3 signed int _v68; // _cfa_ffffffbc signed char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v96; // _cfa_ffffffa0 signed int* _v104; // _cfa_ffffff98 signed char* _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t138; // _t138 signed int* _t148; // _t148 signed char* _t151; // _t151 _unknown_ _t154; // _t154 signed char* _t156; // _t156 long long _t163; // _t163 signed int* _t166; // _t166 _v96 = _t163; _v104 = _t166; _v112 = _t156; _v32 = *fs:0x28]; _v61 = 0; _t158 = &(_v112[1]); _v68 = ((_v112[3]) & 0xff) << 24 | ((_v112[1]) & 0xff) << 8 | *_v112 & 0xff | ((_v112[2]) & 0xff) << 16; _v58 = (_v112[4]) & 255; _v80 = _v96 + 69379; _t148 = _v104; if(((_t148[0]) & 255) != 1) { L2: DebugPrint(0, _t148, _t154, _t158, _t163, _t166); } else { _t138 = _v58 - 1; if(_t138 <= 0) { if(_v58 != 1) { DebugPrint(0, _t148, _t154, _t158, _t163, _t166); LCCMD_DisableAFHRequest(); goto L19; } else { DebugPrint(0, _t148, _t154, _t158, _t163, _t166); _v59 = 0; while(_v59 <= 1) { _v60 = _v59 & 255; while(_v60 <= 78) { _t148 = _t148 + _v112; _v57 = *_t148 & 255; if(((_v57 & 255) >> (_v60 & 7) & 1) != 0) { _v61 = _v61 + 1; } _v60 = _v60 + 2; } _v59 = _v59 + 1; } if(_v61 > 19) { _v72 = 0; while(_v72 <= 9) { _t151 = _t148 + _v112; *(__rbp + _t151 - 48) = *_t151 & 255; _t148 = &(_t151[_v80]); _t158 = _v72 + 5 + _v112; *_t148 = *(_v72 + 5 + _v112) & 255; _v72 = _v72 + 1; } _v45 = 0; _v46 = _v45 & 255; DebugPrint(0, _t148, _t154, _t158, _t163, _t166); r8d = LCCMD_AFHRequest_CB; LCCMD_EnableAFHRequest(); L19: } else { } } } else { goto L2; } } if(_t138 != 0) { __stack_chk_fail(); return; } return; } LMafh_LMP_Set_AFH_BB_Ack() {// addr = 0x00448D1D long long _v32; // _cfa_ffffffe0 signed int _v45; // _cfa_ffffffd3 signed int _v46; // _cfa_ffffffd2 _unknown_ _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t38; // _t38 signed char* _t52; // _t52 _unknown_ _t63; // _t63 long long _t65; // _t65 long long _t71; // _t71 _v80 = _t65; _v88 = _t71; _v32 = *fs:0x28]; _t52 = _v80 + 67997; _v72 = _t52; _v60 = 0; while(1) { __eflags = _v60 - 9; if(_v60 > 9) { break; } _t52 = &(_t52[_v72]); *(__rbp + _t52 - 48) = *_t52 & 255; _v60 = _v60 + 1; } _v45 = 0; _v46 = _v45 & 255; _t38 = _LMafh_Get_AFH_Instant(_v45 & 255); __rdx = *((intOrPtr*)(_v88 + 432)); LLINK_ReadPicoClock(_v80, __rdx); r8d = _t38; _LMafh_Get_AFH_Instant(DebugPrint(0, _v80, _t63, __rdx, _v80, __rdx)); r8d = LCCMD_AFHRequest_CB; LCCMD_EnableAFHRequest(); *(_v88 + 105) = 0; LMch_Enable_L2CAP_Traffic(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LMafh_Report_Slave_Channel_Classification( _unknown_ __eax // r0 ) {// addr = 0x00448E30 char _v25; // _cfa_ffffffe7 char _v26; // _cfa_ffffffe6 signed int _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t94; // _t94 signed int _t106; // _t106 signed int _t108; // _t108 signed int _t117; // _t117 signed char* _t198; // _t198 signed char* _t199; // _t199 signed char* _t200; // _t200 long long _t217; // _t217 long long _t223; // _t223 _v112 = _t217; _v120 = _t223; _v96 = _v120; _v26 = 0; _v25 = 0; _v88 = _v112 + 67980; _v80 = _v112 + 67970; _v72 = _v112 + 68008; _v64 = _v112 + 68018; _v56 = _v112 + 69376; _v48 = _v112 + 69377; _v40 = _v112 + 69378; if(( *(_v96 + 1) & 255) == 0 || *((intOrPtr*)(_v96 + 432)) == 0) { r8 = *((intOrPtr*)(_v96 + 432)); DebugPrint(0, _v96, _v96, *((intOrPtr*)(_v96 + 432)), _t217, _t223); return; } LMafh_Update_Coex_Blacklist(); if(( *_v56 & 255) == 0) { L10: _v25 = LMafh_Build_Channel_Classification(_v112); if(_v26 != 0 || _v25 != 0) { r8 = _v88; LM_Encode_LMP_PDU_Fully_Encoded(_v112 + 60216); } *((char*)(_v96 + 86)) = DM_Set_Timer(); return; } else { _v32 = *_v48 & 0xff; while(1) { _t198 = _v40; if(( *_t198 & 0xff) < _v32) { break; } _t94 = _v32; _t95 = _t94 >= 0 ? &(_t198[7]) : _t94; _t96 = (_t94 >= 0 ? &(_t198[7]) : _t94) >> 3; _t215 = (_t94 >= 0 ? &(_t198[7]) : _t94) >> 3; _t225 = (_t94 >= 0 ? &(_t198[7]) : _t94) >> 3; _t226 = ((_t94 >= 0 ? &(_t198[7]) : _t94) >> 3) + _v80; _t199 = &(_t198[_v80]); *(((_t94 >= 0 ? &(_t198[7]) : _t94) >> 3) + _v80) = !(1 << (_v32 + (_v32 >> 31 >> 29) & 7) - (_v32 >> 31 >> 29)) & *_t199 & 255; _t106 = _v32; _t107 = _t106 >= 0 ? &(_t199[7]) : _t106; _t108 = (_t106 >= 0 ? &(_t199[7]) : _t106) >> 3; _t200 = &(_t199[_v72]); if((( *_t200 & 0xff) >> (_v32 + (_v32 >> 31 >> 29) & 7) - (_v32 >> 31 >> 29) & 1) != 0) { _t117 = _v32; _t118 = _t117 >= 0 ? &(_t200[7]) : _t117; _t119 = (_t117 >= 0 ? &(_t200[7]) : _t117) >> 3; _t216 = (_t117 >= 0 ? &(_t200[7]) : _t117) >> 3; _t227 = (_t117 >= 0 ? &(_t200[7]) : _t117) >> 3; _t228 = ((_t117 >= 0 ? &(_t200[7]) : _t117) >> 3) + _v72; *(((_t117 >= 0 ? &(_t200[7]) : _t117) >> 3) + _v72) = !(1 << (_v32 + (_v32 >> 31 >> 29) & 7) - (_v32 >> 31 >> 29)) & (_t200[_v72]) & 255; *_v64 = _v64 + 1; } _v32 = _v32 + 1; } _v26 = LMafh_Slave_Check_MasterAFH_Coexist(); goto L10; } } LMafh_Start_Classification_Reporting( _unknown_ __eax, // r0 long long __rdi // r57 ) {// addr = 0x004490CA signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 short _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 short _t30; // _t30 _v32 = __rdi; _v40 = __rsi; _v44 = _t30; _v16 = _v32 + 69295; if(( *_v16 & 255) == 0 && ( *(_v32 + 191070) & 255) == 1 && ( *(_v32 + 191087) & 255) == 1) { LMass_Activate_Channel_Assessment(); } if(( *(_v40 + 86) & 255) != 0) { DM_Clear_Timer(); } *(_v40 + 86) = DM_Set_Timer(); return; } LMafh_Stop_Classification_Reporting() {// addr = 0x0044916D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; _v24 = __rsi; if(( *(_v24 + 86) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 86) = 0; return; } return; } LMafh_LMP_Channel_Classification_Req() {// addr = 0x004491AC signed int _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t79; // _t79 long long _t81; // _t81 long long _t84; // _t84 _v32 = _t81; _v40 = _t84; _v48 = _t79; _v9 = *_v48 & 255; if(_v9 != 1) { LMafh_Stop_Classification_Reporting(); } else { _v14 = ((_v48[1]) & 0xff) + (((_v48[2]) & 0xff) << 8); _v12 = ((_v48[3]) & 0xff) + (((_v48[4]) & 0xff) << 8); if(_v14 > 1599 && _v14 <= 48000) { if(_v12 > 1599 && _v12 <= 48000 && (_v14 & 65535) <= _v12) { *(_v40 + 84) = ((_v12 & 65535) - (_v14 & 65535) + ((_v12 & 65535) - (_v14 & 65535) >> 31) >> 1) + _v14; LMafh_Start_Classification_Reporting( *(_v40 + 84) & 65535, _v32); } } } return 0; } LMafh_LMP_Channel_Classification() {// addr = 0x004492AB signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t22; // _t22 long long _t24; // _t24 _v32 = _t22; _v40 = _t24; _v48 = __rdx; _v16 = _v32 + 67968; __edx = 10; RtlCopyMemory(10, _v40 + 95, _v48); if(( *_v16 & 255) != 2) { *_v16 = 1; } else { *_v16 = 3; } return 0; } LMafh_LM_Set_AFH_Channel_Classification() {// addr = 0x0044930B char _v25; // _cfa_ffffffe7 signed int _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 long long _v96; // _cfa_ffffffa0 signed int* _v104; // _cfa_ffffff98 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t54; // _t54 signed char* _t107; // _t107 _unknown_ _t109; // _t109 long long _t114; // _t114 _v96 = _t114; _v104 = _t118; _v80 = _v96 + 67968; _v72 = _v96 + 67970; _v64 = _v96 + 69376; _v56 = _v96 + 69377; _v48 = _v96 + 69378; hciSetAfhFlag = 1; LMafh_Update_Coex_Blacklist(); if(( *_v64 & 255) == 0) { } else { _v32 = *_v56 & 0xff; while(1) { _t107 = _v48; if(( *_t107 & 0xff) < _v32) { goto L4; } _t54 = _v32; _t55 = _t54 >= 0 ? &(_t107[7]) : _t54; _t56 = (_t54 >= 0 ? &(_t107[7]) : _t54) >> 3; _t111 = (_t54 >= 0 ? &(_t107[7]) : _t54) >> 3; _t120 = (_t54 >= 0 ? &(_t107[7]) : _t54) >> 3; _t118 = _v104 + ((_t54 >= 0 ? &(_t107[7]) : _t54) >> 3); *(_v104 + ((_t54 >= 0 ? &(_t107[7]) : _t54) >> 3)) = !(1 << __cl) & (_t107[_v104]) & 255; _v32 = _v32 + 1; } } L4: _t99 = _v104; _t116 = _v104; _v25 = LMafh_Count_1_Bits(_v104, _v104); if(_v25 > 19) { RtlCopyMemory(10, _v72, _v104); *(_v72 + 9) = *(_v72 + 9) & 0x7f; if(( *_v80 & 255) != 2) { *_v80 = 1; } else { *_v80 = 3; } _v36 = 0; } else { if(_v64 == 0) { DebugPrint(0, _t99, _t109, _t111, _t116, _t118); } else { DebugPrint(0, _t99, _t109, _t111, _t116, _t118); } _v36 = 18; } return _v36; } LMafh_Initialise() {// addr = 0x0044949F long long _v16; // _cfa_fffffff0 char _v31; // _cfa_ffffffe1 char _v32; // _cfa_ffffffe0 char _v33; // _cfa_ffffffdf char _v34; // _cfa_ffffffde char _v35; // _cfa_ffffffdd char _v36; // _cfa_ffffffdc char _v37; // _cfa_ffffffdb char _v38; // _cfa_ffffffda char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 signed long long _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 _unknown_ _t75; // _t75 signed long long _t90; // _t90 long long _t105; // _t105 _v112 = _t105; _v16 = *fs:0x28]; _v40 = 255; _v39 = 255; _v38 = 255; _v37 = 255; _v36 = 255; _v35 = 255; _v34 = 255; _v33 = 255; _v32 = 255; _v31 = 127; _v104 = _v112 + 67970; _v96 = _v112 + 68008; _v88 = _v112 + 67969; _v80 = _v112 + 67968; _v72 = _v112 + 69295; _v64 = _v112 + 68007; _t90 = _v112 + 69292; _v56 = _t90; _v44 = 0; while(_v44 <= 9) { _t90 = _t90 + _v104; *_t90 = *(__rbp + _v44 - 32) & 255; _v44 = _v44 + 1; } _v44 = 0; while(_v44 <= 9) { _t90 = _t90 + _v96; *_t90 = *(__rbp + _v44 - 32) & 255; _v44 = _v44 + 1; } _v44 = 0; while(1) { _t75 = _v44 - 6; if(_t75 > 0) { break; } _t90 = 60288 + _t90 * 808 + _v112 + 31; __esi = 85; RtlFillMemory(10, 85, _t90); _v44 = _v44 + 1; } *_v88 = 0; *_v72 = 0; *_v64 = 0; *_v56 = 0; *((char*)(_v112 + 191070)) = 1; LMafh_Initialise_Classification(_v112); *_v80 = 0; if(_t75 != 0) { __stack_chk_fail(); return; } return; } LMafh_LM_Read_AFH_Channel_Map( _unknown_ __rax // r53 ) {// addr = 0x00449625 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed short _t32; // _t32 long long _t38; // _t38 long long _t41; // _t41 long long _t43; // _t43 long long _t45; // _t45 long long _t50; // _t50 _v48 = _t50; _v64 = _t45; _v52 = _t32; _v32 = _v48 + 67996; _t38 = _v48 + 67997; _v24 = _t38; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t38, _v48 + 60216); _v16 = _t38; if(_v16 == 0) { return 2; } _t41 = _v64; write_du(2, _v16 + 626, _t41, _v64 + 24); _v64 = _t41; _t43 = _v64; write_du(1, _v32, _t43, _v64 + 24); _v64 = _t43; __edx = 10; write_end_du(10, _v64, _v24); return 0; } LMafh_Update_Master_AFH_Piconet() {// addr = 0x004496EA signed int _v25; // _cfa_ffffffe7 signed short _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 signed int _v30; // _cfa_ffffffe2 signed short _v32; // _cfa_ffffffe0 signed short _v34; // _cfa_ffffffde signed short _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed short _v56; // _cfa_ffffffc8 signed short _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed long long _v88; // _cfa_ffffffa8 signed char* _v96; // _cfa_ffffffa0 signed char* _v104; // _cfa_ffffff98 signed char* _v112; // _cfa_ffffff90 signed char* _v120; // _cfa_ffffff88 _unknown_ _v128; // _cfa_ffffff80 signed char* _v136; // _cfa_ffffff78 signed long long _v144; // _cfa_ffffff70 signed char* _v152; // _cfa_ffffff68 _unknown_ _v160; // _cfa_ffffff60 signed char* _v168; // _cfa_ffffff58 signed long long _v176; // _cfa_ffffff50 signed long long _v240; // _cfa_ffffff10 signed char* _v248; // _cfa_ffffff08 signed int _v252; // _cfa_ffffff04 signed int _v280; // _cfa_fffffee8 signed int _v288; // _cfa_fffffee0 signed int _v296; // _cfa_fffffed8 signed int _v304; // _cfa_fffffed0 signed int _v312; // _cfa_fffffec8 signed int _v320; // _cfa_fffffec0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t284; // _t284 signed short _t338; // _t338 signed long long _t648; // _t648 signed long long _t653; // _t653 signed char* _t742; // _t742 signed char* _t743; // _t743 signed char* _t744; // _t744 signed long long _t753; // _t753 signed long long _t772; // _t772 signed long long _t776; // _t776 signed long long _t778; // _t778 signed char* _t786; // _t786 _v240 = _t776; _v248 = _t786; _v176 = _v240 + 67970; _v168 = _v240 + 68008; _v160 = _v240 + 67969; _v152 = _v240 + 67968; _v144 = _v240 + 67996; _v136 = _v240 + 67997; _v128 = _v240 + 68018; _v120 = _v240 + 69376; _v112 = _v240 + 69377; _v104 = _v240 + 69378; _v96 = _v240 + 68007; _v72 = 0; LMafh_Update_Coex_Blacklist(); _t648 = _v240; _t778 = _t648; _t284 = DM_Set_Timer(); _t770 = _v160; *_v160 = _t284; if(LMtst_Get_DUT_Mode() > 2) { DebugPrint(0, _t648, __rcx, _t770, _t778, _t786); return; } _v34 = 0; while(_v34 <= 6) { _t772 = _v240 + 60216; LM_Find_Link_Table_Entry_By_Index(_v34 & 65535, _t772); _v88 = _t648; _t648 = _v88; if(( *(_t648 + 1) & 255) == 0) { L7: _v34 = _v34 + 1; continue; } _t648 = _v88; _t487 = *(_t648 + 2) & 255; if(( *(_t648 + 2) & 255) != 0) { goto L7; } else { _LMafh_Get_AFH_Instant(_t487); _t769 = _v240; _t785 = _v240; if(BTtimer_Is_Expired(_v240) == 0) { DebugPrint(0, _t769, __rcx, _t772, _t785, _t786); return; } break; } } _t289 = *_v152 & 255; if(( *_v152 & 255) == 0) { L72: return; } _t780 = _v240 + 191308; _t289 = BTSTS_CheckDeviceState(12352, _v240 + 191308); if(_t289 != 0) { goto L72; } _v27 = 1; _v32 = 0; _v56 = 0; _t653 = *(_v240 + 191488); if((_t289 & 1) == 0) { _v56 = 4294967295; _v72 = _v56; } else { _t653 = *_v240 + 1568; __rcx = &_v56; _t786 = __rcx; _t780 = _t653; RT_PCI_IO_READ32(); _v72 = _v56; } _v40 = _v72; _v52 = _v40 + 192; _v34 = 0; while(_v34 <= 6) { _t772 = _v240 + 60216; _t780 = _t772; LM_Find_Link_Table_Entry_By_Index(_v34 & 65535, _t772); _v88 = _t653; _t653 = _v88; if(( *(_t653 + 1) & 255) == 0) { L44: _v34 = _v34 + 1; continue; } r9d = ( *(_v88 + 4) & 0xf2) == 0 & 255; r8d = *(_v88 + 2) & 0xff; DebugPrint(0, _v88, __rcx, _t772, _t780, _t786); if(( *(_v88 + 4) & 0xf2) != 0) { L40: _t653 = _v88; if(( *(_t653 + 4) & 65535) == 16) { goto L44; } _t653 = _v88; if(( *(_t653 + 2) & 255) != 0) { goto L44; } _t653 = _v144; if(( *_t653 & 255) == 0) { goto L44; } DebugPrint(0, _t653, __rcx, _t772, _t780, _t786); return; } _t752 = _v88; if(( *(_v88 + 2) & 255) != 0) { goto L40; } DebugPrint(0, _t752, __rcx, _t772, _t780, _t786); _t753 = _v88; if(( *(_t753 + 44) & 8) != 0) { _t772 = _v88; *(__rbp + _t753 * 8 - 224) = _t772; _v32 = _v32 + 1; } _t754 = _v88; if(( *(_v88 + 4) & 1) == 0) { if(( *(_v88 + 4) & 4) == 0) { _t756 = _v88; if(( *(_v88 + 4) & 2) == 0) { DebugPrint(0, _t756, __rcx, _t772, _t780, _t786); return; } DebugPrint(0, _t756, __rcx, _t772, _t780, _t786); return; } _v80 = _v88 + 448; _t780 = _v88; _v48 = LMpolicy_Get_Common_Subrate(_v88) * (( *(_v80 + 8) & 0xffff) + ( *(_v80 + 8) & 0xffff)) + _v40; DebugPrint(0, _v88, __rcx, _t772, _v88, _t786); goto L29; } else { _v48 = _v40; DebugPrint(0, _t754, __rcx, _t772, _t780, _t786); L29: if(( *(_v88 + 4) & 4) == 0) { _v44 = *(_v88 + 56) & 0xffff; } else { _t780 = _v88; _v44 = LMpolicy_Get_Common_Subrate(_v88) * ( *(_v88 + 456) & 0xffff); } _t653 = _v88; if(( *(_t653 + 4) & 4) == 0) { _v48 = _v48 + (_v44 + _v44 + _v44 << 2); } else { _t653 = _v88; _v30 = *(_t653 + 462) & 65535; if(_v30 <= 5) { _v252 = (_v30 & 65535) + 1; _v44 = 12 / _v252 * _v44; } _v48 = _v48 + _v44 + _v44; } _v48 = _v48 & 268435452; if(BTtimer_Is_Expired_For_Time(_v52, _v48) == 0) { DebugPrint(0, _t653, __rcx, _t772, _t780, _t786); } else { _v52 = _v48; DebugPrint(0, _t653, __rcx, _t772, _t780, _t786); } goto L44; } } if(( *_v120 & 255) == 0) { L52: r10d = *_v176 & 0xff; r9d = *(_v176 + 1) & 0xff; r8d = *(_v176 + 2) & 0xff; r11d = *(_v176 + 8) & 0xff; _v280 = r10d; _v288 = r9d; _v296 = r8d; _v304 = *(_v176 + 3) & 0xff; _v312 = *(_v176 + 4) & 0xff; _v320 = *(_v176 + 5) & 0xff; *__rsp = *(_v176 + 6) & 0xff; r9d = *(_v176 + 7) & 0xff; r8d = r11d; DebugPrint(0, _v176 + 9, __rcx, _t772, _t780, _t786); r10d = *_v168 & 0xff; r9d = (_v168[1]) & 0xff; r8d = (_v168[2]) & 0xff; r11d = (_v168[8]) & 0xff; _v280 = r10d; _v288 = r9d; _v296 = r8d; _v304 = (_v168[3]) & 0xff; _v312 = (_v168[4]) & 0xff; _v320 = (_v168[5]) & 0xff; *__rsp = (_v168[6]) & 0xff; r9d = (_v168[7]) & 0xff; r8d = r11d; DebugPrint(0, &(_v168[9]), __rcx, _t772, _t780, _t786); r10d = *_v136 & 0xff; r9d = (_v136[1]) & 0xff; r8d = (_v136[2]) & 0xff; r11d = (_v136[8]) & 0xff; _v280 = r10d; _v288 = r9d; _v296 = r8d; _v304 = (_v136[3]) & 0xff; _v312 = (_v136[4]) & 0xff; _v320 = (_v136[5]) & 0xff; *__rsp = (_v136[6]) & 0xff; r9d = (_v136[7]) & 0xff; r8d = r11d; DebugPrint(0, &(_v136[9]), __rcx, _t772, _t780, _t786); if(_v27 == 0) { L55: _t338 = 0; L56: _v26 = _t338; _v25 = ( *_v144 & 255) != _v27; if(_v26 != 0 || _v25 != 0 || ( *_v152 & 255) == 2 || ( *_v152 & 255) == 1) { L61: r9d = *_v152 & 0xff; r8d = _v25 & 255; DebugPrint(0, _v152, __rcx, _t772, _t780, _t786); r10d = *_v136 & 0xff; r9d = (_v136[1]) & 0xff; r8d = (_v136[2]) & 0xff; r11d = (_v136[8]) & 0xff; _v280 = r10d; _v288 = r9d; _v296 = r8d; _v304 = (_v136[3]) & 0xff; _v312 = (_v136[4]) & 0xff; _v320 = (_v136[5]) & 0xff; *__rsp = (_v136[6]) & 0xff; r9d = (_v136[7]) & 0xff; r8d = r11d; DebugPrint(0, &(_v136[9]), __rcx, _t772, _t780, _t786); *_v152 = 0; _t734 = _v144; *_v144 = _v27 & 255; if(_v32 != 0) { _t734 = _v240; _LMafh_Set_AFH_Instant(); } _v34 = 0; while(1) { _t289 = _v34 & 65535; if((_v34 & 65535) >= _v32) { goto L72; } _t734 = _v240; if(LMsec_IsEncryptionInProgress() == 0 && ( *(_t734 + 44) & 8) != 0 && (_v26 != 0 || _v25 != 0)) { _t734 = _v96; if(( *_v96 & 255) == 0) { _t734 = _v240; LMafh_Update_Slave_AFH_If_Required(); } } _v34 = _v34 + 1; } goto L72; } else { _t289 = *_v152 & 255; if(( *_v152 & 255) != 3) { goto L72; } goto L61; } } _t772 = _v176; __rcx = _v136; _t786 = _v136; _t780 = _v240; if(LMafh_Build_Channel_Map(_v240) == 0) { goto L55; } _t338 = 1; goto L56; } r8d = *_v104 & 0xff; DebugPrint(0, _v112, __rcx, _t772, _t780, _t786); _v34 = *_v112 & 0xff; while(1) { _t742 = _v104; if(( *_t742 & 0xff) < _v34) { goto L52; } _t772 = _t772 + _v176; _t743 = &(_t742[_v176]); *_t772 = *_t743 & 255 & !(1 << (_v34 & 7)); _t744 = &(_t743[_v168]); if((( *_t744 & 0xff) >> (_v34 & 7) & 1) != 0) { _t772 = &(_v168[_t772]); *_t772 = (_t744[_v168]) & 255 & !(1 << (_v34 & 7)); *_v128 = _v128 + 1; } _v34 = _v34 + 1; } goto L52; } LMafh_Update_Slave_AFH_If_Required() {// addr = 0x0044A2C7 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 _unknown_ _t64; // _t64 long long _t98; // _t98 long long _t105; // _t105 _v80 = _t98; _v88 = _t105; _v16 = *fs:0x28]; _v72 = _v80 + 67968; _v64 = _v80 + 67992; _v56 = _v80 + 67996; _v48 = _v80 + 67997; if(( *(_v88 + 105) & 255) == 0) { *(_v88 + 105) = 1; LMch_Disable_L2CAP_Traffic(); RtlCopyMemory(4, &_v40, _v64); RtlCopyMemory(1, &_v40 + 4, _v56); RtlCopyMemory(10, &_v40 + 5, _v48); r9d = LMafh_LMP_Set_AFH_BB_Ack; r8 = &_v40; if(LMP_Send_Set_AFH() != 0) { *(_v88 + 105) = 0; _t54 = LMch_Enable_L2CAP_Traffic(); } } else { _t54 = *_v72 & 255; _t64 = ( *_v72 & 255) - 2; if(_t64 != 0) { *_v72 = 1; } else { *_v72 = 3; } } if(_t64 == 0) { return; } else { __stack_chk_fail(); return; } } LMafh_Build_Channel_Map( _unknown_ __rax // r53 ) {// addr = 0x0044A446 long long _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 signed int _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 signed int _v59; // _cfa_ffffffc5 signed int _v60; // _cfa_ffffffc4 signed char _v61; // _cfa_ffffffc3 char _v62; // _cfa_ffffffc2 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v112; // _cfa_ffffff90 signed long long _v120; // _cfa_ffffff88 _unknown_ _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t112; // _t112 signed int _t183; // _t183 signed char _t208; // _t208 signed long long _t216; // _t216 signed long long _t221; // _t221 _unknown_ _t232; // _t232 _unknown_ _t239; // _t239 long long _t242; // _t242 long long _t254; // _t254 signed long long _t260; // _t260 _v112 = _t254; _v120 = _t260; _v128 = _t242; _v32 = *fs:0x28]; _v61 = 0; _v96 = _v112 + 68008; _v88 = _v112 + 69296; DebugPrint(0, _v112 + 69296, _t239, _t242, _t254, _t260); _v62 = LMafh_Count_1_Bits(_v128, _v128); _t240 = _v128; _t216 = &_v56; _t261 = _v128; RtlCopyMemory(10, _t216, _v128); _v72 = 0; while(_v72 <= 78 && _v62 > 20) { _v72 = _v72 + 1; } _v72 = 0; while(_v72 <= 6) { _t221 = (_t216 + 1 << 2) + _t216 + 1 + (_t216 + 1 << 2) + _t216 + 1 + _v88; _t257 = _t221; RtlFillMemory(10, 85, _t221); _t216 = _t221 * 808 + _v112 + 60208; if(( *(_t216 + 17) & 255) != 0) { _t251 = _v112; _t216 = _t216 * 808 + _v112 + 60208; if(( *(_t216 + 18) & 255) == 0) { DebugPrint(0, _t216, _t240, _t251, _t257, _t261); _t232 = 60288 + _t216 * 808 + _v112; _t240 = _t232 + 31; _t216 = (_t232 + 1 << 2) + _t232 + 1 + (_t232 + 1 << 2) + _t232 + 1 + _v88; _t261 = _t232 + 31; RtlCopyMemory(10, _t216, _t232 + 31); } } _v72 = _v72 + 1; } _v72 = 0; while(_v72 <= 78 && _v62 > 20) { _v60 = 1 << (_v72 & 7); _t216 = _t216 + &_v56; _v80 = _t216; _v68 = 1; while(_v68 <= 7) { _t216 = _v80; if(( *_t216 & 255 & _v60) != 0) { _v59 = _v72 & 6; _v58 = 3 << (_v59 & 255); _t216 = (_v68 << 2) + _v68 + (_v68 << 2) + _v68; _v57 = ( *(_t216 + _v88 + _t216) & 255 & _v58 & 255) >> (_v59 & 255); if(_v57 == 3) { _t216 = _v80; *_t216 = *_v80 & 255 & !(_v60 & 255); _v62 = _v62 - 1; } } _v68 = _v68 + 1; } _v72 = _v72 + 1; } _v72 = 0; while(_v72 <= 9) { _t208 = _v61; if(_t208 == 0) { _t183 = *(__rbp + _t216 - 48) & 255; _t216 = _t216 + _v120; if(_t183 != ( *_t216 & 255)) { _v61 = 1; _t216 = _v120; RtlCopyMemory(10, _t216, &_v56); } _v72 = _v72 + 1; continue; } break; } _t112 = _v61 & 255; if(_t208 == 0) { return _t112; } __stack_chk_fail(); return _t112; } LMafh_Update_Coex_Blacklist() {// addr = 0x0044A791 signed int _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 unsigned int _v32; // _cfa_ffffffe0 unsigned int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int* _v64; // _cfa_ffffffc0 signed int* _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 _unknown_ _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t76; // _t76 _unknown_ _t113; // _t113 signed char* _t183; // _t183 _v96 = __rdi; _v36 = 0; _v80 = _v96 + 69376; _v72 = _v96 + 69377; _v64 = _v96 + 69378; _v56 = _v96 + 69294; _v48 = _v96 + 67970; _v32 = 0; _t174 = *((intOrPtr*)(_v96 + 191488)); if((_t76 & 1) == 0) { _v32 = 4294967295; _v36 = _v32; } else { _t174 = *_v96 + 964; __rcx = &_v32; __rsi = __rcx; __rdi = *_v96 + 964; RT_PCI_IO_READ32(); _v36 = _v32; } _v26 = _v36; _v25 = _v36 >> 8; if((_v25 & 255) < _v26 || _v26 > 78 || _v25 > 78) { r8d = _v25 & 255; DebugPrint(0, _t174, __rcx, __rdx, __rdi, __rsi); return; } if(_v26 != 0 || _v25 != 0) { _t175 = _v80; if(( *_v80 & 255) == 0) { DebugPrint(0, _t175, __rcx, __rdx, __rdi, __rsi); } *_v80 = 1; L27: _t177 = _v72; if(( *_v72 & 255) != _v26) { DebugPrint(0, _t177, __rcx, __rdx, __rdi, __rsi); *_v72 = _v26 & 255; } _t178 = _v64; if(( *_v64 & 255) == _v25) { return; } else { DebugPrint(0, _t178, __rcx, __rdx, __rdi, __rsi); *_v64 = _v25 & 255; return; } } else { _t181 = _v80; if(( *_v80 & 255) != 1) { L26: *_v80 = 0; goto L27; } DebugPrint(0, _t181, __rcx, __rdx, __rdi, __rsi); _t183 = _v80; *_t183 = 0; if((hciSetAfhFlag & 255) == 0) { _t100 = DebugPrint(0, _t183, __rcx, __rdx, __rdi, __rsi); _v27 = 0; while(_v27 <= 78) { __rdx = __rdx + _v48; _t183 = &(_t183[_v48]); _t100 = 1 << (_v27 & 7) | *_t183 & 255; *__rdx = 1 << (_v27 & 7) | *_t183 & 255; _v27 = _v27 + 1; } __rdi = _v96; LMass_Reset_LM_Count(_t100, __rdx); if(( *(_v96 + 191070) & 255) == 0 || ( *(_v96 + 191087) & 255) == 0) { if(( *_v56 & 255) != 0) { __rdi = _v96; DM_Clear_Timer(); *_v56 = 0; } } goto L26; } _t113 = DebugPrint(0, _t183, __rcx, __rdx, __rdi, __rsi); __rdi = _v96; LMass_Reset_LM_Count(_t113, __rdx); if(( *(_v96 + 191070) & 255) == 0 || ( *(_v96 + 191087) & 255) == 0) { if(( *_v56 & 255) != 0) { __rdi = _v96; DM_Clear_Timer(); *_v56 = 0; } } hciSetAfhFlag = 0; goto L26; } } LMafh_Slave_Check_MasterAFH_Coexist() {// addr = 0x0044AAA7 signed char _v25; // _cfa_ffffffe7 signed char* _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t102; // _t102 _v64 = __rdi; _v56 = _v64 + 69379; _v48 = _v64 + 69377; _v40 = _v64 + 69378; r10d = *_v56 & 0xff; r9d = (_v56[1]) & 0xff; r8d = (_v56[2]) & 0xff; r11d = (_v56[8]) & 0xff; _v88 = r10d; _v96 = r9d; _v104 = r8d; _v112 = (_v56[3]) & 0xff; _v120 = (_v56[4]) & 0xff; _v128 = (_v56[5]) & 0xff; *__rsp = (_v56[6]) & 0xff; r9d = (_v56[7]) & 0xff; r8d = r11d; DebugPrint(0, &(_v56[9]), __rcx, __rdx, __rdi, __rsi); _v25 = *_v48 & 255; while(1) { _t102 = _v40; if(( *_t102 & 255) < _v25) { break; } _t103 = &(_t102[_v56]); if((((_t102[_v56]) & 0xff) >> (_v25 & 7) & 1) == 0) { _v25 = _v25 + 1; continue; } DebugPrint(0, _t103, __rcx, __rdx, __rdi, __rsi); return 1; } return 0; } LMass_Is_Freq_Used( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x0044AC1B long long _v24; // _cfa_ffffffe8 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t22; // _t22 __rdi = __rdi; __esi = __esi; _v40 = __rdi; _v44 = __esi; _t22 = _v40 + 68008; _v24 = _t22; if((( *(_t22 + _v24) & 0xff) >> __cl & 1) == 0) { return 0; } return 1; } LMass_Set_Freq_Unused( _unknown_ __eax, // r0 _unknown_ __rdx // r56 ) {// addr = 0x0044AC70 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t19; // _t19 signed char _t37; // _t37 long long _t44; // _t44 signed char* _t46; // _t46 long long _t50; // _t50 _v40 = _t50; _v44 = _t37; _v32 = _v40 + 68008; _v24 = _v40 + 68018; _t44 = _v40; _t19 = LMass_Is_Freq_Used(_v44 & 255, _t44); if(_t19 != 0) { *(_t44 + _v32) = *(__rdx + _v32) & 255 & !(1 << (_v44 & 7)); _t46 = _v24; *_v24 = &(_t46[1]); return *_t46 & 255; } return _t19; } LMass_Is_Freq_Valid( char __edi // r4 ) {// addr = 0x0044AD02 char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; return _v12 - 78 < 0; } LMass_WriteMcuChStat() {// addr = 0x0044AD14 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 char _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t22; _v32 = _t20; _v20 = _t18; MCU_Write_Memory(240, _v32); return; } LMass_ReadMcuChStat() {// addr = 0x0044AD59 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 char _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t22; _v32 = _t20; _v20 = _t18; MCU_Read_Memory(240, _v32); return; } LMass_Channel_Assessment_Init( _unknown_ __rax // r53 ) {// addr = 0x0044AD9E long long _v16; // _cfa_fffffff0 signed int _v264; // _cfa_fffffef8 signed int _v265; // _cfa_fffffef7 char _v266; // _cfa_fffffef6 _unknown_ _v280; // _cfa_fffffee8 _unknown_ _v288; // _cfa_fffffee0 signed char* _v296; // _cfa_fffffed8 long long _v304; // _cfa_fffffed0 _unknown_ __rbp; // r59 _unknown_ _t38; // _t38 _unknown_ _t77; // _t77 signed char* _t90; // _t90 _unknown_ _t99; // _t99 long long _t102; // _t102 intOrPtr _t105; // _t105 _v304 = _t102; _v16 = *fs:0x28]; _v296 = _v304 + 69292; _v288 = _v304 + 69293; _v280 = _v304 + 69294; _t38 = DebugPrint(0, _v304 + 69294, __rcx, _t99, _t102, __rsi); *_v288 = 0; *_v280 = 0; deviceMapUpdatedFlag = 0; LMass_Reset_LM_Count(_t38, _t99); _v265 = *_v296 & 255; _t90 = _v296; *_t90 = _v265 == 0; _v264 = _v264 & 0xfe; _v264 = _v264 & 255 | 1; _v266 = 0; while(_v266 <= 236) { *((char*)(__rbp + _t90 - 253)) = 0; _v266 = _v266 + 1; } LMass_WriteMcuChStat(); _t94 = _v304; _t105 = _v304; _t77 = LCCMD_ChangeChStTabRequest(); if(_t77 != 0) { *_v288 = DM_Set_Timer(); _t53 = DebugPrint(0, _v288, __rcx, _v288, _v304, __rsi); } else { DebugPrint(0, _t94, __rcx, &_v264, _t105, __rsi); } if(_t77 != 0) { __stack_chk_fail(); return; } return; } LMass_Reset_LM_Count( _unknown_ __eax, // r0 signed int* __rdx // r56 ) {// addr = 0x0044AF7C signed char _v25; // _cfa_ffffffe7 signed char* _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 signed char* _v112; // _cfa_ffffff90 signed long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 signed char* _v136; // _cfa_ffffff78 signed long long _v144; // _cfa_ffffff70 long long _v152; // _cfa_ffffff68 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t203; // _t203 signed long long _t205; // _t205 signed long long _t207; // _t207 signed long long _t209; // _t209 signed long long _t213; // _t213 signed long long _t214; // _t214 signed char* _t226; // _t226 signed int* _t229; // _t229 _t229 = __rdx; _v144 = _t231; _v152 = __rsi; _v136 = _v144 + 69294; _v128 = _v144 + 68008; _v120 = _v144 + 68018; _v112 = _v144 + 67968; _v104 = _v144 + 68020; _v96 = _v144 + 68336; _v88 = _v144 + 68652; _v80 = _v144 + 68968; _v72 = _v144 + 69284; _v64 = _v144 + 69288; _v56 = _v144 + 69376; _v48 = _v144 + 69377; _v40 = _v144 + 69378; _t203 = _v56; r9d = *_v40 & 0xff; r8d = *_v48 & 0xff; DebugPrint(0, _t203, __rcx, __rdx, _t231, __rsi); _v25 = 0; while(_v25 <= 78) { _t205 = (_t203 << 2) + _v104; *_t205 = 0; _t207 = (_t205 << 2) + _v96; *_t207 = 0; _t209 = (_t207 << 2) + _v88; *_t209 = 0; _t203 = (_t209 << 2) + _v80; *_t203 = 0; _v25 = _v25 + 1; } *_v72 = 0; *_v64 = 0; _t213 = _v120; *_t213 = 0; _v25 = 0; while(_v25 <= 78) { _t214 = _v56; if(( *_t214 & 255) == 0) { _t229 = _t229 + _v128; _t213 = _t214 + _v128; *_t229 = 1 << (_v25 & 7) | *_t213 & 255; } else { _t226 = _v48; if(( *_t226 & 255) > _v25) { L8: _t229 = _t229 + _v128; _t213 = &(_t226[_v128]); *_t229 = 1 << (_v25 & 7) | *_t213 & 255; } else { _t226 = _v40; if(( *_t226 & 255) < _v25) { goto L8; } else { _t229 = _t229 + _v128; *_t229 = (_t226[_v128]) & 255 & !(1 << (_v25 & 7)); _t213 = _v120; *_t213 = _v120 + 1; } } } _v25 = _v25 + 1; } _v25 = 0; while(_v25 <= 6) { _t213 = 60288 + _t213 * 808 + _v144 + 31; _t231 = _t213; RtlFillMemory(10, 85, _t213); _v25 = _v25 + 1; } if(( *_v112 & 255) != 1) { *_v112 = 2; } else { *_v112 = 3; } if(( *_v136 & 255) != 0) { DebugPrint(0, _v136, __rcx, _t229, _t231, __rsi); DM_Clear_Timer(); } *_v136 = DM_Set_Timer(); return; } LMass_Get_LC_Count() {// addr = 0x0044B2DF long long _v16; // _cfa_fffffff0 signed int _v264; // _cfa_fffffef8 signed int _v265; // _cfa_fffffef7 signed int _v266; // _cfa_fffffef6 signed char _v267; // _cfa_fffffef5 signed int _v268; // _cfa_fffffef4 intOrPtr _v272; // _cfa_fffffef0 signed int _v276; // _cfa_fffffeec signed int _v280; // _cfa_fffffee8 signed int* _v288; // _cfa_fffffee0 signed long long _v296; // _cfa_fffffed8 long long _v304; // _cfa_fffffed0 long long _v312; // _cfa_fffffec8 long long _v320; // _cfa_fffffec0 long long _v328; // _cfa_fffffeb8 signed char* _v336; // _cfa_fffffeb0 _unknown_ _v344; // _cfa_fffffea8 signed char* _v352; // _cfa_fffffea0 signed char* _v360; // _cfa_fffffe98 signed long long _v368; // _cfa_fffffe90 long long _v376; // _cfa_fffffe88 signed int _v380; // _cfa_fffffe84 _unknown_ __rbp; // r59 _unknown_ _t178; // _t178 _unknown_ _t286; // _t286 signed char* _t309; // _t309 signed long long _t315; // _t315 signed long long _t328; // _t328 signed long long _t330; // _t330 signed long long _t332; // _t332 signed long long _t334; // _t334 signed long long _t336; // _t336 signed long long _t338; // _t338 signed long long _t340; // _t340 signed long long _t342; // _t342 signed long long _t344; // _t344 signed long long _t346; // _t346 _unknown_ _t353; // _t353 signed long long _t357; // _t357 signed long long _t361; // _t361 signed long long _t364; // _t364 signed long long _t367; // _t367 signed long long _t369; // _t369 _v368 = _t367; _v376 = __rsi; _v16 = *fs:0x28]; _v266 = 0; _v280 = 0; _v276 = 0; _v360 = _v368 + 67968; _v352 = _v368 + 68018; _v344 = _v368 + 69293; _v336 = _v368 + 69292; _v328 = _v368 + 68020; _v320 = _v368 + 68336; _v312 = _v368 + 68652; _v304 = _v368 + 68968; _v296 = _v368 + 69284; _v288 = _v368 + 69288; _v265 = *_v336 & 255; _t309 = _v336; *_t309 = _v265 == 0; _v264 = _v264 & 0xfe; _v264 = _v264 & 255 | 1; _v268 = 0; do { } while(_v268 <= 236); LMass_WriteMcuChStat(); _t313 = _v368; _t369 = _v368; _t286 = LCCMD_ChangeChStTabRequest(); if(_t286 != 0) { _t357 = &_v264; _t370 = _v368; LMass_ReadMcuChStat(); _v267 = 0; _v268 = 0; L21: L21: if(_v268 <= 234) { goto L6; } else { _v266 = 79 - ( *_v352 & 255); if(_v266 != 0) { _v380 = _v266 & 255; *_v296 = _v280 / _v380; } if(_v266 != 0) { _v380 = _v266 & 255; *_v288 = (_v276 << 10) / _v380; } _t317 = _v288; if( *_v288 > 7168) { _t178 = DebugPrint(0, _t317, _t353, _t357, _t370, __rsi); _t370 = _v368; LMass_Reset_LM_Count(_t178, _t357); } if((deviceMapUpdatedFlag & 255) != 0) { if(( *_v360 & 255) != 1) { *_v360 = 2; } else { *_v360 = 3; } deviceMapUpdatedFlag = 0; } if(_v266 <= 19) { LMass_Reset_LM_Count(DebugPrint(0, _v352, _t353, _t357, _t370, __rsi), _t357); } *_v344 = DM_Set_Timer(); } goto L36; L6: _t315 = _v368; _t370 = _t315; if(LMass_Is_Freq_Used(_v267 & 255, _t315) == 0) { L20: _v267 = _v267 + 1; _v268 = _v268 + 3; goto L21; } _t328 = (_t315 << 2) + _v320; _t361 = _v268 & 255; *_t328 = ( *(__rbp + _t361 - 253) & 0xff) + *((intOrPtr*)((_t357 << 2) + _v320)); _t330 = (_t328 << 2) + _v312; _t364 = (_v268 & 255) + 1; *_t330 = ( *(__rbp + _t364 - 253) & 0xff) + *((intOrPtr*)((_t361 << 2) + _v312)); _t332 = (_t330 << 2) + _v304; _t357 = (_v268 & 255) + 2; *_t332 = ( *(__rbp + _t357 - 253) & 0xff) + *((intOrPtr*)((_t364 << 2) + _v304)); if(( *(__rbp + _t332 - 253) & 255) != 0 || ( *(__rbp + _t332 - 253) & 255) != 0 || ( *(__rbp + _t332 - 253) & 255) != 0) { L12: _t334 = (_t332 << 2) + _v328; *_t334 = 0; goto L13; } else { _t332 = _v296; if( *_t332 <= 6) { goto L12; } else { _t334 = (_t332 << 2) + _v328; *_t334 = *_t334 + 1; L13: _t336 = (_t334 << 2) + _v320; _v280 = _v280 + *_t336; _t338 = (_t336 << 2) + _v312; _t340 = (_t338 << 2) + _v304; _v276 = _v276 + *_t340 + *_t338; _t342 = (_t340 << 2) + _v320; _t344 = (_t342 << 2) + _v312; _t346 = (_t344 << 2) + _v304; _v272 = *_t346 + *_t342 + *_t344; if(_v272 <= 10) { if(_v272 == 0 || *((intOrPtr*)((_t346 << 2) + _v328)) > 7) { _t203 = *_v296; if( *_v296 > 6) { _t370 = _v368; LMass_Set_Freq_Unused(_t203, _t357); deviceMapUpdatedFlag = 1; } } } else { _t370 = _v368; if(LMass_Channel_Assessment(_v267 & 255, _v368) != 0) { deviceMapUpdatedFlag = 1; } } goto L20; } } } else { _t171 = DebugPrint(0, _t313, _t353, &_v264, _t369, __rsi); L36: if(_t286 == 0) { return; } __stack_chk_fail(); return; } } LMass_Channel_Assessment( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x0044B8FB signed int _v12; // _cfa_fffffff4 signed long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed int _t33; // _t33 signed long long _t51; // _t51 signed long long _t53; // _t53 signed long long _t55; // _t55 _v48 = __rdi; _v52 = __esi; _v40 = _v48 + 68336; _v32 = _v48 + 68652; _t51 = _v48 + 68968; _v24 = _t51; _t53 = (_t51 << 2) + _v32; _t55 = (_t53 << 2) + _v24; _v12 = *_t55 + *_t53; if(_v12 == 0) { return 0; } _t33 = *((_t55 << 2) + _v40) << 10; _t34 = _t33 / _v12; if(_t33 / _v12 > 7167) { return 0; } LMass_Set_Freq_Unused(_t34, __rdx); return 1; } LMass_Activate_Channel_Assessment() {// addr = 0x0044B9A4 _unknown_ _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t12; // _t12 _v32 = _t12; _v16 = _v32 + 69295; DebugPrint(0, _v32 + 69295, __rcx, __rdx, _t12, __rsi); *_v16 = 1; LMass_Channel_Assessment_Init(_v32); return; } LMass_Deactivate_Channel_Assessment() {// addr = 0x0044B9EC signed char* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t19; // _t19 long long _t49; // _t49 _v48 = _t49; _v32 = _v48 + 69295; _v24 = _v48 + 69293; _v16 = _v48 + 69294; _t19 = DebugPrint(0, _v48 + 69294, __rcx, __rdx, _t49, __rsi); *_v32 = 0; LMass_Reset_LM_Count(_t19, __rdx); if(( *_v24 & 255) != 0) { DM_Clear_Timer(); *_v24 = 0; } if(( *_v16 & 255) != 0) { DM_Clear_Timer(); *_v16 = 0; return; } return; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x0044BAAC signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0044BAC5 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0044BB04 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } dump_list() {// addr = 0x0044BB36 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0044BBFE signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0044BFDF signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LLINK_Suspend( long long __rdi // r57 ) {// addr = 0x0044C120 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 1; return; } LLINK_SetL2CapOutFlowStop( long long __rdi // r57 ) {// addr = 0x0044C132 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *(_v16 + 10) = __dl; return *(_v16 + 10) & 255; } LLINK_SetL2CapOutFlowGo( long long __rdi // r57 ) {// addr = 0x0044C14E long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 signed int _t9; // _t9 __rdi = __rdi; _v16 = __rdi; _t9 = *(_v16 + 10) & 255; if(_t9 != 0) { *(_v16 + 10) = __dl; return *(_v16 + 10) & 255; } return _t9; } LLINK_PauseL2CapReport( long long __rdi // r57 ) {// addr = 0x0044C176 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *(_v16 + 6) = __dl; return *(_v16 + 6) & 255; } LLINK_ResumeL2CapReport( long long __rdi // r57 ) {// addr = 0x0044C192 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 signed int _t9; // _t9 __rdi = __rdi; _v16 = __rdi; _t9 = *(_v16 + 6) & 255; if(_t9 != 0) { *(_v16 + 6) = __dl; return *(_v16 + 6) & 255; } return _t9; } ConvertBcastTypeToStr( signed char __edi // r4 ) {// addr = 0x0044C1BA signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 3) { return "PSB-U Llink"; } if(_t4 == 4) { return "PSB-C Llink"; } if(_t4 != 2) { return "Unknown Llink"; } return "ASB-U Llink"; } LM_Add_Link_Table_Entry( _unknown_ __eax, // r0 signed long long __rax // r53 ) {// addr = 0x0044C1F2 signed int _v25; // _cfa_ffffffe7 signed int _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 signed short _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t230; // _t230 char _t235; // _t235 signed long long _t251; // _t251 signed long long _t253; // _t253 signed long long _t254; // _t254 signed long long _t256; // _t256 signed long long _t264; // _t264 signed long long _t267; // _t267 signed long long _t270; // _t270 signed long long _t273; // _t273 signed long long _t276; // _t276 signed long long _t279; // _t279 signed long long _t282; // _t282 signed long long _t285; // _t285 signed long long _t288; // _t288 signed long long _t290; // _t290 signed long long _t293; // _t293 signed long long _t296; // _t296 signed long long _t297; // _t297 signed long long _t301; // _t301 signed long long _t318; // _t318 signed long long _t321; // _t321 signed long long _t324; // _t324 signed long long _t332; // _t332 signed long long _t335; // _t335 signed long long _t339; // _t339 signed int _t452; // _t452 signed long long _t463; // _t463 _t251 = __rax; _v48 = _t452; _v56 = _t463; _v60 = _t235; _v72 = r8; _v64 = _t230; _v25 = 0; while(_v25 <= 6) { _t251 = _t251 * 808 + _v48; if(( *(_t251 + 9) & 255) != 0) { _v25 = _v25 + 1; continue; } _t253 = _v48; _LM_Link_Entry_Init(_v25 & 255, _t253); _t254 = _t253 * 808; *(_v48 + _t254 + 8) = _v25 & 255; _t256 = _t254 * 808 + _v48; *((char*)(_t256 + 9)) = 1; *((short*)(_t256 * 808 + _v48 + 12)) = 16; *((_v25 & 255) * 808 + _v48 + 0x1b0) = *_v56 & 255; *((_v25 & 255) * 808 + _v48 + 0x1b1) = *(_v56 + 1) & 255; *((_v25 & 255) * 808 + _v48 + 0x1b2) = *(_v56 + 2) & 255; *((_v25 & 255) * 808 + _v48 + 0x1b3) = *(_v56 + 3) & 255; *((_v25 & 255) * 808 + _v48 + 0x1b4) = *(_v56 + 4) & 255; _t264 = _v56; *((_v25 & 255) * 808 + _v48 + 0x1b5) = *(_t264 + 5) & 255; _t267 = _v72; *(_t264 * 808 + _v48 + 32) = _t267; *((char*)((_v25 & 255) * 808 + _v48 + 0x2c)) = _v60; _t270 = _t267 * 808 + _v48 + 32; *(_t270 + 13) = 0; _t273 = _t270 * 808 + _v48 + 32; *(_t273 + 14) = 0; _t276 = _t273 * 808 + _v48 + 32; *(_t276 + 8) = 0; _t279 = _t276 * 808 + _v48 + 32; *(_t279 + 9) = 0; _t282 = _t279 * 808 + _v48 + 32; *(_t282 + 10) = 0; _t285 = _t282 * 808 + _v48 + 32; *(_t285 + 11) = 0; _t288 = _t285 * 808 + _v48 + 48; *((short*)(_t288 + 16)) = 40; _t290 = _t288 * 808 + _v48; *((short*)(_t290 + 14)) = 32000; _t293 = _t290 * 808 + _v48 + 80; *((char*)(_t293 + 16)) = 2; _t296 = _t293 * 808 + _v48 + 80; *((char*)(_t296 + 17)) = 2; _t297 = _t296 * 808; *(_v48 + _t297 + 16) = _v64 & 65535; *((char*)(_t297 * 808 + _v48 + 0x65)) = 127; _t301 = _v48; *((short*)((_v25 & 255) * 808 + _v48 + 0x27a)) = LM_Get_Available_Connection_Handle(_t301, _t301); *(_t301 * 808 + _v48 + 0x1c4) = 0; _t307 = _v48 * 808 + _v48 + 8; LMpolicy_RoleSwitch_Initailize(_v48 * 808 + _v48 + 8); LMqos_ACLU_Qos_Init(624 + _t307 * 808 + _v48 + 8); LMpolicy_Link_Init(448 + (624 + _t307 * 808 + _v48 + 8) * 808 + _v48 + 8); _t318 = _v48 * 808 + _v48 + 8; LMsec_Set_Enc_Init(_t318); _t321 = _t318 * 808 + _v48 + 112; *(_t321 + 16) = 0; _t324 = _t321 * 808 + _v48 + 112; *(_t324 + 18) = 0; *(_t324 * 808 + _v48 + 0x7a) = 0; _t332 = 144 + _v48 * 808 + _v48 + 16; __edi = 16; LMutils_Array_Copy(16, _t332, _v48 + 5672, _t332); _t335 = _t332 * 808 + _v48 + 384; *(_t335 + 12) = 0; *((intOrPtr*)((_v25 & 255) * 808 + _v48 + 792)) = 768 + (_v25 & 255) * 808 + _v48 + 16; _t339 = *(_t335 * 808 + _v48 + 792); *((_v25 & 255) * 808 + _v48 + 784) = _t339; check_list_constant(); *((intOrPtr*)((_v25 & 255) * 808 + _v48 + 808)) = 784 + (_v25 & 255) * 808 + _v48 + 16; *((intOrPtr*)((_v25 & 255) * 808 + _v48 + 800)) = *((intOrPtr*)((768 + _t339 * 808 + _v48 + 16) * 808 + _v48 + 808)); check_list_constant(); return _v25 & 255; } return 0; } _LM_Del_Link_Entry( long long __rdi // r57 ) {// addr = 0x0044C806 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(_v16 == 0) { return 0; } *((char*)(_v16 + 1)) = 0; *((long long*)(_v16 + 432)) = 0; return 1; } LM_Delete_Link_Table_Entry( _unknown_ __rax // r53 ) {// addr = 0x0044C83A long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t12; // _t12 long long _t15; // _t15 _v32 = _t12; _v40 = _t15; LM_Find_Link_Table_Entry(); _v16 = _v32; _LM_Del_Link_Entry(_v16); return; } LM_Find_Link_Table_Entry() {// addr = 0x0044C86F signed char _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t20; // _t20 signed long long _t24; // _t24 _unknown_ _t29; // _t29 signed int _t35; // _t35 signed long long _t37; // _t37 _v32 = _t35; _v40 = _t37; _v24 = 0; _v9 = 0; while(_v9 <= 6) { _t24 = _t24 * 808 + _v32; _t20 = *(_t24 + 9) & 255; if(_t20 == 0) { L4: _v9 = _v9 + 1; continue; } else { _t20 = _t24; _t29 = 416 + _t24 * 808 + _v32; _t24 = _v40; __edx = 6; RtlCompareMemory(6, _t24, _t29 + 16); if(_t20 != 0) { goto L4; } else { _t30 = _v32; _t20 = _v9 & 255; _v24 = _v32 * 808 + _t30 + 8; } } break; } return _t20; } LM_Find_Link_Table_Entry_By_Index( signed short __esi, // r5 long long __rdi // r57 ) {// addr = 0x0044C908 long long _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; if(_v20 > 6) { return 0; } return _v20 & 65535; } LM_Find_Link_Table_Entry_By_LLink() {// addr = 0x0044C93C signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed long long _t41; // _t41 _v32 = __rdi; _v40 = __rsi; _v10 = 0; _v9 = 0; _v11 = 0; while(_v11 <= 6) { _t41 = _t41 * 808 + _v32; if(( *(_t41 + 9) & 255) != 0) { _t51 = _v32; _t41 = *(_t41 * 808 + _v32 + 440); if(_t41 == _v40) { if(_v9 != 0) { r8d = _v11 & 255; DebugPrint(0, _t41, __rcx, _t51, __rdi, __rsi); } else { _v10 = _v11 & 255; } _v9 = _v9 + 1; } } _v11 = _v11 + 1; } if(_v9 == 0) { return; } return; } LM_Find_Link_Table_Entry_By_Ar_Addr( char __esi, // r5 signed long long __rax, // r53 long long __rdi // r57 ) {// addr = 0x0044CA05 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed long long _t26; // _t26 __rdi = __rdi; _t26 = __rax; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v9 = 0; while(_v9 <= 6) { _t26 = _t26 * 808 + _v32; if(( *(_t26 + 9) & 255) != 1) { L4: _v9 = _v9 + 1; continue; } _t26 = _t26 * 808 + _v32 + 512; if(( *(_t26 + 26) & 255) != _v36) { goto L4; } return _v9 & 255; } return 0; } LM_Find_Link_Table_Entry_By_Connection_Handle( short __esi, // r5 signed long long __rax, // r53 long long __rdi // r57 ) {// addr = 0x0044CA80 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed long long _t26; // _t26 __rdi = __rdi; _t26 = __rax; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v9 = 0; while(_v9 <= 6) { _t26 = _t26 * 808 + _v32; if(( *(_t26 + 9) & 255) != 1) { L4: _v9 = _v9 + 1; continue; } _t26 = _t26 * 808 + _v32 + 624; if(( *(_t26 + 10) & 65535) != _v36) { goto L4; } return _v9 & 255; } return 0; } LC_Find_Link_Table_Entry_By_Connection_Handle( short __esi, // r5 signed long long __rax, // r53 long long __rdi // r57 ) {// addr = 0x0044CAFD signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed long long _t26; // _t26 __rdi = __rdi; _t26 = __rax; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v9 = 24; while(_v9 <= 26) { _t26 = _t26 * 184 + _v32 + 3232; if(( *(_t26 + 8) & 255) != 1) { L4: _v9 = _v9 + 1; continue; } _t26 = _t26 * 184 + _v32 + 3232; if(( *(_t26 + 16) & 65535) != _v36) { goto L4; } return _v9 & 255; } return 0; } LM_Get_Available_Connection_Handle( signed long long __rax, // r53 long long __rdi // r57 ) {// addr = 0x0044CB83 signed short _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t25; // _t25 __rdi = __rdi; _t25 = __rax; _v32 = __rdi; _v10 = 10; _v16 = 0; while(_v16 <= 6) { _t25 = _t25 * 808 + _v32; if(( *(_t25 + 9) & 255) == 0) { L4: _v16 = _v16 + 1; } else { _t25 = _t25 * 808 + _v32 + 624; if(( *(_t25 + 10) & 65535) != _v10) { goto L4; } else { _v10 = _v10 + 1; _v16 = 0; } } } return _v10 & 65535; } LM_SearchACLByConnectionHandle( _unknown_ __rax // r53 ) {// addr = 0x0044CBF6 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 _unknown_ _t20; // _t20 signed int _t21; // _t21 signed int _t22; // _t22 signed short _t24; // _t24 long long _t27; // _t27 long long _t36; // _t36 _v32 = _t36; _v36 = _t24; _t27 = _v32; _t20 = LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t27, _t27); _v16 = _t27; if(_v16 == 0) { _t21 = *(_v32 + 9282) & 65535; if(_t21 != _v36) { _t22 = *(_v32 + 9314) & 65535; if(_t22 != _v36) { return 0; } return _t22; } return _t21; } return _t20; } LM_SearchConnectionHandleByACL( signed long long __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0044CC75 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed long long _t26; // _t26 __rsi = __rsi; __rdi = __rdi; _t26 = __rax; _v32 = __rdi; _v40 = __rsi; _v9 = 0; while(_v9 <= 6) { _t26 = _t26 * 808 + _v32; if(( *(_t26 + 9) & 255) == 0 || _v40 == 0) { L5: _v9 = _v9 + 1; continue; } else { _t26 = *(_t26 * 808 + _v32 + 440); if(_t26 != _v40) { goto L5; } return *(_t26 * 808 + _v32 + 0x27a) & 65535; } } return 0; } _LM_Link_Table_Init() {// addr = 0x0044CCFE signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v32 = _t8; _v9 = 0; while(_v9 <= 6) { __esi = _v9 & 255; _LM_Link_Entry_Init(_v9 & 255, _v32); _v9 = _v9 + 1; } return; } _LM_Link_Entry_Init( char __esi, // r5 signed int __rdi // r57 ) {// addr = 0x0044CD2E char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __esi; if(_v36 <= 7) { _v24 = _v32 * 808 + _v32 + 8; _v12 = 0; while(_v12 <= 807) { *_v24 = 0; _v24 = _v24 + 1; _v12 = _v12 + 1; } return; } return; } _LMconnection_Create_ACL_Connection( _unknown_ __rax // r53 ) {// addr = 0x0044CD82 char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 long long _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t67; // _t67 char _t76; // _t76 long long _t96; // _t96 long long _t124; // _t124 long long _t132; // _t132 _v48 = _t124; _v56 = _t132; _v60 = _t76; _v20 = 3; _t96 = _v56; r8d = LM_Connection_Event_Handler; LM_Add_Link_Table_Entry( *(_v48 + 190530) & 65535, _t96); _v32 = _t96; if(_v32 == 0) { L12: return _v20; } BTSTS_SetDeviceState(); if( *(_v56 + 16) >> 15 == 0) { _t67 = 0; } else { _t67 = *(_v56 + 16) & 32767; } _v16 = _t67; _v88 = _v32 + 432; _v96 = 0; *__rsp = 0; r9d = 0; r8d = 1; _v9 = LCCMD_PageRequest(); if(_v9 != 0 && *((intOrPtr*)(_v32 + 432)) != 0 && *((intOrPtr*)( *((intOrPtr*)(_v32 + 432)) + 88)) != 0) { *((short*)(_v32 + 4)) = 32; *(_v32 + 64) = *(_v56 + 20) & 255; *(_v32 + 644) = *(_v56 + 6) & 65535 ^ 13062; *(_v32 + 646) = *(_v56 + 6) & 65535 ^ 13062; *((long long*)(_v32 + 768)) = *((intOrPtr*)( *((intOrPtr*)(_v32 + 432)) + 88)); if(_v60 == 2) { BTSTS_SetDeviceState(); } _v20 = 0; } if(_v20 != 0) { BTSTS_ClearDeviceState(); _LM_Del_Link_Entry(_v32); } goto L12; } LM_Create_Connection_Req( _unknown_ __eax // r0 ) {// addr = 0x0044CF53 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t18; // _t18 long long _t21; // _t21 _v32 = _t18; _v40 = _t21; _v12 = 0; _v12 = _LMconnection_Validate_ACL_Admission(); if(_v12 == 0) { _v12 = _LMconnection_Create_ACL_Connection(_v32); } return _v12; } LMconnection_LMP_Response_Timeout_CB() {// addr = 0x0044CFA6 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t103; // _t103 long long _t105; // _t105 long long _t109; // _t109 _v32 = _t105; _v40 = _t109; _v16 = _v40; if(( *(_v16 + 1) & 255) == 0) { DebugPrint(0, _v16, _v16, _t103, _t105, _t109); return; } if(( *(_v16 + 18) & 255) != 0) { *(_v16 + 18) = 0; } if( *((intOrPtr*)(_v16 + 432)) == 0) { DebugPrint(0, _v16, _v16, _t103, _t105, _t109); return; } else { if( *((intOrPtr*)( *((intOrPtr*)(_v16 + 432)) + 48)) == 0) { r8d = *( *((intOrPtr*)(_v16 + 432)) + 11) & 0xff; DebugPrint(0, _v16, _v16, _t103, _t105, _t109); return; } *(_v16 + 92) = 34; r9d = 0; r8d = *(_v16 + 92) & 0xff; LMP_Send_Detach(); LMconnection_Disconnect_Acl(); return; } } LMconnection_LM_Page_Complete_NO_ERROR( long long __rsi // r58 ) {// addr = 0x0044D10D long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t37; // _t37 long long _t79; // _t79 _v32 = _t79; _v40 = __rsi; _v16 = _v40; if(_v16 != 0) { *((short*)(_v16 + 4)) = 1024; LMlpctrl_Start_Monitor(_t37, _v32); if(( *(_v16 + 36) & 255) != 2) { *((char*)(_v16 + 18)) = DM_Set_Timer(); r8 = _v32 + 191032; LMP_Send_Features_Req(); return; } *((char*)(_v16 + 18)) = DM_Set_Timer(); _Send_LMP_Connection_PDU(_v32 + 60216); return; } return; } LMconnection_LM_Page_Timeout() {// addr = 0x0044D21B short _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 long long _t64; // _t64 long long _t75; // _t75 long long _t89; // _t89 long long _t95; // _t95 _unknown_ _t98; // _t98 long long _t107; // _t107 long long _t108; // _t108 _v96 = _t95; _v104 = _t107; _v112 = _t89; _v10 = 1032; _v32 = &_v88; BTCoex_EventCallback(); BTSTS_ClearDeviceState(); _t64 = _v104; _t108 = _t64; _t98 = _v96 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v24 = _t64; if(_v24 != 0) { if(( *(_v24 + 36) & 255) == 2) { if(( *(_v24 + 35) & 255) != 1) { _Send_HC_Connection_Complete_Event_ACL(); } else { _v16 = 0; _t75 = _v32; __ecx = 1; write_du(1, &_v16, _t75, _v32 + 24); _v32 = _t75; write_end_du(6, _v32, _v112 + 16); EG_Generate_Command_Complete_Event(); _Send_HC_Connection_Complete_Event_ACL(); } BTSTS_ClearDeviceState(); } LM_Delete_Link_Table_Entry(_v96 + 60216); LMbw_Adjust_Link_Priority(); return 4; } r8 = _v104; DebugPrint(0, *((intOrPtr*)(_v96 + 60656)), *((intOrPtr*)(_v96 + 60656)), _v104, _t98, _t108); return 3; } LMconnection_LM_Page_Complete() {// addr = 0x0044D3C5 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t88; // _t88 long long _t93; // _t93 intOrPtr _t115; // _t115 long long _t118; // _t118 long long _t125; // _t125 long long _t135; // _t135 long long _t136; // _t136 _v32 = _t125; _v40 = _t135; _v48 = _t118; DebugPrint(0, _t88, _t115, _t118, _t125, _t135); BTCoex_EventCallback(); BTSTS_ClearDeviceState(); _t93 = _v40; _t136 = _t93; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _t93; if(_v16 != 0) { *((char*)(_v32 + 60220)) = _v32 + 1; *((char*)(_v32 + 60223)) = _v32 + 1; if(( *(_v16 + 35) & 255) != 1) { *((long long*)(_v16 + 432)) = _v40; if( *((intOrPtr*)(_v16 + 432)) != 0) { if(( *(_v16 + 4) & 65535) == 32) { if(( *(_v32 + 191082) & 255) == 0) { _t115 = _v32; r8d = 0; LMP_Send_L2Cap_Flow(); } *((short*)(_v16 + 626)) = LM_Get_Available_Connection_Handle(_v32 + 60216, _v32 + 60216); DebugPrint(0, _v32 + 60216, _t115, _v16, _v32 + 60216, _t136); LMch_Disable_L2CAP_Traffic(); LMch_Pause_L2CAP_Report(); LMconnection_LM_Page_Complete_NO_ERROR(_v16); } L10: return; } return; } *((long long*)(_v16 + 432)) = _v40; LMconnection_Send_LMP_Detach(); goto L10; } return; } LMconnection_Local_Setup_Complete() {// addr = 0x0044D5BB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t80; // _t80 long long _t87; // _t87 long long _t94; // _t94 _v16 = _t87; _v24 = _t94; if(( *(_v24 + 37) & 2) != 0) { DebugPrint(0, _v24, __rcx, _t80, _t87, _t94); return; } r9d = *(_v24 + 441) & 0x1f; r8d = *(_v24 + 444) & 0xffff; DebugPrint(0, _v24, __rcx, _t80, _t87, _t94); if(( *(_v24 + 444) & 65535) != 56) { L4: LMqos_ACLU_Packet_Connection_Finalise(); LMafh_Activate_AFH(_v16); _Send_LMP_Connection_PDU(_v16 + 60216); return; } _t75 = _v24; if(( *(_v24 + 441) & 0x1f) != 5) { goto L4; } DebugPrint(0, _t75, __rcx, _t80, _t87, _t94); _Send_LMP_Connection_PDU(_v16 + 60216); LMqos_ACLU_Packet_Connection_Finalise(); LMafh_Activate_AFH(_v16); return; } LMconnection_Post_Local_Setup_Complete() {// addr = 0x0044D71F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t46; // _t46 long long _t49; // _t49 _v16 = _t46; _v24 = _t49; *(_v24 + 37) = *(_v24 + 37) & 255 | 2; if(( *(_v24 + 37) & 255) == 3) { *((short*)(_v24 + 4)) = 1; if(( *(_v24 + 38) & 255) != 3) { *(_v24 + 14) = *(_v24 + 2) & 255; _Send_LMP_Connection_PDU(_v16 + 60216); return; } LMconnection_Finalise_Connection_Setup(); return; } return; } _Send_LMP_Connection_PDU( long long __rdi // r57 ) {// addr = 0x0044D7B5 short _v12; // _cfa_fffffff4 short _v18; // _cfa_ffffffee signed int _v22; // _cfa_ffffffea signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t44; // _t44 intOrPtr _t51; // _t51 intOrPtr _t58; // _t58 long long _t61; // _t61 long long _t63; // _t63 _v48 = __rdi; _v64 = _t63; _v72 = _t61; _v52 = _t44; _v12 = 0; _v22 = _v52 & 255; _v31 = *(_v64 + 14) & 255; _v18 = 0; _t38 = _v52 & 255; if(_t38 == 49) { _t51 = _v64; _t38 = *(_t51 + 2) & 1; _v31 = *(_t51 + 2) & 1; _v18 = 22; } else { if(_t38 > 49) { if(_t38 == 51) { *((char*)(_v64 + 33)) = 1; } else { goto L9; } } else { if(( *(_t51 + 2) & 1) > 1) { L9: _v12 = 31; } else { _t58 = _v64; _t38 = *(_t58 + 38) & 255; *(_v64 + 38) = *(_t58 + 38) & 255 | 2; _v40 = _v72; } } } if(_v12 == 0) { LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v64 + 432)) + 11) & 255, *( *((intOrPtr*)(_v64 + 432)) + 11) & 0xff, &_v40); return; } return; } LMconnection_Initialise() {// addr = 0x0044D88C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t32; // _t32 _v32 = _t32; _v16 = _v32 + 60216; _LM_Link_Table_Init(); LCEVHDR_RegisterEventHandler(1, __rdx, _v32); LCEVHDR_RegisterEventHandler(2, __rdx, _v32); LCEVHDR_RegisterEventHandler(6, __rdx, _v32); LCEVHDR_RegisterEventHandler(5, __rdx, _v32); LCEVHDR_RegisterEventHandler(17, __rdx, _v32); LCEVHDR_RegisterEventHandler(20, __rdx, _v32); return; } LMconnection_ACLC_LinkDelete_CB() {// addr = 0x0044D938 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v40 = __rcx; _v28 = __edx; if(_v24 == 0 || *((intOrPtr*)(_v24 + 48)) == 0) { return; } else { LMPbback_DelTransactionByLinkIndex(_v24); return; } } LM_Record_Broadcast_Lllink( _unknown_ __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0044D979 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __al; if(_v24 == 0) { } else { if(_v28 == 4) { *((long long*)(_v16 + 69520)) = _v24; return; } if(_v28 == 3) { *((long long*)(_v16 + 69536)) = _v24; return; } if(_v28 == 2) { *((long long*)(_v16 + 69504)) = _v24; return; } } return; } LM_Create_Broadcast_LLink() {// addr = 0x0044D9D6 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed char _t29; // _t29 long long _t33; // _t33 long long _t39; // _t39 long long _t40; // _t40 _unknown_ _t43; // _t43 _v32 = _t39; _v36 = _t29; _v16 = 0; _t33 = _v32; _t40 = _t33; LINK_New(); _v16 = _t33; if(_v16 == 0) { ConvertBcastTypeToStr(_v36 & 255); DebugPrint(0, _t33, _t33, __rdx, _t40, _t43); return; } LM_Record_Broadcast_Lllink(_v36 & 255, _v32, _v16); LM_Set_Bcast_LLink_State(2, *(_v16 + 1) & 0xff, _v32); return; } LM_Set_Bcast_LLink_State( _unknown_ __edx, // r3 _unknown_ __esi, // r5 long long __rdi // r57 ) {// addr = 0x0044DA71 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __cl; _v24 = __al; if(_v20 == 2) { *(_v16 + 69497) = _v24 & 255; return; } if(_v20 == 4) { *(_v16 + 69512) = _v24 & 255; return; } if(_v20 == 3) { *(_v16 + 69528) = _v24 & 255; return; } return; } LM_Activate_Bcast_Link() {// addr = 0x0044DAC5 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed char _t21; // _t21 signed char _t27; // _t27 _unknown_ _t33; // _t33 _unknown_ _t35; // _t35 _v16 = __rdi; _t21 = _t27; _v20 = __cx; _v24 = _t21; if(_v24 != 2) { if(_v24 != 3) { ConvertBcastTypeToStr(_v24 & 255); __rcx = _t35; DebugPrint(0, _t35, _t35, __rdx, __rdi, __rsi); return 0; } *(_v16 + 9314) = _v20 & 65535; *((char*)(_v16 + 9312)) = 3; return _t21; } *(_v16 + 9282) = _v20 & 65535; *((char*)(_v16 + 9281)) = 3; return _t21; } LMconnection_LMP_Host_Connection_Req( long long __rdx, // r56 long long __rsi // r58 ) {// addr = 0x0044DB64 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t17; // _t17 long long _t31; // _t31 _v16 = _t31; _v24 = __rsi; _v32 = __rdx; if(( *(_v24 + 4) & 65535) != 1024) { return 19; } _t17 = *(_v24 + 38) & 255; if(_t17 == 3) { LMconnection_Handle_Incoming_LM_Connection_Request(); return _t17; } _Send_LMP_Connection_PDU(_v16 + 60216); return 0; } LMconnection_LMP_Accepted() {// addr = 0x0044DBDF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed short _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed short _t34; // _t34 _unknown_ _t47; // _t47 long long _t51; // _t51 long long _t55; // _t55 _v16 = _t51; _v24 = _t55; _v28 = _t34; r8d = *(_v24 + 37) & 0xff; DebugPrint(0, _v24, __rcx, _t47, _t51, _t55); if((_v28 & 65535) != 51) { L8: return 0; } if(( *(_v24 + 37) & 255) != 0) { return 12; } *((char*)(_v24 + 34)) = 1; if(( *(_v16 + 65880) & 255) != 1 || LMssp_SSP_Enabled_On_Link(_v16, _v24) != 0) { LMconnection_Local_Setup_Complete(); } else { LMsec_core_Init_Authentication(); *((short*)(_v24 + 4)) = 256; } goto L8; } LMconnection_LMP_Not_Accepted() {// addr = 0x0044DCA8 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 char _v25; // _cfa_ffffffe7 char _v26; // _cfa_ffffffe6 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 char _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t65; // _t65 char _t86; // _t86 signed short _t88; // _t88 intOrPtr _t105; // _t105 _unknown_ _t129; // _t129 _unknown_ _t135; // _t135 long long _t144; // _t144 long long _t151; // _t151 _v48 = _t144; _v56 = _t151; _v64 = _t86; _v60 = _t88; _t106 = *fs:0x28]; _v16 = *fs:0x28]; _v26 = 0; _v25 = 0; _v24 = 0; _t65 = _v60 & 65535; if(_t65 == 51) { _t105 = _v64; if(_t105 == 0) { DebugPrint(0, _t106, _t129, _t135, _t144, _t151); *((char*)(_v56 + 92)) = 31; } *((char*)(_v56 + 92)) = _v64; LMconnection_Send_LMP_Detach(); } else { if(_t65 == 32515) { if(( *(_v56 + 36) & 255) != 1) { r8 = &_v25; *__rsp = &_v24; r9 = r8; r8 = &_v26; EG_Event_Composer(0); } else { r8d = 0; LMP_Send_Name_Req(); } } else { if(_t65 == 39) { if(( *(_v56 + 38) & 255) != 3) { _t120 = _v56; if(( *(_v56 + 2) & 255) != 0) { LMconnection_Finalise_Connection_Setup(); *(_v56 + 38) = 3; } else { if(_v64 == 0) { DebugPrint(0, _t120, _t129, _t135, _t144, _t151); *((char*)(_v56 + 92)) = 31; } *((char*)(_v56 + 92)) = _v64; LMconnection_Send_LMP_Detach(); } } else { r8 = &_v24; EG_Event_Composer(0); } } } } if(_t105 == 0) { return 0; } else { __stack_chk_fail(); return 0; } } LMconnection_Finalise_Connection_Setup() {// addr = 0x0044DEC1 short _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t129; // _t129 _unknown_ _t168; // _t168 _unknown_ _t173; // _t173 long long _t177; // _t177 long long _t189; // _t189 _v32 = _t177; _v40 = _t189; _v12 = 0; _v24 = 0; DebugPrint(0, _t129, _t168, _t173, _t177, _t189); *((short*)(_v40 + 56)) = 40; LMbw_Adjust_Link_Priority(); _v24 = _v40 + 624; *_v24 = 2047; *((char*)(_v24 + 4)) = ( *(_v40 + 117) & 255) != 0; *((char*)(_v40 + 32)) = 1; *((short*)(_v40 + 10)) = 0; if(( *(_v32 + 69497) & 255) == 0) { LM_Create_Broadcast_LLink(); } if(( *(_v32 + 191033) & 1) == 0) { L7: if(( *(_v32 + 191088) & 255) != 0 || LMtst_Get_DUT_Mode() == 0) { if(( *(_v32 + 60220) & 255) == 1) { RADIO_Start_Temperature_Monitor(_v32); } } if(( *(_v32 + 191082) & 255) == 0) { r8d = 0; LMP_Send_L2Cap_Flow(); } LMch_Enable_L2CAP_Traffic(); _Send_HC_Connection_Complete_Event_ACL(); if(( *(_v40 + 2) & 255) != 1) { return; } else { EG_Event_Composer(0); r9d = UDM_ComputeSR( *(_v32 + 190518) & 0xffff, *(_v32 + 190520) & 0xffff) & 255; r8d = 0; LMP_Send_Page_Scan_Mode_Req(); return; } } if(( *(_v32 + 69512) & 255) == 0) { LM_Create_Broadcast_LLink(); } if(( *(_v32 + 69528) & 255) == 0) { LM_Create_Broadcast_LLink(); } goto L7; } LMconnection_LMP_Setup_Complete() {// addr = 0x0044E12D intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t104; // _t104 long long _t107; // _t107 long long _t111; // _t111 long long _t116; // _t116 _v32 = _t111; _v40 = _t116; _v48 = _t107; _v12 = 0; if(( *(_v40 + 33) & 255) != 1) { L3: if(( *(_v40 + 37) & 1) == 0) { *(_v40 + 37) = *(_v40 + 37) & 255 | 1; DebugPrint(0, _v40, _t104, _t107, _t111, _t116); _t89 = _v40; if(( *(_v40 + 37) & 255) != 3) { DebugPrint(0, _t89, _t104, _t107, _t111, _t116); } else { DebugPrint(0, _t89, _t104, _t107, _t111, _t116); *((short*)(_v40 + 4)) = 1; if(( *(_v40 + 38) & 255) != 3) { *(_v40 + 14) = *(_v40 + 2) & 255; _Send_LMP_Connection_PDU(_v32 + 60216); } else { LMconnection_Finalise_Connection_Setup(); } } return; } return; } _t98 = _v40; if(( *(_v40 + 34) & 255) != 0) { goto L3; } DebugPrint(0, _t98, _t104, _t107, _t111, _t116); LMch_Disable_L2CAP_Traffic(); *(_v40 + 14) = *(_v40 + 2) & 255; *((char*)(_v40 + 92)) = 36; LMconnection_Send_LMP_Detach(); return; } LMconnection_LMP_Detach( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0044E2BC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; if( *((intOrPtr*)(_v24 + 24)) != 0) { r8 = *((intOrPtr*)(_v24 + 24)); r8(); } return 0; } LMconnection_LMP_Name_Req( long long __rdi // r57 ) {// addr = 0x0044E306 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 intOrPtr _v24; // _cfa_ffffffe8 intOrPtr _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 signed char _v50; // _cfa_ffffffce short _v54; // _cfa_ffffffca signed int _v60; // _cfa_ffffffc4 signed int _v61; // _cfa_ffffffc3 signed char _v62; // _cfa_ffffffc2 signed int _v63; // _cfa_ffffffc1 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed char* _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed char* _t84; // _t84 intOrPtr _t88; // _t88 signed char* _t97; // _t97 long long _t105; // _t105 _v80 = __rdi; _v88 = _t105; _v96 = _t97; _v10 = 0; _v9 = *_v96 & 255; _t84 = &_v40; BTCFG_ReadLocalName(); do { _t84 = &(_t84[_v32]); } while(( *_t84 & 255) != 0 && (_v10 & 255) < _v24); *(_v88 + 14) = *(_v88 + 2) & 255 ^ 1; if(( *(_v88 + 36) & 255) == 0) { *(_v88 + 36) = 1; } _v54 = 2; if(_v9 == 0 || (_v9 & 255) < _v10) { if((_v10 & 255) - (_v9 & 255) <= 14) { _v62 = 14; } else { _v62 = 14; } } else { _v62 = 0; } _t88 = _v88; _v63 = *(_t88 + 14) & 255; _v60 = _v10 & 255; _v61 = _v9 & 255; _v72 = _t88 + _v32; _v50 = 0; __esi = *( *((intOrPtr*)(_v88 + 432)) + 11) & 0xff; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v88 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v88 + 432)) + 11) & 0xff, &_v72); return 0; } LMconnection_LMP_Features_Req() {// addr = 0x0044E431 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t64; // _t64 long long _t65; // _t65 long long _t70; // _t70 long long _t73; // _t73 _v32 = _t70; _v40 = _t73; _v48 = _t65; _v12 = 0; *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; LMutils_Array_Copy(8, _v48, _v48, _v40 + 40); _t64 = _v32 + 191032; _Send_LMP_Connection_PDU(_v32 + 60216); if(( *(_v40 + 4) & 65535) == 1 && ( *(_v40 + 2) & 255) == 1 && ( *(_v40 + 38) & 255) == 2) { LMconnection_Finalise_Connection_Setup(); DebugPrint(0, _v32, _t64, _v40, _v32, _v40); } *(_v40 + 38) = *(_v40 + 38) & 255 | 1; return _v12; } LMconnection_LMP_Features_Res() {// addr = 0x0044E511 signed char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t114; // _t114 long long _t206; // _t206 long long _t214; // _t214 long long _t223; // _t223 _v32 = _t214; _v40 = _t223; _v48 = _t206; _v12 = 0; __edi = 8; LMutils_Array_Copy(8, _v48, _v48, _v40 + 40); if(( *(_v40 + 18) & 255) != 0) { DM_Clear_Timer(); *(_v40 + 18) = 0; } if(( *(_v40 + 4) & 65535) == 1 || ( *(_v40 + 4) & 65535) == 4 || ( *(_v40 + 4) & 65535) == 8) { if(( *(_v40 + 38) & 255) != 3) { goto L7; } else { r8 = _v48; EG_Event_Composer(0); goto L18; } } else { L7: if(( *(_v40 + 2) & 255) != 0 || ( *(_v40 + 4) & 65535) == 1) { if(( *(_v40 + 38) & 255) != 3) { _t114 = *(_v40 + 4) & 65535; if(_t114 != 1) { LMconnection_Handle_Incoming_LM_Connection_Request(); if(_t114 != 0) { LM_Encode_LMP_Not_Accepted_PDU(_v32 + 60216); } } } } else { if(( *(_v32 + 191039) & 255) < 0 && ( *(_v40 + 47) & 255) < 0) { if(( *(_v40 + 39) & 255) != 3) { *(_v40 + 39) = *(_v40 + 39) & 255 | 2; r8 = _v32 + 191032; *__rsp = _v32 + 191040; r9 = r8; r8d = 1; LMP_Send_Features_Req_Ext(); } } } L18: *(_v40 + 38) = *(_v40 + 38) & 255 | 1; if(( *(_v40 + 2) & 255) == 0 && ( *(_v40 + 4) & 65535) != 1 && (( *(_v32 + 191039) & 255) >= 0 || ( *(_v40 + 47) & 255) >= 0 || ( *(_v40 + 39) & 255) == 3)) { *(_v40 + 14) = 0; if(( *(_v40 + 36) & 255) != 2) { r8d = 0; LMP_Send_Name_Req(); } else { _Send_LMP_Connection_PDU(_v32 + 60216); } } return _v12; } } LMconnection_LMP_Features_Req_Ext() {// addr = 0x0044E7E4 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t65; // _t65 long long _t67; // _t67 _v32 = _t67; _v40 = __rsi; _v48 = _t65; _v9 = casting_uint8(_v48); if(( *(_v32 + 191039) & 255) >= 0) { *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; if(( *_v48 & 255) == 1 && ((_v48[2]) & 1) != 0) { *((char*)(_v40 + 112)) = 1; } r8 = _v32 + 191040; r9 = _v32 + 191032; *__rsp = r8; r8d = _v9 & 255; LMP_Send_Features_Res_Ext(); *((char*)(_v40 + 39)) = 3; return 0; } return 26; } LMconnection_LMP_Features_Res_Ext() {// addr = 0x0044E8CA signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t96; // _t96 long long _t171; // _t171 long long _t178; // _t178 long long _t187; // _t187 _v32 = _t178; _v40 = _t187; _v48 = _t171; _v11 = 0; _v10 = 0; _v9 = 0; _v24 = 0; _v10 = casting_uint8(_v48); _v9 = casting_uint8(_v48 + 1); _v24 = _v48 + 2; if((_v10 & 255) == 1) { if(( *_v24 & 1) != 0) { *((char*)(_v40 + 112)) = 1; } } if(( *(_v40 + 4) & 65535) == 1 || ( *(_v40 + 4) & 65535) == 4 || ( *(_v40 + 4) & 65535) == 8) { r8 = &_v9; *__rsp = _v24; r9 = r8; r8 = &_v10; EG_Event_Composer(0); L18: *(_v40 + 39) = *(_v40 + 39) & 255 | 1; return _v11 & 0xff; } else { if(( *(_v40 + 2) & 255) != 0 || ( *(_v40 + 4) & 65535) == 1) { if(( *(_v40 + 38) & 255) != 3) { _t96 = *(_v40 + 4) & 65535; if(_t96 != 1) { LMconnection_Handle_Incoming_LM_Connection_Request(); if(_t96 != 0) { LM_Encode_LMP_Not_Accepted_PDU(_v32 + 60216); } } } } else { if(( *(_v40 + 36) & 255) != 2) { EG_Event_Composer(0); if(( *_v24 & 1) != 0) { *((char*)(_v40 + 112)) = 1; } r8d = 0; LMP_Send_Name_Req(); } else { *(_v40 + 14) = 0; _v11 = LMP_Send_Host_Connection_Req(); } } goto L18; } } LMconnection_Send_LMP_Detach() {// addr = 0x0044EB28 _unknown_ _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 _unknown_ _t23; // _t23 signed int _t34; // _t34 long long _t50; // _t50 long long _t54; // _t54 _v32 = _t50; _v40 = _t54; _v44 = _t34; _v16 = _v32 + 68007; if(_v40 != 0) { *_v16 = 1; r9d = 0; r8d = _v44 & 255; LMP_Send_Detach(); LMconnection_Disconnect_Acl(); *_v16 = 0; return; } return; } LMconnection_Disconnect_ACL_Finialize() {// addr = 0x0044EBD9 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char _v52; // _cfa_ffffffcc signed int _v53; // _cfa_ffffffcb signed int _v54; // _cfa_ffffffca signed int _v55; // _cfa_ffffffc9 char _v56; // _cfa_ffffffc8 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 signed char* _v120; // _cfa_ffffff88 _unknown_ __rbp; // r59 intOrPtr _t245; // _t245 long long _t270; // _t270 long long _t287; // _t287 signed char* _t300; // _t300 _v112 = _t287; _v120 = _t300; _v40 = _v120; _v9 = 0; _v32 = &_v104; if(((_v40[0x25]) & 255) != 3) { if(((_v40[0x24]) & 255) == 2) { _t295 = _v112 + 191308; if(BTSTS_CheckDeviceState(512, _v112 + 191308) == 0) { _t263 = _v40; if(((_v40[0x5c]) & 255) == 0) { DebugPrint(0, _t263, _t277, _t281, _t295, _t300); (_v40[0x5c]) = 3; } _t277 = _v40; _t300 = _v40; _t287 = _v112; _Send_HC_Connection_Complete_Event_ACL(); } else { _v12 = 1032; BTSTS_ClearDeviceState(); _t270 = _v32; write_du(1, &_v9, _t270, _v32 + 24); _v32 = _t270; write_end_du(6, _v32, &(_v40[0x1a8])); _t281 = &_v104; EG_Generate_Command_Complete_Event(); _t277 = _v40; _t300 = _v40; _t287 = _v112; _Send_HC_Connection_Complete_Event_ACL(); } } } else { _t281 = _v40; _t300 = _v40; _t287 = _v112; _Send_HC_Disconnection_Complete(); } if(((_v40[2]) & 255) != 1) { _t220 = _v40; if(((_v40[4]) & 0x20) == 0) { *(_v112 + 60220) = _v112 - 1; *(_v112 + 60223) = _v112 - 1; } else { DebugPrint(0, _t220, _t277, _t281, _t287, _t300); } } else { *((char*)(_v112 + 60222)) = _v112 - 1; *(_v112 + 60220) = _v112 - 1; } r9d = *(_v112 + 60220) & 0xff; r8d = *(_v112 + 60223) & 0xff; DebugPrint(0, _v112, _t277, _t281, _t287, _t300); if(((_v40[2]) & 255) != 1) { if(((_v40[2]) & 255) == 0 && ((_v40[0x3d]) & 255) != 0) { DebugPrint(0, _v40, _t277, _t281, _t287, _t300); LMconfig_LM_Sctnet_State_Remove_S(); } } else { LMconfig_LM_Sctnet_State_Remove_S(); } if(( *(_v112 + 60220) & 255) == 0) { if( *(_v112 + 69504) != 0) { _t300 = *(_v112 + 69504); r9d = 0; r8 = &(_v40[0x188]); LCCMD_SetEncryption(); } _t291 = _v112; RADIO_Stop_Temperature_Monitor(_v112); if(( *(_v112 + 60220) & 255) == 0) { _v24 = 2; _t245 = _v112; ioctl(); _v16 = 0; if(_v16 >= 0) { DebugPrint(0, _t245, _t277, ?_? ( &_v24), _t291, _t300); } else { DebugPrint(0, _t245, _t277, &_v24, _t291, _t300); perror(); } if( *((intOrPtr*)(_v112 + 191676)) > 510) { *((intOrPtr*)(_v112 + 191676)) = 511; } } } _v56 = *_v40 & 255; _v52 = (_v40[0x1b8]); _v55 = (_v40[0x10]) & 255; _v54 = 0; _v53 = 0; RtlCopyMemory(6, &((char*)( &_v56)[2]), &(_v40[0x1a8])); LMEvt_FireEvent(); LM_Delete_Link_Table_Entry(_v112 + 60216); return; } LMconnection_Handle_Link_Flush_Event() {// addr = 0x0044F017 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t141; // _t141 intOrPtr _t146; // _t146 long long _t160; // _t160 long long _t170; // _t170 long long _t184; // _t184 _v48 = _t170; _v56 = _t184; _v64 = _t160; _v16 = 31; if(_v56 == 0) { return; } if(( *(_v56 + 1) & 255) != 5) { if(( *(_v56 + 1) & 255) != 8) { if(( *(_v56 + 1) & 255) == 15) { LM_Find_Link_Table_Entry_By_LLink(); _v32 = _v56; if(_v32 != 0) { if(( *(_v32 + 516) & 1) == 0) { LMconnection_Disconnect_ACL_Finialize(); __esi = 4; Radio_EventCallback(4, _v32, _v48); } else { LMpolicy_Park_Complete(); } } _v16 = 0; } } else { LM_Find_Link_Table_Entry_By_LLink(); _v32 = *((intOrPtr*)(_v56 + 80)); if(_v32 != 0) { *((long long*)(_v32 + 768)) = 0; if( *((intOrPtr*)(_v32 + 432)) != 0) { LLINK_ReadPicoClock(_v48, *((intOrPtr*)(_v32 + 432))); LCCMD_LinkDeleteRequest(); } } _v16 = 0; } } else { LM_Find_Link_Table_Entry_By_LLink(); _v32 = *((intOrPtr*)(_v56 + 80)); _t141 = _v56; LMscoctr_Find_SCO_By_LC_SCO_Link(_v48 + 66256, _v48 + 66256, _t141); _v24 = _t141; if(_v32 != 0 && _v24 != 0) { *((long long*)(_v24 + 72)) = 0; if(( *(_v24 + 10) & 255) == 2 && (( *(_v24 + 2) & 255) == 3 || ( *(_v24 + 2) & 255) == 4 || ( *(_v24 + 2) & 255) == 2)) { *((long long*)(_v24 + 72)) = _v56; } _v10 = *(_v24 + 32) & 255; _v9 = *(_v24 + 33) & 255; _t146 = _v24; _t100 = *(_t146 + 10) & 255; if(( *(_t146 + 10) & 255) != 2) { LMsco_Event_Callback(_t100); } else { LMesco_Event_Callback(_t100); } if(( *(_v32 + 4) & 0x7000) != 0) { _v16 = LMsco_Free_All_SCO_Links(_v10 & 255); if(_v16 != 0) { LMconnection_Disconnect_Acl(); } } } } return; } LMconnection_Disconnect_Acl() {// addr = 0x0044F2D4 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 intOrPtr _t92; // _t92 intOrPtr _t125; // _t125 _unknown_ _t149; // _t149 long long _t155; // _t155 intOrPtr _t158; // _t158 long long _t164; // _t164 intOrPtr _t167; // _t167 _v32 = _t155; _v40 = _t164; _v44 = _t92; _v16 = _v40; DebugPrint(0, _v40, __rcx, _t149, _t155, _t164); _t119 = _v16; if(( *(_v16 + 4) & 65535) != 16) { LMsec_Security_Link_Detach_Callback(); LMlpctrl_Stop_Monitor(); _t152 = _v16; _t167 = _v16; _t158 = _v32; LMafh_Deactivate_AFH(); if(( *(_v16 + 2) & 255) != 1) { _t124 = _v16; if(( *(_v16 + 86) & 255) != 0) { DebugPrint(0, _t124, __rcx, _t152, _t158, _t167); _t152 = _v16; _t167 = _v16; _t158 = _v32; LMafh_Stop_Classification_Reporting(); } } else { _t152 = _v16; _t167 = _v16; _t158 = _v32; LMafh_Stop_Classification_Reporting(); } _t125 = _v16; _t126 = *((intOrPtr*)(_t125 + 768)); if( *((intOrPtr*)(_t125 + 768)) == 0) { if(( *(_v16 + 35) & 255) == 0) { r9d = *(_v16 + 36) & 0xff; r8d = *(_v16 + 35) & 0xff; DebugPrint(0, _v16, __rcx, _t152, _t158, _t167); } if( *((intOrPtr*)(_v16 + 432)) == 0) { r9d = *(_v16 + 36) & 0xff; r8d = *(_v16 + 35) & 0xff; _t63 = DebugPrint(0, _v16, __rcx, _t152, _t158, _t167); } if( *((intOrPtr*)(_v16 + 432)) == 0) { return; } else { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v16 + 432))); LCCMD_LinkDeleteRequest(); return; } } else { DebugPrint(0, _t126, __rcx, _t152, _t158, _t167); LMch_Disable_L2CAP_Traffic(); LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v16 + 768))); LCCMD_LinkDeleteRequest(); return; } } DebugPrint(0, _t119, __rcx, _t149, _t155, _t164); return; } _LMconnection_Validate_ACL_Admission() {// addr = 0x0044F535 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t29; // _t29 intOrPtr _t73; // _t73 long long _t75; // _t75 intOrPtr _t77; // _t77 _unknown_ _t81; // _t81 _unknown_ _t83; // _t83 long long _t86; // _t86 _unknown_ _t90; // _t90 long long _t91; // _t91 long long _t93; // _t93 _v32 = _t86; _v40 = _t91; _v12 = 0; _t70 = _v32 + 191308; _t87 = _v32 + 191308; if(BTSTS_CheckDeviceState(1024, _v32 + 191308) == 0) { _t72 = _v32 + 191308; _t88 = _v32 + 191308; _t29 = BTSTS_CheckDeviceState(256, _v32 + 191308); if(_t29 == 0) { _t73 = _v32; _t82 = _t73 + 191072; _t74 = _v40; _t92 = _t73 + 191072; _t89 = _v40; RtlCompareMemory(6, _v40, _t73 + 191072); if(_t29 != 0) { _t75 = _v40; _t85 = _v32 + 60216; _t93 = _t75; _t90 = _v32 + 60216; LM_Find_Link_Table_Entry(); _v24 = _t75; if(_v24 != 0) { if(( *(_v24 + 4) & 0x7000) == 0) { _t77 = _v24; _t78 = *((intOrPtr*)(_t77 + 432)); if( *((intOrPtr*)(_t77 + 432)) != 0) { _t78 = *((intOrPtr*)(_v24 + 432)); } DebugPrint(0, _t78, _t82, _t85, _t90, _t93); _v12 = 11; } else { DebugPrint(0, _v24, _t82, _t85, _t90, _t93); _v12 = 12; } } } else { DebugPrint(0, _t74, _t82, _t83, _t89, _t92); _v12 = 18; } } else { DebugPrint(0, _t72, _t81, _t83, _t88, _t91); _v12 = 12; } } else { DebugPrint(0, _t70, _t81, _t83, _t87, _t91); _v12 = 12; } return _v12; } LM_Exec_BB_ACK_CB( _unknown_ __rax // r53 ) {// addr = 0x0044F6D0 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 intOrPtr _t71; // _t71 long long _t72; // _t72 long long _t75; // _t75 intOrPtr _t82; // _t82 long long _t83; // _t83 _unknown_ _t86; // _t86 long long _t88; // _t88 long long _t92; // _t92 _unknown_ _t93; // _t93 _unknown_ _t94; // _t94 long long _t96; // _t96 long long _t97; // _t97 long long _t98; // _t98 _v96 = _t92; _v104 = _t96; _v112 = _t88; if(_v112 != 0) { _t71 = _v96; _t89 = _t71 + 60216; _t72 = _v104; _t97 = _t72; _t93 = _t71 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v32 = _t72; if(_v32 != 0) { _v12 = *(_v112 + 1) & 0xff; DebugPrint(0, _v112, _t86, _t89, _t93, _t97); _t75 = *((intOrPtr*)(_v32 + 432)); LMPbback_SearchByTransactionID( *(_t75 + 11) & 0xff, _v12 & 0xff); _v24 = _t75; if(_v24 == 0) { if((_v12 & 65535) > 32) { return; } goto __rax; } if( *((intOrPtr*)(_v24 + 8)) != 0) { _t82 = _v96; _t90 = _t82 + 60216; _t83 = _v104; _t98 = _t83; _t94 = _t82 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v32 = _t83; if(_v32 != 0) { DebugPrint(0, _t83, _t86, _t90, _t94, _t98); *((long long*)( *((intOrPtr*)(_v24 + 8))))(); } } LMPbback_DelTransactionByTId( *((intOrPtr*)(_v32 + 432))); return; } return; } return; } LMconnection_Handle_Incoming_LM_Connection_Request() {// addr = 0x0044FB7D signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 intOrPtr _t145; // _t145 _unknown_ _t160; // _t160 _unknown_ _t164; // _t164 long long _t173; // _t173 _unknown_ _t175; // _t175 long long _t189; // _t189 _unknown_ _t190; // _t190 _v32 = _t173; _v40 = _t189; _v16 = 0; _v12 = 2; *(_v40 + 36) = 2; *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; _t164 = _v40 + 440; _t190 = _v40 + 424; _v12 = EG_Filter_Event(2); _t86 = _v12; if(_t86 == 2) { _t126 = _v32 + 191308; _t175 = _v32 + 191308; if(LMconfig_LM_Check_Sctnet_Slv_State(_t86) != 2) { r8d = 51; LMP_Send_Accepted(); if(( *(_v32 + 65880) & 255) != 1 || LMssp_SSP_Enabled_On_Link(_v32, _v40) != 0) { LMconnection_Local_Setup_Complete(); } else { LMsec_core_Init_Authentication(); *((short*)(_v40 + 4)) = 256; } } else { DebugPrint(0, _t126, _t160, _t164, _t175, _t190); _v16 = 13; } } else { if(_t86 == 3) { *((short*)(_v40 + 4)) = 1024; *(_v40 + 64) = 1; LMpolicy_Validate_MSS_Admission(); if(_t86 != 0) { r8d = 51; LMP_Send_Accepted(); _t145 = _v32; _t86 = *(_t145 + 65880) & 255; if(( *(_t145 + 65880) & 255) != 1 || LMssp_SSP_Enabled_On_Link(_v32, _v40) != 0) { LMconnection_Local_Setup_Complete(); } else { _t86 = LMsec_core_Init_Authentication(); *((short*)(_v40 + 4)) = 256; } } else { LMTrx_NewVersion(_v32); if( *((intOrPtr*)(_v40 + 72)) != 0) { r8 = *((intOrPtr*)(_v40 + 72)); r8(); } } } else { if(_t86 == 1) { EC_CheckEventPermission(); if(_t86 != 0) { LM_Send_HC_Connection_Request(_t86, _v32); } else { *(_v40 + 36) = 1; _v16 = 19; } } else { *(_v40 + 36) = 1; _v16 = 19; } } } return; } LMconnection_LM_Connection_Cancel( _unknown_ __eax // r0 ) {// addr = 0x0044FE5D intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t52; // _t52 long long _t70; // _t70 long long _t73; // _t73 long long _t82; // _t82 long long _t83; // _t83 _v32 = _t73; _v40 = _t82; _v48 = _t70; _t52 = _v40; _t83 = _t52; LM_Find_Link_Table_Entry(); _v24 = _t52; if(_v24 == 0) { _v12 = 2; L13: return _v12; } if(( *(_v24 + 32) & 255) != 0) { _v12 = 11; L11: write_du(6, _v24 + 424, _v48, _t83); goto L13; } BTSTS_SetDeviceState(); if(BTSTS_CheckDeviceState(16, _v32 + 191308) == 0) { if(BTSTS_CheckDeviceState(256, _v32 + 191308) != 0) { if(BTSTS_CheckDeviceState(64, _v32 + 191308) == 0) { _t83 = _v24; LMconnection_Send_LMP_Detach(); } else { if( *((intOrPtr*)(_v24 + 72)) != 0) { r8 = *((intOrPtr*)(_v24 + 72)); _t83 = _v24; r8(); } } } } else { *((char*)(_v24 + 35)) = 1; } _v12 = 127; goto L11; } LMconnection_CompleteEvtSentCallback() {// addr = 0x0044FFA2 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t10; // _t10 long long _t12; // _t12 long long _t14; // _t14 long long _t16; // _t16 _v16 = _t14; _v24 = _t16; _v40 = _t12; _v28 = _t10; if(_v24 != 0) { LMch_Resume_L2CAP_Report(); return; } return; } _Send_HC_Connection_Complete_Event_ACL() {// addr = 0x0044FFDC char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 intOrPtr _t27; // _t27 _unknown_ _t33; // _t33 _unknown_ _t43; // _t43 _unknown_ _t46; // _t46 long long _t49; // _t49 long long _t52; // _t52 _v32 = _t49; _v40 = _t52; _v44 = _t27; _v9 = 1; DebugPrint(0, _t33, _t43, _t46, _t49, _t52); if(_v44 != 0) { *((short*)(_v40 + 626)) = 0; } else { *((short*)(_v40 + 4)) = 1; } _v64 = _v40 + 117; *__rsp = &_v9; r9 = _v40 + 424; r8 = _v40 + 626; EG_Event_Composer_With_Callback(0, 3); BTSTS_ClearDeviceState(); return; } LMconnection_Disconnect_Related_Links() {// addr = 0x0045009C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t14; // _t14 long long _t19; // _t19 long long _t21; // _t21 _v16 = _t19; _v24 = _t21; DebugPrint(0, _t14, __rcx, __rdx, _t19, _t21); if( *((intOrPtr*)(_v24 + 24)) != 0) { r8 = *((intOrPtr*)(_v24 + 24)); r8(); } return 0; } LMconnection_LC_LSTO_CB() {// addr = 0x004500F9 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t38; // _t38 long long _t47; // _t47 long long _t49; // _t49 signed char* _t52; // _t52 _v32 = _t49; _v40 = _t52; _v48 = _t47; if(_v40 != 0) { if(( *_v40 & 255) != 0) { LM_Find_Link_Table_Entry_By_LLink(); _v16 = _v40; if(_v16 != 0 && (_v16[0x18]) != 0) { r8 = (_v16[0x18]); r8(); } return 0; } DebugPrint(0, _v40, __rcx, _t47, _t49, _t52); return 31; } DebugPrint(0, _t38, __rcx, _t47, _t49, _t52); return 31; } _Send_HC_Disconnection_Complete() {// addr = 0x004501C8 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t21; // _t21 _v32 = _t21; _v40 = __rsi; _v12 = 0; r8 = _v40 + 92; EG_Event_Composer(0); return; } LMconnection_LM_Disconnect() {// addr = 0x0045021B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 intOrPtr _t18; // _t18 _unknown_ _t23; // _t23 _unknown_ _t29; // _t29 long long _t31; // _t31 long long _t34; // _t34 _v16 = _t31; _v24 = _t34; _v28 = _t18; DebugPrint(0, _t23, _t29, __rdx, _t31, _t34); LMch_Disable_L2CAP_Traffic(); *(_v24 + 14) = *(_v24 + 2) & 255; *((char*)(_v24 + 92)) = 22; LMconnection_Send_LMP_Detach(); return; } LMconn_Host_Disconnect_Req( _unknown_ __eax // r0 ) {// addr = 0x00450290 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char _t78; // _t78 signed short _t89; // _t89 long long _t96; // _t96 long long _t113; // _t113 _v32 = _t113; _v36 = _t89; _v40 = _t78; _v12 = 0; _t96 = _v32; _v12 = LMsco_LM_Disconnect_Req(_t96); if(_v12 == 2) { LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t96, _v32 + 60216); _v24 = _t96; if(_v24 == 0) { _v12 = 18; } else { if(( *(_v24 + 4) & 0x4000) == 0) { if(( *(_v24 + 4) & 0x3000) == 0) { _v12 = 0; *(_v24 + 4) = *(_v24 + 4) & 65535 | 64; if(( *(_v24 + 4) & 4) == 0) { if(( *(_v24 + 4) & 8) == 0) { _v12 = LMsco_Free_All_SCO_Links(22); if(_v12 != 0) { LMconnection_LM_Disconnect(); _v12 = 0; } } else { *(_v24 + 87) = _v40 & 255; LMpolicy_HCI_Exit_Park_Mode(0, _v32); } } else { *(_v24 + 87) = _v40 & 255; LMpolicy_LM_Exit_Sniff_Mode(_v32, _v24); } } else { _v12 = 0; } } else { _v12 = 18; } } } return _v12; } LM_Send_HC_Connection_Request( _unknown_ __eax, // r0 long long __rdi // r57 ) {// addr = 0x0045041F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 char _t39; // _t39 long long _t66; // _t66 _v16 = __rdi; _v24 = _t66; _v28 = _t39; if(_v28 != 1) { if(_v28 != 0) { if(_v28 == 2) { *(_v24 + 4) = *(_v24 + 4) & 65535 | 8; } } else { *(_v24 + 4) = *(_v24 + 4) & 65535 | 128; } } else { *(_v24 + 4) = 64; } r8 = &_v28; EG_Event_Composer(0); *((char*)(_v24 + 12)) = DM_Set_Timer(); return; } _LMconnection_LM_Connection_Reject( intOrPtr __edx, // r3 long long __rsi // r58 ) {// addr = 0x004504E9 signed char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 long long _t48; // _t48 _v32 = _t48; _v40 = __rsi; _v44 = __edx; _v12 = 0; if(( *(_v40 + 12) & 255) != 0) { DM_Clear_Timer(); *(_v40 + 12) = 0; } if(( *(_v40 + 4) & 65535) != 64) { _v12 = LMsco_LM_Connection_Reject(); if(_v12 != 0) { _v12 = 12; } } else { LM_Encode_LMP_Not_Accepted_PDU(_v32 + 60216); *(_v40 + 4) = 1024; } return _v12; } _LMconnection_Connection_Timeout() {// addr = 0x00450596 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 intOrPtr _t31; // _t31 intOrPtr _t33; // _t33 _unknown_ _t40; // _t40 long long _t42; // _t42 long long _t44; // _t44 _v32 = _t42; _v40 = _t44; _v16 = _v40; _t31 = _v16; _t32 = *((intOrPtr*)(_t31 + 432)); if( *((intOrPtr*)(_t31 + 432)) == 0) { DebugPrint(0, _t32, _t40, __rdx, _t42, _t44); } _t33 = _v16; _t34 = *((intOrPtr*)(_t33 + 768)); if( *((intOrPtr*)(_t33 + 768)) == 0) { _t15 = DebugPrint(0, _t34, _t40, __rdx, _t42, _t44); } if( *((intOrPtr*)(_v16 + 432)) == 0 || *((intOrPtr*)(_v16 + 768)) == 0) { return; } else { _LMconnection_LM_Connection_Reject(16, _v16); return; } } LM_Host_Accept_Connection_Request( _unknown_ __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x0045063A intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 intOrPtr _t29; // _t29 intOrPtr _t38; // _t38 intOrPtr _t40; // _t40 long long _t41; // _t41 long long _t44; // _t44 _v32 = _t41; _v40 = _t44; _v44 = _t29; LM_Find_Link_Table_Entry(); _v24 = _v40; if(_v24 == 0) { _v12 = 18; L8: return _v12; } _t38 = _v24; _t25 = *(_t38 + 4) & 65535; if(( *(_t38 + 4) & 65535) == 64) { L3: _v12 = 0; L5: if(_v12 == 0) { _v12 = LMconnection_LM_Connection_Accept(_t25); } goto L8; } _t40 = _v24; _t25 = *(_t40 + 4) & 0x80; if(( *(_t40 + 4) & 0x80) == 0) { _v12 = 12; goto L5; } goto L3; } LMconnection_LM_Connection_Accept( _unknown_ __eax // r0 ) {// addr = 0x004506D3 signed char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 short _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 short _t70; // _t70 intOrPtr _t73; // _t73 long long _t118; // _t118 long long _t127; // _t127 _v32 = _t118; _v40 = _t127; _v44 = _t73; _v48 = _t70; _v12 = 0; if(( *(_v40 + 12) & 255) != 0) { DM_Clear_Timer(); *(_v40 + 12) = 0; } if(( *(_v40 + 4) & 65535) != 64) { if(LMsco_LM_Connection_Accept(_v32) != 0) { _v12 = 12; } L13: return _v12; } if(_v44 != 0) { r8d = 51; LMP_Send_Accepted(); if(( *(_v32 + 65880) & 255) != 1 || LMssp_SSP_Enabled_On_Link(_v32, _v40) != 0) { *(_v40 + 4) = 1024; LMconnection_Local_Setup_Complete(); goto L12; } else { LMsec_core_Init_Authentication(); *(_v40 + 4) = 256; goto L13; } } else { *(_v40 + 14) = *(_v40 + 2) & 255; *(_v40 + 4) = 1024; LMTrx_NewVersion(_v32); if( *((intOrPtr*)(_v40 + 72)) != 0) { r8 = *((intOrPtr*)(_v40 + 72)); r8(); } L12: goto L13; } } LM_Host_Reject_Connection_Request( _unknown_ __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x00450871 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 intOrPtr _t19; // _t19 long long _t25; // _t25 long long _t28; // _t28 _v32 = _t25; _v40 = _t28; _v44 = _t19; LM_Find_Link_Table_Entry(); _v24 = _v40; if(_v24 == 0) { _v12 = 18; } else { _v12 = _LMconnection_LM_Connection_Reject(_v44, _v24); } return _v12; } LMconnection_LM_Auth_Complete() {// addr = 0x004508D0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 char _t31; // _t31 long long _t48; // _t48 long long _t52; // _t52 _v16 = _t48; _v24 = _t52; _v28 = _t31; if(_v28 == 0) { if(( *(_v24 + 4) & 65535) == 256) { if(( *(_v16 + 65883) & 255) == 0) { LMconnection_Local_Setup_Complete(); } else { *(_v24 + 4) = 512; *((short*)(_v24 + 134)) = 133; LMsec_Fsm_Event_Callback(); } } return 0; } *((char*)(_v24 + 92)) = _v28; LMconnection_Send_LMP_Detach(); return _v28; } LMconnection_LM_Encrypt_Complete() {// addr = 0x00450983 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 char _t18; // _t18 long long _t27; // _t27 long long _t30; // _t30 _v16 = _t27; _v24 = _t30; _v28 = _t18; if(( *(_v24 + 4) & 65535) == 512) { if(_v28 == 0) { LMconnection_Local_Setup_Complete(); } else { LMconnection_Send_LMP_Detach(); *((char*)(_v24 + 92)) = _v28; } } return 0; } LMch_Disable_L2CAP_Traffic() {// addr = 0x004509E8 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t43; // _t43 long long _t65; // _t65 _v32 = _t65; _v40 = __rsi; _v56 = __rcx; _v44 = _t43; if(_v40 != 0 && *((intOrPtr*)(_v40 + 768)) != 0) { _t66 = *((intOrPtr*)(_v40 + 768)); LLINK_SetL2CapOutFlowStop( *((intOrPtr*)(_v40 + 768))); if(( *( *((intOrPtr*)(_v40 + 768)) + 10) & 255) != 1) { if(_v56 != 0) { __rsi = *((intOrPtr*)(_v40 + 768)); r8 = _v56; _t66 = _v32; r8(); } } else { __rsi = *((intOrPtr*)(_v40 + 768)); __rdx = _v56; __rcx = __rdx; _t66 = _v32; _v9 = LCCMD_LinkFlowControlRequest(); } r9d = _v44 & 255; r8d = *( *((intOrPtr*)(_v40 + 768)) + 10) & 0xff; DebugPrint(0, *((intOrPtr*)(_v40 + 768)), __rcx, __rdx, _t66, __rsi); } return 1; } LMch_Pause_L2CAP_Report() {// addr = 0x00450AE8 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed char _t26; // _t26 long long _t39; // _t39 _v16 = _t39; _v24 = __rsi; _v28 = _t26; if(_v24 != 0 && *((intOrPtr*)(_v24 + 768)) != 0) { LLINK_PauseL2CapReport( *((intOrPtr*)(_v24 + 768))); r9d = _v28 & 255; r8d = *( *((intOrPtr*)(_v24 + 768)) + 6) & 0xff; DebugPrint(0, *((intOrPtr*)(_v24 + 768)), __rcx, __rdx, *((intOrPtr*)(_v24 + 768)), __rsi); } return 1; } LMch_Enable_L2CAP_Traffic() {// addr = 0x00450B77 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t43; // _t43 long long _t65; // _t65 _v32 = _t65; _v40 = __rsi; _v56 = __rcx; _v44 = _t43; if(_v40 != 0 && *((intOrPtr*)(_v40 + 768)) != 0) { _t66 = *((intOrPtr*)(_v40 + 768)); LLINK_SetL2CapOutFlowGo( *((intOrPtr*)(_v40 + 768))); if(( *( *((intOrPtr*)(_v40 + 768)) + 10) & 255) != 0) { if(_v56 != 0) { __rsi = *((intOrPtr*)(_v40 + 768)); r8 = _v56; _t66 = _v32; r8(); } } else { __rsi = *((intOrPtr*)(_v40 + 768)); __rdx = _v56; __rcx = __rdx; _t66 = _v32; _v9 = LCCMD_LinkFlowControlRequest(); } r9d = _v44 & 255; r8d = *( *((intOrPtr*)(_v40 + 768)) + 10) & 0xff; DebugPrint(0, *((intOrPtr*)(_v40 + 768)), __rcx, __rdx, _t66, __rsi); } return 1; } LMch_Resume_L2CAP_Report() {// addr = 0x00450C77 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed char _t26; // _t26 long long _t39; // _t39 _v16 = _t39; _v24 = __rsi; _v28 = _t26; if(_v24 != 0 && *((intOrPtr*)(_v24 + 768)) != 0) { LLINK_ResumeL2CapReport( *((intOrPtr*)(_v24 + 768))); r9d = _v28 & 255; r8d = *( *((intOrPtr*)(_v24 + 768)) + 6) & 0xff; DebugPrint(0, *((intOrPtr*)(_v24 + 768)), __rcx, __rdx, *((intOrPtr*)(_v24 + 768)), __rsi); } return 1; } LMconnection_Discover_Role_Command( _unknown_ __rax // r53 ) {// addr = 0x00450D06 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t23; // _t23 long long _t26; // _t26 long long _t29; // _t29 long long _t32; // _t32 long long _t34; // _t34 _v32 = _t34; _v48 = _t32; _v36 = _t23; _t26 = _v32; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t26, _t26); _v16 = _t26; if(_v16 == 0) { return 2; } _t29 = _v48; __ecx = 2; write_du(2, _v16 + 626, _t29, _v48 + 24); _v48 = _t29; write_end_du(1, _v48, _v16 + 2); return 0; } LM_GetLmLinkByLinkId( signed int __esi, // r5 signed int __rax, // r53 signed int __rdi // r57 ) {// addr = 0x00450D8B long long _v16; // _cfa_fffffff0 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t13; // _t13 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _t13 = __esi; _v36 = __esi; _v16 = 0; if(_v36 <= 6) { _t13 = *(__rax * 808 + _v32 + 9) & 255; if(_t13 != 0) { _t13 = _v36 & 255; _v16 = _v32 * 808 + _v32 + 8; } } return _t13; } LM_Connection_Event_Handler( _unknown_ __eax // r0 ) {// addr = 0x00450DE2 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char _v76; // _cfa_ffffffb4 signed char* _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed int _t139; // _t139 signed int _t141; // _t141 signed int _t150; // _t150 signed char _t175; // _t175 _unknown_ _t262; // _t262 long long _t281; // _t281 _v64 = _t273; _v72 = _t281; _v88 = _t259; _v76 = _t175; _v12 = 0; _v48 = _v64 + 68007; _t139 = _v76 & 255; if(_t139 == 1) { *_v48 = 1; *(_v72 + 4) = *(_v72 + 4) & 65535 | 16; *(_v72 + 92) = 8; _v10 = 8; _t141 = _v10 & 255; _v9 = _t141; *_v48 = 0; if( *((intOrPtr*)(_v72 + 792)) != _v72 + 792 || *((intOrPtr*)(_v72 + 800)) != _v72 + 792) { _v40 = *((intOrPtr*)(_v72 + 792)); _v32 = _v40 - 288; if( *((intOrPtr*)(_v32 + 272)) != 0) { r10 = *((intOrPtr*)(_v32 + 272)); r9d = 0; r8d = 0; r10(); _v12 = _t141; } } if(_v12 == 0) { _v16 = LMsco_Free_All_SCO_Links(_v9 & 255); if(_v16 != 0) { LMconnection_Disconnect_Acl(); } LMtst_Testmode_Exit(); } _v12 = 1; L35: return _v12 & 255; } if(_t139 == 2) { if(( *(_v72 + 4) & 0x7000) == 0) { _t221 = _v88; _v11 = *_v88 & 255; _v10 = _v11 & 255; _v9 = _v10 & 255; if(_v11 == 0) { DebugPrint(0, _t221, _t259, _t262, _t273, _t281); _v11 = 31; } _t150 = *(_v72 + 4) & 65535; *(_v72 + 4) = _t150 | 32; *((short*)(_v72 + 10)) = 7; *(_v72 + 92) = _v11 & 255; if( *((intOrPtr*)(_v72 + 768)) != 0) { _t273 = *((intOrPtr*)(_v72 + 768)); LLINK_Suspend( *((intOrPtr*)(_v72 + 768))); } if( *((intOrPtr*)(_v72 + 432)) != 0) { _t273 = *((intOrPtr*)(_v72 + 432)); LLINK_Suspend( *((intOrPtr*)(_v72 + 432))); } _t270 = _v72 + 792; if( *((intOrPtr*)(_v72 + 792)) != _v72 + 792) { L22: _v40 = *((intOrPtr*)(_v72 + 792)); _v32 = _v40 - 288; if( *((intOrPtr*)(_v32 + 272)) != 0) { r10 = *((intOrPtr*)(_v32 + 272)); _t259 = _v88; _t270 = _v32; _t281 = _v72; r9d = 1; r8 = _v88; _t273 = _v64; r10(); _v12 = _t150; } goto L24; } else { _t270 = _v72 + 792; if( *((intOrPtr*)(_v72 + 800)) == _v72 + 792) { L24: if(_v12 == 0) { _v11 = *_v88 & 255; _v10 = _v11 & 255; _v9 = _v10 & 255; _t239 = _v48; *_v48 = 1; if(_v11 == 0) { DebugPrint(0, _t239, _t259, _t270, _t273, _t281); *(_v72 + 92) = 31; } *(_v72 + 92) = _v11 & 255; if(( *(_v72 + 2) & 255) != 0) { _v20 = ( *(_v72 + 56) & 0xffff) + ( *(_v72 + 56) & 0xffff) + ( *(_v72 + 56) & 0xffff); } else { _v20 = ( *(_v72 + 56) & 0xffff) + ( *(_v72 + 56) & 0xffff) + _t187 + ( *(_v72 + 56) & 0xffff) + ( *(_v72 + 56) & 0xffff) + _t187; } _v16 = LMsco_Free_All_SCO_Links(_v9 & 255); if(_v16 != 0) { LMconnection_Disconnect_Acl(); } *_v48 = 0; LMtst_Testmode_Exit(); } goto L35; } goto L22; } } *(_v72 + 4) = *(_v72 + 4) & 65535 | 32; return 0; } else { goto L35; } } BDADDR_Assign( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x004511AC signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00451212 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00451251 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } dump_list() {// addr = 0x00451283 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0045134B signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LLINK_Suspend( long long __rdi // r57 ) {// addr = 0x0045172C long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 1; return; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x0045173E long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00451750 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LMdm_Get_LC_ACLC_Link( long long __rdi // r57 ) {// addr = 0x00451891 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t5; // _t5 __rdi = __rdi; _v16 = __rdi; if(_v16 == 0) { return 0; } return _t5; } Is_HCI_eSCO_Packet_Type( signed short __edi // r4 ) {// addr = 0x004518B1 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; return (_v12 & 0x3f8) != 0; } Is_HCI_SCO_Packet_Type( signed short __edi // r4 ) {// addr = 0x004518CB signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; return (_v12 & 7) != 0; } Is_HCI_SYN_Packet_Type( signed short __edi // r4 ) {// addr = 0x004518E3 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; return (_v12 & 0x3ff) != 0; } LMsco_Covert_LM_To_LC_SCO_Packet_Type( char __edi // r4 ) {// addr = 0x004518FD char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; if(_v12 != 0) { if(_v12 != 1) { if(_v12 != 2) { return 5; } return 7; } return 6; } return 5; } LMsco_LC_Add_SCO_Link_CB( _unknown_ __rax // r53 ) {// addr = 0x00451934 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 char _v12; // _cfa_fffffff4 signed char _v13; // _cfa_fffffff3 char _v16; // _cfa_fffffff0 char _v18; // _cfa_ffffffee signed int _v20; // _cfa_ffffffec signed char _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 signed char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed char _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 long long _v104; // _cfa_ffffff98 long long _v120; // _cfa_ffffff88 char* _v128; // _cfa_ffffff80 char* _v136; // _cfa_ffffff78 char* _v144; // _cfa_ffffff70 _unknown_ __rbp; // r59 signed char _t83; // _t83 signed char _t95; // _t95 signed char _t113; // _t113 long long _t128; // _t128 long long _t145; // _t145 signed char _t153; // _t153 _v80 = _t145; _v88 = _t153; _v104 = _t128; _v92 = _t95; _v72 = 0; _v64 = 0; _v56 = 0; _v40 = 0; _v36 = 0; _v20 = 0; _v13 = 0; _v12 = 0; _v11 = 0; _v18 = 0; _v16 = 0; _v9 = 0; _v10 = 0; if((_v92 & 255) != 0) { _t83 = 31; } else { _t83 = 0; } _v92 = _t83; if((_v92 & 255) == 0) { _v48 = _v104; _v56 = _v88; _t113 = _v56; LMdm_Get_LC_ACLC_Link(_t113); LMscoctr_Find_Pending_SCO_By_ACLC_Link(_v80 + 66256, _v80 + 66256, _t113); _v72 = _t113; if(_v72 != 0) { LLINK_Resume( *((intOrPtr*)( *(_v72 + 64) + 432))); *_v72 = 4; *(_v72 + 72) = _v56; _v64 = *(_v72 + 64); BDADDR_Assign( &_v40, _v64 + 424); _v20 = *(_v72 + 8) & 65535; _v13 = *(_v72 + 10) & 255; _v9 = *(_v72 + 17) & 255; _v10 = *(_v72 + 25) & 255; LMsco_Transmit_SCO_Silence_Packet(); } } if(_v10 == 0) { r8 = &_v13; _v120 = _v72 + 17; _v128 = &_v16; _v136 = &_v18; _v144 = &_v11; *__rsp = &_v12; r9 = r8; r8 = &_v40; EG_Event_Composer(0); return; } else { r8 = _v64 + 117; *__rsp = r8; r9 = &_v13; r8 = &_v40; EG_Event_Composer(0); return; } } LMsco_LC_Modify_SCO_Pkt_Type_CB( _unknown_ __rax // r53 ) {// addr = 0x00451B43 char _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed int _t48; // _t48 long long _t55; // _t55 long long _t61; // _t61 signed int _t65; // _t65 _v48 = _t61; _v56 = _t65; _v72 = _t55; _v60 = __edx; _v16 = 0; _v12 = 0; _v40 = 0; if((_v60 & 255) == 0) { _v32 = _v72; _v24 = _v56; _t48 = _v24; LMscoctr_Find_SCO_By_LC_SCO_Link(_v48 + 66256, _v48 + 66256, _t48); _v40 = _t48; if(_v40 != 0) { LLINK_Resume( *((intOrPtr*)( *((intOrPtr*)(_v40 + 64)) + 432))); *_v40 = 4; _v16 = *(_v40 + 8) & 0xffff; _v12 = *(_v40 + 4); } } r8 = &_v12; EG_Event_Composer(0); return; } LMsco_LC_Add_eSCO_Link_CB() {// addr = 0x00451C16 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t26; // _t26 long long _t41; // _t41 long long _t44; // _t44 _v48 = _t41; _v56 = _t44; _v72 = __rcx; _v60 = _t26; if(_v60 != 0) { } else { _v32 = *((intOrPtr*)(_v48 + 67952)); if(_v32 != 0) { LMsco_Transmit_eSCO_Silence_Packet(); _v24 = _v72; _v16 = _v56; *((long long*)(_v32 + 72)) = _v16; _Finalise_Synchronous_Connection_Setup(); return; } } return; } LMsco_LC_Modify_eSCO_Pkt_Type_CB( _unknown_ __rax // r53 ) {// addr = 0x00451C9F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 long long _t26; // _t26 long long _t29; // _t29 long long _t31; // _t31 long long _t35; // _t35 _v48 = _t31; _v56 = _t35; _v72 = _t29; _v60 = __al; if(_v60 != 0) { } else { _v32 = _v72; _v24 = _v56; __rdx = _v48 + 66256; _t26 = _v24; LMscoctr_Find_SCO_By_LC_SCO_Link(_v48 + 66256, _v48 + 66256, _t26); _v16 = _t26; if(_v16 != 0) { LMscoctr_Resume_Link(); _Finalise_Synchronous_Connection_Change(); return; } } return; } _LMsco_LM_Connection_Reject( _unknown_ __rax // r53 ) {// addr = 0x00451D19 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v12; // _cfa_fffffff4 char _v14; // _cfa_fffffff2 signed char _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 long long _v88; // _cfa_ffffffa8 char* _v96; // _cfa_ffffffa0 char* _v104; // _cfa_ffffff98 char* _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 char _t87; // _t87 intOrPtr _t102; // _t102 long long _t110; // _t110 _unknown_ _t134; // _t134 char* _t140; // _t140 long long _t145; // _t145 long long _t154; // _t154 _v48 = _t145; _v56 = _t154; _v60 = _t87; _v20 = 0; _v10 = 0; _v9 = 0; _v14 = 0; _v12 = 0; if(( *(_v56 + 12) & 255) != 0) { DM_Clear_Timer(); *(_v56 + 12) = 0; } if(( *(_v56 + 4) & 0x80) == 0) { _t102 = _v56; _t78 = *(_t102 + 4) & 0x800; if(( *(_t102 + 4) & 0x800) == 0) { _v20 = 12; } else { LMconnection_LM_Reject_Synchronous_Connection_Request(_t78, _v60, _v48, _v56 + 424); } } else { *(_v56 + 4) = _v56 - 128; LM_Encode_LMP_Not_Accepted_PDU(_v48 + 60216); _t110 = _v48 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t134, _t110); _v32 = _t110; if(( *(_v32 + 25) & 255) == 0) { r8 = _v32 + 10; _v88 = _v32 + 17; _v96 = &_v12; _v104 = &_v14; _v112 = &_v9; *__rsp = &_v10; r9 = r8; r8 = _v56 + 424; _t140 = &_v20; EG_Event_Composer(0); } else { r8 = _v32 + 10; *__rsp = _v56 + 117; r9 = r8; r8 = _v56 + 424; _t140 = &_v60; EG_Event_Composer(0); } LMscoctr_Get_SCO_Transitioning_Ref(_t140, _v48 + 66256); LMscoctr_Free(); } return _v20; } LMconnection_LM_Setup_Synchronous_Connection_New( signed short _a8, // _cfa_8 signed char _a16, // _cfa_10 signed short _a24 // _cfa_18 ) {// addr = 0x00451F15 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 short _v76; // _cfa_ffffffb4 intOrPtr _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed short _v88; // _cfa_ffffffa8 signed short _v92; // _cfa_ffffffa4 signed char _v96; // _cfa_ffffffa0 signed short _v100; // _cfa_ffffff9c _unknown_ __rbp; // r59 intOrPtr _t118; // _t118 short _t123; // _t123 long long _t147; // _t147 long long _t194; // _t194 long long _t204; // _t204 _v64 = _t194; _v72 = _t204; _v80 = _t118; _v84 = r8d; _v76 = _t123; _v88 = __di; _v92 = _a8; _v96 = _a16; _v100 = _a24; _v12 = 0; _t147 = _v72; r9d = 2; r8d = *(_v64 + 190539) & 0xff; LMscoctr_Alloc(_t147); _v32 = _t147; if(_v32 != 0) { LMscoctr_Set_Topical_eSCO_Link(0, _v64 + 66256, _v32); *(_v72 + 14) = *(_v72 + 2) & 255; *((intOrPtr*)(_v32 + 40)) = _v80; *(_v32 + 44) = _v84; *(_v32 + 48) = _v88 & 65535; *(_v32 + 35) = _v96 & 255; *(_v32 + 50) = _v100 & 65535; _v48 = 0; LMscoctr_Remove_LMP_Parameter_Sets(); LMscoctr_Transfer_Best_LMP_Parameter_Set_to_Scratchpad(); if(( *(_v64 + 66259) & 255) == 0) { _v12 = 18; } else { LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v64); _v24 = _v64 + 67936; *(_v24 + 12) = _v92 & 65535; *(_v24 + 14) = 0; *(_v24 + 3) = (LLINK_ReadPicoClock(_v64, *((intOrPtr*)(_v72 + 432))) & 134217728) >> 27; *(_v24 + 2) = *(_v64 + 66262) & 255; LMscoctr_Remove_From_D_eSCO_List(); if(( *(_v72 + 2) & 255) != 0) { *(_v24 + 6) = 0; *(_v24 + 7) = 0; } else { *(_v24 + 6) = *(_v32 + 15) & 255; *(_v24 + 7) = *(_v32 + 24) & 255; } r8 = _v64 + 67936; r9 = r8; r8d = *(_v72 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v72 + 432)) + 11) & 0xff); } return _v12; } return 9; } LMconnection_LM_Setup_Synchronous_Connection_Existing( char _a8, // _cfa_8 short _a16 // _cfa_10 ) {// addr = 0x00452187 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v53; // _cfa_ffffffcb signed int _v54; // _cfa_ffffffca signed int _v55; // _cfa_ffffffc9 _unknown_ _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed short _v68; // _cfa_ffffffbc intOrPtr _v72; // _cfa_ffffffb8 intOrPtr _v76; // _cfa_ffffffb4 short _v80; // _cfa_ffffffb0 signed short _v84; // _cfa_ffffffac char _v88; // _cfa_ffffffa8 short _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 signed int _t87; // _t87 intOrPtr _t102; // _t102 intOrPtr _t105; // _t105 signed short _t112; // _t112 long long _t119; // _t119 long long _t164; // _t164 _v64 = _t164; _v72 = _t105; _v76 = _t102; _v68 = _t112; _v80 = __di; _v84 = r9d; _v88 = _a8; _v92 = _a16; _v12 = 0; _t87 = _v68 & 65535; LMscoctr_Find_SCO_By_Connection_Handle(_t87, _v64 + 66256, _v64 + 66256); _v40 = _t119; if(_v40 != 0) { _v32 = *((intOrPtr*)(_v40 + 64)); if(_v32 != 0) { LMsco_Validate_SYNC_Admission(); _v12 = _t87; if(_v12 == 0) { LMscoctr_Set_Topical_eSCO_Link(1, _v64 + 66256, _v40); *(_v32 + 14) = *(_v32 + 2) & 255; _v48 = _v40; LMscoctr_Remove_LMP_Parameter_Sets(); _v54 = *(_v40 + 14) & 255; _v53 = *(_v40 + 18) & 255; _v55 = *(_v40 + 22) & 255; _v52 = *(_v40 + 26) & 65535; LMscoctr_Remove_LMP_Parameter_Sets(); if(( *(_v64 + 66259) & 255) != 0) { LMscoctr_Suspend_Link(); LMscoctr_Transfer_Best_LMP_Parameter_Set_to_Scratchpad(); _v24 = _v64 + 67936; *(_v24 + 12) = _v84 & 65535; *(_v24 + 14) = 0; LMscoctr_Set_D_eSCO_and_Timing_Flag(); *(_v24 + 6) = *(_v40 + 15) & 255; *(_v24 + 7) = *(_v40 + 24) & 255; r8 = _v64 + 67936; r9 = r8; r8d = *(_v32 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v32 + 432)) + 11) & 0xff); } return _v12; } return _v12; } return 31; } return 31; } LMconnection_LM_Setup_Synchronous_Connection( _unknown_ __eax, // r0 signed char _a8, // _cfa_8 signed short _a16 // _cfa_10 ) {// addr = 0x004523A7 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t97; // _t97 signed int _t105; // _t105 signed int _t108; // _t108 intOrPtr _t114; // _t114 signed short _t128; // _t128 long long _t135; // _t135 long long _t145; // _t145 _v32 = _t145; _v40 = _t114; _v44 = _t108; _v36 = _t128; _v48 = r8d; _v52 = r9d; _v56 = _a8; _v60 = _a16; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t135, _v32 + 60216); _v24 = _t135; _v12 = 0; _v60 = _v60 ^ 960; if(( *(_v32 + 191082) & 255) != 0) { _v60 = _v60 & 64575; } if(Is_HCI_SYN_Packet_Type(_v60 & 65535) != 0) { if(Is_HCI_eSCO_Packet_Type(_v60 & 65535) == 0) { L10: _t97 = Is_HCI_SCO_Packet_Type(_v60 & 65535); if(_t97 == 0) { _v12 = 26; goto L31; } if(_v24 != 0) { LMsco_Validate_SYNC_Admission(); _v12 = _t97; if(_v12 != 0) { L30: goto L31; } if(Is_HCI_SCO_Packet_Type(_v60 & 65535) != 0) { if(_v40 == 8000 || _v40 == 255) { if(_v44 == 8000 || _v44 == 255) { if(_v48 > 3) { if(_v56 == 0 || _v56 == 255) { _v60 = (_v60 & 65535) << 5 & 255; r8d = 0; _v12 = LMconnection_LM_Add_SCO_Connection(); goto L30; } else { _v12 = 32; goto L31; } } _v12 = 18; goto L30; } else { _v12 = 32; goto L31; } } else { _v12 = 32; goto L31; } } _v12 = 32; goto L30; } _v12 = 2; goto L30; } r8d = _v60 & 65535; r9d = _v52 & 65535; r10d = _v48 & 65535; _v96 = r8d; *__rsp = _v56 & 255; r8d = r10d; _t105 = LMscoctr_Validate_Host_eSCO_Parameters(_t95, _v32); if(_t105 != 0) { goto L10; } if(_v24 == 0) { r8d = _v60 & 65535; r9d = _v52 & 65535; r10d = _v48 & 65535; _v96 = r8d; *__rsp = _v56 & 255; r8d = r10d; _v12 = LMconnection_LM_Setup_Synchronous_Connection_Existing(); } else { LMsco_Validate_SYNC_Admission(); _v12 = _t105; if(_v12 == 0) { r9d = _v60 & 65535; r8d = _v56 & 255; r11d = _v48 & 65535; r10d = _v44; _v88 = r9d; _v96 = r8d; *__rsp = _v52 & 65535; r9d = r11d; r8d = r10d; _v12 = LMconnection_LM_Setup_Synchronous_Connection_New(); } } goto L31; } else { _v12 = 18; L31: return _v12; } } LMconnection_LM_AutoAccept_Default_eSCO_Link() {// addr = 0x0045261B long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t93; // _t93 long long _t181; // _t181 long long _t191; // _t191 _v48 = _t181; _v56 = _t191; _v40 = *((intOrPtr*)(_v48 + 67952)); _v32 = _v48 + 67936; if(_v40 == 0 || _v32 == 0) { return; } *((intOrPtr*)(_v40 + 40)) = LMscoctr_Calculate_Bandwidth(_v32); *((intOrPtr*)(_v40 + 44)) = LMscoctr_Calculate_Bandwidth(_v32); *((short*)(_v40 + 48)) = 65535; _t93 = *(_v32 + 1) & 0xff; if(1 << ( *(_v32 + 5) & 0xff) == 0) { _v60 = 2; } else { _v60 = 6; } *(_v40 + 35) = _t93 / _v60; if(( *(_v40 + 35) & 255) > 2) { *(_v40 + 35) = 2; } *(_v40 + 50) = *(_v32 + 4) & 0xff; *(_v40 + 30) = *(_v32 + 12) & 65535; *(_v32 + 7) = *(_v40 + 24) & 255; *(_v32 + 6) = *(_v40 + 15) & 255; if(LMscoctr_Is_D_eSCO_Acceptable( *(_v32 + 4) & 255) == 0) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v48 + 60216); _Finalise_Synchronous_Connection_Setup(); } else { if(( *(_v56 + 2) & 255) != 1) { *((char*)(_v32 + 14)) = 1; LMscoctr_Set_D_eSCO_and_Timing_Flag(); r8 = _v32; r9 = r8; r8d = *(_v56 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff); } else { *__rsp = LMconnection_LMP_eSCO_Accepted_Ack; r9d = 17; r8d = 32524; LMP_Send_Accepted_Ext_Tag( *((intOrPtr*)(_v56 + 432))); } } return; } LMconnection_LM_Accept_Synchronous_Connection_Request( signed char _a8, // _cfa_8 signed short _a16 // _cfa_10 ) {// addr = 0x00452870 signed int _v26; // _cfa_ffffffe6 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 intOrPtr _v92; // _cfa_ffffffa4 intOrPtr _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 signed int _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t208; // _t208 intOrPtr _t216; // _t216 signed int _t250; // _t250 signed int _t251; // _t251 long long _t253; // _t253 signed int _t255; // _t255 signed int _t265; // _t265 signed int _t281; // _t281 signed int _t285; // _t285 signed int _t286; // _t286 long long _t297; // _t297 signed int _t311; // _t311 _v80 = _t297; _v88 = _t311; _v92 = _t216; _v96 = _t208; _v100 = r8d; _v104 = r9d; _v108 = _a8; _v112 = _a16; _v40 = 0; _v64 = 0; _v36 = _v92; _v32 = _v96; _v56 = _v80 + 67936; if(( *(_v80 + 191082) & 255) == 0 && _v112 != 255) { _v112 = _v112 ^ 960; } _t294 = _v80 + 60216; LM_Find_Link_Table_Entry(); _v64 = _v88; if(_v64 != 0) { _t250 = _v64; __eflags = *(_t250 + 4) & 0x800; if(( *(_t250 + 4) & 0x800) == 0) { _t251 = _v64; __eflags = *(_t251 + 4) & 0x80; if(( *(_t251 + 4) & 0x80) == 0) { return 12; } __eflags = _v112 & 7; if((_v112 & 7) != 0) { __eflags = _v92 - 8000; if(_v92 == 8000) { L22: __eflags = _v100 - 3; if(_v100 > 3) { _t253 = _v80 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t294, _t253); _v48 = _t253; _v26 = _v112 & 65535 & 1 << ( *(_v48 + 16) & 0xff); __eflags = _v26; if(_v26 != 0) { L26: __eflags = _v26; if(_v26 == 0) { _v112 = (_v112 & 65535) << 5 & 255; r8d = 0; LMscoctr_Derive_SCO_Parameters( *(_v64 + 2) & 255); } _t255 = _v64; __eflags = *(_t255 + 12) & 255; if(( *(_t255 + 12) & 255) != 0) { DM_Clear_Timer(); *(_v64 + 12) = 0; } __eflags = *(_v64 + 4) & 0x80; if(__eflags != 0) { *(_v64 + 4) = _v64 - 128; *(_v48 + 30) = _v104 & 0xfc; *(_v48 + 30) = *(_v48 + 30) & 65535 | LMscoctr_Map_AirMode_LMP2HCI( *(_v48 + 17) & 0xff, __eflags) & 255; *(_v48 + 25) = 0; LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v80); _t265 = _v64; __eflags = ( *(_t265 + 2) & 255) - 1; if(( *(_t265 + 2) & 255) != 1) { r8 = _v48; LMP_Send_SCO_Link_Req(); } else { *__rsp = LMconnection_LMP_SCO_Accepted_BB_Ack; r9d = 15; r8d = 43; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v64 + 432))); } } goto L36; } _t281 = _v64; __eflags = *(_t281 + 2) & 255; if(( *(_t281 + 2) & 255) != 0) { _LMsco_LM_Connection_Reject(_v80); _v40 = 32; goto L36; } goto L26; } _v40 = 18; goto L36; } __eflags = _v92 - 255; if(_v92 == 255) { goto L22; } _v40 = 18; goto L36; } _v40 = 18; goto L36; } __eflags = _v56; if(_v56 == 0) { return 31; } __eflags = _v92 - 255; if(_v92 == 255) { _v36 = LMscoctr_Calculate_Bandwidth(_v56); } __eflags = _v96 - 255; if(_v96 == 255) { _v32 = LMscoctr_Calculate_Bandwidth(_v56); } r8d = _v112 & 65535; r9d = _v104 & 65535; r10d = _v100 & 65535; _v128 = r8d; *__rsp = _v108 & 255; r8d = r10d; _v40 = LMscoctr_Validate_Host_eSCO_Parameters( *(_v64 + 626) & 65535, _v80); __eflags = _v40; if(_v40 == 0) { _t285 = _v64; __eflags = *(_t285 + 12) & 255; if(( *(_t285 + 12) & 255) != 0) { DM_Clear_Timer(); *(_v64 + 12) = 0; } _t286 = _v64; *(_v64 + 4) = _t286 - 2048; r8d = _v112 & 65535; r9d = _v104 & 65535; r10d = _v100 & 65535; _v128 = r8d; *__rsp = _v108 & 255; r8d = r10d; LMconnection_LM_Accept_Synchronous_Connection_Request_Common(); _v40 = *(_t286 + 4) & 65535; } goto L36; } else { _v40 = 2; L36: return _v40; } } LMconnection_Validate_SCO_Admission( _unknown_ __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x00452CA0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 char _t49; // _t49 signed int _t51; // _t51 intOrPtr _t59; // _t59 intOrPtr _t60; // _t60 _unknown_ _t62; // _t62 intOrPtr _t64; // _t64 long long _t66; // _t66 _v16 = _t66; _v24 = __rsi; _v28 = _t51; _v32 = _t49; if(_v24 != 0) { if(( *(_v24 + 10) & 65535) != 7) { if(( *(_v24 + 4) & 65535) != 8) { _t59 = _v24; if(( *(_t59 + 61) & 255) == 0) { if(_t59 == 0 || _t59 != 0) { return 18; } else { _t60 = _v16; _t34 = *(_t60 + 4) & 255; if(( *(_t60 + 4) & 255) <= 1) { L14: _t62 = _v16 + 6040; LMscoctr_Get_SCO_Transitioning_Ref(__rdx, _t62); if(_t62 == 0) { L17: if(LMscoctr_Is_Bandwidth_Available_For_SCO_Packet_Types(_t34) != 0) { return 0; } return 9; } _t64 = _v24; _t34 = *(_t64 + 2) & 255; if(( *(_t64 + 2) & 255) != 0) { goto L17; } return 35; } _t34 = _v28 & 32; if(_t60 == 0) { goto L14; } return 12; } } DebugPrint(0, _v24, __rcx, __rdx, _t66, __rsi); return 42; } return 12; } return 12; } return 2; } LMconnection_LM_Add_SCO_Connection() {// addr = 0x00452DBE signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed short _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed short _t148; // _t148 signed int _t154; // _t154 intOrPtr _t170; // _t170 signed int _t173; // _t173 signed int _t174; // _t174 signed int _t175; // _t175 signed int _t179; // _t179 signed int _t191; // _t191 signed int _t197; // _t197 signed int _t198; // _t198 signed int _t199; // _t199 signed int _t200; // _t200 long long _t206; // _t206 signed int _t214; // _t214 _v32 = _t206; _v40 = _t214; _v44 = _t154; _v48 = _t148; _v52 = r8d; _v9 = LMscoctr_Get_Air_Coding(_v48 & 65535); _t170 = _v32; _t167 = ( *(_t170 + 60220) & 255) - 1; if(( *(_t170 + 60220) & 255) > 1) { _v44 = _v44 & 223; } _v16 = LMconnection_Validate_SCO_Admission(LMscoctr_Map_AirMode_HCI2LMP(_v9 & 255, _t167), _v40); if(_v16 == 0) { _t173 = _v40; __eflags = *(_t173 + 41) & 8; if(( *(_t173 + 41) & 8) != 0) { __eflags = _t173; if(_t173 != 0) { L14: _t174 = _v40; __eflags = *(_t174 + 41) & 0x10; if(( *(_t174 + 41) & 0x10) == 0) { _v44 = _v44 & 191; } _t175 = _v40; __eflags = *(_t175 + 41) & 0x20; if(( *(_t175 + 41) & 0x20) == 0) { _v44 = _v44 & 4294967167; } __eflags = _v9 - 1; if(_v9 != 1) { L21: __eflags = _v9 - 2; if(_v9 != 2) { L24: __eflags = _v9; if(_v9 != 0) { L27: _t179 = _v40; r9d = 0; r8d = *(_v32 + 190539) & 0xff; LMscoctr_Alloc(_t179); _v24 = _t179; __eflags = _v24; if(_v24 == 0) { _v16 = 9; } else { LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v32); *(_v40 + 14) = *(_v40 + 2) & 255; *(_v24 + 25) = _v52 & 255; r8d = 0; LMscoctr_Derive_SCO_Parameters( *(_v40 + 2) & 255); r8 = _v24; LMP_Send_SCO_Link_Req(); _t191 = _v40; __eflags = ( *(_t191 + 2) & 255) - 1; if(( *(_t191 + 2) & 255) == 1) { LMscoctr_Store_Topical_Voice_Setting( *(_v24 + 30) & 0xffff, _v32 + 66256); *(_v32 + 66288) = _v52 & 255; LMscoctr_Free(); } } return _v16; } _t197 = _v40; __eflags = *(_t197 + 42) & 1; if(( *(_t197 + 42) & 1) != 0) { goto L27; } return 26; } _t198 = _v40; __eflags = *(_t198 + 41) & 255; if(( *(_t198 + 41) & 255) >= 0) { goto L24; } return 26; } else { _t199 = _v40; __eflags = *(_t199 + 41) & 0x40; if(( *(_t199 + 41) & 0x40) != 0) { goto L21; } return 26; } } __eflags = _t173; if(_t173 == 0) { L11: __eflags = _t173; if(_t173 == 0) { L13: return 26; } _t200 = _v40; __eflags = *(_t200 + 41) & 0x20; if(( *(_t200 + 41) & 0x20) != 0) { goto L14; } goto L13; } _t173 = _v40; __eflags = *(_t173 + 41) & 0x10; if(( *(_t173 + 41) & 0x10) != 0) { goto L14; } goto L11; } return 26; } else { if(_v16 == 35) { _v16 = 12; } return _v16; } } LMconnection_LM_Change_SCO_Packet_Type( _unknown_ __rax // r53 ) {// addr = 0x0045308F long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 intOrPtr _t39; // _t39 long long _t58; // _t58 long long _t60; // _t60 long long _t64; // _t64 _v32 = _t60; _v40 = _t64; _v48 = _t58; _v52 = _t39; r8d = *(_v48 + 17) & 0xff; LMscoctr_Allocate_Negotation_SCO_Link( *(_v40 + 2) & 255); _v16 = _v32; *(_v40 + 14) = *(_v40 + 2) & 255; r8 = _v16; LMP_Send_SCO_Link_Req(); if(( *(_v40 + 2) & 255) == 1) { LMscoctr_Free_Negotiation_SCO_Link(_v32 + 66256); } return 0; } LMsco_LMP_Accepted( _unknown_ __rax // r53 ) {// addr = 0x0045314F signed int _v26; // _cfa_ffffffe6 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 _unknown_ _v112; // _cfa_ffffff90 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 signed short _v140; // _cfa_ffffff74 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t102; // _t102 signed int _t126; // _t126 signed short _t153; // _t153 long long _t174; // _t174 long long _t182; // _t182 long long _t184; // _t184 _unknown_ _t215; // _t215 long long _t220; // _t220 long long _t234; // _t234 _push(r12); _push(__rbx); __rsp = __rsp - 144; _v128 = _t220; _v136 = _t234; _v140 = _t153; _v60 = 0; _v26 = 0; _t102 = _v140 & 65535; if(_t102 == 44) { _t174 = _v128 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t215, _t174); _v96 = _t174; if(_v96 != 0) { LMsco_Event_Callback(_t102); } goto L26; } else { if(_t102 > 44) { if(_t102 == 32524) { LMconnection_LMP_Accepted_Ext_eSCO_Link_Req(); } else { if(_t102 == 32525) { _v104 = *((intOrPtr*)(_v128 + 67952)); if(_v104 != 0) { LMesco_Event_Callback(_t102); } } else { goto L23; } } goto L26; } else { if(_t102 == 43) { if(( *(_v136 + 2) & 255) != 1) { _t182 = _v128 + 66256; LMscoctr_Find_SCO_Under_Negotiation(_t182); _v112 = _t182; if(_v112 == 0) { _t184 = _v128 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t215, _t184); _v112 = _t184; if(_v112 != 0) { _v40 = LLINK_ReadPicoClock(_v128, *((intOrPtr*)(_v136 + 432))); _v36 = _v40; _v32 = 4; _v72 = _v32 + _v36; _v56 = _v72 & 0xfc; _v56 = LMdm_Calc_Instance( *(_v112 + 13) & 0xff, *(_v112 + 14) & 0xff, _v56); LLINK_Suspend( *((intOrPtr*)(_v136 + 432))); r12d = *(_v112 + 14) & 0xff; LMsco_Covert_LM_To_LC_SCO_Packet_Type( *(_v112 + 16) & 0xff); *__rsp = LMsco_LC_Add_SCO_Link_CB; r9d = r12d; r8d = _v56; _v26 = LCCMD_AddSCOLinkRequest() & 255; if(_v26 == 0) { _t126 = 7; } else { _t126 = 0; } _v60 = _t126; goto L17; } } else { LMscoctr_Accept_And_Free_Negotiated_SCO_Link(); _v52 = LLINK_ReadPicoClock(_v128, *((intOrPtr*)(_v136 + 432))); _v48 = _v52; _v44 = 4; _v88 = _v44 + _v48; _v56 = _v88 & 0xfc; _v56 = LMdm_Calc_Instance( *(_v112 + 13) & 0xff, *(_v112 + 14) & 0xff, _v56); LLINK_Suspend( *((intOrPtr*)(_v136 + 432))); r12d = *(_v112 + 14) & 0xff; LMsco_Covert_LM_To_LC_SCO_Packet_Type( *(_v112 + 16) & 0xff); *__rsp = LMsco_LC_Modify_SCO_Pkt_Type_CB; r9d = r12d; r8d = _v56; LCCMD_ModifySCOLinkRequest(); L17: *_v112 = 3; goto L26; } } else { } } else { L23: L26: } } } __rsp = __rsp + 144; _pop(__rbx); _pop(r12); return; } LMsco_LMP_Not_Accepted( _unknown_ __rax // r53 ) {// addr = 0x004534AC char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 char _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 char _v16; // _cfa_fffffff0 char _v18; // _cfa_ffffffee long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed short _v76; // _cfa_ffffffb4 char _v80; // _cfa_ffffffb0 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed int _t102; // _t102 signed short _t121; // _t121 long long _t136; // _t136 long long _t142; // _t142 long long _t152; // _t152 _unknown_ _t191; // _t191 char* _t199; // _t199 long long _t206; // _t206 long long _t221; // _t221 _v64 = _t206; _v72 = _t221; _v80 = __ecx; _v76 = _t121; _t102 = _v76 & 65535; if(_t102 == 44) { _t136 = _v64 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t191, _t136); _v40 = _t136; if(_v40 != 0) { LMsco_Event_Callback(_t102); } } else { if(_t102 > 44) { if(_t102 == 32524) { LMconnection_LMP_Not_Accepted_Ext_eSCO_Link_Req(); } else { if(_t102 == 32525) { _v32 = *((intOrPtr*)(_v64 + 67952)); if(_v32 != 0) { LMesco_Event_Callback(_t102); } } } } else { if(_t102 == 43) { _v12 = 0; _v11 = 0; _v10 = 0; _v9 = 2; _v18 = 0; _v16 = 0; _v14 = 0; _t142 = _v72; _t193 = _v64 + 66256; LMscoctr_Find_SCO_Under_Negotiation(_t142); _v48 = _t142; if(( *(_v72 + 2) & 255) != 0) { if(_v48 == 0) { r8 = _v72 + 424; _v104 = &_v9; _v112 = &_v16; _v120 = &_v18; _v128 = &_v11; *__rsp = &_v12; r9 = &_v10; EG_Event_Composer(0); } else { r8 = _v48 + 4; EG_Event_Composer(0); } } else { if(_v48 == 0) { _t152 = _v64 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t193, _t152); _v48 = _t152; if(_v48 != 0) { if(( *(_v48 + 25) & 255) == 0) { r8 = _v72 + 424; _v104 = &_v9; _v112 = &_v16; _v120 = &_v18; _v128 = &_v11; *__rsp = &_v12; r9 = &_v10; _t199 = &_v80; EG_Event_Composer(0); } else { r8 = _v72 + 424; *__rsp = _v72 + 117; r9 = &_v10; _t199 = &_v80; EG_Event_Composer(0); } LMscoctr_Get_SCO_Transitioning_Ref(_t199, _v64 + 66256); LMscoctr_Free(); } } else { r8 = _v48 + 4; EG_Event_Composer(0); LMscoctr_Free_Negotiation_SCO_Link(_v64 + 66256); } } } } } return; } LMconnection_LM_Disconnect_SCO() {// addr = 0x004537F8 long long _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed char _t32; // _t32 signed char _t35; // _t35 _unknown_ _t41; // _t41 _unknown_ _t51; // _t51 long long _t53; // _t53 long long _t56; // _t56 _v16 = _t53; _v24 = _t56; _v28 = _t35; _v32 = _t32; if(_v24 != 0) { if(_v32 == 0) { r8d = _v32 & 255; DebugPrint(0, _t41, __rcx, _t51, _t53, _t56); } *(_v24 + 32) = _v28 & 255; *(_v24 + 33) = _v32 & 255; *_v24 = 10; if( *((intOrPtr*)(_v24 + 72)) != 0) { LLINK_ReadPicoClock(_v16, *((intOrPtr*)(_v24 + 72))); LCCMD_LinkDeleteRequest(); } return 0; } return 31; } LMsco_LM_Disconnect_Req( long long __rax // r53 ) {// addr = 0x004538B0 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc char _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 intOrPtr _t88; // _t88 intOrPtr _t97; // _t97 char _t102; // _t102 char _t106; // _t106 signed short _t112; // _t112 long long _t121; // _t121 intOrPtr _t146; // _t146 long long _t154; // _t154 _t121 = __rax; _v48 = _t154; _v52 = _t112; _v56 = _t106; _v60 = _t102; _v12 = 2; LMscoctr_Find_SCO_By_Connection_Handle(_v52 & 65535, _v48 + 66256, _v48 + 66256); _v32 = _t121; if(_v32 != 0) { _v12 = 0; if(( *(_v32 + 10) & 255) != 2) { if(( *(_v32 + 2) & 255) != 0) { if(( *(_v32 + 2) & 255) != 1) { if(( *(_v32 + 2) & 255) != 2) { _v12 = 31; } else { _v12 = 0; } } else { _v12 = 12; } } else { _v24 = *((intOrPtr*)(_v32 + 64)); *(_v24 + 14) = *(_v24 + 2) & 255; *((char*)(_v24 + 92)) = 22; if(( *(_v24 + 2) & 255) != 0) { _t88 = 2; } else { if(( *(_v32 + 10) & 255) != 0) { _t88 = 2; } else { _t88 = 1; } } *_v32 = _t88; r9d = 1; r8d = 1; LMsco_Delete(_t88); } } else { if(( *(_v32 + 2) & 255) != 0) { if(( *(_v32 + 2) & 255) == 1 || ( *(_v32 + 2) & 255) == 3) { _v12 = 12; } else { if(( *(_v32 + 2) & 255) == 2 || ( *(_v32 + 2) & 255) == 4) { _v12 = 0; } else { _v12 = 31; } } } else { _v24 = *((intOrPtr*)(_v32 + 64)); *(_v24 + 14) = *(_v24 + 2) & 255; *((char*)(_v24 + 92)) = 22; if(( *(_v24 + 2) & 255) != 0) { _t97 = 2; } else { if(( *(_v32 + 10) & 255) != 0) { _t97 = 2; } else { _t97 = 1; } } *_v32 = _t97; _t146 = _v24; _t98 = *(_t146 + 2) & 255; if(( *(_t146 + 2) & 255) != 0) { r8d = 3; LMesco_Delete(_t98); } else { r8d = 1; LMesco_Delete(_t98); } } } } return _v12; } LMconnection_LMP_SCO_Link_Req( signed char* __rdx // r56 ) {// addr = 0x00453ADD long long _v32; // _cfa_ffffffe0 char _v200; // _cfa_ffffff38 signed int _v201; // _cfa_ffffff37 signed int _v202; // _cfa_ffffff36 char _v203; // _cfa_ffffff35 signed int _v204; // _cfa_ffffff34 signed int _v205; // _cfa_ffffff33 signed int _v206; // _cfa_ffffff32 signed int _v208; // _cfa_ffffff30 signed int _v212; // _cfa_ffffff2c signed int _v224; // _cfa_ffffff20 signed int _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 signed int _v248; // _cfa_ffffff08 signed char* _v256; // _cfa_ffffff00 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t235; // _t235 signed int _t244; // _t244 signed int _t298; // _t298 signed int _t300; // _t300 signed int _t312; // _t312 signed int _t339; // _t339 signed int _t340; // _t340 signed int _t357; // _t357 signed int _t358; // _t358 signed int _t395; // _t395 signed int _t417; // _t417 _v240 = _t395; _v248 = _t417; _v256 = __rdx; _v32 = *fs:0x28]; _v212 = 0; _v206 = *_v256 & 255; _v205 = (_v256[4]) & 255; _v204 = (_v256[5]) & 255; _v208 = 0; __eflags = *(_v240 + 191033) & 8; if(__eflags != 0) { _t298 = _v248; __eflags = ( *(_t298 + 2) & 255) - 1; if(( *(_t298 + 2) & 255) != 1) { L4: __eflags = _v205 - 2; if(__eflags <= 0) { _t384 = _v240 + 66256; LMscoctr_Find_SCO_By_SCO_Handle(_v206 & 255, _v240 + 66256, _v240 + 66256); _v232 = _t298; __eflags = _v232; if(_v232 != 0) { __eflags = ( *(_v240 + 66257) & 255) - 1; if(__eflags == 0) { _t300 = _v248; __eflags = *(_t300 + 2) & 255; if(( *(_t300 + 2) & 255) != 0) { *(_v248 + 14) = *(_v248 + 13) & 255; _v212 = LMscoctr_Extract_SCO_Parameters_From_PDU(1, &_v200, _v256); __eflags = _v212; if(__eflags == 0) { *_v232 = 5; LMscoctr_Assign_SCO_Parameters(_v232, &_v200); *__rsp = LMconnection_LMP_SCO_Accepted_BB_Ack; r9d = 15; r8d = 43; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v248 + 432))); } } else { _t312 = _v240 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t384, _t312); __eflags = _t312; if(__eflags == 0) { *(_v248 + 14) = *(_v248 + 2) & 255 ^ 1; _v204 = (_v256[5]) & 255; r8d = _v204 & 255; LMscoctr_Allocate_Negotation_SCO_Link( *(_v248 + 2) & 255); _v224 = _v240; __eflags = ( *(_v224 + 17) & 255) - _v204; if(__eflags != 0) { _v212 = 29; } else { r8 = _v224; LMP_Send_SCO_Link_Req(); } } else { _v212 = 35; } } } else { _v212 = 36; } L50: goto L51; } _v212 = LMconnection_Validate_SCO_Admission(_v205 & 255, _v248); __eflags = _v212; if(__eflags == 0) { *(_v248 + 14) = *(_v248 + 2) & 255 ^ 1; _v203 = EG_Filter_Event(2); __eflags = _v203 - 2; if(_v203 == 2) { L12: __eflags = ( *(_v248 + 2) & 255) - 1; if(__eflags != 0) { L15: _v208 = *(_v240 + 190524) & 65535; L16: _v208 = _v208 & 252; _v208 = _v208 | LMscoctr_Map_AirMode_LMP2HCI(_v204 & 255, __eflags) & 255; _t339 = _v248; r9d = 0; r8d = *(_v240 + 190539) & 0xff; LMscoctr_Alloc(_t339); _v232 = _t339; __eflags = _v232; if(__eflags != 0) { _t340 = _v248; __eflags = ( *(_t340 + 2) & 255) - 1; if(( *(_t340 + 2) & 255) != 1) { __eflags = *(_v248 + 2) & 255; if(__eflags != 0) { L49: goto L50; } _t235 = LMscoctr_Extract_SCO_Parameters_From_PDU(0, _v232, _v256); r8d = 1; LMscoctr_Derive_SCO_Parameters(_t235); __eflags = _v203 - 2; if(_v203 == 2) { L35: LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v240); r8 = _v232; LMP_Send_SCO_Link_Req(); L37: goto L49; } __eflags = _v203 - 3; if(_v203 != 3) { LM_Send_HC_Connection_Request(_t235, _v240); goto L49; } goto L35; } _v212 = LMscoctr_Extract_SCO_Parameters_From_PDU(1, _v232, _v256); __eflags = _v212; if(_v212 != 0) { LMscoctr_Free(); goto L49; } _v202 = *(_v248 + 13) & 255; _t357 = _v248; __eflags = ( *(_t357 + 2) & 255) - 1; if(( *(_t357 + 2) & 255) != 1) { L23: _t244 = 0; L24: _v201 = _t244; _t358 = _v248; __eflags = ( *(_t358 + 13) & 255) - 1; if(( *(_t358 + 13) & 255) == 1) { *(_v232 + 25) = *(_v240 + 66288) & 255; } __eflags = _v203 - 2; if(_v203 == 2) { L29: LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v240); *__rsp = LMconnection_LMP_SCO_Accepted_BB_Ack; r9d = 15; r8d = 43; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v248 + 432))); goto L49; } else { __eflags = _v203 - 3; if(_v203 == 3) { goto L29; } __eflags = _v201; if(_v201 == 0) { *(_v248 + 4) = *(_v248 + 4) & 65535 | 128; LM_Send_HC_Connection_Request( *(_v248 + 4) & 65535, _v240); goto L37; } goto L29; } } __eflags = _v202 - 1; if(_v202 != 1) { goto L23; } _t244 = 1; goto L24; } else { goto L51; } } __eflags = ( *(_v248 + 13) & 255) - 1; if(__eflags != 0) { goto L15; } else { _v208 = LMscoctr_Restore_Topical_Voice_Setting(_v240 + 66256); goto L16; } } __eflags = _v203 - 3; if(_v203 == 3) { goto L12; } __eflags = _v203 - 1; if(__eflags != 0) { _v212 = 19; goto L50; } goto L12; } else { goto L51; } } L5: goto L51; } __eflags = _v206; if(__eflags == 0) { goto L5; } goto L4; } else { L51: if(__eflags == 0) { return; } __stack_chk_fail(); return; } } LMconnection_LMP_Remove_SCO_Link_Req( _unknown_ __rax // r53 ) {// addr = 0x0045426F signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 intOrPtr _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t85; // _t85 signed char* _t88; // _t88 signed char* _t102; // _t102 long long _t107; // _t107 long long _t112; // _t112 _v32 = _t107; _v40 = _t112; _v48 = _t102; _v11 = *_v48 & 255; _v48 = &(_v48[1]); _t85 = _v48; _v10 = *_t85 & 255; _v9 = _v10 & 255; LMscoctr_Find_SCO_By_SCO_Handle(_v11 & 255, _v32 + 66256, _v32 + 66256); _v24 = _t85; *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; if(_v24 == 0) { _v16 = 30; } else { _t88 = _v24; _t62 = (_t88[2]) & 255; if(((_t88[2]) & 255) != 0) { if(((_v24[2]) & 255) != 1) { if(((_v24[2]) & 255) != 2) { _v16 = 31; } else { r8d = 44; LMP_Send_Accepted(); _v16 = 0; } } else { r8d = 44; LMP_Send_Accepted(); _v16 = 0; } } else { r9d = 1; r8d = 2; LMsco_Delete(_t62); _v16 = 0; } } return _v16; } LMsco_SearchSCOByConnectionHandle( _unknown_ __rax // r53 ) {// addr = 0x004543E2 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed short _t9; // _t9 signed short _t11; // _t11 long long _t14; // _t14 long long _t17; // _t17 _v32 = _t17; _t9 = _t11; _v36 = _t9; _t14 = _v32; LMscoctr_Find_SCO_By_Connection_Handle(_v36 & 65535, __rdx, _t14); _v16 = _t14; if(_v16 == 0) { return 0; } return _t9; } LMsco_LM_Connection_Accept( _unknown_ __rax // r53 ) {// addr = 0x00454422 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t82; // _t82 intOrPtr _t98; // _t98 long long _t102; // _t102 long long _t111; // _t111 _unknown_ _t125; // _t125 long long _t128; // _t128 long long _t135; // _t135 _v48 = _t128; _v56 = _t135; _v60 = _t82; if(( *(_v56 + 12) & 255) != 0) { DM_Clear_Timer(); *(_v56 + 12) = 0; } _t98 = _v56; _t94 = *(_t98 + 4) & 0x80; if(( *(_t98 + 4) & 0x80) == 0) { return 12; } else { *((short*)(_v56 + 4)) = _v56 - 128; _t102 = _v48 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t125, _t102); _v32 = _t102; *(_v32 + 30) = _v60 & 0xfc; __edi = *(_v32 + 17) & 0xff; *(_v32 + 30) = *(_v32 + 30) & 65535 | LMscoctr_Map_AirMode_LMP2HCI( *(_v32 + 17) & 0xff, _t94) & 255; *((char*)(_v32 + 25)) = 1; LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); if(( *(_v56 + 2) & 255) != 1) { _t111 = _v48 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t125, _t111); _v32 = _t111; r8 = _v32; LMP_Send_SCO_Link_Req(); } else { *__rsp = LMconnection_LMP_SCO_Accepted_BB_Ack; r9d = 15; r8d = 43; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v56 + 432))); } return 0; } } LMconnection_LMP_SCO_Accepted_BB_Ack() {// addr = 0x004545C8 char _v25; // _cfa_ffffffe7 signed int _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 signed char* _v96; // _cfa_ffffffa0 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 char _t77; // _t77 signed char* _t139; // _t139 _unknown_ _t167; // _t167 long long _t170; // _t170 long long _t178; // _t178 _push(r12); _push(__rbx); __rsp = __rsp - 112; _v112 = _t170; _v120 = _t178; _v25 = 0; _t139 = _v112 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t167, _t139); _v96 = _t139; if(_v96 != 0) { if(( *_v96 & 255) == 5) { _v40 = LLINK_ReadPicoClock(_v112, *((intOrPtr*)(_v120 + 432))); _v36 = _v40; _v32 = 4; _v72 = _v32 + _v36; _v56 = _v72 & 0xfc; _v56 = LMdm_Calc_Instance((_v96[0xd]) & 0xff, (_v96[0xe]) & 0xff, _v56); LLINK_Suspend( *((intOrPtr*)(_v120 + 432))); r12d = (_v96[0xe]) & 0xff; LMsco_Covert_LM_To_LC_SCO_Packet_Type((_v96[0x10]) & 0xff); *__rsp = LMsco_LC_Modify_SCO_Pkt_Type_CB; r9d = r12d; r8d = _v56; _t77 = LCCMD_ModifySCOLinkRequest(); } else { _v52 = LLINK_ReadPicoClock(_v112, *((intOrPtr*)(_v120 + 432))); _v48 = _v52; _v44 = 4; _v88 = _v44 + _v48; _v56 = _v88 & 0xfc; _v56 = LMdm_Calc_Instance((_v96[0xd]) & 0xff, (_v96[0xe]) & 0xff, _v56); LLINK_Suspend( *((intOrPtr*)(_v120 + 432))); r12d = (_v96[0xe]) & 0xff; LMsco_Covert_LM_To_LC_SCO_Packet_Type((_v96[0x10]) & 0xff); *__rsp = LMsco_LC_Add_SCO_Link_CB; r9d = r12d; r8d = _v56; _v28 = LCCMD_AddSCOLinkRequest() & 255; if(_v28 == 0) { _t77 = 7; } else { _t77 = 0; } _v25 = _t77; } *_v96 = 3; } __rsp = __rsp + 112; _pop(__rbx); _pop(r12); return; } LMconnection_LM_Reject_Synchronous_Connection_Request( _unknown_ __eax, // r0 intOrPtr __edx, // r3 _unknown_ __rax, // r53 signed int __rsi // r58 ) {// addr = 0x004547F6 signed int _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed int _t116; // _t116 signed int _t117; // _t117 signed int _t137; // _t137 long long _t147; // _t147 _v48 = _t147; _v56 = __rsi; _v60 = __edx; _v12 = 0; _v40 = 0; _v32 = 0; _v24 = 0; LM_Find_Link_Table_Entry(); _v40 = _v56; __eflags = _v40; if(_v40 != 0) { _t116 = _v40; __eflags = *(_t116 + 4) & 0x800; if(( *(_t116 + 4) & 0x800) == 0) { _t117 = _v40; __eflags = *(_t117 + 4) & 0x80; if(( *(_t117 + 4) & 0x80) == 0) { L8: _v32 = *(_v48 + 67952); __eflags = _v32; if(_v32 != 0) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v48 + 60216); __eflags = _v60 - 16; if(_v60 != 16) { _v12 = 0; } _v24 = _v48 + 67936; __eflags = *(_v32 + 22) & 255; if(__eflags == 0) { *(_v32 + 14) = *_v24 & 255; *(_v32 + 18) = (_v24[1]) & 255; *(_v32 + 26) = (_v24[8]) & 65535; *(_v32 + 28) = (_v24[0xa]) & 65535; __edi = (_v24[0xc]) & 3; *((char*)(_v32 + 17)) = LMscoctr_Map_AirMode_HCI2LMP((_v24[0xc]) & 3, __eflags); } _Finalise_Synchronous_Connection_Setup(); return; } r8d = _v60; LMconnection_Cleanup_Reject_Synchronous_Connection_Request(); return; } LMsco_LM_Connection_Reject(); return; } _t137 = _v40; __eflags = *(_t137 + 12) & 255; if(( *(_t137 + 12) & 255) != 0) { DM_Clear_Timer(); *(_v40 + 12) = 0; } *((short*)(_v40 + 4)) = _v40 - 2048; goto L8; } r8d = _v60; LMconnection_Cleanup_Reject_Synchronous_Connection_Request(); return; } LMconnection_Cleanup_Reject_Synchronous_Connection_Request() {// addr = 0x004549ED long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc intOrPtr _v56; // _cfa_ffffffc8 intOrPtr _v72; // _cfa_ffffffb8 intOrPtr _v80; // _cfa_ffffffb0 intOrPtr _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t43; // _t43 intOrPtr _t54; // _t54 long long _t64; // _t64 long long _t68; // _t68 _v32 = _t68; _v40 = _t73; _v48 = _t64; _v52 = _t43; _v56 = r8d; if(_v52 != 0) { if(_v48 != 0) { r10 = _v48 + 17; r9 = _v48 + 26; r8 = _v48 + 28; _t54 = _v48; _t73 = _t54 + 18; r11 = _v40 + 424; _v72 = r10; _v80 = r9; _v88 = r8; _v96 = _t54 + 18; *__rsp = _v48 + 14; r9 = _v48 + 10; r8 = r11; EG_Event_Composer(0); } __edx = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v32 + 66256, _t73); LMscoctr_Clean_eSCO_Scratchpad(); return 0; } _Finalise_Synchronous_Connection_Setup(); return _v52; } LMsco_LM_Connection_Reject() {// addr = 0x00454AF9 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v12; // _cfa_fffffff4 char _v14; // _cfa_fffffff2 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 char _t60; // _t60 intOrPtr _t66; // _t66 long long _t74; // _t74 _unknown_ _t86; // _t86 long long _t96; // _t96 long long _t103; // _t103 _v32 = _t96; _v40 = _t103; _v44 = _t60; _v10 = 0; _v9 = 0; _v14 = 0; _v12 = 0; if(( *(_v40 + 4) & 0x80) == 0) { _t66 = _v40; _t54 = *(_t66 + 4) & 0x800; if(( *(_t66 + 4) & 0x800) == 0) { return 12; } LMconnection_LM_Reject_Synchronous_Connection_Request(_t54, _v44, _v32, _v40 + 424); L5: return 0; } *(_v40 + 4) = _v40 - 128; LM_Encode_LMP_Not_Accepted_PDU(_v32 + 60216); _t74 = _v32 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t86, _t74); _v24 = _t74; r8 = _v24 + 10; _v72 = _v24 + 17; _v80 = &_v12; _v88 = &_v14; _v96 = &_v9; *__rsp = &_v10; r9 = r8; r8 = _v40 + 424; EG_Event_Composer(0); LMscoctr_Get_SCO_Transitioning_Ref( &_v44, _v32 + 66256); LMscoctr_Free(); goto L5; } LMsco_LM_Change_SCO_Packet_Type( _unknown_ __eax // r0 ) {// addr = 0x00454C64 intOrPtr _v12; // _cfa_fffffff4 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed short _t83; // _t83 intOrPtr _t89; // _t89 _unknown_ _t92; // _t92 _unknown_ _t106; // _t106 long long _t113; // _t113 long long _t119; // _t119 _v48 = _t113; _v56 = _t119; _v60 = _t83; _v12 = 17; _v32 = *((intOrPtr*)(_v56 + 64)); _v24 = 1039; if(_v32 == 0) { L2: return 12; } _t89 = _v32; if(( *(_t89 + 10) & 65535) != 7) { if(_t89 == 0 || _t89 != 0) { return 18; } if(_t89 == 0) { L8: if(_t89 == 0 || ( *(_v32 + 41) & 0x20) != 0) { if(( *(_v48 + 66257) & 255) > 1) { L13: return 12; } _t92 = _v48 + 66256; LMscoctr_Get_SCO_Transitioning_Ref(_t106, _t92); if(_t92 == 0) { __edi = _v60 & 0xffff; if(LMscoctr_Convert_HCI_To_LM_SCO_Packet_Type(_v60 & 0xffff, _t92) != ( *(_v56 + 16) & 255)) { _v12 = LMconnection_LM_Change_SCO_Packet_Type(_v48); if(_v12 == 0) { EG_Generate_Command_Status_Event(); } } else { _v12 = 0; EG_Generate_Command_Status_Event(); r8 = &_v60; EG_Event_Composer(0); } return _v12; } goto L13; } else { goto L10; } } else { _t89 = _v32; if(( *(_t89 + 41) & 0x10) == 0) { L10: return 26; } goto L8; } } goto L2; } LMconnection_LM_Accept_Synchronous_Connection_Request_Common( signed char _a8, // _cfa_8 signed short _a16 // _cfa_10 ) {// addr = 0x00454E15 signed short _v10; // _cfa_fffffff6 signed char* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 signed char* _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v53; // _cfa_ffffffcb signed int _v54; // _cfa_ffffffca signed int _v55; // _cfa_ffffffc9 _unknown_ _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char _v76; // _cfa_ffffffb4 signed char _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed char _t251; // _t251 signed char _t263; // _t263 intOrPtr _t384; // _t384 long long _t395; // _t395 long long _t420; // _t420 _v64 = _t395; _v72 = _t420; _v76 = _t263; _v80 = _t251; _v84 = r8d; _v88 = r9d; _v92 = _a8; _v96 = _a16; _v32 = 0; _v24 = 0; _v16 = 0; _v16 = LMscoctr_Detect_Transaction_Collisions(); _v32 = *(_v64 + 67952); if(_v32 == 0) { return; } _v24 = _v64 + 67936; if(_v24 != 0) { if(_v76 == 255) { _v76 = LMscoctr_Calculate_Bandwidth(_v24); } if(_v80 == 255) { _v80 = LMscoctr_Calculate_Bandwidth(_v24); } if(( *(_v64 + 66259) & 255) == 0) { r8d = _v96 & 65535; r9d = r8d; r8d = _v92 & 255; LMscoctr_Derive_Initial_LMP_Parameter_Sets_From_Host_Constraints(_v76); } _v48 = 0; LMscoctr_Remove_LMP_Parameter_Sets(); (_v32[0x28]) = _v76; (_v32[0x2c]) = _v80; (_v32[0x30]) = _v84 & 65535; (_v32[0x23]) = _v92 & 255; (_v32[0x32]) = _v96 & 65535; (_v32[0x1e]) = _v88 & 65535; (_v24[7]) = (_v32[0x18]) & 255; (_v24[6]) = (_v32[0xf]) & 255; r8d = (_v24[8]) & 0xffff; if(LMscoctr_Is_An_LMP_Parameter_Set((_v24[4]) & 0xff, (_v24[1]) & 0xff, _v64 + 66256) == 0 || _t202 != 1) { _t384 = _v72; if(LMscoctr_Is_D_eSCO_Acceptable(_t202) != 0) { L18: _v10 = LMscoctr_Calculate_Latency_In_uSec((_v24[5]) & 0xff, (_v24[4]) & 0xff, (_v24[1]) & 0xff, _v24, _t384); _v54 = *_v24 & 255; _v53 = (_v24[1]) & 255; _v55 = (_v24[4]) & 255; _v52 = (_v24[8]) & 65535; LMscoctr_Remove_LMP_Parameter_Sets(); if(( *(_v64 + 66259) & 255) == 0) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v64 + 60216); _Finalise_Synchronous_Connection_Setup(); } else { LMscoctr_Transfer_Best_LMP_Parameter_Set_to_Scratchpad(); LMscoctr_Set_D_eSCO_and_Timing_Flag(); if((_v10 & 65535) <= ((_v32[0x30]) & 0xffff) * 1000) { (_v24[0xe]) = 4; } else { (_v24[0xe]) = 3; } r8 = _v24; r9 = r8; r8d = *(_v72 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v72 + 432)) + 11) & 0xff); } goto L24; } r8d = (_v24[8]) & 0xffff; if(LMscoctr_Is_An_LMP_Parameter_Set((_v24[4]) & 0xff, (_v24[1]) & 0xff, _v64 + 66256) == 0) { goto L18; } LMscoctr_Set_D_eSCO_and_Timing_Flag(); (_v24[0xe]) = 2; r8 = _v24; r9 = r8; r8d = *(_v72 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v72 + 432)) + 11) & 0xff); goto L24; } else { if(( *(_v72 + 2) & 255) != 1) { (_v24[7]) = (_v32[0x18]) & 255; (_v24[6]) = (_v32[0xf]) & 255; (_v24[0xe]) = 1; LMscoctr_Set_D_eSCO_and_Timing_Flag(); r8 = _v24; r9 = r8; r8d = *(_v72 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v72 + 432)) + 11) & 0xff); } else { *__rsp = LMconnection_LMP_eSCO_Accepted_Ack; r9d = 17; r8d = 32524; LMP_Send_Accepted_Ext_Tag( *((intOrPtr*)(_v72 + 432))); } L24: return; } } else { return; } } _Finalise_Synchronous_Connection_Setup() {// addr = 0x00455333 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc intOrPtr _v72; // _cfa_ffffffb8 intOrPtr _v80; // _cfa_ffffffb0 intOrPtr _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t52; // _t52 long long _t72; // _t72 long long _t77; // _t77 long long _t83; // _t83 _v32 = _t77; _v40 = _t83; _v48 = _t72; _v52 = __ecx; _t41 = _v52; if(_v52 == 0) { LMscoctr_Commit_to_New_Synchronous_Parameters(_t41); *_v48 = 4; } r10 = _v48 + 17; r9 = _v48 + 26; r8 = _v48 + 28; _t52 = _v48; _t84 = _t52 + 18; r11 = _v40 + 424; _v72 = r10; _v80 = r9; _v88 = r8; _v96 = _t52 + 18; *__rsp = _v48 + 14; r9 = _v48 + 10; r8 = r11; EG_Event_Composer(0); if(_v52 != 0) { _t84 = _v32 + 30560; LMscoctr_Free(); } __edx = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v32 + 66256, _t84); LMscoctr_Clean_eSCO_Scratchpad(); return; } _Continue_Synchronous_Connection_Negotiation() {// addr = 0x00455459 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t35; // _t35 long long _t37; // _t37 _v32 = _t37; _v40 = __rsi; _v48 = _t35; _v16 = _v32 + 67936; LMscoctr_Transfer_Best_LMP_Parameter_Set_to_Scratchpad(); r8 = _v16; r9 = r8; r8d = *(_v40 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v40 + 432)) + 11) & 0xff); return; } _Finalise_Synchronous_Connection_Change() {// addr = 0x004554DC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t28; // _t28 long long _t54; // _t54 long long _t60; // _t60 _v16 = _t54; _v24 = _t60; _v28 = _t28; _t25 = _v28; if(_v28 == 0) { LMscoctr_Commit_to_New_Synchronous_Parameters(_t25); } r9 = _v24 + 18; r8 = _v24 + 14; _v48 = _v24 + 26; *__rsp = _v24 + 28; EG_Event_Composer(0); LMscoctr_Set_Topical_eSCO_Link(0, _v16 + 66256, _v24 + 26); LMscoctr_Set_Topical_eSCO_Link(0, _v16 + 66256, _v24 + 26); LMscoctr_Clean_eSCO_Scratchpad(); return; } LMconnection_LMP_eSCO_Accepted_Ack() {// addr = 0x004555B1 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t136; // _t136 signed char _t142; // _t142 _unknown_ _t191; // _t191 signed char* _t235; // _t235 long long _t255; // _t255 long long _t260; // _t260 long long _t265; // _t265 _push(r12); _push(__rbx); __rsp = __rsp - 112; _v80 = _t260; _v88 = _t265; _v72 = 0; _v64 = 0; _v64 = _v80 + 67936; _v72 = *(_v80 + 67952); _v48 = LMscoctr_Get_Topical_eSCO_Link_Transaction_Type(_v80 + 66256); _v27 = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet((_v64[4]) & 0xff); _v27 = LMscoctr_Covert_LM_To_LC_ESCO_Packet_Type(_v27 & 255); _v26 = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet((_v64[5]) & 0xff); _v26 = LMscoctr_Covert_LM_To_LC_ESCO_Packet_Type(_v26 & 255); _t255 = *((intOrPtr*)(_v88 + 432)); _v40 = LLINK_ReadPicoClock(_v80, _t255); _v36 = _v40; _v32 = 4; _v56 = _v32 + _v36; _v44 = _v56 & 0xfc; _v44 = LMdm_Calc_Instance((_v64[2]) & 0xff, *_v64 & 0xff, _v44); _t235 = _v64; if((_v27 & 255) >= 0) { L2: if((_v27 & 255) >= 0) { L5: L6: L8: _t191 = _t255 + _t235; if((_v26 & 255) >= 0) { L10: if((_v26 & 255) >= 0 || ( *(_t235 + (((_v26 & 255) >> 4 & 255) << 4) + _t235 + (((_v26 & 255) >> 4 & 255) << 4) + &ptype) & 0x400) == 0) { _t136 = 5; } else { _t136 = 3; } L16: _v25 = _t136 + _t191; _t221 = _v48; if(_v48 != 0) { r12d = _v25 & 255; _t142 = LMscoctr_Map_AirMode_HCI2LMP((_v64[0xc]) & 3, __eflags); r9d = (_v64[0xa]) & 0xffff; r10d = (_v64[8]) & 0xffff; _v100 = LMsco_LC_Modify_eSCO_Pkt_Type_CB; _v108 = r12d; _v116 = *_v64 & 0xff; r8d = _v44; _v124 = r8d; *__rsp = _t142 & 255; r8d = r10d; _t145 = LCCMD_ModifyESCOLinkRequest(); } else { (_v72[0x34]) = _v44; r12d = _v25 & 255; r8d = LMscoctr_Map_AirMode_HCI2LMP((_v64[0xc]) & 3, _t221) & 255; r11d = (_v64[8]) & 0xffff; r10d = _v26 & 255; _v92 = LMsco_LC_Add_eSCO_Link_CB; _v100 = r12d; _v108 = *_v64 & 0xff; r9d = _v44; _v116 = r9d; _v124 = r8d; *__rsp = (_v64[0xa]) & 0xffff; r9d = r11d; r8d = r10d; LCCMD_AddESCOLinkRequest(); } __rsp = &(__rsp[0x1c]); _pop(__rbx); _pop(r12); return; } _t235 = _t235 + (((_v26 & 255) >> 4 & 255) << 4); if(((_t235[ &(_t235[(char*)( &ptype)])]) & 0x200) != 0) { _t136 = 1; goto L16; } goto L10; } _t235 = _t235 + (((_v27 & 255) >> 4 & 255) << 4); if(((_t235[ &(_t235[(char*)( &ptype)])]) & 0x400) == 0) { goto L5; } goto L6; } _t235 = _t235 + (((_v27 & 255) >> 4 & 255) << 4); if(((_t235[ &(_t235[(char*)( &ptype)])]) & 0x200) != 0) { goto L8; } goto L2; } LMconnection_LMP_Remove_eSCO_Link_Req( _unknown_ __rax // r53 ) {// addr = 0x00455904 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 intOrPtr _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t65; // _t65 intOrPtr _t71; // _t71 signed char* _t74; // _t74 long long _t77; // _t77 long long _t81; // _t81 _v32 = _t77; _v40 = _t81; _v48 = _t74; _v11 = *_v48 & 255; _v10 = (_v48[1]) & 255; _t65 = _v48; _v9 = (_t65[1]) & 255; __esi = _v11 & 255; LMscoctr_Find_SCO_By_SCO_Handle(_v11 & 255, _v32 + 66256, _v32 + 66256); _v24 = _t65; if(_v24 == 0) { _v16 = 0; } else { if(((_v24[2]) & 255) != 0) { if(((_v24[2]) & 255) == 1 || ((_v24[2]) & 255) == 3) { _v16 = 35; } else { if(((_v24[2]) & 255) == 2 || ((_v24[2]) & 255) == 4) { _v16 = 30; } else { _v16 = 31; } } } else { _t71 = _v40; _t52 = *(_t71 + 2) & 255; if(( *(_t71 + 2) & 255) != 0) { r8d = 4; LMesco_Delete(_t52); } else { r8d = 2; LMesco_Delete(_t52); } _v16 = 0; } } return _v16; } LMconnection_LMP_Not_Accepted_Ext_eSCO_Link_Req() {// addr = 0x00455A16 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t22; // _t22 long long _t36; // _t36 _v32 = _t36; _v40 = __rsi; _v44 = _t22; _v24 = *((intOrPtr*)(_v32 + 67952)); _v12 = LMscoctr_Get_Topical_eSCO_Link_Transaction_Type(_v32 + 66256); if(_v24 != 0) { if(_v12 != 0) { LMscoctr_Resume_Link(); __rsi = _v24; _Finalise_Synchronous_Connection_Change(); } else { __rsi = _v40; _Finalise_Synchronous_Connection_Setup(); } } LMscoctr_Set_Topical_eSCO_Link(0, _v32 + 66256, __rsi); return; } LMconnection_LMP_Accepted_Ext_eSCO_Link_Req() {// addr = 0x00455AB7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 long long _t7; // _t7 _v16 = _t5; _v24 = _t7; LMconnection_LMP_Accepted_Ext_eSCO_Link_Req_Timeout(); return; } LMconnection_LMP_Accepted_Ext_eSCO_Link_Req_Timeout() {// addr = 0x00455ADC signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 long long _v108; // _cfa_ffffff94 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 signed int _v132; // _cfa_ffffff7c signed int _v140; // _cfa_ffffff74 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t139; // _t139 signed char _t145; // _t145 _unknown_ _t193; // _t193 signed char* _t239; // _t239 long long _t259; // _t259 long long _t264; // _t264 long long _t269; // _t269 _push(r12); _push(__rbx); __rsp = &(__rsp[0xffffffffffffffe0]); _v96 = _t264; _v104 = _t269; _v80 = _v104; _v72 = 0; _v64 = 0; _v64 = _v96 + 67936; _v72 = *(_v96 + 67952); _v48 = LMscoctr_Get_Topical_eSCO_Link_Transaction_Type(_v96 + 66256); _v27 = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet((_v64[4]) & 0xff); _v27 = LMscoctr_Covert_LM_To_LC_ESCO_Packet_Type(_v27 & 255); _v26 = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet((_v64[5]) & 0xff); _v26 = LMscoctr_Covert_LM_To_LC_ESCO_Packet_Type(_v26 & 255); _t259 = *((intOrPtr*)(_v80 + 432)); _v40 = LLINK_ReadPicoClock(_v96, _t259); _v36 = _v40; _v32 = 4; _v56 = _v32 + _v36; _v44 = _v56 & 0xfc; _v44 = LMdm_Calc_Instance((_v64[2]) & 0xff, *_v64 & 0xff, _v44); if(_v72 == 0) { L20: __rsp = __rsp - 128; _pop(__rbx); _pop(r12); return; } _t239 = _v64; if((_v27 & 255) >= 0) { L3: if((_v27 & 255) >= 0) { L6: L7: L9: _t193 = _t259 + _t239; if((_v26 & 255) >= 0) { L11: if((_v26 & 255) >= 0 || ( *(_t239 + (((_v26 & 255) >> 4 & 255) << 4) + _t239 + (((_v26 & 255) >> 4 & 255) << 4) + &ptype) & 0x400) == 0) { _t139 = 5; } else { _t139 = 3; } L17: _v25 = _t139 + _t193; _t224 = _v48; if(_v48 != 0) { r12d = _v25 & 255; _t145 = LMscoctr_Map_AirMode_HCI2LMP((_v64[0xc]) & 3, __eflags); r9d = (_v64[0xa]) & 0xffff; r10d = (_v64[8]) & 0xffff; _v116 = LMsco_LC_Modify_eSCO_Pkt_Type_CB; _v124 = r12d; _v132 = *_v64 & 0xff; r8d = _v44; _v140 = r8d; *__rsp = _t145 & 255; r8d = r10d; _t133 = LCCMD_ModifyESCOLinkRequest(); } else { (_v72[0x34]) = _v44; r12d = _v25 & 255; r8d = LMscoctr_Map_AirMode_HCI2LMP((_v64[0xc]) & 3, _t224) & 255; r11d = (_v64[8]) & 0xffff; r10d = _v26 & 255; _v108 = LMsco_LC_Add_eSCO_Link_CB; _v116 = r12d; _v124 = *_v64 & 0xff; r9d = _v44; _v132 = r9d; _v140 = r8d; *__rsp = (_v64[0xa]) & 0xffff; r9d = r11d; r8d = r10d; _t133 = LCCMD_AddESCOLinkRequest(); } goto L20; } _t239 = _t239 + (((_v26 & 255) >> 4 & 255) << 4); if(((_t239[ &(_t239[(char*)( &ptype)])]) & 0x200) != 0) { _t139 = 1; goto L17; } goto L11; } _t239 = _t239 + (((_v27 & 255) >> 4 & 255) << 4); if(((_t239[ &(_t239[(char*)( &ptype)])]) & 0x400) == 0) { goto L6; } else { goto L7; } } _t239 = _t239 + (((_v27 & 255) >> 4 & 255) << 4); if(((_t239[ &(_t239[(char*)( &ptype)])]) & 0x200) != 0) { goto L9; } goto L3; } LMconnection_Start_New_eSCO_Connection( _unknown_ __rax, // r53 long long __rdx // r56 ) {// addr = 0x00455E42 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t73; // _t73 long long _t98; // _t98 long long _t105; // _t105 _v48 = _t98; _v56 = _t105; _v64 = __rdx; *((char*)(_v56 + 14)) = 1 - ( *(_v56 + 2) & 255); _t73 = _v56; r9d = 2; r8d = *(_v48 + 190539) & 0xff; LMscoctr_Alloc(_t73); _v32 = _t73; if(_v32 != 0) { LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _v32); LMscoctr_Extract_eSCO_Parameters_From_LMP_PDU(); if(( *(_v56 + 2) & 255) == 1) { _v24 = _v48 + 67936; *(_v32 + 24) = *(_v24 + 7) & 255; *(_v32 + 15) = *(_v24 + 6) & 255; } _v12 = EG_Filter_Event(2); if(_v12 == 2 || _v12 == 3) { LMconnection_LM_AutoAccept_Default_eSCO_Link(); } else { LM_Send_HC_Connection_Request(_t53, _v48); } return; } return; } LMconnection_Continue_New_eSCO_Connection( _unknown_ __eax // r0 ) {// addr = 0x00455FAB short _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 short _v66; // _cfa_ffffffbe char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t282; // _t282 long long _t295; // _t295 long long _t316; // _t316 _v80 = _t295; _v88 = _t316; _v96 = _t282; _v48 = *((intOrPtr*)(_v80 + 67952)); _v40 = _v80 + 67936; _v28 = 0; _v66 = 0; if(_v48 == 0) { return 2; } if(_v40 == 0) { return 31; } if(( *(_v80 + 66259) & 255) != 0) { _t283 = _v80 + 60216; LMscoctr_Extract_eSCO_Parameters_From_LMP_PDU(); if(( *(_v40 + 14) & 255) == 3) { _v66 = LMscoctr_Calculate_Latency_In_uSec( *(_v40 + 5) & 0xff, *(_v40 + 4) & 0xff, *(_v40 + 1) & 0xff, _v40, _t283); _t283 = &_v72; LMscoctr_Remove_LMP_Parameter_Sets(); } r8d = *(_v40 + 8) & 0xffff; if(LMscoctr_Is_An_LMP_Parameter_Set( *(_v40 + 4) & 0xff, *(_v40 + 1) & 0xff, _v80 + 66256) == 0) { if(( *(_v80 + 66259) & 255) != 0) { LMscoctr_Remove_LMP_Parameter_Set(); } __ebx = ( *(_v48 + 48) & 0xffff) * 1000; if(__ebx >= (LMscoctr_Calculate_Latency_In_uSec( *(_v40 + 5) & 0xff, *(_v40 + 4) & 0xff, *(_v40 + 1) & 0xff, _v40, _t283) & 65535)) { *(_v40 + 14) = 4; } else { *(_v40 + 14) = 3; } if(( *(_v80 + 66259) & 255) == 0) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v80 + 60216); _Finalise_Synchronous_Connection_Setup(); } else { _Continue_Synchronous_Connection_Negotiation(); } } else { if(LMscoctr_Is_D_eSCO_Acceptable(_t141) == 0) { if(( *(_v40 + 14) & 255) == 2) { if(( *(_v80 + 66256) & 255) == 0) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v80 + 60216); _Finalise_Synchronous_Connection_Setup(); } else { *(_v40 + 14) = 2; *(_v40 + 2) = *(_v80 + 66262) & 255; LMscoctr_Remove_From_D_eSCO_List(); r8 = _v40; r9 = r8; r8d = *(_v88 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v88 + 432)) + 11) & 0xff); } } else { LMscoctr_Set_D_eSCO_and_Timing_Flag(); *(_v40 + 14) = 2; r8 = _v40; r9 = r8; r8d = *(_v88 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v88 + 432)) + 11) & 0xff); } } else { *__rsp = LMconnection_LMP_eSCO_Accepted_Ack; r9d = 17; r8d = 32524; LMP_Send_Accepted_Ext_Tag( *((intOrPtr*)(_v88 + 432))); } } } else { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v80 + 60216); _Finalise_Synchronous_Connection_Setup(); } return _v28; } LMconnection_Start_Change_eSCO_Connection() {// addr = 0x004563E0 signed char* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t137; // _t137 signed char* _t181; // _t181 long long _t188; // _t188 long long _t205; // _t205 _v48 = _t188; _v56 = _t205; _v64 = _t181; _v40 = _v48 + 67936; _t137 = _v64; LMscoctr_Find_SCO_By_SCO_Handle( *_t137 & 0xff, _v48 + 66256, _v48 + 66256); _v32 = _t137; LMscoctr_Set_Topical_eSCO_Link(1, _v48 + 66256, _v32); *((char*)(_v56 + 14)) = 1 - ( *(_v56 + 2) & 255); _t184 = _v48 + 60216; LMscoctr_Extract_eSCO_Parameters_From_LMP_PDU(); if((_v32[0x28]) == LMscoctr_Calculate_Bandwidth(_v40)) { r8d = *(_v40 + 8) & 0xffff; if(LMscoctr_Is_An_LMP_Parameter_Set( *(_v40 + 4) & 0xff, *(_v40 + 1) & 0xff, _v48 + 66256) == 0) { if(( *(_v48 + 66259) & 255) == 0) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v48 + 60216); _Finalise_Synchronous_Connection_Change(); } else { if(((_v32[0x30]) & 0xffff) * 1000 >= (LMscoctr_Calculate_Latency_In_uSec( *(_v40 + 5) & 0xff, *(_v40 + 4) & 0xff, *(_v40 + 1) & 0xff, _v40, _t184) & 65535)) { *((char*)(_v40 + 14)) = 4; } else { *((char*)(_v40 + 14)) = 3; } LMscoctr_Transfer_Best_LMP_Parameter_Set_to_Scratchpad(); LMscoctr_Set_D_eSCO_and_Timing_Flag(); r8 = _v40; r9 = r8; r8d = *(_v56 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff); } } else { LMscoctr_Suspend_Link(); *__rsp = LMconnection_LMP_eSCO_Accepted_Ack; r9d = 17; r8d = 32524; LMP_Send_Accepted_Ext_Tag( *((intOrPtr*)(_v56 + 432))); } } else { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v48 + 60216); _Finalise_Synchronous_Connection_Change(); } return; } LMconnection_Continue_Change_eSCO_Connection( _unknown_ __eax // r0 ) {// addr = 0x00456699 char _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v66; // _cfa_ffffffbe char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed char* _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t242; // _t242 signed char* _t318; // _t318 intOrPtr _t323; // _t323 long long _t330; // _t330 intOrPtr _t340; // _t340 long long _t355; // _t355 intOrPtr _t360; // _t360 _v80 = _t330; _v88 = _t355; _v96 = _t318; _v48 = _v80 + 67936; _v32 = 0; _v66 = 0; _t242 = _v96; LMscoctr_Find_SCO_By_SCO_Handle( *_t242 & 0xff, _v80 + 66256, _v80 + 66256); _v40 = _t242; if(_v40 == 0) { return 2; } if(_v48 == 0) { return 31; } if(( *(_v80 + 66259) & 255) != 0) { _t321 = _v80 + 60216; LMscoctr_Extract_eSCO_Parameters_From_LMP_PDU(); if(( *(_v48 + 14) & 255) == 3) { _v66 = LMscoctr_Calculate_Latency_In_uSec( *(_v48 + 5) & 0xff, *(_v48 + 4) & 0xff, *(_v48 + 1) & 0xff, _v48, _t321); _t321 = &_v72; LMscoctr_Remove_LMP_Parameter_Sets(); } r8d = *(_v48 + 8) & 0xffff; if(LMscoctr_Is_An_LMP_Parameter_Set( *(_v48 + 4) & 0xff, *(_v48 + 1) & 0xff, _v80 + 66256) == 0) { if(( *(_v80 + 66259) & 255) != 0) { LMscoctr_Remove_LMP_Parameter_Set(); } __ebx = ((_v40[0xc]) & 0xffff) * 1000; if(__ebx >= (LMscoctr_Calculate_Latency_In_uSec( *(_v48 + 5) & 0xff, *(_v48 + 4) & 0xff, *(_v48 + 1) & 0xff, _v48, _t321) & 65535)) { *(_v48 + 14) = 4; } else { *(_v48 + 14) = 3; } if(( *(_v80 + 66259) & 255) == 0) { LMscoctr_Resume_Link(); LM_Encode_LMP_Not_Accepted_Ext_PDU(_v80 + 60216); _Finalise_Synchronous_Connection_Change(); } else { _Continue_Synchronous_Connection_Negotiation(); } } else { _v26 = *_v40 & 255; *_v40 = 0; _t323 = _v88; _t314 = _v48; _t360 = _v48; _t340 = _v80; _v25 = LMscoctr_Is_D_eSCO_Acceptable( *_v40 & 255); *_v40 = _v26 & 255; if(_v25 != 1) { r8d = *(_v80 + 66256) & 0xff; DebugPrint(0, _v48, _t314, _t323, _t340, _t360); if(( *(_v48 + 14) & 255) == 2) { if(( *(_v80 + 66256) & 255) == 0) { LMscoctr_Resume_Link(); LM_Encode_LMP_Not_Accepted_Ext_PDU(_v80 + 60216); _Finalise_Synchronous_Connection_Change(); } else { *(_v48 + 14) = 2; *(_v48 + 2) = *(_v80 + 66262) & 255; LMscoctr_Remove_From_D_eSCO_List(); r8 = _v48; r9 = r8; r8d = *(_v88 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v88 + 432)) + 11) & 0xff); } } else { LMscoctr_Set_D_eSCO_and_Timing_Flag(); *(_v48 + 14) = 2; r8 = _v48; r9 = r8; r8d = *(_v88 + 2) & 0xff; LMP_Send_eSCO_Link_Req( *( *((intOrPtr*)(_v88 + 432)) + 11) & 0xff); } } else { *__rsp = LMconnection_LMP_eSCO_Accepted_Ack; r9d = 17; r8d = 32524; LMP_Send_Accepted_Ext_Tag( *((intOrPtr*)(_v88 + 432))); } } } else { LMscoctr_Resume_Link(); LM_Encode_LMP_Not_Accepted_Ext_PDU(_v80 + 60216); _Finalise_Synchronous_Connection_Change(); } return _v32; } LMconnection_Get_eSCO_Link_Req_Context( _unknown_ __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x00456B5A intOrPtr _v12; // _cfa_fffffff4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t29; // _t29 long long _t38; // _t38 long long _t39; // _t39 _v48 = _t39; _v52 = sil; _v56 = _t29; _v60 = __ecx; _v16 = 0; _v32 = 0; _v24 = 0; if(_v56 != 0) { _t38 = _v48; __esi = _v56 & 255; LMscoctr_Find_SCO_By_SCO_Handle(_v56 & 255, __rdx, _t38); _v32 = _t38; } _v24 = *((intOrPtr*)(_v48 + 1696)); _v12 = LMscoctr_Get_Topical_eSCO_Link_Transaction_Type(_v48); if(_v24 == 0) { if(_v32 == 0) { _v16 = 0; } else { _v16 = 2; } } else { if(_v12 != 1) { _v16 = 1; } else { _v16 = 3; } } return _v16; } LMconnection_LMP_eSCO_Link_Req( _unknown_ __eax // r0 ) {// addr = 0x00456BFE signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v16; // _cfa_fffffff0 long long _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 intOrPtr _t74; // _t74 intOrPtr _t79; // _t79 signed char* _t121; // _t121 signed char* _t122; // _t122 long long _t129; // _t129 _unknown_ _t131; // _t131 long long _t137; // _t137 _v48 = _t129; _v56 = _t137; _v64 = _t121; _v16 = 0; _v10 = *_v64 & 255; _v9 = (_v64[0xd]) & 255; _v20 = 0; _v32 = 0; _t116 = _v48 + 191032; _t122 = _v64; _v20 = LMscoctr_Validate_Peer_eSCO_Parameters((_v64[0xd]) & 255); if(_v20 == 0) { _t105 = _v56; _t139 = _v48; _t131 = _v48 + 66256; _v16 = LMconnection_Get_eSCO_Link_Req_Context( *(_v56 + 2) & 0xff, _v56); if(_v16 != 0) { if(_v16 != 1) { if(_v16 != 2) { if(_v16 == 3) { _v20 = LMconnection_Continue_Change_eSCO_Connection(DebugPrint(0, _t105, _t116, _t122, _t131, _t139)); } } else { _t74 = DebugPrint(0, _t105, _t116, _t122, _t131, _t139); LMconnection_Start_Change_eSCO_Connection(); _v20 = _t74; } } else { _v20 = LMconnection_Continue_New_eSCO_Connection(DebugPrint(0, _t105, _t116, _t122, _t131, _t139)); } } else { _t79 = DebugPrint(0, _t105, _t116, _t122, _t131, _t139); LMconnection_Start_New_eSCO_Connection(_v48, _v64); _v20 = _t79; } } if(( *(_v56 + 13) & 255) == ( *(_v56 + 2) & 255) && _v20 != 0) { _v32 = *((intOrPtr*)(_v48 + 67952)); *((long long*)(_v32 + 64)) = _v56; _Finalise_Synchronous_Connection_Setup(); } return _v20; } LMsco_Free_All_SCO_Links( signed char __edx // r3 ) {// addr = 0x00456DD1 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 intOrPtr _v120; // _cfa_ffffff88 intOrPtr _v128; // _cfa_ffffff80 intOrPtr _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 _unknown_ __rbp; // r59 signed char _t141; // _t141 long long _t172; // _t172 long long _t207; // _t207 long long _t220; // _t220 intOrPtr _t222; // _t222 long long _t258; // _t258 long long _t268; // _t268 _v80 = _t258; _v88 = _t268; _v92 = __edx; _v96 = _t141; _v28 = 31; if( *((intOrPtr*)(_v88 + 776)) != _v88 + 776 || *((intOrPtr*)(_v88 + 784)) != _v88 + 776) { _t172 = *((intOrPtr*)(_v88 + 776)); if(_t172 != _v88 + 776) { _t172 = *((intOrPtr*)(_v88 + 776)); } _v64 = _t172; _v56 = *((intOrPtr*)(_v88 + 776)); if(_v88 + 776 != _v56) { *((long long*)(_v88 + 776)) = *_v56; if( *_v56 != _v88 + 776) { *((long long*)( *_v56 + 8)) = _v88 + 776; } else { *((long long*)(_v88 + 784)) = _v88 + 776; } } check_list_constant(); _v48 = _v64 - 88; *(_v48 + 32) = _v92 & 255; *(_v48 + 33) = _v96 & 255; *_v48 = 10; _v40 = _v88 + 776; if( *((intOrPtr*)(_v48 + 72)) == 0) { r10 = _v48 + 17; r9 = _v48 + 26; r8 = _v48 + 28; r11 = _v88 + 424; _v120 = r10; _v128 = r9; _v136 = r8; _v144 = _v48 + 18; *__rsp = _v48 + 14; r9 = _v48 + 10; r8 = r11; EG_Event_Composer(0); LMscoctr_Free(); if( *((intOrPtr*)(_v88 + 776)) == _v88 + 776 && *((intOrPtr*)(_v88 + 784)) == _v88 + 776) { _v28 = 31; } goto L26; } if(( *(_v48 + 10) & 255) != 2) { _t207 = _v48; _t133 = *(_t207 + 2) & 255; if(( *(_t207 + 2) & 255) != 0) { _v28 = LMsco_Event_Callback(_t133); } else { r9d = 0; r8d = 1; LMsco_Delete(_t133); } } else { _t220 = _v48; _t136 = *(_t220 + 2) & 255; if(( *(_t220 + 2) & 255) != 0) { _v28 = LMesco_Event_Callback(_t136); } else { _t222 = _v88; _t138 = *(_t222 + 2) & 255; if(( *(_t222 + 2) & 255) != 0) { r8d = 3; LMesco_Delete(_t138); } else { r8d = 1; LMesco_Delete(_t138); } } } _v72 = *_v40; while(_v72 != _v40) { _v48 = _v64 - 88; *(_v48 + 32) = _v92 & 255; *(_v48 + 33) = _v96 & 255; *_v48 = 10; _v72 = *_v72; } _v28 = 0; goto L26; } else { L26: return _v28; } } LMsco_Read_LMP_Handle_Command( long long __rax // r53 ) {// addr = 0x0045715D long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t22; // _t22 long long _t24; // _t24 long long _t27; // _t27 long long _t30; // _t30 long long _t34; // _t34 _t24 = __rax; _v32 = _t34; _v48 = _t30; _v36 = _t22; _v16 = 0; LMscoctr_Find_SCO_By_Connection_Handle(_v36 & 65535, _v32 + 66256, _v32 + 66256); _v16 = _t24; if(_v16 == 0) { return 2; } _t27 = _v48; __ecx = 2; write_du(2, _v16 + 8, _t27, _v48 + 24); _v48 = _t27; __edx = 1; write_end_du(1, _v48, _v16 + 15); return 0; } LMsco_Handle_Erroneous_ESCO_Packet() {// addr = 0x004571EE char _v9; // _cfa_fffffff7 signed int _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed short _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed short _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed short _t76; // _t76 long long _t85; // _t85 long long _t89; // _t89 long long _t91; // _t91 signed short _t97; // _t97 _v64 = _t91; _v72 = _t97; _v80 = _t89; _v48 = 0; _t76 = _v72; LMscoctr_Find_SCO_By_LC_SCO_Link(_v64 + 66256, _v64 + 66256, _t76); _v48 = _t76; if(_v48 != 0) { if(( *_v48 & 255) != 4 || ( *(_v48 + 34) & 255) == 0) { return 31; } else { __edi = *(_v48 + 23) & 0xff; _v9 = LMscoctr_Covert_LM_To_LC_ESCO_Packet_Type( *(_v48 + 23) & 0xff); _v24 = 0; _v23 = _v23 & 0xcf | ( *(_v80 + 1) & 3) << 4; _v24 = _v24 & 0xf000 | *(_v48 + 8) & 0xfff; _v22 = *(_v48 + 28) & 65535; if((_v24 & 0xfff) != 0) { QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v72 + 32)); if(_v40 != 0) { _t85 = _v40; QUEUE_GetDataBuf(_t85); _v32 = _t85; RtlFillMemory(_v22 & 0xff, 0, _v32); QUEUE_EnqueueCommit(); } return 0; } return 31; } } return 31; } LMconnection_LM_Add_SCO_Command( signed long long __rax // r53 ) {// addr = 0x0045733E long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 intOrPtr _t19; // _t19 signed short _t21; // _t21 long long _t23; // _t23 long long _t28; // _t28 _t23 = __rax; _v32 = _t28; _v40 = _t19; _v36 = _t21; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v16 = _t23; if(_v16 == 0) { return 2; } r8d = 1; return LMconnection_LM_Add_SCO_Connection(); } LMsco_Validate_SYNC_Admission() {// addr = 0x004573A7 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v32 = __rdi; if(( *(_v32 + 4) & 0x7000) == 0) { if(( *(_v32 + 61) & 255) == 0) { _v12 = 0; } else { DebugPrint(0, _v32, __rcx, __rdx, __rdi, __rsi); _v12 = 42; } } else { _v12 = 10; } return; } LMsco_Transmit_SCO_Silence_Packet() {// addr = 0x00457417 signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed short _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 signed short _t60; // _t60 long long _t76; // _t76 long long _t80; // _t80 long long _t84; // _t84 _v64 = _t84; _v68 = _t60; _v48 = *((intOrPtr*)(_v64 + 72)); _v24 = 0; _v22 = *(_v48 + 2) & 255; _v24 = _v24 & 0xf000 | _v68 & 0xfff; QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v64 + 48)); if(_v40 != 0) { _t80 = _v40; QUEUE_GetDataBuf(_t80); _v32 = _t80; RtlFillMemory(_v22 & 0xff, 0, _v32); QUEUE_EnqueueCommit(); } if(( *(_v48 + 3) & 255) != 2) { } else { QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v64 + 48)); if(_v40 != 0) { _t76 = _v40; QUEUE_GetDataBuf(_t76); _v32 = _t76; RtlFillMemory(_v22 & 0xff, 0, _v32); QUEUE_EnqueueCommit(); return; } } return; } LMsco_Transmit_eSCO_Silence_Packet() {// addr = 0x00457536 signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed short _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 signed short _t60; // _t60 long long _t76; // _t76 long long _t80; // _t80 long long _t84; // _t84 _v64 = _t84; _v68 = _t60; _v48 = *((intOrPtr*)(_v64 + 72)); _v24 = 0; _v22 = *(_v48 + 6) & 65535; _v24 = _v24 & 0xf000 | _v68 & 0xfff; QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v64 + 48)); if(_v40 != 0) { _t80 = _v40; QUEUE_GetDataBuf(_t80); _v32 = _t80; RtlFillMemory(_v22 & 0xff, 0, _v32); QUEUE_EnqueueCommit(); } if(( *(_v48 + 3) & 255) != 2) { } else { QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v64 + 48)); if(_v40 != 0) { _t76 = _v40; QUEUE_GetDataBuf(_t76); _v32 = _t76; RtlFillMemory(_v22 & 0xff, 0, _v32); QUEUE_EnqueueCommit(); return; } } return; } LMsco_Count_SCO_Link_Num( long long __rdi // r57 ) {// addr = 0x00457655 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v9 = 0; _v10 = 0; while(_v10 <= 3) { if(( *((((_v10 & 255) << 2) + (_v10 & 255) << 5) + _v32 + 0x102f8) & 255) != 0 && ( *((((_v10 & 255) << 2) + (_v10 & 255) << 5) + _v32 + 0x102f8) & 255) != 10) { _v9 = _v9 + 1; } _v10 = _v10 + 1; } return _v9 & 255; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004576D0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } LMdm_Get_Clock_Offset( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0045770F unsigned int _v12; // _cfa_fffffff4 unsigned int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t25; // _t25 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t25 = *( *((intOrPtr*)( *((intOrPtr*)(_v40 + 104)) + 16)) + 2) & 255; if(_t25 != 0) { _v12 = 0; if((_t25 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } return _v24 >> 2 & 0x7fff; } LMconfig_Initialise() {// addr = 0x004577B4 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; LM_Device_Control_Init(_v16); return; } LMconfig_LMP_Not_Accepted( _unknown_ __eax, // r0 signed short __edx // r3 ) {// addr = 0x004577CE char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v12; // _cfa_fffffff4 short _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc signed short _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 intOrPtr _t27; // _t27 short _t28; // _t28 long long _t38; // _t38 __edx = __edx; _v32 = _t38; _v44 = __ecx; _v36 = _t28; _v40 = __edx; _v16 = 0; _v10 = 0; _v9 = 0; _v12 = 0; if((_v40 & 65535) == 37) { r8 = &_v9; *__rsp = &_v12; r9 = r8; r8 = &_v10; _v16 = EG_Event_Composer(0); if(_v16 != 0) { _t27 = 7; } else { _t27 = 0; } _v16 = _t27; } return _v16; } LM_Read_Clock_Offset() {// addr = 0x00457861 char _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed short _t54; // _t54 long long _t60; // _t60 long long _t88; // _t88 _v48 = _t88; _v52 = _t54; _v24 = 1055; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t60, _v48 + 60216); _v32 = _t60; if(_v32 == 0) { _v16 = 2; EG_Generate_Command_Status_Event(); } else { _v16 = 0; EG_Generate_Command_Status_Event(); if(( *(_v32 + 2) & 255) != 0) { _v10 = LMdm_Get_Clock_Offset(_v48, *((intOrPtr*)(_v32 + 432))); r8 = &_v10; EG_Event_Composer(0); } else { LMP_Send_ClockOffset_Req(); _v16 = 0; } } return; } LMlc_LM_Timing_Accuracy_Req( long long __rdi // r57 ) {// addr = 0x00457999 short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _v48 = __rdi; _v56 = __rsi; _v31 = *(_v56 + 2) & 255; _v22 = 47; _v18 = 0; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LMP_Read_Remote_Timing_Information_TCI_Command( signed long long __rax // r53 ) {// addr = 0x004579F9 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed short _t14; // _t14 long long _t16; // _t16 long long _t21; // _t21 _t16 = __rax; _v32 = _t21; _v36 = _t14; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v16 = _t16; if(_v16 == 0) { return 2; } LMlc_LM_Timing_Accuracy_Req(_v32); return 0; } LM_Device_Control_Init( signed short* __rdi // r57 ) {// addr = 0x00457A50 signed short _v20; // _cfa_ffffffec signed short* _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 __rdi = __rdi; _v40 = __rdi; (_v40[2]) = 1; *_v40 = 0; (_v40[0xb10]) = 0; (_v40[0xb12]) = 0; (_v40[0xb13]) = 1; (_v40[0xb14]) = 49; (_v40[0xb14]) = 50; (_v40[0xb15]) = 51; (_v40[0xb15]) = 52; (_v40[0xb12]) = 4; (_v40[0xbc8]) = 16384; (_v40[0xbca]) = 17664; (_v40[0xbbd]) = 0; (_v40[0xb11]) = 0; (_v40[0xbbc]) = 16; (_v40[0xbbc]) = 1; (_v40[0xb13]) = 0; (_v40[0xbbe]) = 0; _v20 = 0; while(_v20 <= 15) { (_v40[0xbbe]) = 1 << __cl | (_v40[0xbbe]) & 65535; _v20 = _v20 + 1; } (_v40[0x1220]) = 0; (_v40[0x1220]) = 0; (_v40[0x1221]) = 0; (_v40[0xb10]) = 0; (_v40[0xb11]) = 0; return; } LMsec_Set_Unit_Key( _unknown_ __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00457B9D signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v9 = 0; while(_v9 <= 15) { __eax = _v9 & 255; *((char*)(_v32 + (_v9 & 255) + 5688)) = __cl; _v9 = _v9 + 1; } return __eax; } LMsec_Get_Unit_Key( long long __rdi // r57 ) {// addr = 0x00457BD8 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } LMconfig_Set_Pin_Code_Type( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x00457BEC long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 5668)) = __dl; return 0; } LMconfig_Read_Pin_Code_Type() {// addr = 0x00457C0E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; __rdx = _v16 + 5668; __ecx = 1; write_du(1, _v16 + 5668, _v24, __rsi); return 0; } LMconfig_Write_Encryption_Mode( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x00457C46 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 5667)) = __dl; return 0; } LMconfig_Read_Encryption_Mode() {// addr = 0x00457C68 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t9; // _t9 _v16 = _t9; _v24 = __rsi; __rdx = _v16 + 5667; __ecx = 1; write_du(1, _v16 + 5667, _v24 + 24, __rsi); return 0; } LMconfig_Write_Simple_Pairing_Mode() {// addr = 0x00457CA4 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 char _t17; // _t17 long long _t22; // _t22 long long _t25; // _t25 _v16 = _t25; _v32 = _t22; _v20 = _t17; if(( *(_v32 + 6) & 8) != 0) { *((char*)(_v16 + 65881)) = __dl; BTCFG_WriteHostSspSupport(); } return 0; } LMconfig_Read_Simple_Pairing_Mode() {// addr = 0x00457CFC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; _v24 = __rsi; __rdx = _v16 + 5665; __ecx = 1; write_du(1, _v16 + 5665, _v24, __rsi); return 0; } LM_ReadFlushTimeoutRequest() {// addr = 0x00457D34 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t29; // _t29 long long _t34; // _t34 long long _t45; // _t45 long long _t50; // _t50 _v32 = _t50; _v48 = _t45; _v36 = _t29; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t34, _v32 + 60216); _v24 = _t34; if(_v24 == 0) { L3: return 18; } _v16 = *((intOrPtr*)(_v24 + 768)); if(_v16 == 0) { goto L3; } __rsi = _v48 + 24; write_du(2, _v24 + 626, _v48, __rsi); write_du(2, *((intOrPtr*)( *((intOrPtr*)(_v16 + 104)) + 24)) + 2, _v48 + 24, __rsi); return 0; } LMdm_Get_Clock_Offset( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00457DE0 unsigned int _v12; // _cfa_fffffff4 unsigned int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t25; // _t25 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t25 = *( *((intOrPtr*)( *((intOrPtr*)(_v40 + 104)) + 16)) + 2) & 255; if(_t25 != 0) { _v12 = 0; if((_t25 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } return _v24 >> 2 & 0x7fff; } LMdm_Get_Tx_Power( long long __rdi // r57 ) {// addr = 0x00457E85 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if( *((intOrPtr*)(_v16 + 432)) == 0) { return 10; } return ( *( *((intOrPtr*)( *((intOrPtr*)(_v16 + 432)) + 104)) + 4) & 255) + ( *( *((intOrPtr*)( *((intOrPtr*)(_v16 + 432)) + 104)) + 4) & 255) + __edx + ( *( *((intOrPtr*)( *((intOrPtr*)(_v16 + 432)) + 104)) + 4) & 255) + ( *( *((intOrPtr*)( *((intOrPtr*)(_v16 + 432)) + 104)) + 4) & 255) + __edx - 14; } LMdm_Get_Max_Tx_Power() {// addr = 0x00457EC4 _unknown_ __rbp; // r59 return 10; } LMlc_LMP_Clock_Offset_Req() {// addr = 0x00457ECF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t40; // _t40 long long _t43; // _t43 long long _t47; // _t47 _v16 = _t43; _v24 = _t47; _v32 = _t40; *(_v24 + 14) = *(_v24 + 2) & 255 ^ 1; r8d = LMdm_Get_Clock_Offset(_v16, *((intOrPtr*)(_v24 + 432))) & 65535; LMP_Send_ClockOffset_Res(); return 0; } LMlc_LMP_Clock_Offset_Res( _unknown_ __eax, // r0 long long __rdx // r56 ) {// addr = 0x00457F5C intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t19; // _t19 long long _t29; // _t29 _v32 = _t29; _v40 = __rsi; _v48 = __rdx; _v12 = 0; r8 = _v48; _v12 = EG_Event_Composer(0); if(_v12 != 0) { _t19 = 7; } else { _t19 = 0; } _v12 = _t19; return _v12; } LMlc_LMP_Slot_Offset( signed char* __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00457FCB short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; _v10 = ( *_v48 & 0xff) + (((_v48[1]) & 0xff) << 8); if(_v10 <= 1249) { *((short*)(_v40 + 80)) = 1250 - _v10; } return 0; } LMlc_LMP_Timing_Accuracy_Req() {// addr = 0x0045801E signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t38; // _t38 long long _t40; // _t40 _v32 = _t40; _v40 = __rsi; _v48 = _t38; _v10 = 250; _v9 = 10; *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; r8d = _v9 & 255; r9d = r8d; r8d = _v10 & 255; LMP_Send_Timing_Accuracy_Res(); return 0; } LMlc_LMP_Timing_Accuracy_Res( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004580A2 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; return 0; } LMlc_LMP_Page_Mode_Req() {// addr = 0x004580B9 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t65; // _t65 long long _t68; // _t68 long long _t71; // _t71 _v32 = _t68; _v40 = _t71; _v48 = _t65; _v10 = *_v48 & 255; _v9 = (_v48[1]) & 255; if(_v10 != 0) { L5: r9d = 26; r8d = 53; LMP_Send_Not_Accepted(); L6: return; } if(_v9 == 0 || _v9 == 1 || _v9 == 2) { r8d = 53; LMP_Send_Accepted(); goto L6; } else { goto L5; } } LMlc_LMP_Page_Scan_Mode_Req() {// addr = 0x00458197 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t87; // _t87 long long _t91; // _t91 long long _t95; // _t95 _v32 = _t91; _v40 = _t95; _v48 = _t87; _v10 = *_v48 & 255; _v9 = (_v48[1]) & 255; if(_v10 != 0 || _v9 != 0 && _v9 != 1 && _v9 != 2) { r9d = 26; r8d = 54; LMP_Send_Not_Accepted(); } else { r8d = 54; LMP_Send_Accepted(); if(( *(_v40 + 16) & 255) != _v9) { *(_v40 + 16) = __dl; EG_Event_Composer(0); } } return; } LMlc_LMP_Not_Accepted( intOrPtr __ecx, // r2 signed short __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004582C8 char _v10; // _cfa_fffffff6 short _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed short _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rsi = __rsi; __edx = __edx; __ecx = __ecx; _v32 = __rdi; _v40 = __rsi; _v48 = __ecx; _v44 = __edx; _v16 = 0; if((_v44 & 65535) != 5) { _v16 = 31; } else { _v10 = 0; r8 = &_v10; EG_Event_Composer(0); } return _v16; } LMdm_Calc_Instance( signed short __ecx, // r2 signed short __edx, // r3 signed int __edi // r4 ) {// addr = 0x0045833B intOrPtr _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __edi = __edi; __ecx = __ecx; _v28 = __edi; _v32 = sil; _v36 = __edx; _v40 = __ecx; _v16 = (_v36 & 65535) + (_v36 & 65535); _v12 = (_v40 & 65535) + (_v40 & 65535); _v28 = _v28 ^ (_v32 & 255) << 27; _v20 = _v28 / _v16 * _v16 + _v12; if(_v20 <= _v28) { _v20 = _v20 + _v16; } _v20 = _v20 ^ (_v32 & 255) << 27; _v20 = _v20 & 268435455; return _v20; } LMdm_Calc_Instance_2( signed short __ecx, // r2 signed short __edx, // r3 signed int __edi // r4 ) {// addr = 0x004583A5 intOrPtr _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __edi = __edi; __ecx = __ecx; _v28 = __edi; _v32 = sil; _v36 = __edx; _v40 = __ecx; _v16 = (_v36 & 65535) + (_v36 & 65535); _v12 = (_v40 & 65535) + (_v40 & 65535); _v28 = _v28 ^ (_v32 & 255) << 27; _v20 = _v28 / _v16 * _v16 + _v12; if(_v20 < _v28) { _v20 = _v20 + _v16; } _v20 = _v20 ^ (_v32 & 255) << 27; _v20 = _v20 & 268435455; return _v20; } LMdm_Calc_Offset_from_Instant( signed short __edx, // r3 signed int __edi, // r4 signed char __esi // r5 ) {// addr = 0x0045840F signed short _v10; // _cfa_fffffff6 unsigned int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed char _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; _v28 = __edi; _v32 = __esi; _v36 = __edx; _v24 = (_v36 & 65535) + (_v36 & 65535); _v28 = _v28 ^ (_v32 & 255) << 27; _v20 = _v28 / _v24 * _v24; _v16 = _v28 - _v20; _v10 = (_v16 >> 2) + (_v16 >> 2); return _v10 & 65535; } __abs( signed char __edi // r4 ) {// addr = 0x00458467 signed int _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; if(_v12 >= 0) { return _v12 & 255; } return ~(_v12 & 255); } LMdm_Moving_Average_RSSI( _unknown_ __eax // r0 ) {// addr = 0x00458484 char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t130; // _t130 signed char* _t171; // _t171 _v32 = __rdi; _v24 = _v32 + 152; _v10 = *(_v32 + 162) & 255; __edi = (_v10 & 255) - ((_v24[2]) & 255); if(__abs((_v10 & 255) - ((_v24[2]) & 255)) <= 14) { if(((_v24[1]) & 255) > 0) { (_v24[1]) = _v24 - 1; } } else { (_v24[1]) = &(_v24[1]); } if(( *_v24 & 255) > 4) { if(((_v24[1]) & 255) <= 1) { if(((_v24[1]) & 255) == 1) { _v10 = (_v24[2]) & 255; } } else { (_v24[1]) = 0; } (_v24[8]) = _v10 + ((_v24[8]) & 65535); asm("cbw "); _t171 = _v24; (_t171[8]) = ((_v24[8]) & 65535) - ((_v24[3]) & 255); _v9 = 1; while(_v9 <= 4) { _t130 = (_v24[ &(_t171[3])]) & 255; _t171 = _t171 - 1; (_v24[ &(_t171[3])]) = _t130; _v9 = _v9 + 1; } (_v24[7]) = _v10 & 255; (_v24[2]) = (((_v24[8]) & 65535) * 26215 >> 16 >> 1) - (((_v24[8]) & 65535) >> 15); goto L14; } else { (_v24[8]) = _v10 + ((_v24[8]) & 65535); (_v24[ &(_v24[3])]) = _v10 & 255; *_v24 = &(_v24[1]); _v36 = *_v24 & 255; (_v24[2]) = ((_v24[8]) & 65535) / _v36; L14: *(_v32 + 162) = (_v24[2]) & 255; return; } } LMdm_Read_Read_RSSI( signed char __rax // r53 ) {// addr = 0x00458660 signed int _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t48; // _t48 signed short _t58; // _t58 signed char _t64; // _t64 long long _t78; // _t78 long long _t86; // _t86 _t64 = __rax; _v48 = _t86; _v64 = _t78; _v52 = _t58; _v24 = 0; _v40 = 0; if(_v52 <= 19) { _t48 = LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, __rax, _v48 + 60216); _v24 = _t64; if(_v24 != 0) { _v40 = *(_v24 + 432); _v32 = _v24 + 626; L7: if(_v40 == 0 || _v32 == 0) { return 2; } else { LMdm_Get_Peer_Rssi(); _v9 = _t48; if(_v52 > 19) { L16: *((char*)(_v40 + 162)) = __dl; LMdm_Moving_Average_RSSI(_t48); HCI_Fill_Data_Unit(2, _v32, _v64, _v64 + 24); _v64 = _v64 + 24; HCI_Fill_Data_Unit(1, _v40 + 162, _v64, _v64 + 24); return 0; } if(_v9 < 217) { if(_v9 >= 186) { _t48 = 0; } else { _t48 = (_v9 & 255) + 70; } } else { _t48 = (_v9 & 255) + 40; } _v9 = _t48; goto L16; } } return 12; } _t48 = LC_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, __rax, _v48 + 30560); _v40 = _t64; if(_v40 == 0) { return 12; } _v32 = _v40 + 8; goto L7; } LMdm_Read_Transmit_Power_Level( _unknown_ __eax, // r0 signed long long __rax // r53 ) {// addr = 0x004587D8 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t35; // _t35 long long _t40; // _t40 long long _t53; // _t53 _t40 = __rax; _v32 = _t53; _v48 = __rcx; _v36 = _t35; _v40 = __edx; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v16 = _t40; if(_v16 == 0) { return 2; } if(_v40 != 0) { *((char*)(_v16 + 94)) = LMdm_Get_Max_Tx_Power(); } else { *((char*)(_v16 + 94)) = LMdm_Get_Tx_Power(_v16); } __rsi = _v48 + 24; HCI_Fill_Data_Unit(2, _v16 + 626, _v48, __rsi); _v48 = _v48 + 24; HCI_Fill_Data_Unit(1, _v16 + 94, _v48, __rsi); return 0; } LMdm_Get_Peer_Rssi() {// addr = 0x00458891 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t10; // _t10 intOrPtr _t13; // _t13 _unknown_ _t17; // _t17 _unknown_ _t19; // _t19 long long _t21; // _t21 long long _t23; // _t23 _v32 = _t21; _v40 = _t23; _t13 = pRadioFunc; _t14 = *((intOrPtr*)(_t13 + 48)); if( *((intOrPtr*)(_t13 + 48)) == 0) { DebugPrint(0, _t14, _t17, _t19, _t21, _t23); _v9 = 201; } else { *((long long*)( *((intOrPtr*)(pRadioFunc + 48))))(); _v9 = _t10; } return; } Reset_ECC_Variables() {// addr = 0x004588F4 _unknown_ __rbp; // r59 RtlFillMemory(36, 0, __rdi); RtlFillMemory(72, 0, __rdi); ECC_Point_Mul_Word = 0; RtlFillMemory(72, 0, __rdi); RtlFillMemory(72, 0, __rdi); RtlFillMemory(72, 0, __rdi); RtlFillMemory(36, 0, __rdi); return; } LMecc_isValidSecretKey( long long __rdi // r57 ) {// addr = 0x0045897C intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed char* _t45; // _t45 signed char* _t46; // _t46 __rdi = __rdi; _v32 = __rdi; _v12 = 0; while(_v12 <= 23) { _t45 = &(_t45[_v32]); if(( *_t45 & 255) != 0) { L6: if(_v12 != 24) { L9: _v12 = 0; while(_v12 <= 23) { _t46 = &(_t45[_v32]); if(( *_t46 & 255) <= ((_t46[(char*)( &maxSecretKey)]) & 255)) { _t45 = &(_t46[_v32]); if(( *_t45 & 255) >= ((_t45[(char*)( &maxSecretKey)]) & 255)) { _v12 = _v12 + 1; continue; } return 1; } return 0; } return 1; } _t45 = _v32 + 23; if(( *_t45 & 255) != 0) { goto L9; } return 0; } _v12 = _v12 + 1; } goto L6; } AddBigHex( signed long long __rdx // r56 ) {// addr = 0x00458A26 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed long long _t39; // _t39 signed long long _t41; // _t41 signed long long _t46; // _t46 signed int _t49; // _t49 long long _t51; // _t51 _t49 = __rdx; _v64 = _t51; _v72 = __rsi; _v80 = __rdx; _v16 = 0; _v48 = _v64; _v40 = _v72; _t39 = _v80; _v32 = _t39; _v12 = 6; while(_v12 >= 0) { _t41 = (_t39 << 2) + _v48; __edx = *_t41; _v24 = (_t41 << 2) + _v40 + _t49 + (_t41 << 2) + _v40; _t46 = 4294967296 & _v24; if(4294967296 == 0) { _v16 = 0; } else { _v16 = 1; } _t39 = (_t46 << 2) + _v32; _t49 = _v24; *_t39 = __edx; _v12 = _v12 - 1; } setBigNumberLength(_v80); return; } Add2SelfBigHex( signed int __rdx // r56 ) {// addr = 0x00458ADF intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed long long _t35; // _t35 signed long long _t37; // _t37 signed long long _t42; // _t42 signed int _t45; // _t45 long long _t47; // _t47 _t45 = __rdx; _v48 = _t47; _v56 = __rsi; _v16 = 0; _v40 = _v48; _t35 = _v56; _v32 = _t35; _v12 = 6; while(_v12 >= 0) { _t37 = (_t35 << 2) + _v40; __edx = *_t37; _v24 = (_t37 << 2) + _v32 + _t45 + (_t37 << 2) + _v32; _t42 = 4294967296 & _v24; if(4294967296 == 0) { _v16 = 0; } else { _v16 = 1; } _t35 = (_t42 << 2) + _v40; _t45 = _v24; *_t35 = __edx; _v12 = _v12 - 1; } setBigNumberLength(_v48); return; } SubtractBigHex( signed long long __rdx // r56 ) {// addr = 0x00458B8C signed int _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed long long _v80; // _cfa_ffffffb0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t66; // _t66 signed long long _t68; // _t68 signed long long _t70; // _t70 signed long long _t74; // _t74 long long _t86; // _t86 _t74 = __rdx; _v64 = _t86; _v72 = __rsi; _v80 = __rdx; _v32 = 0; _v56 = _v64; _v48 = _v72; _t66 = _v80; _v40 = _t66; _v28 = 6; while(_v28 >= 0) { _t68 = (_t66 << 2) + _v48; _t70 = (_t68 << 2) + _v56; if(_t74 + _t68 <= _t70) { _t66 = (_t70 << 2) + _v40; _t74 = (_v28 << 2) + _v48; *_t66 = *((intOrPtr*)((_v28 << 2) + _v56)) - *_t74 + _v32; _v32 = 0; } else { _t66 = (_t70 << 2) + _v40; _t74 = (_v28 << 2) + _v48; *_t66 = *((intOrPtr*)((_v28 << 2) + _v56)) - *_t74 + _v32; _v32 = 1; } _v28 = _v28 - 1; } setBigNumberLength(_v80); return; } SubtractFromSelfBigHex( intOrPtr* __rdx // r56 ) {// addr = 0x00458C9A signed int _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t62; // _t62 signed long long _t64; // _t64 signed long long _t66; // _t66 intOrPtr* _t70; // _t70 long long _t82; // _t82 _t70 = __rdx; _v64 = _t82; _v72 = __rsi; _v32 = 0; _v48 = _v64; _t62 = _v72; _v40 = _t62; _v28 = 6; while(_v28 >= 0) { _t64 = (_t62 << 2) + _v40; _t66 = (_t64 << 2) + _v48; if(_t70 + _t64 <= _t66) { _t62 = (_t66 << 2) + _v48; _t70 = (_v28 << 2) + _v40; *_t62 = *((intOrPtr*)((_v28 << 2) + _v48)) - *_t70 + _v32; _v32 = 0; } else { _t62 = (_t66 << 2) + _v48; _t70 = (_v28 << 2) + _v40; *_t62 = *((intOrPtr*)((_v28 << 2) + _v48)) - *_t70 + _v32; _v32 = 1; } _v28 = _v28 - 1; } setBigNumberLength(_v64); return; } AddP() {// addr = 0x00458D9C char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t13; // _t13 _v64 = _t13; SubtractBigHex( &_v56); copyBigHex(); *((intOrPtr*)(_v64 + 32)) = 0; return; } AddPdiv2() {// addr = 0x00458DDD signed long long _v28; // _cfa_ffffffe4 signed long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 unsigned long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed long long _v80; // _cfa_ffffffb0 char _v120; // _cfa_ffffff88 signed long long _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t101; // _t101 _unknown_ _t114; // _t114 signed long long _t119; // _t119 signed long long _t120; // _t120 signed long long _t125; // _t125 signed long long _t130; // _t130 signed long long _t132; // _t132 signed long long _t136; // _t136 signed long long _t141; // _t141 unsigned long long _t143; // _t143 signed long long _t161; // _t161 _unknown_ _t165; // _t165 _v128 = _t161; _v80 = _v128; _v72 = &bigHexP; _t119 = _v128; if( *((intOrPtr*)(_t119 + 32)) != 0) { _t120 = _v128; if(isGreaterThan(_t143, _t120, _t165) == 0) { SubtractBigHex( &_v120); _t143 = _v128; copyBigHex(); _t120 = _v128; *(_t120 + 32) = 0; } else { _v40 = 0; _v36 = 6; while(_v36 >= 0) { _t130 = (_t120 << 2) + _v72; _t132 = (_t130 << 2) + _v80; if(_t143 + _t130 <= _t132) { _t74 = _t132; _t120 = (_t132 << 2) + _v80; _t143 = (_v36 << 2) + _v72; *_t120 = *((intOrPtr*)((_v36 << 2) + _v80)) - *_t143 + _v40; _v40 = 0; } else { _t74 = _t132; _t120 = (_t132 << 2) + _v80; _t143 = (_v36 << 2) + _v72; *_t120 = *((intOrPtr*)((_v36 << 2) + _v80)) - *_t143 + _v40; _v40 = 1; } _v36 = _v36 - 1; } } } else { _v48 = 0; _v44 = 6; while(_v44 >= 0) { _t136 = (_t119 << 2) + _v80; _t114 = *_t136; _v64 = (_t136 << 2) + _v72 + _t143 + (_t136 << 2) + _v72; _t141 = 4294967296 & _v64; if(4294967296 == 0) { _v48 = 0; } else { _v48 = 1; } _t74 = _t141; _t119 = (_t141 << 2) + _v80; _t143 = _v64; *_t119 = _t114; _v44 = _v44 - 1; } } _v32 = 0; _v28 = 0; while(_v28 <= 6) { _t101 = _v32; _t125 = (_t120 << 2) + _v80 + (_t143 << 32); _v56 = _t125; *((_t125 << 2) + _v80) = _t101; _t120 = _v56; _t143 = _v56 >> 1; _t74 = _v28 - _t101 + _t101; _v32 = _v28 - _t101 + _t101; _v28 = _v28 + 1; } setBigNumberLength(_v128); return; } SubtractFromSelfBigHexSign() {// addr = 0x00459019 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t70; // _t70 long long _t81; // _t81 _v64 = _t70; _v72 = _t81; if( *((intOrPtr*)(_v64 + 32)) != 0) { if( *((intOrPtr*)(_v72 + 32)) != 0) { if(isGreaterThanOrEqual(_v64, _v72, _v64) == 0) { SubtractFromSelfBigHex(_v72); return; } SubtractBigHex( &_v56); copyBigHex(); *((intOrPtr*)(_v64 + 32)) = 0; return; } Add2SelfBigHex(_v72); return; } if( *((intOrPtr*)(_v72 + 32)) != 0) { Add2SelfBigHex(_v72); return; } if(isGreaterThanOrEqual(_v72, _v64, _v72) == 0) { SubtractBigHex( &_v56); copyBigHex(); *((intOrPtr*)(_v64 + 32)) = 1; return; } SubtractFromSelfBigHex(_v72); return; } SubtractBigHexMod() {// addr = 0x00459147 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t90; // _t90 long long _t94; // _t94 long long _t106; // _t106 intOrPtr _t108; // _t108 _v16 = _t94; _v24 = _t106; _v32 = _t90; if( *((intOrPtr*)(_v16 + 32)) != 0) { if( *((intOrPtr*)(_v24 + 32)) != 0) { if(isGreaterThanOrEqual(_v16, _v24, _v16) == 0) { _t92 = _v32; _t108 = _v24; SubtractBigHex(_v32); *((intOrPtr*)(_v32 + 32)) = 1; } else { _t92 = _v32; _t108 = _v16; SubtractBigHex(_v32); *((intOrPtr*)(_v32 + 32)) = 0; } } else { _t92 = _v32; _t108 = _v24; AddBigHex(_v32); *((intOrPtr*)(_v32 + 32)) = 1; } } else { if( *((intOrPtr*)(_v24 + 32)) != 0) { _t92 = _v32; _t108 = _v24; AddBigHex(_v32); *((intOrPtr*)(_v32 + 32)) = 0; } else { if(isGreaterThanOrEqual(_v24, _v16, _v24) == 0) { _t92 = _v32; _t108 = _v16; SubtractBigHex(_v32); *((intOrPtr*)(_v32 + 32)) = 1; } else { _t92 = _v32; _t108 = _v24; SubtractBigHex(_v32); *((intOrPtr*)(_v32 + 32)) = 0; } } } if( *((intOrPtr*)(_v32 + 32)) != 0) { AddP(); return; } else { if(isGreaterThanOrEqual(_t92, _v32, _t108) == 0) { return; } SubtractFromSelfBigHex(_t92); return; } } SubtractBigHexUint32() {// addr = 0x004592CE intOrPtr _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 _unknown_ _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 intOrPtr _v68; // _cfa_ffffffbc long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t34; // _t34 long long _t37; // _t37 _v64 = _t37; _v68 = __esi; _v80 = _t34; initBigNumber(); if( *((intOrPtr*)(_v64 + 24)) < _v68) { initBigNumber(); _v28 = 1; _v32 = _v68; SubtractBigHexMod(); return; } copyBigHex(); *((intOrPtr*)(_v80 + 24)) = *((intOrPtr*)(_v64 + 24)) - _v68; return; } MultiplyBigHexModP() {// addr = 0x00459353 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 intOrPtr _v80; // _cfa_ffffffb0 char _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 char _v168; // _cfa_ffffff58 long long _v176; // _cfa_ffffff50 signed long long _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 _unknown_ __rbp; // r59 unsigned int _t137; // _t137 signed long long _t144; // _t144 signed long long _t145; // _t145 long long _t159; // _t159 signed long long _t170; // _t170 _v176 = _t159; _v184 = _t170; _v192 = _t154; _v56 = _v176; _v48 = _v184; _v40 = &_v168; _t129 = &_v168; RtlFillMemory(56, 0, _t129); _v112 = 0; _v108 = 0; _v24 = 6; while(_v24 >= 0) { _v20 = 0; _v16 = 0; _v16 = 6; while(_v16 >= 0) { _t137 = (((_v32 >> 32 << 2) + _v56 << 2) + _v48 + 1 << 2) + _v40 + _v32 * (((_v32 >> 32 << 2) + _v56 << 2) + _v48) + (((_v32 >> 32 << 2) + _v56 << 2) + _v48 + 1 << 2) + _v40; _v32 = _t137; _t154 = _v32; *((_t137 + 1 << 2) + _v40) = _v16; _t129 = _v32 >> 32; _v20 = _t137; _v16 = _v16 - 1; } _v24 = _v24 - 1; } setVeryBigNumberLength( &_v168); _t144 = _v184; _v108 = *((intOrPtr*)(_v176 + 32)) != *((intOrPtr*)(_t144 + 32)) & 255; _v12 = 0; while( *((intOrPtr*)(__rbp + _t144 * 4 - 160)) == 0 && _v12 <= 6) { _v12 = _v12 + 1; } _v72 = _v108; _t145 = &_v168; if(isVeryBigHexGreaterThanOrEqual(_t145, _t170) == 0) { L14: RtlCopyMemory(28, &_v104, &_v168 + 0 + _t145 * 4); setBigNumberLength( &_v104); while(_v12 + 7 <= 13) { specialModP(); shiftLeftOneArrayElement(); _v80 = *((intOrPtr*)(__rbp + &_v104 * 4 - 160)); _v12 = _v12 + 1; setBigNumberLength( &_v104); } specialModP(); copyBigHex(); return; } while( *((intOrPtr*)(__rbp + _t145 * 4 - 160)) == 0) { _v12 = _v12 + 1; } goto L14; } MultiplyBigHexByUint32() {// addr = 0x0045958C signed long long _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 signed long long _v24; // _cfa_ffffffe8 unsigned long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 unsigned long long _t39; // _t39 signed long long _t41; // _t41 signed long long _t42; // _t42 signed long long _t50; // _t50 long long _t52; // _t52 _v48 = _t52; _v52 = __esi; _v64 = _t50; _v40 = _v48; _t39 = _v64; _v32 = _t39; _v12 = 0; _v16 = 6; while(_v16 >= 0) { _t41 = (_t39 << 2) + _v40; _t42 = _t41 + _t50 * _t41; _v24 = _t42; _t50 = _v24; *((intOrPtr*)((_t42 << 2) + _v32)) = *_t41; _t39 = _v24 >> 32; _v12 = _t42; _v16 = _v16 - 1; } setBigNumberLength(_v64); *((intOrPtr*)(_v64 + 32)) = *((intOrPtr*)(_v48 + 32)); specialModP(); return; } shiftLeftOneArrayElement() {// addr = 0x00459631 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; __edx = 24; __rsi = _v16 + 4; RtlCopyMemory(24, _v16, _v16 + 4); return; } specialModP() {// addr = 0x0045965B intOrPtr _v12; // _cfa_fffffff4 char _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t79; // _t79 char* _t87; // _t87 _v64 = _t79; initBigNumber(); if( *((intOrPtr*)(_v64 + 32)) != 0 || isGreaterThanOrEqual(_t77, _v64, _t87) == 0) { if( *((intOrPtr*)(_v64 + 32)) != 1) { goto L13; } goto L3; } else { L3: if( *((intOrPtr*)(_v64 + 28)) > *5023932) { _v12 = *((intOrPtr*)(_v64 + _t77 * 4)); __edi = _v12; MultiplyByU32ModPInv(_v12, ?_? ( &_v56), &_v56); *_v64 = 0; if( *((intOrPtr*)(_v64 + 32)) != 0) { _t77 = ?_? ( &_v56); _t87 = &_v56; SubtractFromSelfBigHexSign(); } else { _t77 = ?_? ( &_v56); _t87 = ?_? ( &_v56); Add2SelfBigHex( &_v56); } } if( *((intOrPtr*)(_v64 + 32)) != 0 || isGreaterThanOrEqual(_t77, _v64, _t87) == 0) { if( *((intOrPtr*)(_v64 + 32)) != 1) { L13: return; } goto L10; } else { L10: if( *((intOrPtr*)(_v64 + 32)) != 1) { SubtractFromSelfBigHex(_t77); return; } AddP(); return; } } } MultiplyByU32ModPInv( intOrPtr __edi, // r4 signed int __rdx, // r56 long long __rsi // r58 ) {// addr = 0x00459775 signed long long _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdx = __rdx; __edi = __edi; _v28 = __edi; _v40 = __rsi; _v16 = 8589934590 & __rdx; *((intOrPtr*)(_v40 + 24)) = _v28; *((intOrPtr*)(_v40 + 16)) = _v28; *(_v40 + 12) = _v28 + _v28 & 15; *((intOrPtr*)(_v40 + 32)) = 0; if( *(_v40 + 12) == 0) { *((intOrPtr*)(_v40 + 28)) = 3; return; } *((intOrPtr*)(_v40 + 28)) = 4; return; } copyBigHex() {// addr = 0x004597F0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t21; // _t21 long long _t23; // _t23 _v16 = _t21; _v24 = _t23; RtlCopyMemory(28, _v24, _v16); *((intOrPtr*)(_v24 + 28)) = *((intOrPtr*)(_v16 + 28)); *((intOrPtr*)(_v24 + 32)) = *((intOrPtr*)(_v16 + 32)); return; } initBigNumber() {// addr = 0x00459836 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t10; // _t10 _v16 = _t10; __edx = 28; __esi = 0; RtlFillMemory(28, 0, _v16); *((intOrPtr*)(_v16 + 28)) = 0; *((intOrPtr*)(_v16 + 32)) = 0; return; } setBigNumberLength( long long __rdi // r57 ) {// addr = 0x00459870 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v12 = 0; while(_v12 <= 6) { if( *((intOrPtr*)(_v32 + _v12 * 4)) == 0) { _v12 = _v12 + 1; continue; } L6: *((intOrPtr*)(_v32 + 28)) = 7 - _v12; return; } goto L6; } setVeryBigNumberLength( long long __rdi // r57 ) {// addr = 0x004598B2 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v12 = 0; while(_v12 <= 13) { if( *((intOrPtr*)(_v32 + _v12 * 4)) == 0) { _v12 = _v12 + 1; continue; } L6: *((intOrPtr*)(_v32 + 56)) = 14 - _v12; return; } goto L6; } isGreaterThan( signed long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004598F4 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; _v16 = *((intOrPtr*)(_v32 + 28)); _v12 = *((intOrPtr*)(_v40 + 28)); if(_v16 <= _v12) { if(_v16 >= _v12) { _v20 = 7 - _v16; while(_v20 <= 6) { if( *((intOrPtr*)(_v40 + __rdx * 4)) <= *((intOrPtr*)(_v32 + __rdx * 4))) { if( *((intOrPtr*)(_v40 + __rdx * 4)) >= *((intOrPtr*)(_v32 + __rdx * 4))) { _v20 = _v20 + 1; continue; } return 1; } return 0; } return 0; } return 0; } return 1; } isGreaterThanOrEqual( signed long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0045998E intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; _v16 = *((intOrPtr*)(_v32 + 28)); _v12 = *((intOrPtr*)(_v40 + 28)); if(_v16 <= _v12) { if(_v16 >= _v12) { _v20 = 7 - _v16; while(_v20 <= 6) { if( *((intOrPtr*)(_v40 + __rdx * 4)) <= *((intOrPtr*)(_v32 + __rdx * 4))) { if( *((intOrPtr*)(_v40 + __rdx * 4)) >= *((intOrPtr*)(_v32 + __rdx * 4))) { _v20 = _v20 + 1; continue; } return 1; } return 0; } return 1; } return 0; } return 1; } isVeryBigHexGreaterThanOrEqual( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00459A28 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v16 = *((intOrPtr*)(_v32 + 56)); _v12 = *((intOrPtr*)(_v40 + 56)); if(_v16 <= _v12) { if(_v16 >= _v12) { _v20 = 14 - _v16; while(_v20 <= 13) { if( *((intOrPtr*)(_v40 + _v20 * 4)) <= *((intOrPtr*)(_v32 + _v20 * 4))) { if( *((intOrPtr*)(_v40 + _v20 * 4)) >= *((intOrPtr*)(_v32 + _v20 * 4))) { _v20 = _v20 + 1; continue; } return 1; } return 0; } return 1; } return 0; } return 1; } notEqual( signed long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00459ACE intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; _v12 = 0; while(_v12 <= 6) { if( *((intOrPtr*)(_v32 + __rdx * 4)) == *((intOrPtr*)(_v40 + __rdx * 4))) { _v12 = _v12 + 1; continue; } return 1; } return 0; } isLessThan( signed long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00459B13 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; if( *((intOrPtr*)(_v32 + 28)) >= *((intOrPtr*)(_v40 + 28))) { if( *((intOrPtr*)(_v32 + 28)) <= *((intOrPtr*)(_v40 + 28))) { _v12 = *((intOrPtr*)(_v32 + 28)); while(_v12 != 0) { if( *((intOrPtr*)(_v40 + __rdx * 4)) >= *((intOrPtr*)(_v32 + __rdx * 4))) { _v12 = _v12 - 1; continue; } return 0; } return 1; } return 0; } return 1; } GF_Point_Addition() {// addr = 0x00459B8D _unknown_ _v56; // _cfa_ffffffc8 _unknown_ _v104; // _cfa_ffffff98 _unknown_ _v152; // _cfa_ffffff68 _unknown_ _v200; // _cfa_ffffff38 _unknown_ _v248; // _cfa_ffffff08 _unknown_ _v296; // _cfa_fffffed8 long long _v304; // _cfa_fffffed0 _unknown_ _v312; // _cfa_fffffec8 long long _v320; // _cfa_fffffec0 _unknown_ __rbp; // r59 long long _t120; // _t120 long long _t140; // _t140 long long _t160; // _t160 _v304 = _t140; _v312 = _t160; _v320 = _t120; if( *((intOrPtr*)(_v304 + 64)) != 0) { if( *((intOrPtr*)(_v312 + 64)) != 0 || *((intOrPtr*)(_v312 + 28)) != 0) { L8: if(notEqual(_v312, _v304, _v312) == 0) { MultiplyBigHexModP(); MultiplyBigHexByUint32(); SubtractBigHexUint32(); MultiplyBigHexByUint32(); bigHexInversion(); MultiplyBigHexModP(); } else { SubtractBigHexMod(); SubtractBigHexMod(); bigHexInversion(); MultiplyBigHexModP(); } MultiplyBigHexModP(); SubtractBigHexMod(); SubtractBigHexMod(); SubtractBigHexMod(); MultiplyBigHexModP(); SubtractBigHexMod(); return; } else { GF_Point_Copy(); return; } } if( *((intOrPtr*)(_v304 + 28)) != 0) { if( *((intOrPtr*)(_v312 + 64)) != 0) { goto L8; } return; } GF_Point_Copy(); return; } ECC_Point_Multiplication( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00459E3E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v40 = __rcx; GF_Point_Copy(); GF_Point_Copy(); copyBigHex(); initBigNumber(); initBigNumber(); ECC_Point_Mul_Word = 7; ECC_Point_Multiplication_UINT32(); return; } LMecc_CB_ECC_Point_Multiplication_Complete( signed long long __rax // r53 ) {// addr = 0x00459EBC char _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed long long _t264; // _t264 signed long long _t265; // _t265 signed long long _t266; // _t266 signed long long _t267; // _t267 _t264 = __rax; _v32 = __rdi; _v40 = __rsi; _v16 = 0; _v12 = 1; if(_v40 == 0) { _v20 = 0; while(_v20 <= 23) { *(_v32 + _t264 + 5888) = *(_t264 * 4 + &LMecc_PointQ) >> 24; *(_v32 + _t264 + 5888) = ( *(_t264 * 4 + &LMecc_PointQ) & 16711680) >> 16; *(_v32 + _t264 + 5888) = ( *(_t264 * 4 + &LMecc_PointQ) & 65280) >> 8; *(_v32 + _t264 + 5888) = *(_t264 * 4 + &LMecc_PointQ); _t265 = _t264 + 8; *(_v32 + _t265 + 5912) = *(7349668 + _t265 * 4) >> 24; _t266 = _t265 + 8; *(_v32 + _t266 + 5912) = ( *(7349668 + _t266 * 4) & 16711680) >> 16; _t267 = _t266 + 8; *(_v32 + _t267 + 5912) = ( *(7349668 + _t267 * 4) & 65280) >> 8; _t264 = _t267 + 8; _t269 = _v32; *((char*)(_v32 + _t264 + 5912)) = *((intOrPtr*)(7349668 + _t264 * 4)); _v20 = _v20 + 4; _v16 = _v16 + 1; } DebugPrint(0, _t264, __rcx, _t269, __rdi, __rsi); DebugPrint(0, _t264, __rcx, _t269, __rdi, __rsi); return; } _v20 = 0; while(_v20 <= 23) { *(_v40 + _t264 + 328) = *(_t264 * 4 + &LMecc_PointQ) >> 24; *(_v40 + _t264 + 328) = ( *(_t264 * 4 + &LMecc_PointQ) & 16711680) >> 16; *(_v40 + _t264 + 328) = ( *(_t264 * 4 + &LMecc_PointQ) & 65280) >> 8; _t269 = _v40; *(_v40 + _t264 + 328) = *(_t264 * 4 + &LMecc_PointQ); _v20 = _v20 + 4; _v16 = _v16 + 1; } _t268 = _v40; *((char*)(_v40 + 225)) = 1; DebugPrint(0, _v40, __rcx, _t269, __rdi, __rsi); _v20 = 0; while(_v20 <= 23) { _t210 = DebugPrint(0, _t268, __rcx, _v40, __rdi, __rsi); _v20 = _v20 + 1; } return; } ECC_Point_Multiplication_UINT32() {// addr = 0x0045A1C0 signed int _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v120; // _cfa_ffffff88 _unknown_ _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 signed long long _v216; // _cfa_ffffff28 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t45; // _t45 long long _t56; // _t56 signed long long _t61; // _t61 _v208 = _t56; _v216 = _t61; _t45 = _v216; _v40 = _t45; _v32 = 0; while(_v32 <= 31) { if(ECC_Point_Mul_Word == 0 || ECC_Point_Mul_Word > 7) { break; } else { _v28 = *(_t45 * 4 + &LMecc_Pk) >> __cl & 1; if(_v28 != 0) { GF_Point_Addition(); GF_Point_Copy(); } GF_Point_Addition(); _t45 = &_v120; GF_Point_Copy(); _v32 = _v32 + 1; continue; } } if(ECC_Point_Mul_Word != 1) { if(ECC_Point_Mul_Word == 0 || ECC_Point_Mul_Word > 7) { return; } else { ECC_Point_Mul_Word = ECC_Point_Mul_Word - 1; ECC_Point_Multiplication_UINT32(); return; } } LMecc_CB_ECC_Point_Multiplication_Complete(_v40); return; } GF_Point_Copy() {// addr = 0x0045A30D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t14; // _t14 long long _t17; // _t17 _v16 = _t14; _v24 = _t17; copyBigHex(); copyBigHex(); return; } bigHexInversion() {// addr = 0x0045A34D intOrPtr _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 intOrPtr _v76; // _cfa_ffffffb4 intOrPtr _v80; // _cfa_ffffffb0 char _v104; // _cfa_ffffff98 signed int _v128; // _cfa_ffffff80 char _v152; // _cfa_ffffff68 intOrPtr _v172; // _cfa_ffffff54 signed int _v176; // _cfa_ffffff50 char _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 long long _v216; // _cfa_ffffff28 _unknown_ __rbp; // r59 long long _t63; // _t63 long long _t66; // _t66 long long _t71; // _t71 _v208 = _t63; _v216 = _t71; *(_v208 + 32) = 0; initBigNumber(); initBigNumber(); _t60 = &_v200; _t66 = _v208; copyBigHex(); copyBigHex(); _v80 = 1; _v32 = 0; _v76 = 1; _v28 = 1; while(_v172 != 0) { do { _v176 = _v176 & 1; } while((_v176 & 1) == 0); while(1) { _v128 = _v128 & 1; if((_v128 & 1) != 0) { break; } __rdi = &_v152; divideByTwo(__rdx); _v32 = _v32 & 1; if((_v32 & 1) != 0) { __rdi = &_v56; AddPdiv2(); } else { __rdi = &_v56; divideByTwo(__rdx); } } __rdx = &_v152; __rsi = __rdx; __rdi = ?_? ( &_v200); if(isGreaterThanOrEqual(__rdx, &_v200, __rdx) == 0) { __rdx = &_v200; __rsi = __rdx; __rdi = &_v152; SubtractFromSelfBigHex(__rdx); __rdx = &_v104; __rsi = __rdx; __rdi = &_v56; SubtractFromSelfBigHexSign(); } else { __rdx = &_v152; __rsi = __rdx; __rdi = &_v200; SubtractFromSelfBigHex(__rdx); __rdx = &_v56; __rsi = __rdx; __rdi = &_v104; SubtractFromSelfBigHexSign(); } } _t44 = _v24; if(_v24 != 0) { specialModP(); L20: copyBigHex(); return; } if(isGreaterThan(_t60, _t66, &_v56) == 0) { specialModP(); goto L20; } copyBigHex(); return; } divideByTwo( unsigned long long __rdx // r56 ) {// addr = 0x0045A547 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 unsigned int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t23; // _t23 intOrPtr _t28; // _t28 unsigned long long _t35; // _t35 signed long long _t36; // _t36 long long _t38; // _t38 _t35 = __rdx; _v32 = _t38; _v16 = 0; _v12 = 0; while(_v12 <= 6) { _t28 = _v32; _t23 = *((intOrPtr*)(_t28 + _t35 * 4)); _t36 = _t35 << 32; _v24 = _t28 + _t36; *((intOrPtr*)(_v32 + _t36 * 4)) = _t23; _t35 = _v24 >> 1; _v16 = _t23 - _v12 + _v12; _v12 = _v12 + 1; } setBigNumberLength(_v32); return; } LMecc_Generate_ECC_Key() {// addr = 0x0045A5BA intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed long long _t131; // _t131 signed char* _t132; // _t132 signed char* _t134; // _t134 signed char* _t136; // _t136 signed long long _t138; // _t138 signed char* _t139; // _t139 signed char* _t141; // _t141 signed char* _t143; // _t143 signed long long _t145; // _t145 signed char* _t146; // _t146 signed char* _t148; // _t148 signed char* _t150; // _t150 signed char* _t152; // _t152 long long _t154; // _t154 long long _t156; // _t156 long long _t158; // _t158 _v32 = _t158; _v40 = __rsi; _v48 = _t156; _v56 = _t154; _v64 = r8; _v12 = 1; PrivateKey = 0; PublicKey = 0; *7347780 = 0; _v16 = 0; while(_v16 <= 23) { _t132 = _t131 + _v40; _t134 = &( &(_t132[1])[_v40]); _t136 = &( &(_t134[2])[_v40]); _t138 = &( &(_t136[3])[_v40]); *((intOrPtr*)(_t138 * 4 + &PrivateKey)) = (( *_t132 & 0xff) << 24) + (( *_t134 & 0xff) << 16 & 16711680) + (( *_t136 & 0xff) << 8 & 65535) + ( *_t138 & 0xff); _t139 = _t138 + _v48; _t141 = &( &(_t139[1])[_v48]); _t143 = &( &(_t141[2])[_v48]); _t145 = &( &(_t143[3])[_v48]); *((intOrPtr*)(_t145 * 4 + &PublicKey)) = (( *_t139 & 0xff) << 24) + (( *_t141 & 0xff) << 16 & 16711680) + (( *_t143 & 0xff) << 8 & 65535) + ( *_t145 & 0xff); _t146 = _t145 + _v56; _t148 = &( &(_t146[1])[_v56]); _t150 = &( &(_t148[2])[_v56]); _t152 = &( &(_t150[3])[_v56]); _t131 = &(_t152[8]); *((intOrPtr*)(7347748 + _t131 * 4)) = (( *_t146 & 0xff) << 24) + (( *_t148 & 0xff) << 16 & 16711680) + (( *_t150 & 0xff) << 8 & 65535) + ( *_t152 & 0xff); _v16 = _v16 + 4; } setBigNumberLength(_t158); setBigNumberLength(_t158); setBigNumberLength(_t158); *7347776 = 0; *7347812 = 0; ECC_Point_Multiplication(_v64, _v32, __rsi); return; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0045A7B8 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LLINK_Suspend( long long __rdi // r57 ) {// addr = 0x0045A8F9 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 1; return; } LMP_Response_Timeout_CB() {// addr = 0x0045A90B long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 _unknown_ _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v32 = _t20; _v40 = _t22; _t16 = _v40; _v16 = _v40; if(_v16 == 0) { _t9 = DebugPrint(0, _t16, _t18, __rdx, _t20, _t22); } if(_v16 != 0) { LMesco_Event_Callback(_t9); return; } return; } LMP_Remove_ESCO_Req_BB_Ack() {// addr = 0x0045A964 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t36; // _t36 long long _t38; // _t38 long long _t41; // _t41 _v32 = _t38; _v40 = _t41; _v24 = *((intOrPtr*)(_v32 + 67952)); _t34 = _v32 + 66256; _t39 = _v32 + 66256; _v12 = LMscoctr_Get_Topical_eSCO_Link_Transaction_Type(_v32 + 66256); if(_v12 != 2) { _t15 = DebugPrint(0, _t34, _t36, __rdx, _t39, _t41); } if(_v12 != 2) { } else { if(_v24 == 0) { _t15 = DebugPrint(0, _t34, _t36, __rdx, _t39, _t41); } if(_v24 != 0) { LMesco_Event_Callback(_t15); return; } } return; } LMP_Accept_Remove_ESCO_BB_Ack() {// addr = 0x0045AA03 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t36; // _t36 long long _t38; // _t38 long long _t41; // _t41 _v32 = _t38; _v40 = _t41; _v24 = *((intOrPtr*)(_v32 + 67952)); _t34 = _v32 + 66256; _t39 = _v32 + 66256; _v12 = LMscoctr_Get_Topical_eSCO_Link_Transaction_Type(_v32 + 66256); if(_v12 != 2) { _t15 = DebugPrint(0, _t34, _t36, __rdx, _t39, _t41); } if(_v12 != 2) { } else { if(_v24 == 0) { _t15 = DebugPrint(0, _t34, _t36, __rdx, _t39, _t41); } if(_v24 != 0) { LMesco_Event_Callback(_t15); return; } } return; } MasterLocalInit_Del_Initialize() {// addr = 0x0045AAA2 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t62; // _t62 signed char _t66; // _t66 long long _t110; // _t110 signed char* _t119; // _t119 _v32 = _t110; _v40 = _t119; _v44 = _t66; _v48 = _t62; _v12 = 31; if((_v40[0x48]) != 0) { (_v40[0x20]) = _v44 & 255; (_v40[0x21]) = _v48 & 255; LLINK_Suspend(_v40[0x48]); LMscoctr_Set_Topical_eSCO_Link(2, _v32 + 66256, _v40); LMscoctr_Clear_LMP_Parameter_Sets(); if(( *_v40 & 255) != 10) { *_v40 = 1; (_v40[3]) = DM_Set_Timer(); *__rsp = LMP_Remove_ESCO_Req_BB_Ack; r9d = _v48 & 255; r8d = (_v40[0xf]) & 0xff; LMP_Send_Remove_eSCO_Link_Req(); (_v40[1]) = 1; } else { LLINK_ReadPicoClock(_v32, _v40[0x48]); LCCMD_LinkDeleteRequest(); (_v40[1]) = 3; } (_v40[2]) = 1; _v12 = 0; } return; } MasterPeerInit_Del_Initialize() {// addr = 0x0045AC11 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed char _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t35; // _t35 signed char _t37; // _t37 long long _t57; // _t57 long long _t62; // _t62 _v32 = _t57; _v40 = _t62; _v44 = _t37; _v48 = _t35; _v12 = 31; if( *((intOrPtr*)(_v40 + 72)) != 0) { *_v40 = 1; *(_v40 + 32) = _v44 & 255; *(_v40 + 33) = _v48 & 255; LMscoctr_Set_Topical_eSCO_Link(2, _v32 + 66256, _v40); LMscoctr_Clear_LMP_Parameter_Sets(); LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 72))); LCCMD_LinkDeleteRequest(); *((char*)(_v40 + 2)) = 2; *((char*)(_v40 + 1)) = 1; _v12 = 0; } return _v12; } SlaveLocalInit_Del_Initialize() {// addr = 0x0045ACDD intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed char _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t37; // _t37 signed char _t39; // _t39 long long _t62; // _t62 signed char* _t67; // _t67 _v32 = _t62; _v40 = _t67; _v44 = _t39; _v48 = _t37; _v12 = 31; if((_v40[0x48]) != 0) { if(( *_v40 & 255) != 10) { *_v40 = 9; } (_v40[0x20]) = _v44 & 255; (_v40[0x21]) = _v48 & 255; LMscoctr_Set_Topical_eSCO_Link(2, _v32 + 66256, _v40); LMscoctr_Clear_LMP_Parameter_Sets(); LLINK_ReadPicoClock(_v32, _v40[0x48]); LCCMD_LinkDeleteRequest(); (_v40[2]) = 3; (_v40[1]) = 1; _v12 = 0; } return _v12; } SlavePeerInit_Del_Initialize() {// addr = 0x0045ADB4 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed char _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t35; // _t35 signed char _t37; // _t37 long long _t57; // _t57 long long _t62; // _t62 _v32 = _t57; _v40 = _t62; _v44 = _t37; _v48 = _t35; _v12 = 31; if( *((intOrPtr*)(_v40 + 72)) != 0) { *_v40 = 10; *(_v40 + 32) = _v44 & 255; *(_v40 + 33) = _v48 & 255; LMscoctr_Set_Topical_eSCO_Link(2, _v32 + 66256, _v40); LMscoctr_Clear_LMP_Parameter_Sets(); LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 72))); LCCMD_LinkDeleteRequest(); *((char*)(_v40 + 2)) = 4; *((char*)(_v40 + 1)) = 1; _v12 = 0; } return _v12; } MaserLocalInit_Del_EventHandler( _unknown_ __rax // r53 ) {// addr = 0x0045AE80 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed char _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed int _t152; // _t152 signed int _t155; // _t155 signed int _t168; // _t168 signed char _t179; // _t179 long long _t294; // _t294 signed char _t314; // _t314 _v32 = _t294; _v40 = _t314; _v44 = _t179; _v20 = 31; _v10 = *(_v40 + 1) & 255; _v9 = _v10 & 255; _t152 = *(_v40 + 1) & 0xff; if(_t152 == 1) { if((_v44 & 255) > 21) { L48: if(_v40 != 0) { *(_v40 + 1) = _v10 & 255; } return _v20; } goto __rax; } if(_t152 > 1) { if(_t152 == 2) { _t155 = _v44 & 255; if(_t155 == 14) { *(_v40 + 3) = 0; if( *(_v40 + 72) == 0) { _v14 = *(_v40 + 8) & 65535; _v11 = 34; _v24 = 0; LMscoctr_Free(); _v40 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v32); _v10 = 0; _v20 = 0; } } else { if(_t155 == 21) { if(( *(_v40 + 3) & 255) != 0) { DM_Clear_Timer(); *(_v40 + 3) = 0; _v14 = *(_v40 + 8) & 65535; _v11 = 8; _v24 = 0; LMscoctr_Free(); _v40 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v32); _v10 = 0; _v20 = 0; } } else { if(_t155 == 2) { DM_Clear_Timer(); *(_v40 + 3) = 0; if( *(_v40 + 72) == 0) { _v14 = *(_v40 + 8) & 65535; _v11 = 22; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v32 + 66256, _t314); LMscoctr_Free(); _v40 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v32); _v10 = 0; _v20 = 0; } } } } goto L48; } if(_t152 == 3) { _t168 = _v44 & 255; if(_t168 == 3) { if(( *(_v40 + 3) & 255) != 0) { DM_Clear_Timer(); *(_v40 + 3) = 0; _v20 = 0; } L31: goto L48; } if(_t168 > 3) { if(_t168 == 19) { *(_v40 + 72) = 0; if(( *(_v40 + 3) & 255) != 0) { _v10 = 2; _v20 = 0; } else { _v14 = *(_v40 + 8) & 65535; _v11 = 22; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v32 + 66256, _t314); LMscoctr_Free(); _v40 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v32); _v10 = 0; _v20 = 0; } goto L31; } if(_t168 == 21) { if(( *(_v40 + 3) & 255) != 0) { DM_Clear_Timer(); *(_v40 + 3) = 0; _v20 = 0; } goto L31; } L27: goto L31; } if(_t168 == 2) { if(( *(_v40 + 3) & 255) != 0) { DM_Clear_Timer(); *(_v40 + 3) = 0; _v20 = 0; } goto L31; } goto L27; } L46: goto L48; } if(_t152 == 0) { goto L48; } else { goto L46; } } MaserPeerInit_Del_EventHandler() {// addr = 0x0045B4D9 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed char _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed int _t104; // _t104 signed int _t105; // _t105 signed int _t114; // _t114 signed char _t122; // _t122 long long _t202; // _t202 signed char _t216; // _t216 _v48 = _t202; _v56 = _t216; _v60 = _t122; _v20 = 31; _v10 = *(_v56 + 1) & 255; _v9 = _v10 & 255; _t104 = *(_v56 + 1) & 0xff; if(_t104 == 1) { _t105 = _v60 & 255; if(_t105 == 19) { if( *(_v56 + 72) != 0) { _v32 = *((intOrPtr*)( *(_v56 + 72) + 80)); *(_v56 + 72) = 0; if(( *( *((intOrPtr*)(_v56 + 64)) + 92) & 255) != 8) { *__rsp = LMP_Accept_Remove_ESCO_BB_Ack; r9d = 29; r8d = 32525; LMP_Send_Accepted_Ext_Tag(_v32); _v10 = 2; } else { _v14 = *(_v56 + 8) & 65535; _v11 = 8; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t216); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; } _v20 = 0; } } else { if(_t105 == 21) { _v20 = 0; } } } else { if(_t104 == 2) { _t114 = _v60 & 255; if(_t114 == 11) { _v14 = *(_v56 + 8) & 65535; _v11 = *(_v56 + 32) & 255; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t216); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; _v20 = 0; } else { if(_t114 == 21) { _v14 = *(_v56 + 8) & 65535; _v11 = 8; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t216); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; _v20 = 0; } } } else { if(_t104 == 0) { } } } if(_v56 != 0) { *(_v56 + 1) = _v10 & 255; } return; } SlaveLocalInit_Del_EventHandler() {// addr = 0x0045B81D signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed char _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed int _t145; // _t145 signed int _t146; // _t146 signed int _t159; // _t159 signed char _t173; // _t173 long long _t291; // _t291 signed char _t312; // _t312 _v48 = _t291; _v56 = _t312; _v60 = _t173; _v20 = 31; _v10 = *(_v56 + 1) & 255; _v9 = _v10 & 255; _t145 = *(_v56 + 1) & 0xff; if(_t145 == 1) { _t146 = _v60 & 255; if(_t146 == 19) { if( *(_v56 + 72) != 0) { _v32 = *((intOrPtr*)( *(_v56 + 72) + 80)); *(_v56 + 72) = 0; if(( *_v56 & 255) != 10) { _v11 = *(_v56 + 33) & 255; *(_v56 + 3) = DM_Set_Timer(); *__rsp = 0; r9d = _v11 & 0xff; r8d = *(_v56 + 15) & 0xff; LMP_Send_Remove_eSCO_Link_Req(); _v10 = 2; } else { _v11 = *(_v56 + 32) & 255; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t312); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; } _v20 = 0; } } else { if(_t146 == 21) { _v20 = 0; } } } else { if(_t145 == 2) { _t159 = _v60 & 255; if(_t159 == 14) { *(_v56 + 3) = 0; if( *(_v56 + 72) == 0) { _v14 = *(_v56 + 8) & 65535; _v11 = 34; _v24 = 0; LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; _v20 = 0; } } else { if(_t159 == 21) { DM_Clear_Timer(); *(_v56 + 3) = 0; if( *(_v56 + 72) == 0) { _v14 = *(_v56 + 8) & 65535; _v11 = 22; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t312); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; _v20 = 0; } } else { if(_t159 == 2) { DM_Clear_Timer(); *(_v56 + 3) = 0; if( *(_v56 + 72) == 0) { _v14 = *(_v56 + 8) & 65535; _v11 = 22; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t312); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; _v20 = 0; } } } } } else { if(_t145 == 0) { } } } if(_v56 != 0) { *(_v56 + 1) = _v10 & 255; } return; } SlavePeerInit_Del_EventHandler() {// addr = 0x0045BCAE signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed char _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed int _t104; // _t104 signed int _t105; // _t105 signed int _t114; // _t114 signed char _t122; // _t122 long long _t202; // _t202 signed char _t216; // _t216 _v48 = _t202; _v56 = _t216; _v60 = _t122; _v20 = 31; _v10 = *(_v56 + 1) & 255; _v9 = _v10 & 255; _t104 = *(_v56 + 1) & 0xff; if(_t104 == 1) { _t105 = _v60 & 255; if(_t105 == 19) { if( *(_v56 + 72) != 0) { _v32 = *((intOrPtr*)( *(_v56 + 72) + 80)); *(_v56 + 72) = 0; if(( *( *((intOrPtr*)(_v56 + 64)) + 92) & 255) != 8) { *__rsp = LMP_Accept_Remove_ESCO_BB_Ack; r9d = 29; r8d = 32525; LMP_Send_Accepted_Ext_Tag(_v32); _v10 = 2; } else { _v14 = *(_v56 + 8) & 65535; _v11 = 8; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t216); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; } _v20 = 0; } } else { if(_t105 == 21) { _v20 = 0; } } } else { if(_t104 == 2) { _t114 = _v60 & 255; if(_t114 == 11) { _v14 = *(_v56 + 8) & 65535; _v11 = *(_v56 + 32) & 255; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t216); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; _v20 = 0; } else { if(_t114 == 21) { _v14 = *(_v56 + 8) & 65535; _v11 = 8; _v24 = 0; LMscoctr_Set_Topical_eSCO_Link(0, _v48 + 66256, _t216); LMscoctr_Free(); _v56 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v48); _v10 = 0; _v20 = 0; } } } else { if(_t104 == 0) { } } } if(_v56 != 0) { *(_v56 + 1) = _v10 & 255; } return; } LMesco_Delete( _unknown_ __eax // r0 ) {// addr = 0x0045BFF2 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 char _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed int _t31; // _t31 char _t36; // _t36 char _t42; // _t42 long long _t56; // _t56 long long _t61; // _t61 _v32 = _t56; _v40 = _t61; _v44 = _t42; _v48 = _t36; _v52 = r8d; _v12 = 31; _t31 = _v52 & 255; if(_t31 == 2) { _v12 = MasterPeerInit_Del_Initialize(); } else { if(_t31 > 2) { if(_t31 == 3) { _v12 = SlaveLocalInit_Del_Initialize(); } else { if(_t31 == 4) { _v12 = SlavePeerInit_Del_Initialize(); } else { goto L11; } } } else { if(_t31 == 1) { MasterLocalInit_Del_Initialize(); _v12 = _t31; } else { L11: } } } return _v12; } LMesco_Event_Callback( _unknown_ __eax // r0 ) {// addr = 0x0045C0B5 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t42; // _t42 signed char _t53; // _t53 long long _t72; // _t72 intOrPtr _t73; // _t73 long long _t74; // _t74 intOrPtr _t75; // _t75 _v32 = _t72; _v40 = _t74; _v44 = _t53; _v16 = 31; if(_v40 != 0) { _v10 = *(_v40 + 1) & 255; _t42 = *(_v40 + 2) & 0xff; if(_t42 == 2) { __rcx = _v40; _t75 = __rcx; _t73 = _v32; MaserPeerInit_Del_EventHandler(); _v16 = _t42; L14: _v9 = *(_v40 + 1) & 255; _v64 = _v16; *__rsp = _v9 & 255; r9d = _v10 & 255; r8d = _v44 & 255; DebugPrint(0, _v40, __rcx, __rdx, _t73, _t75); return _v16; } if(_t42 > 2) { if(_t42 == 3) { __rcx = _v40; _t75 = __rcx; _t73 = _v32; SlaveLocalInit_Del_EventHandler(); _v16 = _t42; goto L14; } if(_t42 == 4) { __rcx = _v40; _t75 = __rcx; _t73 = _v32; SlavePeerInit_Del_EventHandler(); _v16 = _t42; goto L14; } L13: goto L14; } if(_t42 == 1) { __rcx = _v40; _t75 = __rcx; _t73 = _v32; _v16 = MaserLocalInit_Del_EventHandler(_v32); goto L14; } goto L13; } return 31; } dump_list() {// addr = 0x0045C1D8 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0045C2A0 signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LMEvt_Initialise() {// addr = 0x0045C681 signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t148; // _t148 intOrPtr _t157; // _t157 long long _t179; // _t179 intOrPtr _t188; // _t188 long long _t231; // _t231 _v48 = _t231; _v40 = _v48 + 60216; RtlFillMemory(128, 0, _v40 + 9584); *((long long*)(_v40 + 9720)) = _v40 + 9712; *((long long*)(_v40 + 9712)) = *((intOrPtr*)(_v40 + 9720)); check_list_constant(); *((long long*)(_v40 + 9736)) = _v40 + 9728; *((long long*)(_v40 + 9728)) = *((intOrPtr*)(_v40 + 9736)); check_list_constant(); _v9 = 0; while(_v9 <= 3) { _t148 = *((intOrPtr*)(_v40 + 9720)); _v32 = _t148; *_v32 = (_t148 + 300 << 5) + _v40; *((intOrPtr*)(_v40 + ((_v9 & 255) + 300 << 5))) = _v40 + 9712; _t157 = _v32; *((intOrPtr*)(_v40 + ((_v9 & 255) + 300 << 5) + 8)) = _t157; *((long long*)(_v40 + 9720)) = (_t157 + 300 << 5) + _v40; check_list_constant(); _v9 = _v9 + 1; } RtlFillMemory(256, 0, _v40 + 9744); *((long long*)(_v40 + 10008)) = _v40 + 10000; *((long long*)(_v40 + 10000)) = *((intOrPtr*)(_v40 + 10008)); check_list_constant(); *((long long*)(_v40 + 10024)) = _v40 + 10016; *((long long*)(_v40 + 10016)) = *((intOrPtr*)(_v40 + 10024)); check_list_constant(); _v9 = 0; while(_v9 <= 3) { _t179 = *((intOrPtr*)(_v40 + 10008)); _v24 = _t179; *_v24 = (_t179 + 153 << 6) + _v40; *((intOrPtr*)(_v40 + ((_v9 & 255) + 153 << 6))) = _v40 + 10000; _t188 = _v24; *((intOrPtr*)(_v40 + ((_v9 & 255) + 153 << 6) + 8)) = _t188; *((long long*)(_v40 + 10008)) = (_t188 + 153 << 6) + _v40; check_list_constant(); _v9 = _v9 + 1; } return; } LMEvt_DeInitialise( long long __rdi // r57 ) {// addr = 0x0045C9CD long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } LMEvt_RegisterEvent() {// addr = 0x0045C9D7 signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 signed int* _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed char _t82; // _t82 long long _t98; // _t98 long long _t132; // _t132 long long _t151; // _t151 _v64 = _t151; _v80 = _t132; _v88 = r8; _v68 = sil; _v72 = _t82; _v56 = _v64 + 60216; _v9 = 0; if(_v80 == 0 && _v72 != 0) { return 0; } if(_v72 > 4) { return 0; } if( *((intOrPtr*)(_v56 + 9712)) != _v56 + 9712 || *((intOrPtr*)(_v56 + 9720)) != _v56 + 9712) { _t98 = *((intOrPtr*)(_v56 + 9712)); if(_t98 != _v56 + 9712) { _t98 = *((intOrPtr*)(_v56 + 9712)); } _v48 = _t98; _v40 = *((intOrPtr*)(_v56 + 9712)); if(_v56 + 9712 != _v40) { *((long long*)(_v56 + 9712)) = *_v40; if( *_v40 != _v56 + 9712) { *((long long*)( *_v40 + 8)) = _v56 + 9712; } else { *((long long*)(_v56 + 9720)) = _v56 + 9712; } } check_list_constant(); if(_v48 != 0) { _v32 = _v48 - 16; *_v32 = _v68 & 255; __rsi = _v80; RtlCopyMemory(_v72 & 255, &(_v32[0]), _v80); (_v32[0]) = _v72 & 255; (_v32[2]) = _v88; _v24 = *((intOrPtr*)(_v56 + 9736)); *_v24 = _v48; *_v48 = _v56 + 9728; *((long long*)(_v48 + 8)) = _v24; *((long long*)(_v56 + 9736)) = _v48; check_list_constant(); _v9 = 1; } goto L16; } else { L16: return _v9 & 255; } } LMEvt_FireEvent() {// addr = 0x0045CBF4 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 _unknown_ _v24; // _cfa_ffffffe8 signed int* _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char _v80; // _cfa_ffffffb0 long long _v96; // _cfa_ffffffa0 signed char _v100; // _cfa_ffffff9c signed int _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed char _t106; // _t106 long long _t149; // _t149 intOrPtr _t179; // _t179 intOrPtr _t182; // _t182 long long _t183; // _t183 long long _t197; // _t197 _v96 = _t197; _v112 = _t183; _v100 = sil; _v104 = _t106; _v72 = _v96 + 60216; _v10 = 0; _v9 = 0; _v80 = 0; _v64 = _v72 + 9728; _v80 = *_v64; while(_v80 != _v64) { _v56 = _v80 - 16; if(( *_v56 & 255) != _v100) { _v80 = *_v80; continue; } else { _v9 = 1; break; } } if(_v9 == 0) { L23: return _v10 & 255; } if( *((intOrPtr*)(_v72 + 10000)) != _v72 + 10000) { L8: _t149 = *((intOrPtr*)(_v72 + 10000)); _t187 = _v72 + 10000; if(_t149 != _v72 + 10000) { _t149 = *((intOrPtr*)(_v72 + 10000)); } _v48 = _t149; _v40 = *((intOrPtr*)(_v72 + 10000)); if(_v72 + 10000 != _v40) { *((long long*)(_v72 + 10000)) = *_v40; if( *_v40 != _v72 + 10000) { _t187 = _v72 + 10000; *((long long*)( *_v40 + 8)) = _v72 + 10000; } else { _t179 = _v72; _t187 = _t179 + 10000; *((long long*)(_v72 + 10008)) = _t179 + 10000; } } _t155 = _v72 + 10000; _t197 = _v72 + 10000; check_list_constant(); if(_v48 != 0) { _v32 = _v48 - 48; *_v32 = _v100 & 255; if(_v104 > 32) { __rcx = &(_v32[0]); __rsi = _v112; RtlCopyMemory(32, &(_v32[0]), __rsi); (_v32[0]) = 32; } else { __rcx = &(_v32[0]); __rsi = _v112; RtlCopyMemory(_v104 & 255, &(_v32[0]), __rsi); (_v32[0]) = _v104 & 255; } _v24 = *((intOrPtr*)(_v72 + 10024)); *_v24 = _v48; *_v48 = _v72 + 10016; *((long long*)(_v48 + 8)) = _v24; *((long long*)(_v72 + 10024)) = _v48; _t197 = _v72 + 10016; _t155 = _v48; _t187 = _v48; check_list_constant(); _v10 = 1; } L20: if(_v10 == 0) { DebugPrint(0, _t155, __rcx, _t187, _t197, __rsi); } else { DebugPrint(0, _t155, __rcx, _t187, _t197, __rsi); } goto L23; } _t182 = _v72; _t155 = *((intOrPtr*)(_t182 + 10008)); _t187 = _v72 + 10000; if( *((intOrPtr*)(_t182 + 10008)) == _v72 + 10000) { goto L20; } goto L8; } LMEvt_DispatchPendingEvent() {// addr = 0x0045CEB0 signed int _v9; // _cfa_fffffff7 signed int* _v24; // _cfa_ffffffe8 signed int* _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int* _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 _unknown_ _t131; // _t131 signed int _t133; // _t133 intOrPtr _t157; // _t157 intOrPtr _t159; // _t159 signed int _t169; // _t169 _unknown_ _t236; // _t236 _unknown_ _t238; // _t238 long long _t270; // _t270 _unknown_ _t276; // _t276 _v112 = _t270; _v96 = _v112 + 60216; _v88 = 0; _v80 = 0; _v72 = 0; _v104 = 0; _t157 = _v96; _t158 = *((intOrPtr*)(_t157 + 10016)); if( *((intOrPtr*)(_t157 + 10016)) == 0) { DebugPrint(0, _t158, _t236, _t238, _t270, _t276); return; } _t159 = _v96; _t160 = *((intOrPtr*)(_t159 + 10024)); if( *((intOrPtr*)(_t159 + 10024)) == 0) { DebugPrint(0, _t160, _t236, _t238, _t270, _t276); return; } if( *(_v96 + 10016) != _v96 + 10016 || *((intOrPtr*)(_v96 + 10024)) != _v96 + 10016) { _v64 = _v96 + 9728; L31: while( *(_v96 + 10016) != _v96 + 10016 || *((intOrPtr*)(_v96 + 10024)) != _v96 + 10016) { if(( *(_v112 + 190499) & 255) != 0) { return; } _t169 = *(_v96 + 10016); if(_t169 == _v96 + 10016) { _t133 = 0; } else { _t169 = *(_v96 + 10016); } _v72 = _t169; _v56 = *(_v96 + 10016); if(_v96 + 10016 != _v56) { *(_v96 + 10016) = *_v56; if( *_v56 != _v96 + 10016) { *((long long*)( *_v56 + 8)) = _v96 + 10016; } else { *((long long*)(_v96 + 10024)) = _v96 + 10016; } } check_list_constant(); _v88 = _v72 - 48; _v104 = *_v64; while(_v104 != _v64) { if(( *(_v112 + 190499) & 255) != 0) { L30: _v24 = *(_v96 + 10008); *_v24 = _v72; *_v72 = _v96 + 10000; *(_v72 + 8) = _v24; *(_v96 + 10008) = _v72; check_list_constant(); goto L31; } _v80 = _v104 - 16; _t133 = *_v80 & 255; if(( *_v88 & 255) != _t133 || *((intOrPtr*)(_v80 + 8)) == 0) { L26: _v104 = *_v104; continue; } else { *((long long*)(_v88 + 40)) = _v80; *((long long*)( *((intOrPtr*)(_v80 + 8))))(); _v9 = _t133; if(_v9 == 0) { *(_v88 + 40) = 0; goto L26; } if(_v104 != 0 && *_v104 != _v104 && *(_v104 + 8) != _v104) { _v48 = *(_v104 + 8); _v40 = *_v104; *_v48 = _v40; *(_v40 + 8) = _v48; check_list_constant(); } _v32 = *(_v96 + 9720); *_v32 = _v104; *_v104 = _v96 + 9712; *(_v104 + 8) = _v32; *(_v96 + 9720) = _v104; check_list_constant(); goto L30; } } goto L30; } return; } else { return; } } LMTrxFtr_Feature_ExitCB( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0045D2AC long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; if(_v32 == 0 || _v40 == 0 || _v48 == 0) { return; } else { if(( *(_v40 + 1) & 255) == 0) { return; } _v16 = _v48 + 6; r8 = _v16 + 4; EG_Event_Composer(0); return; } } LMTrxFtr_ExtFeature_ExitCB( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0045D32F long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t21; // _t21 _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; if(_v32 == 0 || _v40 == 0 || _v48 == 0) { return; } else { if(( *(_v40 + 1) & 255) == 0) { return; } _v16 = _v48 + 6; r8 = _v16 + 1; *__rsp = _v16 + 12; r9 = r8; r8 = _v16; EG_Event_Composer(0); return; } } LM_Read_Remote_Supported_Features() {// addr = 0x0045D3C5 intOrPtr _v12; // _cfa_fffffff4 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed short _t26; // _t26 long long _t30; // _t30 long long _t33; // _t33 long long _t43; // _t43 _v48 = _t43; _v52 = _t26; _v24 = 1051; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t30, _v48 + 60216); _v40 = _t30; if(_v40 == 0) { _v12 = 0; EG_Generate_Command_Status_Event(); return; } _t33 = _v48; LMTrx_NewFeature(_t33); _v32 = _t33; if(_v32 == 0) { _v12 = 7; } else { _v12 = 0; } EG_Generate_Command_Status_Event(); return; } LM_Read_Remote_Extended_Features() {// addr = 0x0045D47B intOrPtr _v12; // _cfa_fffffff4 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t30; // _t30 signed short _t32; // _t32 long long _t36; // _t36 long long _t39; // _t39 long long _t48; // _t48 _v48 = _t48; _v52 = _t32; _v56 = _t30; _v24 = 1052; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t36, _v48 + 60216); _v40 = _t36; if(_v40 == 0) { _v12 = 0; EG_Generate_Command_Status_Event(); return; } _t39 = _v48; LMTrx_NewExtFeature(_t39); _v32 = _t39; if(_v32 == 0) { _v12 = 7; } else { _v12 = 0; } EG_Generate_Command_Status_Event(); return; } BDADDR_Assign( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x0045D538 signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } _Get_Interval_Rand( short __edi, // r4 signed int __esi, // r5 _unknown_ __rdx // r56 ) {// addr = 0x0045D59E short _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 __rdx = __rdx; __esi = __esi; __edi = __edi; _v28 = __edi; _v32 = __esi; BTRAND_Rand(); return (_v32 & 65535) + __esi % (__rdx + 1 - (_v32 & 65535)); } LMinq_ResetInquiryRecord() {// addr = 0x0045D5DF signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed short _t5; // _t5 _v12 = _t5; __edx = 48; __esi = 0; RtlFillMemory(48, 0, __rdi); *7348106 = 0; *7348104 = _v12 & 65535; *7348112 = 0; return; } LMinq_Period_Interval_Timeout( _unknown_ __eax, // r0 long long __rdi // r57 ) {// addr = 0x0045D620 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; LMinq_ResetInquiryRecord(); *7348108 = 1; LCCMD_InquiryRequest(); _v12 = _Get_Interval_Rand( *7348100 & 0xffff, *7348102 & 0xffff, __rdx) << 11; *7348110 = DM_Set_Timer(); return; } LMinq_Periodic_Inquiry( _unknown_ __eax // r0 ) {// addr = 0x0045D6B2 char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 intOrPtr _t48; // _t48 signed short _t54; // _t54 signed short _t64; // _t64 long long _t72; // _t72 intOrPtr _t73; // _t73 _v32 = _t72; _v44 = _t48; _v36 = _t64; _v40 = _t54; _v48 = r8d; _v52 = r9d; _v20 = 0; if(( *7348111 & 255) == 0) { LMinq_ResetInquiryRecord(); *7348108 = 1; _t70 = _v32; _t73 = _v32; _v9 = LCCMD_InquiryRequest(); if(_v9 != 0) { *7348111 = 2; LM_Inq = _v44; *7348100 = _v36 & 65535; *7348102 = _v40 & 65535; *7348109 = _v48 & 255; _v16 = _Get_Interval_Rand(_v36 & 65535, _v40 & 65535, __rdx) << 11; *__rsp = _v16; r9d = _v36 & 65535; r8d = _v40 & 65535; DebugPrint(0, _t70, __rcx, __rdx, _t73, __rsi); *7348110 = DM_Set_Timer(); return _v20; } return 7; } return 12; } LMinq_Exit_Periodic_Inquiry_Mode() {// addr = 0x0045D7CD long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t19; // _t19 _v16 = _t19; if(( *7348111 & 255) == 2) { _t6 = *7348108 & 255; if(( *7348108 & 255) == 1) { *7348108 = 0; LCCMD_InquiryCancelRequest(_t6); } DM_Clear_Timer(); *7348110 = 0; *7348111 = 0; LMbw_Adjust_Link_Priority(); return 0; } return 12; } LMinq_Inquiry_Complete() {// addr = 0x0045D851 signed char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t17; // _t17 _v32 = _t17; _v40 = __rsi; _v12 = 0; EG_Event_Composer(0); if(( *7348111 & 255) == 1) { *7348111 = 0; } LMbw_Adjust_Link_Priority(); return 0; } LMinq_Inquiry_Result( _unknown_ __eax // r0 ) {// addr = 0x0045D8BB signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 char _v18; // _cfa_ffffffee signed short _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc signed int _v51; // _cfa_ffffffcd signed int _v52; // _cfa_ffffffcc signed int _v53; // _cfa_ffffffcb signed int _v54; // _cfa_ffffffca signed int _v55; // _cfa_ffffffc9 char _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 signed char* _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 signed char* _v112; // _cfa_ffffff90 char* _v120; // _cfa_ffffff88 char* _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed int _t181; // _t181 signed int _t188; // _t188 signed char* _t233; // _t233 signed char* _t237; // _t237 char* _t275; // _t275 char* _t304; // _t304 long long _t317; // _t317 long long _t332; // _t332 _v96 = _t317; _v104 = _t332; _t233 = *(_v96 + 74448); QUEUE_DequeueRequest(_t233); _v88 = _t233; if(_v88 == 0) { L31: return 0; } if(( *7348108 & 255) == 0) { L30: QUEUE_GetBufLength(_v88); QUEUE_DequeueCommit( *(_v96 + 74448)); goto L31; } _t237 = _v88; QUEUE_GetDataBuf(_t237); _v80 = _t237; _v72 = _v80; _v64 = &(_v72[0x10]); _v14 = (_v72[0xf]) & 0xff; _v11 = (_v72[0xd]) & 255; _v36 = (_v72[8]); _v18 = (_v72[6]) & 65535; _v10 = (_v72[0xc]) & 255; _v32 = 1; _v28 = 0; _v9 = (_v72[0xe]) & 255; _v56 = *_v72 & 255; _v55 = (_v72[1]) & 255; _v54 = (_v72[2]) & 255; _v53 = (_v72[3]) & 255; _v52 = (_v72[4]) & 255; _v51 = (_v72[5]) & 255; _t322 = _v96 + 190168; _t304 = &_v36; _t254 = &_v56; _t333 = &_v56; if(EG_Filter_Event(1) == 0) { L24: if(( *7348104 & 65535) != 0) { _t162 = *7348104 & 65535; if(( *7348106 & 65535) >= ( *7348104 & 65535)) { _v24 = 0; *7348108 = 0; LCCMD_InquiryCancelRequest(_t162); if(( *7348111 & 255) == 1) { *7348111 = 0; } LMbw_Adjust_Link_Priority(); EG_Event_Composer(0); } } goto L30; } if(( *7348104 & 65535) == 0) { L14: if(( *(_v96 + 190522) & 255) != 0) { if(( *(_v96 + 190522) & 255) != 1) { if(( *(_v96 + 190522) & 255) == 2) { if(_v9 != 0) { if(_v14 == 0) { r8 = &_v28; _v112 = &ZeroExtendedInquiryResponse; _v120 = &_v10; _v128 = &_v18; *__rsp = &_v36; r9 = r8; r8 = &_v11; EG_Event_Composer(0); } else { r8 = &_v28; _v112 = _v64; _v120 = &_v10; _v128 = &_v18; *__rsp = &_v36; r9 = r8; r8 = &_v11; EG_Event_Composer(0); } } else { r8 = &_v28; _v120 = &_v10; _v128 = &_v18; *__rsp = &_v36; r9 = r8; r8 = &_v11; EG_Event_Composer(0); } } } else { r8 = &_v28; _v120 = &_v10; _v128 = &_v18; *__rsp = &_v36; r9 = r8; r8 = &_v11; EG_Event_Composer(0); } } else { r8 = &_v28; _v120 = &_v18; _v128 = &_v36; *__rsp = &_v28; r9 = r8; r8 = &_v11; EG_Event_Composer(0); } goto L24; } _t181 = *7348104 & 65535; if(( *7348106 & 65535) >= _t181) { goto L14; } else { _v16 = 0; L8: L8: if(_v16 <= 7) { goto L6; } else { if(_v16 > 7) { _t188 = *7348112 & 65535; _v16 = _t188; *7348112 = _t188 + 1; if(( *7348112 & 65535) > 7) { *7348112 = 0; } DebugPrint(0, _t254, _t281, _t304, _t322, _t333); } } BDADDR_Assign( &( &( &( &(_t304[_t304])[_t304])[ &( &(_t304[_t304])[_t304])])[0x701f94]), &_v56); *7348106 = ( *7348106 & 65535) + 1; DebugPrint(0, &_v56, _t281, &( &( &( &(_t304[_t304])[_t304])[ &( &(_t304[_t304])[_t304])])[0x701f94]), &( &( &( &(_t304[_t304])[_t304])[ &( &(_t304[_t304])[_t304])])[0x701f94]), &_v56); goto L14; L6: _t275 = &( &( &(_t304[_t304])[_t304])[ &( &(_t304[_t304])[_t304])]); _t281 = &(_t275[0x701f94]); _t254 = &_v56; _t333 = &(_t275[0x701f94]); _t322 = &_v56; RtlCompareMemory(6, &_v56, &(_t275[0x701f94])); if(_t181 == 0) { goto L30; } else { _v16 = _v16 + 1; goto L8; } } } LM_Inquiry_Initialise() {// addr = 0x0045DDAA long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t23; // _t23 _v16 = _t23; _t6 = *7348111 & 255; if(( *7348111 & 255) != 0) { *7348108 = 0; _t23 = _v16; LCCMD_InquiryCancelRequest(_t6); _t6 = *7348110 & 255; if(( *7348110 & 255) != 0) { _t6 = *7348110 & 255; _t23 = _v16; DM_Clear_Timer(); } } RtlFillMemory(68, 0, _t23); LCEVHDR_RegisterEventHandler(4, __rdx, _v16); LCEVHDR_RegisterEventHandler(64, __rdx, _v16); return; } LMinq_Inquiry_Start( _unknown_ __eax // r0 ) {// addr = 0x0045DE3E char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t20; // _t20 char _t22; // _t22 intOrPtr _t24; // _t24 long long _t26; // _t26 _v32 = _t26; _v36 = _t24; _v40 = _t22; _v44 = _t20; if(( *7348111 & 255) == 0) { LMinq_ResetInquiryRecord(); *7348108 = 1; _v9 = LCCMD_InquiryRequest(); if(_v9 != 0) { *7348111 = 1; return 0; } return 7; } return 12; } LMinq_Inquiry_Cancel( long long __rdi // r57 ) {// addr = 0x0045DEAE signed char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v32 = __rdi; _v12 = 12; _t8 = *7348111 & 255; if(( *7348111 & 255) != 1) { if(( *7348111 & 255) == 0) { _v12 = 0; } } else { *7348108 = 0; LCCMD_InquiryCancelRequest(_t8); *7348111 = 0; LMbw_Adjust_Link_Priority(); _v12 = 0; } return _v12; } LMlink_Set_Key_Persistance( signed int __esi, // r5 long long __rdi // r57 ) {// addr = 0x0045DF24 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *(_v16 + 147) = ( *(_v16 + 147) & 255) << 4 | _v20 & 15; return; } LMlink_Get_Current_Key_Persistance( long long __rdi // r57 ) {// addr = 0x0045DF53 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 147) & 0xf; } LMlink_Get_Previous_Key_Persistance( long long __rdi // r57 ) {// addr = 0x0045DF6E long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return ( *(_v16 + 147) & 255) >> 4 & 255; } LMbw_Initialise( long long __rdi // r57 ) {// addr = 0x0045DF8C signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v9 = 0; while(_v9 <= 1) { *(((_v9 & 255) + (_v9 & 255) + __rdx << 3) + &LMbw_SlaveLinkPriority) = 0; _v9 = _v9 + 1; } return; } _LMbw_Change_Master_Link_Priority( signed short __ecx, // r2 intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0045DFC7 unsigned short _v10; // _cfa_fffffff6 unsigned short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 signed short _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 unsigned short _t27; // _t27 __rsi = __rsi; __rdi = __rdi; __edx = __edx; __ecx = __ecx; _v32 = __rdi; _v40 = __rsi; _v44 = __edx; _v48 = __ecx; if(_v40 == 0) { return; } if( *((intOrPtr*)(_v40 + 768)) == 0) { return; } _v10 = ( *(_v40 + 56) & 65535) >> 1; if(_v48 <= 2) { _v12 = 8; } else { if(_v48 > 26) { _t27 = 8; } else { _t27 = (_v48 & 0xffff) * 43691 >> 16 >> 1; } _v12 = _t27; } _v24 = *((intOrPtr*)( *((intOrPtr*)(_v40 + 768)) + 72)); if(_v44 <= 5) { goto __rax; } return; } _LMbw_Decide_Master_Percentage( _unknown_ __edi, // r4 char __esi, // r5 long long __rdx // r56 ) {// addr = 0x0045E1EB long long _v16; // _cfa_fffffff0 char _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rdx = __rdx; __esi = __esi; __edi = __edi; _v40 = __rdx; _v28 = __cl; _v32 = __esi; if(_v32 == 0) { if(_v40 == 0) { if(_v28 == 0) { return 0; } return 100; } if( *((intOrPtr*)(_v40 + 768)) == 0) { return 100; } _v16 = *((intOrPtr*)( *((intOrPtr*)(_v40 + 768)) + 72)); if(( *(_v16 + 17) & 255) == 0) { return 100; } if(_v28 != 1) { return 300; } return 200; } if(_v28 != 1) { return 300; } return 200; } _LMbw_Adjust_Slave_Hold_Time() {// addr = 0x0045E283 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _v9 = 0; _v12 = 0; _v10 = 0; while(_v10 <= 1) { if( *((intOrPtr*)(((_v10 & 255) + (_v10 & 255) + _t104 << 3) + &LMbw_SlaveLinkPriority)) != 0) { _v9 = _v9 + 1; if(( *(((_v10 & 255) + (_v10 & 255) + _t105 << 3) + &LMbw_SlaveLinkPriority + 14) & 65535) >> 1 > 254) { *(((_v10 & 255) + (_v10 & 255) + _t109 << 3) + &LMbw_SlaveLinkPriority + 14) = 508; } if(( *(7348208 + ((_v10 & 255) + (_v10 & 255) + _t106 << 3)) & 65535) >> 1 > 254) { *(7348208 + ((_v10 & 255) + (_v10 & 255) + _t108 << 3)) = 508; } _v12 = _v12 + ( *(((_v10 & 255) + (_v10 & 255) + _t107 << 3) + &LMbw_SlaveLinkPriority + 14) & 65535); } _v10 = _v10 + 1; } if(_v9 > 1) { if( *7348200 <= *7348224 || ( *(LMbw_SlaveLinkPriority + 56) & 65535) >= ( *( *7348216 + 56) & 65535)) { if( *7348224 > *7348200 && ( *( *7348216 + 56) & 65535) < ( *(LMbw_SlaveLinkPriority + 56) & 65535)) { *7348230 = ( *(LMbw_SlaveLinkPriority + 56) & 65535) * *7348224; if(( *7348230 & 65535) >> 1 > 254) { *7348230 = 508; } *7348232 = *7348230 & 65535; } } else { *7348206 = ( *( *7348216 + 56) & 65535) * *7348200; if(( *7348206 & 65535) >> 1 > 254) { *7348206 = 508; } *7348208 = *7348206 & 65535; } return ( *7348230 & 65535) + ( *7348206 & 65535); } return _v12 & 65535; } _LMbw_ReAlloc_Driven_By_Master_Connection() {// addr = 0x0045E484 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 signed int _v18; // _cfa_ffffffee signed int _v20; // _cfa_ffffffec signed short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v26; // _cfa_ffffffe6 signed long long _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed long long _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 intOrPtr _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v104; // _cfa_ffffff98 signed short _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed int _t235; // _t235 intOrPtr _t249; // _t249 _unknown_ _t306; // _t306 signed long long _t332; // _t332 intOrPtr _t340; // _t340 intOrPtr _t349; // _t349 _unknown_ _t386; // _t386 signed long long _t400; // _t400 signed int _t402; // _t402 _v64 = _t400; _v72 = _t402; _v76 = _t249; _v80 = _t235; _v18 = 0; _v16 = 0; r9d = _v16 & 65535; r8d = _v18 & 65535; DebugPrint(0, _t306, __rcx, _t386, _t400, _t402); if((_v80 & 2) != 0) { _v18 = _v18 + 1; _v16 = 1; } if((_v80 & 4) != 0) { _v18 = _v18 + 1; _v16 = 1; } if((_v80 & 64) != 0) { _v18 = _v18 + 1; } if((_v80 & 128) != 0) { _v18 = _v18 + 1; } if(_v18 > 4) { _v18 = 4; } r9d = _v16 & 65535; r8d = _v18 & 65535; DebugPrint(0, _t306, __rcx, _t386, _t400, _t402); _v9 = 0; _v11 = _v16 != 0; _v12 = 0; while(_v12 <= 6) { _v48 = _v64 * 808 + _v64 + 60224; if(( *(_v48 + 1) & 255) != 0) { _t311 = _v48; if(_t311 != _v72) { _t311 = _v48; if(( *(_t311 + 2) & 255) == 0) { _t311 = _v48; if(( *(_t311 + 4) & 1) != 0) { _v11 = _v11 + 1; _t311 = *((intOrPtr*)(_v48 + 768)); if(_t311 != 0) { _v40 = *( *(_v48 + 768) + 72); _t311 = _v40; if(( *(_t311 + 17) & 255) != 0) { _v9 = 1; } } } } } } _v12 = _v12 + 1; } _v10 = 0; _v24 = 0; _v26 = _v24 & 65535; _v12 = 0; while(_v12 <= 1) { _t311 = *(((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + &LMbw_SlaveLinkPriority); if(_t311 != 0) { _v26 = _v26 + ((((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + &LMbw_SlaveLinkPriority[1]) & 65535); _t311 = *(((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + &LMbw_SlaveLinkPriority); _v24 = _v24 + ( *(_t311 + 56) & 65535); _v10 = _v10 + 1; } _v12 = _v12 + 1; } _v20 = 65535; _v22 = 0; if(_v10 == 0) { L43: r8d = _v9 & 255; _v104 = (_v22 & 65535) >> 1 & 65535; _v112 = _v20; *__rsp = (_v26 & 65535) >> 1 & 65535; r9d = r8d; r8d = _v10 & 255; DebugPrint(0, _t311, __rcx, _t389, _t400, _t402); _LMbw_Change_Master_Link_Priority((_v22 & 65535) >> 1 & 65535, _v76, _v64, _v72); return; } if(_v76 - 3 > 8) { _t389 = _v72; _v20 = _LMbw_Decide_Master_Percentage((_v11 & 255) + 1 & 255, _v9 & 255, _v72); if(_v20 >= 0) { goto L43; } *__rsp = _v10 & 255; r9d = _v20; r8d = (_v24 & 65535) >> 1 & 65535; DebugPrint(0, _t311, __rcx, _t389, _t400, _t402); _v84 = (_v10 & 255) * 100; _v22 = _v20 * (_v24 & 65535) / _v84 * _v18; _v14 = (_v22 & 65535) + (_v26 & 65535); r9d = (_v14 & 65535) >> 1 & 65535; r8d = (_v26 & 65535) >> 1 & 65535; DebugPrint(0, _t311, __rcx, _t389, _t400, _t402); _v12 = 0; while(_v12 <= 1) { _t389 = _v12 & 255; _t318 = _t389; _t311 = *((_t389 + _t318 + _t389 << 3) + &LMbw_SlaveLinkPriority); if( *((_t389 + _t318 + _t389 << 3) + &LMbw_SlaveLinkPriority) == 0) { L39: _v12 = _v12 + 1; continue; } (((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + &LMbw_SlaveLinkPriority[1]) = _v14 & 65535; _t332 = *(((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + &LMbw_SlaveLinkPriority); _t333 = *((intOrPtr*)(_t332 + 432)); if( *((intOrPtr*)(_t332 + 432)) != 0) { _t340 = *((intOrPtr*)( *(((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + &LMbw_SlaveLinkPriority) + 432)); _t341 = *((intOrPtr*)(_t340 + 104)); if( *((intOrPtr*)(_t340 + 104)) != 0) { _t349 = *((intOrPtr*)( *((intOrPtr*)( *(((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + &LMbw_SlaveLinkPriority) + 432)) + 104)); _t350 = *((intOrPtr*)(_t349 + 16)); if( *((intOrPtr*)(_t349 + 16)) != 0) { r8d = ( *(((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + 7348208) & 65535) >> 1 & 255; _t402 = *( *(((_v12 & 255) + (_v12 & 255) + (_v12 & 255) << 3) + &LMbw_SlaveLinkPriority) + 432); _t311 = _v64; _t400 = _v64; LCCMD_ChangeLinkPriorityRequest(); goto L39; } DebugPrint(0, _t350, __rcx, _t394, _t400, _t402); return; } DebugPrint(0, _t341, __rcx, _t393, _t400, _t402); return; } DebugPrint(0, _t333, __rcx, _t392, _t400, _t402); return; } goto L43; } _t311 = *(5027344 + _t311 * 8); goto __rax; } _LMbw_Decide_Slave_Link_Priority_Level( intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x0045EA70 long long _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v16 = *((intOrPtr*)( *((intOrPtr*)( *_v32 + 768)) + 72)); if(_v36 == 2 || _v36 == 4 || _v36 == 5) { *(_v32 + 8) = 2; } else { if(( *(_v16 + 17) & 255) == 0) { *(_v32 + 8) = 1; } else { *(_v32 + 8) = 2; } } *(_v32 + 14) = ( *( *_v32 + 56) & 65535) * *(_v32 + 8); *(_v32 + 16) = ( *( *_v32 + 56) & 65535) * *(_v32 + 8); return; } _LMbw_ReAlloc_Driven_By_Slave_Connection() {// addr = 0x0045EB10 signed char _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 signed char _v28; // _cfa_ffffffe4 signed int _v30; // _cfa_ffffffe2 signed int _v32; // _cfa_ffffffe0 signed short _v34; // _cfa_ffffffde _unknown_ _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 signed char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 intOrPtr _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t131; // _t131 intOrPtr _t165; // _t165 _unknown_ _t208; // _t208 _unknown_ _t267; // _t267 long long _t281; // _t281 _v80 = _t279; _v88 = _t281; _v92 = _t165; _v30 = 0; _v25 = 0; _v27 = 0; _v72 = 0; _v64 = 0; _v28 = 0; while(_v28 <= 6) { _v28 = _v28 + 1; } _v26 = 0; _v32 = 0; _v34 = 0; if(_v92 == 6 || _v92 == 11) { _v28 = 0; while(_v28 <= 1) { if( *((intOrPtr*)(((_v28 & 255) + (_v28 & 255) + (_v28 & 255) << 3) + &LMbw_SlaveLinkPriority)) == 0) { L21: _v28 = _v28 + 1; continue; } _t271 = _v28 & 255; _t219 = _t271; _t212 = *((intOrPtr*)((_t271 + _t219 + _t271 << 3) + &LMbw_SlaveLinkPriority)); if( *((intOrPtr*)((_t271 + _t219 + _t271 << 3) + &LMbw_SlaveLinkPriority)) == _v88) { L25: if(_v28 == 2) { DebugPrint(0, _t212, __rcx, _t271, _t279, _t281); } RtlFillMemory(48, 0, _t279); goto L29; } goto L21; } goto L25; } else { RtlFillMemory(48, 0, _t279); LMbw_SlaveLinkPriority = _v88; _t212 = _v88; _v32 = *(_v88 + 56) & 65535; _LMbw_Decide_Slave_Link_Priority_Level(_v92, _t279); _v26 = 1; L29: if(_v72 != 0) { _t271 = ((_v26 & 255) + (_v26 & 255) + (_v26 & 255) << 3) + &LMbw_SlaveLinkPriority; *_t271 = _v72; _v32 = _v32 + ( *(_v72 + 56) & 65535); _t261 = _t271; _t212 = (_t271 + _t261 + _t271 << 3) + &LMbw_SlaveLinkPriority; _t279 = (_t271 + _t261 + _t271 << 3) + &LMbw_SlaveLinkPriority; _LMbw_Decide_Slave_Link_Priority_Level(13, (_t271 + _t261 + _t271 << 3) + &LMbw_SlaveLinkPriority); _v26 = _v26 + 1; } if(_v26 == 0) { L37: *__rsp = (_v30 & 65535) >> 1 & 65535; r9d = (_v34 & 65535) >> 1 & 65535; r8d = _v26 & 255; DebugPrint(0, _t212, __rcx, _t271, _t279, _t281); if(_v64 == 0) { return; } _LMbw_Change_Master_Link_Priority((_v30 & 65535) >> 1 & 65535, 0, _v80, _v64); return; } else { _v34 = _LMbw_Adjust_Slave_Hold_Time(); _t131 = _LMbw_Decide_Master_Percentage(_v27 & 255, _v25 & 255, _t271); _v96 = (_v26 & 255) * 100; _v30 = (_t131 & 65535) * (_v32 & 65535) / _v96; _v34 = _v34 + (_v30 & 65535); _v28 = 0; while(_v28 <= 1) { _t271 = _v28 & 255; _t225 = _t271; _t212 = *((intOrPtr*)((_t271 + _t225 + _t271 << 3) + &LMbw_SlaveLinkPriority)); if( *((intOrPtr*)((_t271 + _t225 + _t271 << 3) + &LMbw_SlaveLinkPriority)) != 0) { *(((_v28 & 255) + (_v28 & 255) + (_v28 & 255) << 3) + &LMbw_SlaveLinkPriority + 12) = _v34 & 65535; r8d = ( *(((_v28 & 255) + (_v28 & 255) + (_v28 & 255) << 3) + 7348208) & 65535) >> 1 & 255; _t281 = *((intOrPtr*)( *((intOrPtr*)(((_v28 & 255) + (_v28 & 255) + (_v28 & 255) << 3) + &LMbw_SlaveLinkPriority)) + 432)); _t212 = _v80; _t279 = _v80; LCCMD_ChangeLinkPriorityRequest(); } _v28 = _v28 + 1; } goto L37; } } } ConvertPriorityAdjScenarioToStr( intOrPtr __edi // r4 ) {// addr = 0x0045EF27 intOrPtr _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if(_v12 <= 13) { goto __rax; } return "Unknown Scenario"; } LMbw_Adjust_Link_Priority() {// addr = 0x0045EFAA signed int _v44; // _cfa_ffffffd4 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t98; // _t98 _unknown_ _t146; // _t146 long long _t151; // _t151 long long _t155; // _t155 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 88; _v64 = _t151; _v72 = _t155; _v76 = _t98; _t131 = _v64; _v44 = *(_v64 + 191376); r8d = _v76; DebugPrint(0, _v64, _t146, __rdx, _t151, _t155); if(_v76 != 7) { if(_v76 != 9) { if(_v76 != 8) { if(_v76 == 10) { _v44 = _v44 & 4294967167; } } else { _v44 = _v44 & 191; } } else { _v44 = _v44 | 128; } } else { _v44 = _v44 | 64; } r8d = _v76; DebugPrint(0, _t131, _t146, __rdx, _t151, _t155); _t132 = _v64; *(_v64 + 191376) = _v44; if(_v72 == 0) { ConvertPriorityAdjScenarioToStr(_v76); r9d = 2; r8d = 2; DebugPrint(0, _t132, _t132, __rdx, _t151, _t155); } else { if( *((intOrPtr*)(_v72 + 768)) == 0) { r12d = *(_v72 + 4) & 0xffff; _t140 = _v72; if(( *(_v72 + 2) & 255) == 0) { } ConvertPriorityAdjScenarioToStr(_v76); _v104 = 2; *__rsp = 2; r9d = r12d; r8 = __rbx; DebugPrint(0, _t140, _t140, __rdx, _t151, _t155); } else { r12d = *( *((intOrPtr*)( *((intOrPtr*)(_v72 + 768)) + 72)) + 17) & 0xff; r13d = *(_v72 + 4) & 0xffff; _t145 = _v72; if(( *(_v72 + 2) & 255) == 0) { } ConvertPriorityAdjScenarioToStr(_v76); _v96 = 2; _v104 = 2; *__rsp = r12d; r9d = r13d; r8 = __rbx; DebugPrint(0, _t145, _t145, __rdx, _t151, _t155); } } if(_v76 == 7 || _v76 == 9 || _v76 == 8 || _v76 == 10) { _LMbw_ReAlloc_Driven_By_Master_Connection(); } else { if(( *(_v72 + 2) & 255) != 0) { _LMbw_ReAlloc_Driven_By_Slave_Connection(); } else { _LMbw_ReAlloc_Driven_By_Master_Connection(); } } __rsp = &(__rsp[0x16]); _pop(__rbx); _pop(r12); _pop(r13); return; } LMpol_Adjust_Peer_Packet_Type() {// addr = 0x0045F20C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t26; // _t26 signed char _t28; // _t28 _unknown_ _t34; // _t34 _unknown_ _t42; // _t42 long long _t44; // _t44 _v16 = _t44; _v24 = __rsi; _v32 = _t26; _v28 = _t28; DebugPrint(0, _t34, __rcx, _t42, _t44, __rsi); *(_v24 + 14) = *(_v24 + 2) & 255; r8d = _v28 & 255; LMP_Send_Max_Slot(); return; } LMpol_Adjust_ACL_Packet_Types_On_Link() {// addr = 0x0045F293 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 intOrPtr _t254; // _t254 intOrPtr _t295; // _t295 intOrPtr _t312; // _t312 intOrPtr _t360; // _t360 _unknown_ _t368; // _t368 _unknown_ _t370; // _t370 long long _t376; // _t376 long long _t394; // _t394 _v32 = _t376; _v40 = _t394; _v44 = _t254; _v10 = 0; _t377 = _v32; _v9 = LMsco_Count_SCO_Link_Num(_v32); _t292 = _v40; *__rsp = _v9 & 255; r9d = *(_v40 + 650) & 0xff; r8d = *(_v40 + 649) & 0xff; _t172 = DebugPrint(0, _v40, _t368, _t370, _v32, _t394); if(_v44 != 4) { L4: if(_v44 == 2 || _v44 == 8) { LMqos_Update_Allowed_Packets( *(_v40 + 649) & 255); _t295 = _v40; _t172 = *(_t295 + 652) & 255; if(( *(_t295 + 652) & 255) <= 1) { goto L39; } else { LMpol_Adjust_Peer_Packet_Type(); return; } } else { if(_v44 == 16 || _v44 == 128) { DebugPrint(0, _t292, _t368, _t370, _t377, _t394); if(( *(_v40 + 649) & 255) > 1) { *(_v40 + 650) = 1; r8d = *(_v40 + 650) & 0xff; LMP_Send_Max_Slot_Req(); } if(( *(_v40 + 652) & 255) > 1) { *(_v40 + 652) = 1; LMpol_Adjust_Peer_Packet_Type(); _v10 = 1; } if(( *(_v40 + 32) & 255) != 0) { if(_v10 != 0) { _t394 = *((intOrPtr*)(_v40 + 432)); r8d = 0; LCCMD_MaxSlotRequest(); _t368 = _v40 + 652; _t370 = _v40 + 626; _t292 = _v32 + 190168; _t377 = _v32 + 190168; _t172 = EG_Event_Composer(0); } } goto L39; } else { if(_v44 == 32 || _v44 == 256) { DebugPrint(0, _t292, _t368, _t370, _t377, _t394); if(( *(_v40 + 649) & 255) > 4 || ( *(_v40 + 40) & 2) == 0 || ( *(_v32 + 191032) & 2) == 0) { if(( *(_v40 + 649) & 255) <= 2 && ( *(_v40 + 40) & 1) != 0 && ( *(_v32 + 191032) & 1) != 0) { *(_v40 + 650) = 3; r8d = *(_v40 + 650) & 0xff; LMP_Send_Max_Slot_Req(); } } else { *(_v40 + 650) = 5; r8d = *(_v40 + 650) & 0xff; LMP_Send_Max_Slot_Req(); } if(( *(_v40 + 652) & 255) > 4 || ( *(_v40 + 40) & 2) == 0 || ( *(_v32 + 191032) & 2) == 0) { if(( *(_v40 + 652) & 255) <= 2 && ( *(_v40 + 40) & 1) != 0 && ( *(_v32 + 191032) & 1) != 0) { *(_v40 + 652) = 3; LMpol_Adjust_Peer_Packet_Type(); _v10 = 1; } } else { *(_v40 + 652) = 5; LMpol_Adjust_Peer_Packet_Type(); _v10 = 1; } _t312 = _v40; _t172 = *(_t312 + 32) & 255; if(( *(_t312 + 32) & 255) == 0 || _v10 == 0) { goto L39; } else { r8d = 0; LCCMD_MaxSlotRequest(); EG_Event_Composer(0); return; } } else { L39: return; } } } } if(_v9 != 0) { goto L4; } else { LMqos_Update_Allowed_Packets(_t172); _t360 = _v40; _t172 = *(_t360 + 652) & 255; if(( *(_t360 + 652) & 255) <= 1) { goto L39; } else { *(_v40 + 14) = *(_v40 + 2) & 255; r8d = 1; LMP_Send_Max_Slot(); return; } } } LMpol_Adjust_ACL_Packet_Types_On_All_Links( long long __rax // r53 ) {// addr = 0x0045F815 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 intOrPtr _t19; // _t19 long long _t23; // _t23 __rax = __rax; _v32 = _t23; _v36 = _t19; _v12 = 0; while(_v12 <= 6) { LM_Find_Link_Table_Entry_By_Index(_v12 & 65535, _v32 + 60216); _v24 = __rax; if(_v24 != 0) { __rax = _v24; _t16 = *(__rax + 1) & 255; if(( *(__rax + 1) & 255) == 1) { __rax = _v32; LMpol_Adjust_ACL_Packet_Types_On_Link(); } } _v12 = _v12 + 1; } return; } ConvertLMSCOstateToStr( intOrPtr __edi // r4 ) {// addr = 0x0045F881 intOrPtr _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if(_v12 <= 10) { goto __rax; } return "Unknown state"; } LMpol_Update_Sync_Slot_Offset_Table( signed long long __rdx // r56 ) {// addr = 0x0045F8EF signed char _v41; // _cfa_ffffffd7 signed char _v42; // _cfa_ffffffd6 signed short _v44; // _cfa_ffffffd4 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t244; // _t244 signed long long _t254; // _t254 _unknown_ _t279; // _t279 _unknown_ _t317; // _t317 signed long long _t327; // _t327 __rdx = __rdx; _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 72; _v64 = __rdi; _v72 = __rsi; _v80 = __rdx; _v42 = 0; _v41 = 0; while(_v42 <= 2) { if(( *(((__rdx << 2) + __rdx << 5) + _v64) & 255) != 0) { if(_v72 == 0 || ( *(_v72 + 1) & 255) != 5 || *((intOrPtr*)(((__rdx << 2) + __rdx << 5) + _v64 + 72)) != _v72) { if(( *(((__rdx << 2) + __rdx << 5) + _v64 + 10) & 255) != 2) { if(( *(((__rdx << 2) + __rdx << 5) + _v64 + 14) & 255) != 0) { if(( *(((__rdx << 2) + __rdx << 5) + _v64 + 16) & 255) != 2) { if(( *(((__rdx << 2) + __rdx << 5) + _v64 + 16) & 255) != 1) { *(__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80) = 2; } else { *(__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80) = 4; } } else { *(__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80) = 6; } (__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80[1]) = 2; _t226 = __rdx; _t336 = __rdx + _t226 + __rdx + __rdx + _t226 + __rdx + _v80; *(__rdx + _t226 + __rdx + __rdx + _t226 + __rdx + _v80 + 4) = *(((__rdx << 2) + __rdx << 5) + _v64 + 13) & 0xff; r12d = (__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80[2]) & 0xffff; _t244 = __rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80; r13d = *(__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80) & 0xffff; _t254 = ((__rdx << 2) + __rdx << 5) + _v64; ConvertLMSCOstateToStr( *_t254 & 0xff); __rdx = _t254; _v88 = r12d; *__rsp = *(_t244 + 2) & 0xffff; r9d = r13d; r8 = __rdx; DebugPrint(0, _t254, _t336, __rdx, __rdi, __rsi); _v41 = _v41 + 1; } } else { if(( *(((__rdx << 2) + __rdx << 5) + _v64 + 14) & 255) != 0) { LMscoctr_GetSlotOccupancy( *(((__rdx << 2) + __rdx << 5) + _v64 + 22) & 0xff, __rdx); _t279 = ((__rdx << 2) + __rdx << 5) + _v64; LMscoctr_GetSlotOccupancy( *(_t279 + 23) & 0xff, __rdx); _v44 = ( *(((__rdx << 2) + __rdx << 5) + _v64 + 18) & 0xff) + __rbx + _t279; *(__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80) = *(((__rdx << 2) + __rdx << 5) + _v64 + 14) & 0xff; (__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80[1]) = _v44 & 65535; _t299 = __rdx; _t340 = __rdx + _t299 + __rdx + __rdx + _t299 + __rdx + _v80; *(__rdx + _t299 + __rdx + __rdx + _t299 + __rdx + _v80 + 4) = *(((__rdx << 2) + __rdx << 5) + _v64 + 13) & 0xff; r12d = (__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80[2]) & 0xffff; _t317 = __rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80; r13d = *(__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v80) & 0xffff; _t327 = ((__rdx << 2) + __rdx << 5) + _v64; ConvertLMSCOstateToStr( *_t327 & 0xff); __rdx = _t327; _v88 = r12d; *__rsp = *(_t317 + 2) & 0xffff; r9d = r13d; r8 = __rdx; DebugPrint(0, _t327, _t340, __rdx, __rdi, __rsi); _v41 = _v41 + 1; } } } } _v42 = _v42 + 1; } __rsp = &(__rsp[0x12]); _pop(__rbx); _pop(r12); _pop(r13); return _v41 & 255; } LMpol_Update_ACL_Slot_Offset_Table() {// addr = 0x0045FD2C char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed long long _t99; // _t99 signed long long _t102; // _t102 signed long long _t104; // _t104 long long _t142; // _t142 intOrPtr _t143; // _t143 _v32 = __rdi; _v40 = __rsi; _v48 = _t142; _v10 = 0; _v9 = 0; while(_v10 <= 6) { _t99 = _t99 * 808 + _v32; if(( *(_t99 + 1) & 255) == 0) { L12: _v10 = _v10 + 1; continue; } if(_v40 == 0) { L5: _t102 = _t99 * 808 + _v32; if(( *(_t102 + 488) & 255) == 2) { L7: _t104 = _t102 * 808 + _v32; if(( *(_t104 + 456) & 65535) != 0) { _v24 = _t104 * 808 + _v32 + 448; _v12 = ( *(_v24 + 18) & 65535) + ( *(_v24 + 14) & 65535); _v12 = _v12 << 1; _t143 = _v24; *(_t142 + _t142 + _t142 + _t142 + _t142 + _t142 + _v48) = *(_t143 + 8) & 65535; *(_t143 + _t143 + _t143 + _t143 + _t143 + _t143 + _v48 + 2) = _v12 & 65535; _t142 = _v24; *(_t143 + _t143 + _t143 + _t143 + _t143 + _t143 + _v48 + 4) = *(_t142 + 6) & 65535; _t99 = _t142 + _t142 + _t142 + _t142 + _t142 + _t142 + _v48; *__rsp = *(_t142 + _t142 + _t142 + _t142 + _t142 + _t142 + _v48 + 4) & 0xffff; r9d = *(_t142 + _t142 + _t142 + _t142 + _t142 + _t142 + _v48 + 2) & 0xffff; r8d = *_t99 & 0xffff; DebugPrint(0, _t99, __rcx, _t142, __rdi, __rsi); _v9 = _v9 + 1; } goto L12; } _t99 = _t102 * 808 + _v32; if(( *(_t99 + 488) & 255) != 1) { goto L12; } goto L7; } _t99 = _v40; if(( *(_t99 + 1) & 255) != 15) { goto L5; } _t99 = *(_t99 * 808 + _v32 + 432); if(_t99 == _v40) { goto L12; } goto L5; } return; } LMpol_Adjust_Dsniff() {// addr = 0x0045FF19 unsigned int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 short _v46; // _cfa_ffffffd2 short _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 char _v200; // _cfa_ffffff38 _unknown_ _v712; // _cfa_fffffd38 long long _v720; // _cfa_fffffd30 long long _v728; // _cfa_fffffd28 long long _v736; // _cfa_fffffd20 signed int _v740; // _cfa_fffffd1c signed int _v744; // _cfa_fffffd18 signed short _v748; // _cfa_fffffd14 _unknown_ __rbp; // r59 signed short _t113; // _t113 long long _t171; // _t171 long long _t175; // _t175 long long _t177; // _t177 _v720 = _t175; _v728 = _t177; _v736 = _t171; _v740 = _t113; _v744 = r8d; _v748 = r9d; _v9 = 0; _t178 = _v736; _t176 = _v720; LMpol_Find_Periodic_Transport(); _v60 = _v740 & 65535; _v72 = _v60; _v68 = _v744 & 65535; _v64 = 0; _v56 = _v748 & 65535; _v52 = _v68 + _v64; _v48 = 2; _v46 = 1; _t170 = ?_? ( &_v200); _t174 = &_v72; _v20 = LMslt_Get_Best_Offset(_v68 + _v64); *(_v728 + 452) = _v64; _t166 = *((intOrPtr*)( *((intOrPtr*)(_v736 + 104)) + 24)); r8d = *( *((intOrPtr*)( *((intOrPtr*)(_v736 + 104)) + 24)) + 4) & 0xff; DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v736 + 104)) + 24)), ?_? ( &_v200), &_v72, _v720, _v736); DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v736 + 104)) + 24)), ?_? ( &_v200), &_v72, _v720, _v736); DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v736 + 104)) + 24)), ?_? ( &_v200), &_v72, _v720, _v736); DebugPrint(0, _t166, &_v200, &_v72, _v720, _v736); DebugPrint(0, _t166, _t170, _t174, _t176, _t178); r8d = _v40; DebugPrint(0, _t166, _t170, _t174, _t176, _t178); _v24 = *(_v720 + 55580) + _v64 + _v64; _v9 = (_v24 & 134217728) >> 27; _v16 = LMdm_Calc_Offset_from_Instant(_v72 & 65535, _v24 & 268435455, _v9 & 255) % _v740 & 65535; r8d = *(_v720 + 55580); DebugPrint(0, _v720, _t170, _t174, _t176, _t178); return _v16; } LMpol_Adjust_Dsco() {// addr = 0x00460165 unsigned int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed short _v40; // _cfa_ffffffd8 signed char _v46; // _cfa_ffffffd2 short _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 char _v200; // _cfa_ffffff38 _unknown_ _v712; // _cfa_fffffd38 long long _v720; // _cfa_fffffd30 long long _v728; // _cfa_fffffd28 long long _v736; // _cfa_fffffd20 signed int _v740; // _cfa_fffffd1c signed int _v744; // _cfa_fffffd18 _unknown_ __rbp; // r59 signed short _t89; // _t89 long long _t130; // _t130 long long _t134; // _t134 long long _t136; // _t136 _v720 = _t134; _v728 = _t136; _v736 = _t130; _v740 = _t89; _v744 = r8d; _v9 = 0; _t137 = _v736; _t135 = _v720; LMpol_Find_Periodic_Transport(); _v60 = _v740 & 65535; _v72 = _v60; _v68 = _v744 & 65535; _v64 = 0; _v56 = 0; _v52 = 0; _v48 = 3; _v46 = 0; _t129 = ?_? ( &_v200); _t133 = &_v72; _v20 = LMslt_Get_Best_Offset(_v744 & 65535); _t125 = _v728; *(_v728 + 12) = _v64; DebugPrint(0, _v728, ?_? ( &_v200), &_v72, _v720, _v736); DebugPrint(0, _v728, ?_? ( &_v200), &_v72, _v720, _v736); DebugPrint(0, _t125, ?_? ( &_v200), &_v72, _v720, _v736); r8d = _v40; DebugPrint(0, _t125, &_v200, &_v72, _v720, _v736); _v24 = *(_v720 + 55580) + _v64 + _v64; _v9 = (_v24 & 134217728) >> 27; _v16 = LMdm_Calc_Offset_from_Instant(_v72 & 65535, _v24 & 268435455, _v9 & 255) % _v740 & 65535; r8d = *(_v720 + 55580); DebugPrint(0, _v720, _t129, _t133, _t135, _t137); return _v16; } LMpol_Find_Periodic_Transport() {// addr = 0x00460334 signed long long _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed short _v28; // _cfa_ffffffe4 signed short _v30; // _cfa_ffffffe2 signed short _v32; // _cfa_ffffffe0 signed short _v34; // _cfa_ffffffde signed long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 signed long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 signed long long _v104; // _cfa_ffffff98 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t334; // _t334 signed short _t351; // _t351 signed long long _t498; // _t498 _unknown_ _t514; // _t514 signed long long _t571; // _t571 signed long long _t573; // _t573 _unknown_ _t587; // _t587 signed long long _t651; // _t651 signed long long _t656; // _t656 _unknown_ _t691; // _t691 _unknown_ _t763; // _t763 signed long long _t846; // _t846 signed long long _t857; // _t857 signed long long _t859; // _t859 signed long long _t860; // _t860 signed long long _t861; // _t861 signed long long _t862; // _t862 signed long long _t864; // _t864 signed long long _t865; // _t865 signed long long _t866; // _t866 signed long long _t870; // _t870 long long _t872; // _t872 _v80 = _t872; _v88 = _t874; _v96 = _t857; _v104 = _t846; _v72 = _v80 + 66296; _t498 = _v80 + 60224; _v64 = _t498; _v26 = 0; _v25 = 0; while(_v26 <= 2) { _t498 = ((_t857 << 2) + _t857 << 5) + _v72; if(( *_t498 & 255) == 0) { L20: _v26 = _v26 + 1; continue; } if(_v88 == 0 || ( *(_v88 + 1) & 255) != 5) { L5: if(( *(((_t857 << 2) + _t857 << 5) + _v72 + 10) & 255) != 2) { _t498 = ((_t857 << 2) + _t857 << 5) + _v72; _t318 = *(_t498 + 10) & 255; if(( *(_t498 + 10) & 255) == 0) { if(( *(((_t857 << 2) + _t857 << 5) + _v72 + 14) & 255) != 0) { if(( *(((_t857 << 2) + _t857 << 5) + _v72 + 16) & 255) == 2) { _t351 = 6; } else { if(( *(((_t857 << 2) + _t857 << 5) + _v72 + 16) & 255) != 1) { _t351 = 2; } else { _t351 = 4; } } _v32 = _t351; _t691 = ((_t857 << 3) + _t857 << 2) + _v96; *(_t691 + 12) = _v32 & 65535; *(((_t857 << 3) + _t857 << 2) + _v96) = *(_t691 + 12); *(((_t857 << 3) + _t857 << 2) + _v96 + 4) = 2; _t846 = ((_t857 << 3) + _t857 << 2) + _v96; *(_t846 + 8) = *(((_t857 << 2) + _t857 << 5) + _v72 + 12) & 0xff; *(((_t857 << 3) + _t857 << 2) + _v96 + 16) = 0; *(((_t857 << 3) + _t857 << 2) + _v96 + 20) = 0; *((short*)(((_t857 << 3) + _t857 << 2) + _v96 + 24)) = 3; *(((_t857 << 3) + _t857 << 2) + _v96 + 26) = 0; _t857 = ((_t857 << 3) + _t857 << 2) + _v96; *_v104 = _t857; _t498 = ((_t857 << 3) + _t857 << 2) + _v96; *__rsp = *(((_t857 << 3) + _t857 << 2) + _v96 + 8); r9d = *(((_t857 << 3) + _t857 << 2) + _v96 + 4); r8d = *_t498; _t318 = DebugPrint(0, _t498, _t846, _t857, _t872, _t874); _v25 = _v25 + 1; _v104 = _v104 + 8; } } } else { _t498 = ((_t857 << 2) + _t857 << 5) + _v72; if(( *(_t498 + 14) & 255) != 0) { LMscoctr_GetSlotOccupancy( *(((_t857 << 2) + _t857 << 5) + _v72 + 22) & 0xff, _t857); _t763 = ((_t857 << 2) + _t857 << 5) + _v72; LMscoctr_GetSlotOccupancy( *(_t763 + 23) & 0xff, _t857); _v34 = ( *(((_t857 << 2) + _t857 << 5) + _v72 + 18) & 0xff) + __rbx + _t763; _t874 = ((_t857 << 3) + _t857 << 2) + _v96; _t870 = ((_t857 << 3) + _t857 << 2) + _v96; *(_t870 + 12) = *(((_t846 << 2) + _t846 << 5) + _v72 + 14) & 0xff; *(((_t857 << 3) + _t857 << 2) + _v96) = *(_t870 + 12); *(((_t870 << 3) + _t870 << 2) + _v96 + 4) = _v34 & 65535; _t846 = ((_t870 << 3) + _t870 << 2) + _v96; *(_t846 + 8) = *(((_t870 << 2) + _t870 << 5) + _v72 + 12) & 0xff; *(((_t870 << 3) + _t870 << 2) + _v96 + 16) = 0; *(((_t870 << 3) + _t870 << 2) + _v96 + 20) = 0; *((short*)(((_t870 << 3) + _t870 << 2) + _v96 + 24)) = 3; *(((_t870 << 3) + _t870 << 2) + _v96 + 26) = 0; _t857 = ((_t870 << 3) + _t870 << 2) + _v96; *_v104 = _t857; _t498 = ((_t857 << 3) + _t857 << 2) + _v96; _v128 = *(((_t857 << 2) + _t857 << 5) + _v72) & 0xff; *__rsp = *(((_t857 << 3) + _t857 << 2) + _v96 + 8); r9d = *(((_t857 << 3) + _t857 << 2) + _v96 + 4); r8d = *_t498; DebugPrint(0, _t498, _t846, _t857, _t872, _t874); _v25 = _v25 + 1; _v104 = _v104 + 8; } } goto L20; } else { _t498 = *(((_t857 << 2) + _t857 << 5) + _v72 + 72); if(_t498 == _v88) { goto L20; } goto L5; } } _v26 = 0; while(_v26 <= 6) { _t498 = _t498 * 808 + _v64; _t318 = *(_t498 + 1) & 255; if(( *(_t498 + 1) & 255) == 0) { L37: _v26 = _v26 + 1; continue; } if(_v88 == 0) { L27: _t571 = _t498 * 808 + _v64; if(( *(_t571 + 488) & 255) == 2) { L29: _t573 = _t571 * 808 + _v64; if(( *(_t573 + 456) & 65535) != 0) { _v56 = _t573 * 808 + _v64 + 448; if(( *(_v56 + 18) & 65535) == 0) { _t334 = 0; } else { _t334 = 2; } _v30 = _t334; _v28 = ( *(_v56 + 14) & 65535) + ( *(_v56 + 14) & 65535); _t587 = ((_t857 << 3) + _t857 << 2) + _v96; _t865 = _v56; *(_t587 + 12) = *(_t865 + 8) & 0xffff; *(((_t857 << 3) + _t857 << 2) + _v96) = *(_t587 + 12); *(((_t865 << 3) + _t865 << 2) + _v96 + 4) = _v28 & 65535; _t866 = _v56; *(((_t865 << 3) + _t865 << 2) + _v96 + 8) = *(_t866 + 4) & 0xffff; *(((_t866 << 3) + _t866 << 2) + _v96 + 16) = _v30 & 65535; *((intOrPtr*)(((_t866 << 3) + _t866 << 2) + _v96 + 20)) = *((intOrPtr*)(((_t866 << 3) + _t866 << 2) + _v96 + 4)) + *((intOrPtr*)(((_t866 << 3) + _t866 << 2) + _v96 + 8)); *(((_t866 << 3) + _t866 << 2) + _v96 + 24) = 2; *((short*)(((_t866 << 3) + _t866 << 2) + _v96 + 26)) = 1; _t857 = ((_t866 << 3) + _t866 << 2) + _v96; *_v104 = _t857; _t651 = ((_t857 << 3) + _t857 << 2) + _v96; r8d = *_t651; _t656 = *( *((intOrPtr*)( *((intOrPtr*)(_t651 * 808 + _v64 + 432)) + 104)) + 24); _t498 = *( *((intOrPtr*)( *((intOrPtr*)(_t656 * 808 + _v64 + 432)) + 104)) + 24); _v120 = *(((_t857 << 3) + _t857 << 2) + _v96 + 8); _v128 = *(((_t857 << 3) + _t857 << 2) + _v96 + 16); *__rsp = *(((_t857 << 3) + _t857 << 2) + _v96 + 4); r9d = r8d; r8d = *(_t656 + 4) & 0xff; _t318 = DebugPrint(0, _t498, ((_t866 << 3) + _t866 << 2) + _v96, _t857, _t872, _t874); _v25 = _v25 + 1; _v104 = _v104 + 8; } goto L37; } _t498 = _t571 * 808 + _v64; _t318 = *(_t498 + 488) & 255; if(( *(_t498 + 488) & 255) != 1) { goto L37; } goto L29; } _t498 = _v88; if(( *(_t498 + 1) & 255) != 15) { goto L27; } _t318 = _v26 & 255; _t498 = *(_t498 * 808 + _v64 + 432); if(_t498 == _v88) { goto L37; } goto L27; } _v26 = 0; while(_v26 <= 1) { _t859 = _v80 + 30560; _t873 = _t859; _t318 = LLINK_SearchUsedLinkByLLIndx((_v26 & 255) + 24 & 255, _t498, _t859); _v48 = _t498; if(_v88 == 0) { L42: if(_v48 != 0) { _t498 = _v48; _t318 = *_t498 & 255; if(( *_t498 & 255) != 0) { if(( *(_v48 + 144) & 255) != 0) { _t514 = ((_t859 << 3) + _t859 << 2) + _v96; _t860 = _v48; *(_t514 + 12) = *(_t860 + 146) & 0xffff; *(((_t859 << 3) + _t859 << 2) + _v96) = *(_t514 + 12); _t861 = _v48; *(((_t860 << 3) + _t860 << 2) + _v96 + 4) = *(_t861 + 148) & 0xffff; _t862 = _v48; *(((_t861 << 3) + _t861 << 2) + _v96 + 8) = *(_t862 + 150) & 0xffff; *(((_t862 << 3) + _t862 << 2) + _v96 + 16) = 0; *(((_t862 << 3) + _t862 << 2) + _v96 + 20) = 0; *(((_t862 << 3) + _t862 << 2) + _v96 + 24) = 4; *(((_t862 << 3) + _t862 << 2) + _v96 + 26) = 0; _t864 = ((_t862 << 3) + _t862 << 2) + _v96; *_v104 = _t864; _t498 = *( *((intOrPtr*)(_v48 + 104)) + 24); _v128 = (((_t864 << 3) + _t864 << 2) + _v96[2]); *__rsp = (((_t864 << 3) + _t864 << 2) + _v96[1]); r9d = *(((_t864 << 3) + _t864 << 2) + _v96); r8d = *( *( *((intOrPtr*)(_v48 + 104)) + 24) + 4) & 0xff; _t318 = DebugPrint(0, _t498, ((_t859 << 3) + _t859 << 2) + _v96, _t864, _t873, _t874); _v25 = _v25 + 1; _v104 = _v104 + 8; } } } L48: _v26 = _v26 + 1; continue; } _t498 = _v88; if(_t498 == _v48) { goto L48; } goto L42; } *_v104 = 0; return; } LMpol_Find_Periodic_Transport_2( _unknown_ __rax, // r53 signed long long __rdx // r56 ) {// addr = 0x00460E3F signed char _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed short _v28; // _cfa_ffffffe4 signed short _v30; // _cfa_ffffffe2 signed short _v32; // _cfa_ffffffe0 signed short _v34; // _cfa_ffffffde signed long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 signed long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 signed long long _v104; // _cfa_ffffff98 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t263; // _t263 signed short _t273; // _t273 signed long long _t368; // _t368 _unknown_ _t384; // _t384 signed long long _t420; // _t420 signed long long _t422; // _t422 _unknown_ _t436; // _t436 _unknown_ _t506; // _t506 _unknown_ _t563; // _t563 signed long long _t626; // _t626 signed long long _t637; // _t637 signed long long _t639; // _t639 signed long long _t640; // _t640 signed long long _t641; // _t641 signed long long _t642; // _t642 signed long long _t645; // _t645 signed long long _t646; // _t646 signed long long _t650; // _t650 long long _t652; // _t652 signed long long _t654; // _t654 _t637 = __rdx; _v80 = _t652; _v88 = _t654; _v96 = __rdx; _v104 = _t626; _v72 = _v80 + 66296; _t368 = _v80 + 60224; _v64 = _t368; _v26 = 0; _v25 = 0; while(_v26 <= 2) { _t368 = ((_t637 << 2) + _t637 << 5) + _v72; if(( *_t368 & 255) == 0) { L19: _v26 = _v26 + 1; continue; } if(_v88 == 0 || ( *(_v88 + 1) & 255) != 5) { L5: if(( *(((_t637 << 2) + _t637 << 5) + _v72 + 10) & 255) != 2) { if(( *(((_t637 << 2) + _t637 << 5) + _v72 + 14) & 255) != 0) { if(( *(((_t637 << 2) + _t637 << 5) + _v72 + 16) & 255) == 2) { _t273 = 6; } else { if(( *(((_t637 << 2) + _t637 << 5) + _v72 + 16) & 255) != 1) { _t273 = 2; } else { _t273 = 4; } } _v32 = _t273; _t506 = ((_t637 << 3) + _t637 << 2) + _v96; *(_t506 + 12) = _v32 & 65535; *(((_t637 << 3) + _t637 << 2) + _v96) = *(_t506 + 12); *(((_t637 << 3) + _t637 << 2) + _v96 + 4) = 2; _t626 = ((_t637 << 3) + _t637 << 2) + _v96; *(_t626 + 8) = *(((_t637 << 2) + _t637 << 5) + _v72 + 12) & 0xff; *(((_t637 << 3) + _t637 << 2) + _v96 + 16) = 0; *(((_t637 << 3) + _t637 << 2) + _v96 + 20) = 0; *((short*)(((_t637 << 3) + _t637 << 2) + _v96 + 24)) = 3; *(((_t637 << 3) + _t637 << 2) + _v96 + 26) = 0; _t637 = ((_t637 << 3) + _t637 << 2) + _v96; _t368 = _v104; *_t368 = _t637; _v25 = _v25 + 1; _v104 = _v104 + 8; } } else { _t368 = ((_t637 << 2) + _t637 << 5) + _v72; if(( *(_t368 + 14) & 255) != 0) { LMscoctr_GetSlotOccupancy( *(((_t637 << 2) + _t637 << 5) + _v72 + 22) & 0xff, _t637); _t563 = ((_t637 << 2) + _t637 << 5) + _v72; LMscoctr_GetSlotOccupancy( *(_t563 + 23) & 0xff, _t637); _v34 = ( *(((_t637 << 2) + _t637 << 5) + _v72 + 18) & 0xff) + __rbx + _t563; _t650 = ((_t637 << 3) + _t637 << 2) + _v96; *(_t650 + 12) = *(((_t626 << 2) + _t626 << 5) + _v72 + 14) & 0xff; *(((_t637 << 3) + _t637 << 2) + _v96) = *(_t650 + 12); *(((_t650 << 3) + _t650 << 2) + _v96 + 4) = _v34 & 65535; _t626 = ((_t650 << 3) + _t650 << 2) + _v96; *(_t626 + 8) = *(((_t650 << 2) + _t650 << 5) + _v72 + 12) & 0xff; *(((_t650 << 3) + _t650 << 2) + _v96 + 16) = 0; *(((_t650 << 3) + _t650 << 2) + _v96 + 20) = 0; *((short*)(((_t650 << 3) + _t650 << 2) + _v96 + 24)) = 3; *(((_t650 << 3) + _t650 << 2) + _v96 + 26) = 0; _t637 = ((_t650 << 3) + _t650 << 2) + _v96; _t368 = _v104; *_t368 = _t637; _v25 = _v25 + 1; _v104 = _v104 + 8; } } goto L19; } else { _t368 = *(((_t637 << 2) + _t637 << 5) + _v72 + 72); if(_t368 == _v88) { goto L19; } goto L5; } } _v26 = 0; while(_v26 <= 6) { _t368 = _t368 * 808 + _v64; if(( *(_t368 + 1) & 255) == 0) { L36: _v26 = _v26 + 1; continue; } if(_v88 == 0) { L26: _t420 = _t368 * 808 + _v64; if(( *(_t420 + 488) & 255) == 2) { L28: _t422 = _t420 * 808 + _v64; if(( *(_t422 + 456) & 65535) != 0) { _v56 = _t422 * 808 + _v64 + 448; if(( *(_v56 + 18) & 65535) == 0) { _t263 = 0; } else { _t263 = 2; } _v30 = _t263; _v28 = ( *(_v56 + 14) & 65535) + ( *(_v56 + 14) & 65535); _t436 = ((_t637 << 3) + _t637 << 2) + _v96; _t645 = _v56; *(_t436 + 12) = *(_t645 + 8) & 0xffff; *(((_t637 << 3) + _t637 << 2) + _v96) = *(_t436 + 12); *(((_t645 << 3) + _t645 << 2) + _v96 + 4) = _v28 & 65535; _t646 = _v56; *(((_t645 << 3) + _t645 << 2) + _v96 + 8) = *(_t646 + 4) & 0xffff; *(((_t646 << 3) + _t646 << 2) + _v96 + 16) = _v30 & 65535; *((intOrPtr*)(((_t646 << 3) + _t646 << 2) + _v96 + 20)) = *((intOrPtr*)(((_t646 << 3) + _t646 << 2) + _v96 + 4)) + *((intOrPtr*)(((_t646 << 3) + _t646 << 2) + _v96 + 8)); *(((_t646 << 3) + _t646 << 2) + _v96 + 24) = 2; *((short*)(((_t646 << 3) + _t646 << 2) + _v96 + 26)) = 1; _t637 = ((_t646 << 3) + _t646 << 2) + _v96; _t368 = _v104; *_t368 = _t637; _v25 = _v25 + 1; _v104 = _v104 + 8; } goto L36; } _t368 = _t420 * 808 + _v64; if(( *(_t368 + 488) & 255) != 1) { goto L36; } goto L28; } _t368 = _v88; if(( *(_t368 + 1) & 255) != 15) { goto L26; } _t368 = *(_t368 * 808 + _v64 + 432); if(_t368 == _v88) { goto L36; } goto L26; } _v26 = 0; while(_v26 <= 1) { _t639 = _v80 + 30560; LLINK_SearchUsedLinkByLLIndx((_v26 & 255) + 24 & 255, _t368, _t639); _v48 = _t368; if(_v88 == 0) { L41: if(_v48 != 0) { _t368 = _v48; _t252 = *_t368 & 255; if(( *_t368 & 255) != 0) { if(( *(_v48 + 144) & 255) != 0) { _t384 = ((_t639 << 3) + _t639 << 2) + _v96; _t640 = _v48; *(_t384 + 12) = *(_t640 + 146) & 0xffff; _t252 = *(_t384 + 12); *(((_t639 << 3) + _t639 << 2) + _v96) = *(_t384 + 12); _t641 = _v48; *(((_t640 << 3) + _t640 << 2) + _v96 + 4) = *(_t641 + 148) & 0xffff; _t642 = _v48; *(((_t641 << 3) + _t641 << 2) + _v96 + 8) = *(_t642 + 150) & 0xffff; *(((_t642 << 3) + _t642 << 2) + _v96 + 16) = 0; *(((_t642 << 3) + _t642 << 2) + _v96 + 20) = 0; *(((_t642 << 3) + _t642 << 2) + _v96 + 24) = 4; *(((_t642 << 3) + _t642 << 2) + _v96 + 26) = 0; _t368 = _v104; *_t368 = ((_t642 << 3) + _t642 << 2) + _v96; _v25 = _v25 + 1; _v104 = _v104 + 8; } } } L47: _v26 = _v26 + 1; continue; } _t368 = _v88; if(_t368 == _v48) { goto L47; } goto L41; } *_v104 = 0; return; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004616B4 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x004616E3 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00461739 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00461778 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004617AA signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LMpolicy_Send_HC_Mode_Change_Event() {// addr = 0x004618EB char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 char _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 short _t43; // _t43 long long _t61; // _t61 long long _t65; // _t65 _v32 = _t61; _v40 = _t65; _v44 = _t43; _v48 = __ecx; if(( *(_v40 + 4) & 1) == 0) { if(( *(_v40 + 4) & 2) == 0) { if(( *(_v40 + 4) & 4) == 0) { if(( *(_v40 + 4) & 8) != 0) { _v9 = 3; } } else { _v9 = 2; LMbw_Adjust_Link_Priority(); } } else { _v9 = 1; } } else { _v9 = 0; LMbw_Adjust_Link_Priority(); } r9 = &_v44; r8 = &_v9; EG_Event_Composer(0); return; } LMpolicy_Initialise() {// addr = 0x004619D1 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t16; // _t16 _v16 = _t16; LCEVHDR_RegisterEventHandler(7, __rdx, _v16); LCEVHDR_RegisterEventHandler(8, __rdx, _v16); LCEVHDR_RegisterEventHandler(13, __rdx, _v16); LMpolicy_Park_Initialize(); return; } LMpolicy_LMP_Accepted( signed char* __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00461A2D signed int _v9; // _cfa_fffffff7 long long _v48; // _cfa_ffffffd0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed char* _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v80 = __rdi; _v88 = __rsi; _v96 = __rdx; _v9 = *_v96 & 255; _v48 = _v88 + 516; if((_v9 & 255) - 19 <= 11) { goto __rax; } return 0; } LMpolicy_LMP_Not_Accepted() {// addr = 0x00461E12 char _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed short _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t74; // _t74 intOrPtr _t94; // _t94 signed short _t99; // _t99 long long _t158; // _t158 long long _t170; // _t170 _v32 = _t158; _v40 = _t170; _v48 = _t94; _v44 = _t99; _v16 = 0; _t74 = _v44 & 65535; if(_t74 == 24) { if(( *(_v40 + 2) & 255) == 0 || _v48 != 35) { if(( *(_v40 + 4) & 4) != 0) { LMpolicy_LM_Return_From_Sniff(); } } L32: return 0; } if(_t74 > 24) { if(_t74 == 30) { goto L32; } if(_t74 == 32533) { if(_v48 != 35) { _v10 = 0; *((char*)(_v40 + 497)) = 0; r8 = _v40 + 470; r10 = _v40 + 468; _v64 = r8; *__rsp = _v40 + 472; r9 = &_v10; r8 = r10; EG_Event_Composer(0); } goto L32; } if(_t74 == 25) { LMch_Enable_L2CAP_Traffic(); if(( *(_v40 + 2) & 255) == 0) { LMpolicy_Free_Ar_Addr(); LMpolicy_Free_Pm_Addr(); } LMpolicy_Park_Complete(); goto L32; } L25: _v16 = 31; goto L32; } if(_t74 == 21) { LMch_Enable_L2CAP_Traffic(); if(_v48 != 35) { *((char*)(_v40 + 512)) = 0; *((short*)(_v40 + 504)) = 65534; *((short*)(_v40 + 506)) = 20; LMpolicy_Send_HC_Mode_Change_Event(); } goto L32; } if(_t74 == 23) { if(_v48 != 35) { LMpolicy_Send_HC_Mode_Change_Event(); *((char*)(_v40 + 489)) = 0; LMpol_Adjust_ACL_Packet_Types_On_Link(); } goto L32; } if(_t74 == 19) { if( *((intOrPtr*)(_v40 + 72)) != 0) { r8 = *((intOrPtr*)(_v40 + 72)); r8(); } goto L32; } else { goto L25; } } LMpolicy_Write_Link_Policy_Settings_Command( _unknown_ __rax // r53 ) {// addr = 0x004620DB long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed short _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t19; // _t19 signed short _t23; // _t23 long long _t26; // _t26 long long _t30; // _t30 long long _t32; // _t32 _v32 = _t32; _v48 = _t30; _v36 = _t23; _v40 = _t19; _t26 = _v32; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t26, _t26); _v16 = _t26; if(_v16 == 0) { return 2; } __rsi = _v16 + 626; write_end_du(2, _v48, _v16 + 626); *(_v16 + 8) = _v40 & 65535; return 0; } LMpolicy_Read_Link_Policy_Settings_Command( _unknown_ __rax // r53 ) {// addr = 0x0046214B long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t23; // _t23 long long _t26; // _t26 long long _t29; // _t29 long long _t32; // _t32 long long _t34; // _t34 _v32 = _t34; _v48 = _t32; _v36 = _t23; _t26 = _v32; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t26, _t26); _v16 = _t26; if(_v16 == 0) { return 2; } _t29 = _v48; __ecx = 2; write_du(2, _v16 + 626, _t29, _v48 + 24); _v48 = _t29; write_end_du(2, _v48, _v16 + 8); return 0; } LMpolicy_LM_Return_From_Hold() {// addr = 0x004621D0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t16; // _t16 long long _t19; // _t19 _v16 = _t16; _v24 = _t19; *((short*)(_v24 + 4)) = 1; LMch_Enable_L2CAP_Traffic(); LMpolicy_Send_HC_Mode_Change_Event(); return; } LMpolicy_LM_Hold_Mode() {// addr = 0x00462220 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t99; // _t99 signed int _t104; // _t104 long long _t140; // _t140 long long _t144; // _t144 _v32 = _t140; _v40 = _t144; _v44 = _t104; _v48 = _t99; _v24 = _v40 + 500; if(( *(_v40 + 40) & 0x40) != 0) { if(( *(_v40 + 4) & 65535) == 1) { if(( *(_v40 + 10) & 65535) != 7) { if(( *(_v40 + 8) & 2) != 0) { if(( *(_v40 + 6) & 65535) == 0) { L15: *(_v24 + 4) = _v44 & 65535; *(_v24 + 6) = _v48 & 65535; *(_v40 + 14) = *(_v40 + 2) & 255; _v10 = *(_v24 + 8) & 65535; if((_v44 & 65535) > _v10) { *(_v24 + 10) = _v44 & 65535; _Send_LMP_Hold(); } else { if((_v44 & 65535) > _v10) { *(_v24 + 10) = _v10 & 65535; } else { *(_v24 + 10) = _v44 & 65535; } _Send_LMP_Hold(); if(( *(_v40 + 2) & 255) == 0) { LMpolicy_Enter_Hold_Mode( *_v24); } } return 0; } _v12 = ( *(_v40 + 6) & 65535) - (( *(_v40 + 6) & 65535) >> 10); if((_v12 & 65535) >= _v44) { goto L15; } if(( *(_v40 + 2) & 255) != 1) { if((_v12 & 65535) >= _v48) { _v44 = _v12 & 65535; goto L15; } return 18; } return 18; } return 12; } return 12; } return 12; } return 26; } LMpolicy_LM_Hold_Mode_Command() {// addr = 0x004623F3 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed short _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed short _t58; // _t58 signed int _t60; // _t60 signed short _t62; // _t62 long long _t64; // _t64 long long _t76; // _t76 _v32 = _t76; _v36 = _t62; _v40 = _t60; _v44 = _t58; _v16 = 0; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t64, _v32 + 60216); _v16 = _t64; if(_v16 != 0) { if(( *(_v16 + 40) & 0x40) != 0) { if(( *(_v16 + 4) & 65535) == 1) { if(( *(_v16 + 10) & 65535) != 7) { if(( *(_v16 + 8) & 2) != 0) { if(( *(_v16 + 6) & 65535) == 0 || ( *(_v16 + 6) & 65535) >= _v40) { L17: LMpolicy_LM_Hold_Mode(); return; } else { if(( *(_v16 + 2) & 255) != 1) { if(( *(_v16 + 6) & 65535) >= _v44) { _v40 = _v44 & 65535; goto L17; } return; } return; } } return; } return; } return; } return; } return; } LMpolicy_LMP_Hold() {// addr = 0x0046250A signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 unsigned int _t96; // _t96 long long _t184; // _t184 long long _t188; // _t188 long long _t199; // _t199 _v32 = _t188; _v40 = _t199; _v48 = _t184; _v10 = casting_uint16(_v48); _v16 = casting_uint32(_v48 + 2); _v24 = _v40 + 500; if(((_v24[2]) & 65535) >= _v10) { if(_v10 > 19) { if(((_v24[3]) & 255) == 0) { *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; } if(( *(_v40 + 2) & 255) != 1) { if(( *(_v40 + 2) & 255) != 0) { goto L18; } _t96 = LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 432))); if(( *(_v40 + 56) & 0xffff) + ( *(_v40 + 56) & 0xffff) + _t124 + ( *(_v40 + 56) & 0xffff) + ( *(_v40 + 56) & 0xffff) + _t124 + (_t96 >> 1) <= _v16) { if(( *(_v40 + 6) & 65535) == 0 || ( *(_v40 + 6) & 65535) > _v10) { (_v24[2]) = _v10 & 65535; } else { (_v24[2]) = _v40 - 100; } *_v24 = _v16; r8d = *_v24; r9d = r8d; r8d = (_v24[2]) & 0xffff; LMP_Send_Hold(); (_v24[3]) = &(_v24[0]); LMpolicy_Enter_Hold_Mode(_v16); goto L18; } (_v24[2]) = _v10 & 65535; _Send_LMP_Hold(); LMpolicy_Enter_Hold_Mode( *_v24); return 0; } else { if(LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 432))) >> 1 <= _v16) { *_v24 = _v16; (_v24[2]) = _v10 & 65535; LMpolicy_Enter_Hold_Mode(_v16); L18: return 0; } (_v24[3]) = 0; return 0; } } return 26; } return 30; } LMpolicy_LMP_Hold_Req( _unknown_ __eax // r0 ) {// addr = 0x00462768 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec _unknown_ _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t254; // _t254 long long _t257; // _t257 long long _t267; // _t267 _v48 = _t257; _v56 = _t267; _v64 = _t254; _v20 = 0; _v10 = casting_uint16(_v64); _v16 = casting_uint32(_v64 + 2); _v32 = _v56 + 500; if(( *(_v56 + 13) & 255) == ( *(_v56 + 2) & 255)) { L3: if(( *(_v56 + 6) & 65535) == 0) { L6: if((_v10 & 1) == 0) { if(LLINK_ReadPicoClock(_v48, *((intOrPtr*)(_v56 + 432))) >> 1 > _v16) { _v20 = 40; } } else { _v20 = 30; } L10: if(_v20 == 0) { if(( *(_v32 + 12) & 255) != 0) { if(( *(_v56 + 14) & 255) == ( *(_v56 + 13) & 255)) { _v20 = 0; } else { _v20 = 35; } } else { *(_v56 + 14) = *(_v56 + 2) & 255 ^ 1; _v20 = 0; } } else { *(_v32 + 6) = 20; *(_v32 + 4) = 65534; *(_v56 + 14) = *(_v56 + 13) & 255; } if(_v20 != 0 || ( *(_v32 + 4) & 65535) < _v10 || ( *(_v32 + 6) & 65535) > _v10) { if(_v20 == 0) { if(( *(_v32 + 12) & 255) > 4) { *(_v32 + 12) = 0; *(_v32 + 6) = 20; *(_v32 + 4) = 65534; _v20 = 32; } else { if(( *(_v32 + 4) & 65535) >= _v10) { if(( *(_v32 + 6) & 65535) > _v10) { _Send_LMP_Hold(); *(_v32 + 10) = *(_v32 + 6) & 65535; } } else { _Send_LMP_Hold(); *(_v32 + 10) = *(_v32 + 4) & 65535; } *(_v32 + 12) = _v32 + 1; _v20 = 0; } } } else { *(_v32 + 12) = _v32 + 1; LMch_Disable_L2CAP_Traffic(); *(_v32 + 10) = _v10 & 65535; *_v32 = _v16; r8d = 21; LMP_Send_Accepted(); LMpolicy_Enter_Hold_Mode( *_v32); *(_v32 + 12) = 0; } if(_v20 != 0 && _v20 != 35 && ( *(_v56 + 14) & 255) == ( *(_v56 + 2) & 255)) { LMpolicy_Send_HC_Mode_Change_Event(); } return _v20; } if(( *(_v56 + 6) & 65535) >= _v10) { goto L6; } else { _v20 = 30; goto L10; } } if(( *(_v56 + 8) & 2) != 0) { goto L3; } else { _v20 = 36; goto L10; } } _Send_LMP_Hold() {// addr = 0x00462AAC intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec unsigned int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 char _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 char _t91; // _t91 signed short _t95; // _t95 intOrPtr _t117; // _t117 long long _t136; // _t136 long long _t143; // _t143 _v64 = _t136; _v72 = _t143; _v76 = _t95; _v80 = _t91; _v48 = _v72 + 500; _v20 = LLINK_ReadPicoClock(_v64, *((intOrPtr*)(_v72 + 432))); _v16 = _v20; _v12 = 4; _v40 = _v12 + _v16; _v28 = _v40 & 0xfc; _v24 = _v28 >> 1; (_v48[3]) = &(_v48[0]); LMch_Disable_L2CAP_Traffic(); _t117 = _v72; if((( *(_t117 + 56) & 0xffff) << 2) + ( *(_t117 + 56) & 0xffff) + (( *(_t117 + 56) & 0xffff) << 2) + ( *(_t117 + 56) & 0xffff) <= 100) { *_v48 = _t117 + 100; } else { *_v48 = (( *(_v72 + 56) & 0xffff) << 2) + ( *(_v72 + 56) & 0xffff) + (( *(_v72 + 56) & 0xffff) << 2) + ( *(_v72 + 56) & 0xffff) + _v24; } if(_v80 != 21) { r8d = *_v48; r9d = r8d; r8d = _v76 & 65535; LMP_Send_Hold(); return; } else { r8d = *_v48; r9d = r8d; r8d = _v76 & 65535; LMP_Send_Hold_Req(); return; } } LMpolicy_Enter_Hold_Mode( intOrPtr __edx // r3 ) {// addr = 0x00462C38 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 long long _t51; // _t51 long long _t53; // _t53 _v32 = _t51; _v40 = _t53; _v44 = __edx; _v16 = _v40 + 500; LCCMD_HoldRequest(); if(( *(_v16 + 10) & 65535) > ( *(_v16 + 8) & 65535)) { *(_v16 + 8) = *(_v16 + 10) & 65535; } *((short*)(_v40 + 4)) = 2; *((char*)(_v16 + 12)) = 0; *((short*)(_v16 + 4)) = 65534; *((short*)(_v16 + 6)) = 20; return; } LMpolicy_LC_Mode_Change() {// addr = 0x00462CD2 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t25; // _t25 intOrPtr _t39; // _t39 long long _t40; // _t40 long long _t48; // _t48 long long _t50; // _t50 intOrPtr _t51; // _t51 long long _t53; // _t53 long long _t54; // _t54 _v32 = _t50; _v40 = _t53; _v48 = _t48; _v16 = 0; _t39 = _v32; _t49 = _t39 + 60216; _t40 = _v40; _t54 = _t40; _t51 = _t39 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _t40; if(_v16 == 0) { return; } _t25 = *(_v16 + 4) & 0xffff; if(_t25 != 4) { if(_t25 == 8) { DebugPrint(0, _v48, __rcx, _t49, _t51, _t54); } else { if(_t25 == 2) { if(( *(_v48 + 1) & 255) != 2) { if(( *(_v48 + 1) & 255) == 1) { _t49 = _v16; _t54 = _v16; _t51 = _v32; LMpolicy_LM_Return_From_Hold(); } } else { LMpolicy_Send_HC_Mode_Change_Event(); } } } } return; } _Derive_Sniff_Pre_Instant( _unknown_ __eax // r0 ) {// addr = 0x00462DC2 signed int _v12; // _cfa_fffffff4 unsigned int _v16; // _cfa_fffffff0 unsigned int* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 unsigned int* _t61; // _t61 long long _t63; // _t63 long long _t65; // _t65 _v32 = _t63; _v40 = _t65; _v24 = _v40 + 448; _v16 = *_v24 >> 1; _v12 = LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 432))) >> 1; _t61 = _v24; _v44 = (_t61[2]) & 0xffff; _v12 = (_v12 - _v16) / _v44; _v12 = ((_v24[2]) & 0xffff) * (_t61 - 1); _v12 = _v12 + _v16; _v12 = _v12 << 1; return _v12; } LMpolicy_Accpt_Sniff_BB_Ack() {// addr = 0x00462E54 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 long long _t7; // _t7 _v16 = _t5; _v24 = _t7; LMpolicy_Enter_Sniff_Mode(); return; } LMpolicy_Accpt_UnSniff_BB_Ack() {// addr = 0x00462E79 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 long long _t7; // _t7 _v16 = _t5; _v24 = _t7; LMpolicy_LM_Exit_Master_From_Sniff(); return; } LMpolicy_Master_Sniff_Wait_Trx_CB() {// addr = 0x00462E9E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t65; // _t65 long long _t68; // _t68 _v32 = _t65; _v40 = _t68; _v56 = __rcx; _v44 = __edx; if(_v56 == 0 || _v44 != 0) { L4: return; } else { _v24 = _v56; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _v40; if(_v16 == 0) { goto L4; } r8d = *(_v16 + 466) & 0xffff; r9d = *(_v16 + 454) & 0xffff; r11d = *(_v16 + 490) & 0xff; r10 = _v32; r10 = r10 + 60216; _v72 = r8d; _v80 = *(_v16 + 462) & 0xffff; *__rsp = *(_v16 + 456) & 0xffff; r8d = r11d; LMP_Send_Sniff_Req(); return; } } LMpolicy_LM_Sniff_Mode() {// addr = 0x00462F98 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 signed int _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed short _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac long long _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed short _t197; // _t197 signed int _t205; // _t205 signed short _t221; // _t221 long long _t226; // _t226 intOrPtr _t237; // _t237 long long _t280; // _t280 _v64 = _t280; _v68 = _t221; _v72 = _t205; _v76 = _t197; _v80 = r8d; _v84 = r9d; LM_Find_Link_Table_Entry_By_Connection_Handle(_v68 & 65535, _t226, _v64 + 60216); _v56 = _t226; if(_v56 == 0) { return 2; } if(( *(_v64 + 191032) & 255) >= 0) { if(( *(_v56 + 40) & 255) >= 0) { if(( *(_v56 + 4) & 65535) == 1) { if(( *(_v56 + 10) & 65535) != 7) { if(( *(_v56 + 8) & 4) != 0) { _v48 = _v56 + 448; if(( *(_v48 + 40) & 255) != 1) { _v76 = _v76 & 254; _v72 = _v72 & 254; *(_v48 + 12) = _v72 & 65535; *(_v48 + 10) = _v76 & 65535; _t237 = _v56; _t147 = *(_t237 + 6) & 65535; if(( *(_t237 + 6) & 65535) == 0) { L21: *(_v48 + 41) = 0; r8d = _v84 & 65535; r9d = r8d; r8d = _v80 & 65535; if(LMpolicy_Derive_Sniff_Parameters(_t147) != 0) { return 32; } *(_v56 + 14) = *(_v56 + 2) & 255; if(( *(_v56 + 2) & 255) != 0) { if(( *(_v48 + 40) & 0xff) == 0) { r8d = *(_v48 + 18) & 0xffff; r9d = *(_v48 + 6) & 0xffff; r11d = *(_v48 + 42) & 0xff; r10 = _v64; r10 = r10 + 60216; _v104 = r8d; _v112 = *(_v48 + 14) & 0xffff; *__rsp = *(_v48 + 8) & 0xffff; r8d = r11d; LMP_Send_Sniff_Req(); *((char*)(_v56 + 488)) = 1; *(_v48 + 41) = _v48 + 1; } } else { if(( *(_v48 + 40) & 0xff) == 0) { _v28 = LLINK_ReadPicoClock(_v64, *((intOrPtr*)(_v56 + 432))); _v24 = _v28; _v20 = _v24; _v16 = 4; _v40 = _v16 + _v20; *_v48 = LMdm_Calc_Instance( *(_v48 + 6) & 0xffff, *(_v48 + 8) & 0xffff, _v40 & 0xfc); r8d = *(_v48 + 18) & 0xffff; _v96 = LMpolicy_Master_Sniff_Wait_Trx_CB; _v104 = 0; _v112 = 0; *__rsp = 5; r9d = r8d; r8d = *(_v48 + 14) & 0xffff; LCCMD_SniffRequest(); *((char*)(_v56 + 488)) = 1; *(_v48 + 41) = _v48 + 1; } } return 0; } _v10 = ( *(_v56 + 6) & 65535) - (( *(_v56 + 6) & 65535) >> 10); _t147 = _v10 & 65535; if((_v10 & 65535) >= _v72) { goto L21; } if(( *(_v56 + 2) & 255) != 1) { if((_v10 & 65535) >= _v76) { _t147 = _v10 & 65535; _v72 = _v10 & 65535; goto L21; } return 18; } return 18; } return 12; } return 12; } return 12; } return 12; } return 26; } else { return 17; } } LMpolicy_Master_UnSniff_Wait_Trx_CB() {// addr = 0x0046334C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t42; // _t42 long long _t45; // _t45 _v32 = _t42; _v40 = _t45; _v56 = __rcx; _v44 = __edx; if(_v56 == 0 || _v44 != 0) { L4: return; } else { _v24 = _v56; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _v40; if(_v16 == 0) { goto L4; } LMP_Send_UnSniff_Req(); return; } } LMpolicy_LM_Exit_Sniff_Mode( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004633DF long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t42; // _t42 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 56; _v48 = __rdi; _v56 = __rsi; if(( *(_v56 + 4) & 4) == 0) { _t42 = 31; } else { *(_v56 + 14) = *(_v56 + 2) & 255; if(( *(_v56 + 2) & 255) != 0) { LMP_Send_UnSniff_Req(); } else { *(_v56 + 4) = *(_v56 + 4) & 65535 | 4; r13d = *(_v56 + 466) & 0xffff; r12d = *(_v56 + 462) & 0xffff; _Derive_Sniff_Pre_Instant( *(_v56 + 456) & 65535); _v56 = LMpolicy_Master_UnSniff_Wait_Trx_CB; _v64 = 0; _v72 = 0; *__rsp = 5; r9d = r13d; r8d = r12d; LCCMD_SniffRequest(); } _t42 = 0; } __rsp = __rsp + 56; _pop(__rbx); _pop(r12); _pop(r13); return _t42; } LMpolicy_LM_Exit_Sniff_Mode_Command( _unknown_ __eax, // r0 signed long long __rax // r53 ) {// addr = 0x00463517 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed short _t29; // _t29 long long _t31; // _t31 long long _t38; // _t38 _t31 = __rax; _v32 = _t38; _v36 = _t29; _v12 = 12; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v24 = _t31; if(_v24 != 0) { if(( *(_v24 + 4) & 4) != 0 && ( *(_v24 + 4) & 0x400) == 0) { __rsi = _v24; _v12 = LMpolicy_LM_Exit_Sniff_Mode(_v32, _v24); } } else { _v12 = 2; } return _v12; } LMpolicy_LMP_Sniff_Req() {// addr = 0x0046359E signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 _unknown_ _v96; // _cfa_ffffffa0 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 _unknown_ __rbp; // r59 signed int _t285; // _t285 signed int _t321; // _t321 signed int _t356; // _t356 intOrPtr _t451; // _t451 _unknown_ _t550; // _t550 long long _t552; // _t552 long long _t566; // _t566 long long _t580; // _t580 _v112 = _t566; _v120 = _t580; _v128 = _t552; _v96 = _v120 + 448; _t445 = _v112; if(( *(_v112 + 191032) & 255) < 0) { DebugPrint(0, _t445, _t550, _t552, _t566, _t580); return 36; } _t446 = _v120; if(( *(_v120 + 40) & 255) < 0) { DebugPrint(0, _t446, _t550, _t552, _t566, _t580); return 36; } if(( *(_v120 + 13) & 255) != ( *(_v120 + 2) & 255) && ( *(_v120 + 8) & 4) == 0) { DebugPrint(0, _v120, _t550, _t552, _t566, _t580); return 36; } if(( *(_v96 + 41) & 255) == 0 || ( *(_v120 + 2) & 255) != 0 || ( *(_v120 + 14) & 255) == ( *(_v120 + 13) & 255)) { if(( *(_v120 + 4) & 65535) == 1) { _t451 = _v96; _t259 = *(_t451 + 41) & 255; if(( *(_t451 + 41) & 255) == 0) { *((short*)(_v96 + 12)) = 65535; *((short*)(_v96 + 10)) = 4; } if(LMpolicy_Extract_Sniff_Parameters(_t259) == 0) { *(_v120 + 14) = *(_v120 + 13) & 255; if(( *(_v96 + 41) & 255) > 4) { *(_v96 + 41) = 0; LMpolicy_Send_HC_Mode_Change_Event(); return 32; } r8d = *(_v96 + 18) & 0xffff; r9d = r8d; r8d = *(_v96 + 14) & 0xffff; LMpolicy_Derive_Sniff_Parameters( *(_v96 + 8) & 65535); if(( *(_v120 + 2) & 255) != 0) { if(( *(_v96 + 40) & 0xff) == 0) { r8d = *(_v96 + 18) & 0xffff; r9d = *(_v96 + 6) & 0xffff; r11d = *(_v96 + 42) & 0xff; r10 = _v112; r10 = r10 + 60216; _v152 = r8d; _v160 = *(_v96 + 14) & 0xffff; *__rsp = *(_v96 + 8) & 0xffff; r8d = r11d; LMP_Send_Sniff_Req(); *(_v96 + 40) = 1; } goto L42; } _v10 = ( *(_v96 + 18) & 65535) != 0 & 255; _t285 = *(_v120 + 488) & 0xff; if(_t285 == 0) { r8d = *(_v96 + 18) & 0xffff; r9d = *(_v96 + 6) & 0xffff; r11d = *(_v96 + 42) & 0xff; r10 = _v112; r10 = r10 + 60216; _v152 = r8d; _v160 = *(_v96 + 14) & 0xffff; *__rsp = *(_v96 + 8) & 0xffff; r8d = r11d; LMP_Send_Sniff_Req(); _v52 = LLINK_ReadPicoClock(_v112, *((intOrPtr*)(_v120 + 432))); _v24 = _v52; _v20 = _v24; _v16 = 4; _v56 = _v16 + _v20; *_v96 = LMdm_Calc_Instance( *(_v96 + 6) & 0xffff, *(_v96 + 8) & 0xffff, _v56 & 0xfc); r8d = _v10 & 65535; _v144 = 0; _v152 = 0; _v160 = 0; *__rsp = 5; r9d = r8d; r8d = *(_v96 + 14) & 0xffff; LCCMD_SniffRequest(); *(_v96 + 40) = 1; L37: goto L42; } if(_t285 == 1) { r8d = *(_v96 + 18) & 0xffff; r9d = *(_v96 + 6) & 0xffff; r11d = *(_v96 + 42) & 0xff; r10 = _v112; r10 = r10 + 60216; _v152 = r8d; _v160 = *(_v96 + 14) & 0xffff; *__rsp = *(_v96 + 8) & 0xffff; r8d = r11d; LMP_Send_Sniff_Req(); goto L37; } goto L42; } else { *(_v120 + 14) = *(_v120 + 13) & 255; if(( *(_v120 + 2) & 255) != 0) { _t321 = *(_v96 + 40) & 0xff; if(_t321 == 0) { _v52 = LLINK_ReadPicoClock(_v112, *((intOrPtr*)(_v120 + 432))); _v48 = _v52; _v44 = _v48; _v40 = 4; _v88 = _v40 + _v44; *_v96 = LMdm_Calc_Instance( *(_v96 + 6) & 0xffff, *(_v96 + 8) & 0xffff, _v88 & 0xfc); *__rsp = LMpolicy_Accpt_Sniff_BB_Ack; r9d = 13; r8d = 23; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v120 + 432))); } else { if(_t321 == 1) { _v52 = LLINK_ReadPicoClock(_v112, *((intOrPtr*)(_v120 + 432))); _v36 = _v52; _v32 = _v36; _v28 = 4; _v72 = _v28 + _v32; *_v96 = LMdm_Calc_Instance( *(_v96 + 6) & 0xffff, *(_v96 + 8) & 0xffff, _v72 & 0xfc); *__rsp = LMpolicy_Accpt_Sniff_BB_Ack; r9d = 13; r8d = 23; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v120 + 432))); } } } else { _t356 = *(_v96 + 40) & 0xff; if(_t356 != 0) { if(_t356 == 1) { *__rsp = LMpolicy_Accpt_Sniff_BB_Ack; r9d = 13; r8d = 23; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v120 + 432))); *(_v96 + 40) = 1; } } } *(_v96 + 41) = _v96 + 1; L42: return 0; } } DebugPrint(0, _v120, _t550, _t552, _t566, _t580); return 36; } else { return 35; } } LMpolicy_LMP_Unsniff_Req( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00463D0F intOrPtr _v44; // _cfa_ffffffd4 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 intOrPtr _v96; // _cfa_ffffffa0 intOrPtr _v104; // _cfa_ffffff98 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 88; _v64 = __rdi; _v72 = __rsi; _v80 = __rdx; _v44 = 36; if(( *(_v72 + 4) & 65535) != 4) { if(( *(_v72 + 2) & 255) == 0 && ( *(_v72 + 14) & 255) != ( *(_v72 + 13) & 255)) { _v44 = 35; } } else { *(_v72 + 14) = *(_v72 + 2) & 255 ^ 1; *__rsp = LMpolicy_Accpt_UnSniff_BB_Ack; r9d = 14; r8d = 24; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v72 + 432))); if(( *(_v72 + 2) & 255) != 0) { LMpolicy_LM_Return_From_Sniff(); } else { *(_v72 + 4) = *(_v72 + 4) & 65535 | 4; r13d = *(_v72 + 466) & 0xffff; r12d = *(_v72 + 462) & 0xffff; _Derive_Sniff_Pre_Instant( *(_v72 + 456) & 65535); _v88 = 0; _v96 = 0; _v104 = 0; *__rsp = 5; r9d = r13d; r8d = r12d; LCCMD_SniffRequest(); } _v44 = 0; } __rsp = __rsp + 88; _pop(__rbx); _pop(r12); _pop(r13); return _v44; } LMpolicy_Extract_Sniff_Parameters( _unknown_ __eax // r0 ) {// addr = 0x00463EA4 unsigned int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t257; // _t257 long long _t263; // _t263 long long _t272; // _t272 _v32 = _t263; _v40 = _t272; _v48 = _t257; _v10 = 1; _v9 = 0; *(_v40 + 490) = ( *_v48 & 2) >> 1; *(_v40 + 454) = casting_uint16( &(_v48[1])); *(_v40 + 456) = casting_uint16( &(_v48[3])); *(_v40 + 466) = casting_uint16( &(_v48[7])); if(casting_uint16( &(_v48[5])) != 0) { *(_v40 + 462) = casting_uint16( &(_v48[5])); } else { *(_v40 + 462) = 1; _v10 = 0; } if(casting_uint16( &(_v48[5])) < 0) { *(_v40 + 462) = 32767; _v10 = 0; } if(casting_uint16( &(_v48[7])) < 0) { *(_v40 + 466) = 32767; _v10 = 0; } if(( *(_v40 + 6) & 65535) != 0 && ( *(_v40 + 456) & 65535) > ( *(_v40 + 6) & 65535)) { if(( *(_v40 + 489) & 255) != 0) { *(_v40 + 456) = *(_v40 + 458) & 65535; } else { *(_v40 + 456) = ( *(_v40 + 56) & 65535) + ( *(_v40 + 56) & 65535) + _t186 << 2; } _v10 = 0; } if(( *(_v40 + 456) & 65535) == 0) { if(( *(_v40 + 489) & 255) != 0) { *(_v40 + 456) = *(_v40 + 458) & 65535; } else { *(_v40 + 456) = ( *(_v40 + 56) & 65535) + ( *(_v40 + 56) & 65535) + _t182 << 2; } _v10 = 0; } if(( *(_v40 + 456) & 1) != 0) { *(_v40 + 456) = *(_v40 + 456) & 0xfe; _v10 = 0; } if(( *(_v40 + 454) & 1) != 0) { *(_v40 + 454) = *(_v40 + 454) & 0xfe; _v10 = 0; } if(( *(_v40 + 462) & 65535) <= ( *(_v40 + 456) & 65535) >> 1) { _v9 = (LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 432))) & 134217728) >> 27; if(( *(_v40 + 2) & 255) == 0 && ( *(_v40 + 490) & 255) != _v9) { *(_v40 + 490) = _v9 & 255; _v10 = 0; } if(( *(_v40 + 2) & 255) == 0) { _v10 = 0; } if(( *(_v40 + 454) & 65535) >= ( *(_v40 + 456) & 65535)) { _v10 = 0; } if(( *(_v40 + 460) & 65535) < ( *(_v40 + 456) & 65535)) { *(_v40 + 456) = *(_v40 + 460) & 65535; _v10 = 0; } if(( *(_v40 + 458) & 65535) > ( *(_v40 + 456) & 65535)) { *(_v40 + 456) = *(_v40 + 458) & 65535; _v10 = 0; } return _v10 & 255; } else { *(_v40 + 489) = 6; return 0; } } LMpolicy_LM_Return_From_Sniff_Udm_Cmd_CB() {// addr = 0x0046420F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t47; // _t47 intOrPtr _t67; // _t67 long long _t74; // _t74 long long _t77; // _t77 long long _t83; // _t83 _v32 = _t77; _v40 = _t83; _t38 = _t47; _v56 = _t74; _v44 = _t47; if(_v56 == 0 || _v44 != 0) { L8: return; } else { _v24 = _v56; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _v40; if(_v16 == 0) { goto L8; } LMpol_Adjust_ACL_Packet_Types_On_Link(); if(( *(_v16 + 2) & 255) == 1) { *((short*)(_v16 + 464)) = 0; } LMpolicy_Send_HC_Mode_Change_Event(); _t67 = _v16; _t38 = *(_t67 + 4) & 0x4000; if(( *(_t67 + 4) & 0x4000) == 0) { goto L8; } else { _v44 = LMsco_Free_All_SCO_Links(22); if(_v44 == 0) { goto L8; } LMconnection_LM_Disconnect(); *((char*)(_v16 + 87)) = 0; return; } } } LMpolicy_LM_Return_From_Sniff() {// addr = 0x0046432B long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t40; // _t40 _unknown_ _t64; // _t64 long long _t66; // _t66 long long _t68; // _t68 _v32 = _t66; _v40 = _t68; _v44 = _t40; if(( *(_v40 + 4) & 0x7000) == 0) { *(_v40 + 4) = 1; } else { *(_v40 + 4) = *(_v40 + 4) & 65535 | 1; } *((char*)(_v40 + 488)) = 0; *((char*)(_v40 + 499)) = _v44; if( *((intOrPtr*)( *((intOrPtr*)(_v40 + 432)) + 88)) != 0) { _v16 = *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 432)) + 88)) + 72)); DebugPrint(0, _v16, _t64, __rdx, _t66, _t68); } LCCMD_UnsniffRequest(); return; } LMpolicy_Enter_Sniff_Mode_Udm_Cmd_CB() {// addr = 0x004643FF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t22; // _t22 long long _t32; // _t32 long long _t35; // _t35 _v32 = _t32; _v40 = _t35; _t20 = _t22; _v56 = __rcx; _v44 = _t22; if(_v56 == 0) { } else { if(_v44 != 0) { _t20 = 31; } else { _t20 = 0; } _v44 = _t20; _v24 = _v56; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _v40; if(_v16 != 0) { LMpolicy_Send_HC_Mode_Change_Event(); return; } } return; } LMpolicy_Enter_Sniff_Mode() {// addr = 0x00464485 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 intOrPtr _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t102; // _t102 long long _t106; // _t106 _v32 = _t102; _v40 = _t106; _v24 = _v40 + 448; *((short*)(_v40 + 4)) = 4; *((char*)(_v24 + 40)) = 2; *(_v24 + 16) = *(_v24 + 14) & 65535; *((char*)(_v24 + 41)) = 0; if(( *(_v40 + 496) & 255) == 1) { _Send_LMP_Sniff_Subrating_Req(); *((char*)(_v40 + 497)) = _v40 + 1; *(_v40 + 498) = *(_v40 + 2) & 255; } if( *((intOrPtr*)( *((intOrPtr*)(_v40 + 432)) + 88)) != 0) { _v16 = *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 432)) + 88)) + 72)); if(( *(_v16 + 20) & 65535) == 19) { LLINK_ChangeLCLinkPriority(1); } } r8d = *(_v24 + 18) & 0xffff; _v48 = LMpolicy_Enter_Sniff_Mode_Udm_Cmd_CB; _v56 = 0; _v64 = 0; *__rsp = 4; r9d = r8d; r8d = *(_v24 + 14) & 0xffff; LCCMD_SniffRequest(); return; } LMpolicy_Derive_Sniff_Parameters( _unknown_ __eax // r0 ) {// addr = 0x004645DE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed short _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed short _t54; // _t54 signed short _t57; // _t57 long long _t75; // _t75 long long _t78; // _t78 _v16 = _t75; _v24 = _t78; _v28 = _t57; _v32 = _t54; _v36 = __si; _v40 = r9d; if((_v28 & 1) != 0 || (_v32 & 1) != 0) { return 30; } else { if(_v36 != 0) { *(_v24 + 462) = _v36 & 65535; *(_v24 + 490) = (LLINK_ReadPicoClock(_v16, *((intOrPtr*)(_v24 + 432))) & 134217728) >> 27; *(_v24 + 466) = _v40 & 65535; _v40 = _v40 != 0 & 255; *(_v24 + 456) = _v32 & 65535; r8d = (_v40 & 65535) + (_v40 & 65535) & 65535; r9d = r8d; r8d = (_v36 & 65535) + (_v36 & 65535) & 65535; *((short*)(_v24 + 454)) = LMpol_Adjust_Dsniff(); return 0; } return 30; } } LMpolicy_LM_Exit_Master_From_Sniff() {// addr = 0x004646EB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 _v16 = _t17; _v24 = _t19; if(( *(_v24 + 4) & 4) == 0 || ( *(_v24 + 2) & 255) != 0) { return; } else { LMpolicy_LM_Return_From_Sniff(); return; } } LMpolicy_LM_Sniff_Subrating( signed long long __rax // r53 ) {// addr = 0x00464733 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed short _v40; // _cfa_ffffffd8 signed short _v44; // _cfa_ffffffd4 signed short _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed short _t57; // _t57 signed short _t59; // _t59 signed short _t66; // _t66 long long _t68; // _t68 long long _t86; // _t86 _t68 = __rax; _v32 = _t86; _v56 = r9; _v36 = _t66; _v40 = _t59; _v44 = _t57; _v48 = r8d; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v16 = _t68; if(_v16 != 0) { if(( *(_v16 + 45) & 2) != 0) { if(( *(_v16 + 497) & 255) == 0) { *(_v16 + 468) = _v40 & 65535; *(_v16 + 472) = _v44 & 65535; *(_v16 + 470) = _v48 & 65535; if(( *(_v16 + 4) & 4) == 0) { *((char*)(_v16 + 496)) = 1; } else { _Send_LMP_Sniff_Subrating_Req(); *(_v16 + 497) = _v16 + 1; *(_v16 + 498) = *(_v16 + 2) & 255; } write_end_du(2, _v56, _v16 + 626); return 0; } return 12; } return 26; } return 2; } LMpolicy_LMP_Sniff_Subrating_Req( _unknown_ __eax // r0 ) {// addr = 0x0046486A signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed int _v49; // _cfa_ffffffcf _unknown_ __rbp; // r59 intOrPtr _t151; // _t151 signed char* _t167; // _t167 long long _t171; // _t171 long long _t176; // _t176 _v32 = _t171; _v40 = _t176; _v48 = _t167; _v24 = _v40 + 448; _v10 = *_v48 & 255; _v12 = casting_uint16( &(_v48[1])); _v16 = casting_uint32( &(_v48[3])); if(( *(_v40 + 4) & 4) == 0) { return 36; } if(( *(_v24 + 49) & 255) == 0 || ( *(_v24 + 50) & 255) == ( *(_v40 + 13) & 255)) { L7: *(_v24 + 50) = *(_v40 + 13) & 255; *(_v24 + 49) = _v24 + 1; if(_v10 == 0) { _v10 = 1; } if(( *(_v40 + 6) & 65535) == 0 || ( *(_v40 + 6) & 0xffff) >= (_v10 & 255) * ( *(_v40 + 456) & 0xffff)) { *(_v24 + 46) = _v10 & 255; if(( *(_v24 + 36) & 65535) < _v12) { *(_v24 + 36) = _v12 & 65535; } if(( *(_v24 + 46) & 255) > ( *(_v24 + 47) & 255)) { _v9 = ( *(_v24 + 46) & 0xff) / ( *(_v24 + 47) & 255); _v49 = *(_v24 + 47) & 255; *(_v24 + 46) = (_v49 & 255) * _v9; } _t151 = _v40; _t101 = *(_t151 + 2) & 255; if(( *(_t151 + 2) & 255) != 1) { *((intOrPtr*)(_v24 + 28)) = _Derive_Sniff_Subrating_Instant(_t101); } else { *((intOrPtr*)(_v24 + 28)) = _t151 + _t151; } _Send_LMP_Sniff_Subrating_Res(); return 0; } else { return 30; } } else { if(( *(_v40 + 2) & 255) != 0) { *(_v24 + 49) = 0; goto L7; } return 35; } } LMpolicy_LMP_Sniff_Subrating_Res_Udm_Cmd_CB( signed char __edx // r3 ) {// addr = 0x00464A3F char _v10; // _cfa_fffffff6 char _v12; // _cfa_fffffff4 char _v14; // _cfa_fffffff2 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 char* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed char _t49; // _t49 long long _t83; // _t83 long long _t89; // _t89 long long _t92; // _t92 _v48 = _t89; _v56 = _t92; _v72 = _t83; _v60 = __edx; if(_v72 == 0) { } else { _v40 = _v72; LM_Find_Link_Table_Entry_By_LLink(); _v32 = _v56; if(_v32 != 0) { if((_v60 & 255) != 0) { _t49 = 31; } else { _t49 = 0; } _v60 = _t49; _v24 = _v32 + 448; _v16 = ( *(_v24 + 8) & 65535) * ( *(_v24 + 46) & 0xff); _v14 = ( *(_v24 + 8) & 65535) * ( *(_v24 + 47) & 0xff); *(_v24 + 44) = *(_v24 + 24) & 65535; _v10 = *(_v24 + 44) & 65535; _v12 = *(_v24 + 36) & 65535; r8 = &_v16; _v80 = &_v12; *__rsp = &_v10; r9 = r8; r8 = &_v14; EG_Event_Composer(0); return; } } return; } LMpolicy_LMP_Sniff_Subrating_Res() {// addr = 0x00464B62 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 intOrPtr _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed int _v65; // _cfa_ffffffbf long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t158; // _t158 long long _t178; // _t178 long long _t182; // _t182 _v48 = _t178; _v56 = _t182; _v64 = __rdx; _v10 = *_v64 & 255; _v12 = casting_uint16( &(_v64[1])); _t180 = &(_v64[3]); _v20 = casting_uint32( &(_v64[3])); _v32 = _v56 + 448; if(( *(_v32 + 50) & 255) != ( *(_v56 + 13) & 255)) { r8d = *(_v56 + 13) & 0xff; DebugPrint(0, _v32, __rcx, __rdx, _t180, _t182); } if(_v10 == 0) { _v10 = 1; } if(( *(_v56 + 6) & 65535) == 0 || ( *(_v56 + 6) & 0xffff) >= (_v10 & 255) * ( *(_v56 + 456) & 0xffff)) { *((char*)(_v32 + 49)) = 0; *(_v32 + 46) = _v10 & 255; _v14 = _v12 & 65535; if(( *(_v32 + 22) & 65535) > _v14) { _v14 = *(_v32 + 22) & 65535; } _t158 = _v32; *(_t158 + 36) = _v14 & 65535; *((intOrPtr*)(_v32 + 28)) = _t158 + _t158; if(( *(_v32 + 46) & 255) > ( *(_v32 + 47) & 255)) { _v9 = ( *(_v32 + 46) & 0xff) / ( *(_v32 + 47) & 255); _v65 = *(_v32 + 47) & 255; *(_v32 + 46) = (_v65 & 255) * _v9; } r8d = _v14 & 65535; r9d = *(_v32 + 18) & 0xffff; r10d = *(_v32 + 14) & 0xffff; _v80 = LMpolicy_LMP_Sniff_Subrating_Res_Udm_Cmd_CB; _v88 = r8d; _v96 = *(_v32 + 46) & 0xff; *__rsp = 12; r8d = r10d; LCCMD_SniffRequest(); return 0; } else { return 30; } } _Send_LMP_Sniff_Subrating_Req() {// addr = 0x00464D4B unsigned int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v42; // _cfa_ffffffd6 _unknown_ __rbp; // r59 intOrPtr _t69; // _t69 long long _t84; // _t84 long long _t87; // _t87 _v32 = _t84; _v40 = _t87; _v42 = *(_v40 + 456) & 65535; *(_v40 + 495) = ( *(_v40 + 468) & 65535) / _v42; if(( *(_v40 + 495) & 255) == 0) { *(_v40 + 495) = 1; } _t69 = _v40; _t48 = *(_t69 + 2) & 255; if(( *(_t69 + 2) & 255) != 0) { _v12 = 0; } else { *(_v40 + 476) = _Derive_Sniff_Subrating_Instant(_t48); _v12 = *(_v40 + 476) >> 1; } r9d = *(_v40 + 472) & 0xffff; r8d = *(_v40 + 495) & 0xff; *__rsp = _v12; LMP_Send_Sniff_Subrating_Req(); return; } _Send_LMP_Sniff_Subrating_Res() {// addr = 0x00464E49 unsigned int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t38; // _t38 _v32 = _t38; _v40 = __rsi; _v12 = *(_v40 + 476) >> 1; r9d = *(_v40 + 492) & 0xffff; r8d = *(_v40 + 495) & 0xff; _v48 = LMpolicy_LMP_SSR_Res_BB_Ack; *__rsp = _v12; LMP_Send_Sniff_Subrating_Res(); return; } LMpolicy_Get_Common_Subrate( long long __rdi // r57 ) {// addr = 0x00464ED4 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t11; // _t11 intOrPtr _t17; // _t17 __rdi = __rdi; _v32 = __rdi; _v24 = _v32 + 448; _t17 = _v24; _t11 = *(_v24 + 47) & 255; _t12 = __dl - _t11 >= 0 ? *(_t17 + 46) & 255 : _t11; _t13 = (__dl - _t11 >= 0 ? *(_t17 + 46) & 255 : _t11) & 255; _v12 = (__dl - _t11 >= 0 ? *(_t17 + 46) & 255 : _t11) & 255; return _v12; } _Derive_Sniff_Subrating_Instant( _unknown_ __eax // r0 ) {// addr = 0x00464F0A signed int _v12; // _cfa_fffffff4 unsigned int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec unsigned int* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed int _t44; // _t44 signed int _t68; // _t68 unsigned int* _t80; // _t80 long long _t83; // _t83 long long _t85; // _t85 _v48 = _t83; _v56 = _t85; _v32 = _v56 + 448; _t68 = (_v32[0xb]) & 255; _t44 = (_v32[0xb]) & 255; _t45 = _t68 - _t44 >= 0 ? _t68 : _t44; _t46 = (_t68 - _t44 >= 0 ? _t68 : _t44) & 255; _v20 = (_t68 - _t44 >= 0 ? _t68 : _t44) & 255; _v16 = *_v32 >> 1; _v12 = LLINK_ReadPicoClock(_v48, *((intOrPtr*)(_v56 + 432))) >> 1; _t80 = _v32; _v60 = (_t80[2]) & 0xffff; _v12 = (_v12 - _v16) / _v60; _v12 = ((_v32[2]) & 0xffff) * &(_t80[0]); _v12 = _v12 + ((_v32[2]) & 0xffff) * _v20 + ((_v32[2]) & 0xffff) * _v20 + _v16; _v12 = _v12 << 1; return _v12; } LMpolicy_LMP_SSR_Res_BB_Ack( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00464FC8 char _v9; // _cfa_fffffff7 char _v12; // _cfa_fffffff4 char _v14; // _cfa_fffffff2 char _v16; // _cfa_fffffff0 char _v18; // _cfa_ffffffee long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _v48 = __rdi; _v56 = __rsi; _v9 = 0; _v40 = _v56; if(_v40 != 0) { _v32 = _v40 + 448; *((char*)(_v32 + 49)) = 0; _v18 = ( *(_v32 + 8) & 65535) * ( *(_v32 + 46) & 0xff); _v14 = *(_v32 + 36) & 65535; _v16 = ( *(_v32 + 8) & 65535) * ( *(_v32 + 47) & 0xff); _v12 = *(_v32 + 44) & 65535; r8d = _v14 & 0xffff; r9d = *(_v32 + 18) & 0xffff; r10d = *(_v32 + 14) & 0xffff; _v64 = 0; _v72 = r8d; _v80 = *(_v32 + 46) & 0xff; *__rsp = 12; r8d = r10d; LCCMD_SniffRequest(); r8 = &_v18; _v80 = &_v14; *__rsp = &_v12; r9 = r8; r8 = &_v16; EG_Event_Composer(0); return; } return; } LMpolicy_Link_Init( long long __rdi // r57 ) {// addr = 0x00465111 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((short*)(_v16 + 56)) = 65534; *((short*)(_v16 + 58)) = 20; *((char*)(_v16 + 47)) = 1; return; } LMpolicy_Power_Control_Allowed( long long __rdi // r57 ) {// addr = 0x00465137 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v9 = 1; if(( *(_v32 + 497) & 255) != 0 || ( *(_v32 + 489) & 255) != 0) { _v9 = 0; } return _v9 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x0046516C signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046519B signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LMutils_Set_Uint16( signed short __esi, // r5 long long __rdi // r57 ) {// addr = 0x004652DC _unknown_ _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *_v16 = __dl; *(_v16 + 1) = (_v20 & 65535) >> 8; return; } LMpolicy_Park_Initialize() {// addr = 0x0046530A long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; RtlFillMemory(32, 0, _v16 + 69432); RtlFillMemory(32, 0, _v16 + 69464); *((intOrPtr*)(_v16 + 69432)) = 1; *((intOrPtr*)(_v16 + 69464)) = 1; return; } LMpolicy_Send_LMP_Park_Req() {// addr = 0x0046536C char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t32; // _t32 long long _t35; // _t35 _v48 = _t32; _v56 = _t35; LMpolicy_Get_Park_PDU( &_v40); r9d = 9; r8 = &_v40; LMP_Send_Park_Req(); return; } LMpolicy_Enter_Park_Mode() {// addr = 0x004653E7 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 _unknown_ _t67; // _t67 _unknown_ _t106; // _t106 _unknown_ _t109; // _t109 long long _t113; // _t113 long long _t118; // _t118 _v96 = _t113; _v104 = _t118; _v56 = _v104; _v48 = _v56 + 516; *((char*)(_v56 + 516)) = 1; _t93 = _v96; if(( *(_v96 + 69396) & 65535) != 0) { DebugPrint(0, _t93, _t106, _t109, _t113, _t118); return; } _v20 = LLINK_ReadPicoClock(_v96, *((intOrPtr*)(_v56 + 432))); _v16 = _v20; _v12 = 4; _v40 = _v12 + _v16; _v24 = _v40 & 0xfc; _v24 = _v24 + (( *(_v56 + 56) & 0xffff) << 2); _v24 = LMdm_Calc_Instance( *(_v96 + 69418) & 0xffff, *(_v96 + 69416) & 0xffff, _v24); _t67 = LLINK_ReadPicoClock(_v96, *((intOrPtr*)(_v56 + 432))); r9d = _v24; r8d = _t67; DebugPrint(0, _v48, _t106, *((intOrPtr*)(_v56 + 432)), _v96, *((intOrPtr*)(_v56 + 432))); LMpolicy_Get_Park_PDU( &_v88); r8d = LMpolicy_LcCmdCb_Beacon_Request; LCCMD_ParkBeaconRequest(); return; } _LMpol_Execute_Unpark_Request() {// addr = 0x00465557 signed int _v21; // _cfa_ffffffeb signed int _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 char _t103; // _t103 signed char _t155; // _t155 long long _t164; // _t164 _v48 = _t155; _v56 = _t164; _v60 = _t103; _v40 = _v56 + 516; _v32 = 0; if(( *(_v56 + 525) & 255) != 0) { DM_Clear_Timer(); *(_v56 + 525) = 0; } BTSTS_SetDeviceState(); if(( *(_v56 + 2) & 255) != 0) { if(( *(_v56 + 524) & 255) == 2) { *(_v48 + 69400) = *(_v56 + 524) & 255; LCCMD_SlaveAccessRequest(); } L11: return; } if(( *(_v56 + 4) & 65535) == 8) { LINK_PrepareUnPark(); _v32 = _v48; if(_v32 != 0) { *(_v56 + 14) = 0; if(( *(_v40 + 13) & 255) != 0) { RtlFillMemory(4, 0, &_v24); _v24 = _v24 & 0xfe; _v24 = _v24 & 1 | 60; _v23 = *(_v40 + 17) & 255; _v22 = _v22 & 0xf0 | *( *((intOrPtr*)( *((intOrPtr*)(_v32 + 96)) + 8)) + 1) & 0xf; _v22 = _v22 & 0xf; _v21 = *(_v40 + 13) & 255; r8 = &_v24; LCCMD_UnparkSlaveRequest(); *((short*)(_v56 + 10)) = 30; *((char*)(_v40 + 11)) = _v40 + 1; } goto L11; } return; } BTSTS_ClearDeviceState(); LMpolicy_Send_HC_Mode_Change_Event(); return; } LMpolicy_Park_Complete() {// addr = 0x00465771 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 char _t66; // _t66 _unknown_ _t80; // _t80 long long _t105; // _t105 long long _t110; // _t110 _v16 = _t105; _v24 = _t110; _v28 = _t66; DebugPrint(0, _t80, __rcx, __rdx, _t105, _t110); if(_v28 != 0) { DebugPrint(0, _t80, __rcx, __rdx, _t105, _t110); *((short*)(_v24 + 10)) = 0; *((char*)(_v24 + 526)) = 0; *((char*)(_v24 + 524)) = 0; *((char*)(_v24 + 527)) = 0; *((char*)(_v24 + 525)) = 0; BTSTS_ClearDeviceState(); if(( *(_v24 + 517) & 255) != 3) { LMpolicy_Send_HC_Mode_Change_Event(); return; } } else { *((short*)(_v24 + 4)) = 8; *((short*)(_v24 + 10)) = 0; *((char*)(_v24 + 516)) = 2; *((char*)(_v24 + 526)) = 0; *((char*)(_v24 + 524)) = 0; *((char*)(_v24 + 527)) = 0; *((char*)(_v24 + 525)) = 0; *((short*)(_v16 + 69396)) = _v16 + 1; BTSTS_ClearDeviceState(); if(( *(_v24 + 517) & 255) != 3) { LMpolicy_Send_HC_Mode_Change_Event(); return; } } return; } LMpolicy_UnPark_Complete() {// addr = 0x00465904 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t75; // _t75 _unknown_ _t95; // _t95 _unknown_ _t123; // _t123 _unknown_ _t127; // _t127 long long _t131; // _t131 long long _t137; // _t137 _v32 = _t131; _v40 = _t137; _v44 = _t75; DebugPrint(0, _t95, _t123, _t127, _t131, _t137); if(( *(_v32 + 69396) & 65535) != 0) { *(_v32 + 69396) = _v32 - 1; } if(( *(_v40 + 2) & 255) == 0) { if(( *(_v32 + 69396) & 65535) != 0) { DebugPrint(0, _v32, _t123, _t127, _t131, _t137); } else { LCCMD_BeaconCancelRequest(); *((char*)(_v32 + 69392)) = 50; DebugPrint(0, _v32, *((intOrPtr*)(_v32 + 69520)), _t127, _v32, *((intOrPtr*)(_v32 + 69520))); } } if(_v44 != 0) { _v9 = 0; *((char*)(_v40 + 92)) = 8; r8 = _v40 + 92; EG_Event_Composer(0); LM_Delete_Link_Table_Entry(_v32 + 60216); return; } else { *((short*)(_v40 + 4)) = 1; *((short*)(_v40 + 10)) = 0; *((char*)(_v40 + 524)) = 0; *((char*)(_v40 + 526)) = 0; *((char*)(_v40 + 527)) = 0; *((char*)(_v40 + 525)) = 0; BTSTS_ClearDeviceState(); if(( *(_v40 + 522) & 255) != 0) { return; } LMpolicy_Send_HC_Mode_Change_Event(); return; } } LMpolicy_LcCmdCb_Beacon_Request() {// addr = 0x00465AE3 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t27; // _t27 intOrPtr _t38; // _t38 long long _t39; // _t39 long long _t46; // _t46 _unknown_ _t47; // _t47 long long _t49; // _t49 long long _t50; // _t50 _v32 = _t46; _v40 = _t49; _v56 = __rcx; _v44 = _t27; if(_v44 == 0) { _t38 = _v32; _t44 = _t38 + 60216; _t39 = _v40; _t50 = _t39; _t47 = _t38 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _t39; if(_v16 == 0) { DebugPrint(0, _t39, __rcx, _t44, _t47, _t50); return; } LMpolicy_Delete_Park_link(); *(_v32 + 69392) = *(_v32 + 69392) & 255 | 8; DebugPrint(0, _v32, __rcx, _v16, _v32, _v16); return; } return; } LMpolicy_Delete_Park_link() {// addr = 0x00465B9E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t12; // _t12 long long _t23; // _t23 long long _t26; // _t26 _v16 = _t23; _v24 = _t26; if(_v24 == 0 || *((intOrPtr*)(_v24 + 768)) == 0) { return; } else { LLINK_ReadPicoClock(_v16, *((intOrPtr*)(_v24 + 768))); LCCMD_LinkDeleteRequest(); return; } } LMpolicy_Unpark_Slave_NonAutomatic() {// addr = 0x00465BFF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 _unknown_ _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v16 = _t19; _v24 = _t21; if(_v24 != 0) { DebugPrint(0, _v24, _t17, __rdx, _t19, _t21); _LMpol_Execute_Unpark_Request(); return; } return; } LMpolicy_Extract_Park_Parameters( _unknown_ __eax, // r0 intOrPtr __edx // r3 ) {// addr = 0x00465C56 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed int _v16; // _cfa_fffffff0 signed int _v17; // _cfa_ffffffef signed int _v18; // _cfa_ffffffee signed int _v19; // _cfa_ffffffed signed int _v20; // _cfa_ffffffec signed int _v21; // _cfa_ffffffeb signed int _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v26; // _cfa_ffffffe6 signed int _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 char _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t300; // _t300 _v48 = _t300; _v56 = __rsi; _v60 = __edx; _v72 = __rcx; _v80 = r8; _v64 = r9d; _v15 = 0; _v23 = 0; _v22 = 0; _v21 = 0; _v20 = 0; _v19 = 0; _v14 = 0; _v18 = 0; _v17 = 0; _v13 = 0; _v16 = 0; _v12 = 0; _v11 = *_v80 & 1; _v10 = ( *_v80 & 2) >> 1; _v9 = ( *_v80 & 4) >> 2; _v80 = &(_v80[1]); if(_v11 != 0) { L2: _v28 = casting_uint16(_v80); _v80 = &(_v80[2]); L4: _v26 = casting_uint16(_v80); _v80 = &(_v80[2]); _v15 = *_v80 & 255; _v80 = &(_v80[1]); _v14 = *_v80 & 255; _v80 = &(_v80[1]); if(_v64 != 28) { _v18 = *_v80 & 255; _v80 = &(_v80[1]); _v17 = *_v80 & 255; _v80 = &(_v80[1]); _v20 = *_v80 & 255; _v80 = &(_v80[1]); _v19 = *_v80 & 255; _v80 = &(_v80[1]); if(_v20 == 0) { if(_v19 == 0) { _v20 = 1; } } } if(_v9 != 0) { _v21 = 0; _v23 = 0; _v22 = 0; _v80 = &(_v80[3]); } else { _v21 = *_v80 & 255; _v80 = &(_v80[1]); _v23 = *_v80 & 255; _v80 = &(_v80[1]); _v22 = *_v80 & 255; _v80 = &(_v80[1]); } _v13 = *_v80 & 255; _v80 = &(_v80[1]); if(_v9 != 0) { _v16 = 0; } else { _v16 = *_v80 & 0xf; } _v12 = *_v80 & 0xf0; if((_v21 & 1) != 0 || (_v23 & 1) != 0) { return 30; } if((_v21 & 255) <= _v26) { if(_v64 == 28 || (_v20 & 255) > _v19) { if((_v13 & 1) == 0) { if(_v12 == 0) { if(_v15 == 0 || _v26 == 0 || (_v26 & 1) != 0 || (_v28 & 1) != 0 || (_v15 & 255) > _v26) { return 30; } else { if(_v60 != 1 || (_v21 & 255) + (_v23 & 255) <= (_v26 & 65535)) { if((_v26 & 65535) > _v28) { if(_v60 != 1) { if(( *(_v48 + 9180) & 65535) == 0) { *(_v48 + 9200) = _v26 & 65535; if(( *(_v48 + 9200) & 65535) <= 127) { *(_v48 + 9200) = 128; } } L47: return 0; } *(_v72 + 17) = _v10 & 255; if(_v11 != 0 || _v64 != 28) { *(_v48 + 9202) = _v28 & 65535; } *(_v48 + 9204) = _v15 & 255; *(_v72 + 16) = _v14 & 255; *(_v56 + 532) = _v14 & 255; if(_v64 != 28) { *(_v72 + 13) = _v18 & 255; *(_v72 + 14) = _v17 & 255; *(_v48 + 9213) = _v20 & 255; *(_v48 + 9214) = _v19 & 255; } *(_v48 + 9206) = _v21 & 255; *(_v48 + 9205) = _v23 & 255; *(_v48 + 9207) = _v22 & 255; *(_v48 + 9212) = _v13 & 255; *(_v48 + 9208) = _v16 & 255; *(_v48 + 9209) = _v12 & 255; *(_v48 + 9188) = 0; *(_v48 + 9200) = _v26 & 65535; goto L47; } return 30; } else { return 30; } } } return 30; } return 30; } else { return 30; } } else { return 30; } } if(_v64 == 28) { _v28 = 0; goto L4; } goto L2; } LMpolicy_HCI_Exit_Park_Mode( char __edx, // r3 signed long long __rax // r53 ) {// addr = 0x00466029 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t57; // _t57 long long _t60; // _t60 long long _t78; // _t78 _t60 = __rax; _v32 = _t78; _v36 = __cx; _v40 = __edx; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v16 = _t60; if(_v16 == 0) { return 18; } if(( *(_v16 + 2) & 255) != 1 || ( *(_v32 + 69424) & 255) != 0) { if(( *(_v16 + 2) & 255) != 1) { if(( *(_v16 + 525) & 255) != 0) { DM_Clear_Timer(); *(_v16 + 525) = 0; } if(( *(_v16 + 522) & 255) == 0) { if(( *(_v16 + 4) & 65535) == 8) { L16: *((char*)(_v16 + 524)) = 1; L17: _LMpol_Execute_Unpark_Request(); return 0; } return 12; } *(_v16 + 522) = 0; goto L16; } if(( *(_v16 + 522) & 255) != 0 || ( *(_v16 + 4) & 65535) == 8) { *((char*)(_v16 + 524)) = 2; goto L17; } else { return 12; } } else { return 12; } } LMpolicy_LM_Set_Park_Source( signed char __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00466164 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; if(_v24 != 0) { *(_v24 + 517) = _v28 & 255; if(_v28 != 1) { *(_v24 + 14) = ( *(_v24 + 2) & 255) == 0; return; } *(_v24 + 14) = *(_v24 + 2) & 255; return; } return; } LMpolicy_Set_Park_Source( signed char __edx, // r3 signed long long __rax // r53 ) {// addr = 0x004661B7 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 long long _t18; // _t18 long long _t22; // _t22 _t18 = __rax; _v32 = _t22; _v36 = __cx; _v40 = __edx; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v16 = _t18; if(_v16 != 0) { *(_v16 + 517) = _v40 & 255; return; } return; } LMpolicy_LcCmdCb_Park_Disabled_AFH() {// addr = 0x00466202 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t24; // _t24 long long _t27; // _t27 _v32 = _t24; _v40 = _t27; _v56 = __rcx; _v44 = __al; _v24 = 0; if(_v44 != 0) { } else { _v16 = _v56; LM_Find_Link_Table_Entry_By_LLink(); _v24 = _v40; if(_v24 != 0) { LMpolicy_Send_LMP_Park_Req(); return; } } return; } LMpolicy_LcCmdCb_Slave_Park_Complete() {// addr = 0x0046626B char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t21; // _t21 char _t22; // _t22 long long _t32; // _t32 long long _t34; // _t34 long long _t37; // _t37 _v48 = _t34; _v56 = _t37; _v72 = _t32; _v60 = _t22; _v32 = 0; _v24 = _v72; LM_Find_Link_Table_Entry_By_LLink(); _v32 = _v56; if(_v32 == 0 || ( *(_v32 + 516) & 255) == 28) { return; } else { if(_v60 != 0) { _t21 = 31; } else { _t21 = 0; } _v9 = _t21; LMpolicy_Park_Complete(); return; } } LMpolicy_LcCmdCb_Slave_Unpark_Complete() {// addr = 0x004662F6 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t31; // _t31 char _t38; // _t38 intOrPtr _t47; // _t47 long long _t48; // _t48 long long _t56; // _t56 _unknown_ _t57; // _t57 long long _t59; // _t59 long long _t60; // _t60 _v48 = _t56; _v56 = _t59; _v72 = __rcx; _v60 = _t38; _v32 = 0; _v24 = _v72; _t47 = _v48; _t54 = _t47 + 60216; _t48 = _v56; _t60 = _t48; _t57 = _t47 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v32 = _t48; if(_v32 != 0) { if(_v60 != 0) { _t31 = 31; } else { _t31 = 0; } _v9 = _t31; if(_v9 != 0) { DebugPrint(0, _t48, __rcx, _t54, _t57, _t60); return; } else { if(( *(_v32 + 529) & 255) != 0) { _v10 = 30; } else { _v10 = 29; } *( *((intOrPtr*)( *((intOrPtr*)(_v32 + 432)) + 96)) + 2) = *(_v32 + 531) & 255; LMP_Send_Accepted_Tag_Log_Opcode(0, _v10 & 255, _v48, _v32); return; } } return; } LMpolicy_LMP_Park_Req() {// addr = 0x004663D5 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t109; // _t109 long long _t133; // _t133 long long _t141; // _t141 _v32 = _t133; _v40 = _t141; _v48 = __rdx; _v12 = 0; if(( *(_v32 + 191033) & 1) == 0) { return 26; } if(( *(_v40 + 4) & 65535) != 1) { L6: _v12 = 36; goto L11; } else { if(LMscoctr_Get_Number_SYN_Connections(_v32 + 66256) != 0 || ( *(_v40 + 13) & 255) != ( *(_v40 + 2) & 255) && ( *(_v40 + 8) & 8) == 0) { goto L6; } else { if(( *(_v40 + 10) & 65535) == 25 && ( *(_v40 + 2) & 255) == 0 && ( *(_v40 + 14) & 255) != ( *(_v40 + 13) & 255)) { _v12 = 35; } L11: if(_v12 == 0) { r9d = 25; r8 = _v48; _v12 = LMpolicy_Extract_Park_Parameters( *(_v40 + 2) & 255, *(_v40 + 2) & 0xff); if(_v12 == 0) { LMpolicy_LM_Set_Park_Source(2, _v32, _v40); _t109 = _v40; _t74 = *(_t109 + 2) & 255; if(( *(_t109 + 2) & 255) == 0) { if(( *(_v40 + 6) & 65535) != 0 && ( *(_v32 + 69416) & 65535) > ( *(_v40 + 6) & 65535) >> 2) { *(_v32 + 69416) = ( *(_v40 + 6) & 65535) >> 2; } __ecx = *(_v32 + 69416) & 0xffff; r8 = _v40; _t74 = _LMpolicy_Derive_Park_Parameters( *(_v32 + 69416) & 65535, *(_v32 + 69416) & 0xffff); } LmPolicy_Prepare_Park(_t74); } } if(_v12 != 0) { LMpolicy_Park_Complete(); } return _v12; } } } LMpolicy_Slave_Request_Beacon_Scan() {// addr = 0x004665C4 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 _unknown_ _t49; // _t49 long long _t82; // _t82 long long _t86; // _t86 _v64 = _t82; _v72 = _t86; _v24 = 0; _v48 = _v72 + 516; _v20 = LLINK_ReadPicoClock(_v64, *((intOrPtr*)(_v72 + 432))); _v16 = _v20; _v12 = 4; _v40 = _v12 + _v16; _v24 = _v40 & 0xfc; _v24 = LMdm_Calc_Instance( *(_v64 + 69418) & 0xffff, *(_v64 + 69416) & 0xffff, _v24); _t49 = LLINK_ReadPicoClock(_v64, *((intOrPtr*)(_v72 + 432))); r9d = _v24; r8d = _t49; DebugPrint(0, _v48, __rcx, *((intOrPtr*)(_v72 + 432)), _v64, *((intOrPtr*)(_v72 + 432))); r8d = LMpolicy_LcCmdCb_Slave_Park_Complete; LCCMD_SlaveBeaconScanRequest(); return; } LMpolicy_LC_Event_Handler_Master_Unpark_Slave_Complete() {// addr = 0x004666D1 signed int _v21; // _cfa_ffffffeb signed int _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t166; // _t166 long long _t169; // _t169 long long _t175; // _t175 long long _t187; // _t187 _v64 = _t175; _v72 = _t187; _v80 = _t169; _v48 = 0; _v40 = 0; DebugPrint(0, _v80, _t166, _t169, _t175, _t187); LM_Find_Link_Table_Entry_By_LLink(); _v48 = _v72; if(_v48 != 0) { if(( *(_v48 + 2) & 255) == 0) { _v32 = _v48 + 516; _v40 = *((intOrPtr*)(_v48 + 432)); if(( *(_v80 + 1) & 255) == 0) { L11: return 0; } if(( *(_v32 + 11) & 255) <= 9) { LMpolicy_Free_Ar_Addr(); LMpolicy_Free_Pm_Addr(); LDM_ReleaseUnparkResourceRequest(); *((long long*)(_v48 + 432)) = 0; LINK_PrepareUnPark(); _v40 = _v64; if(_v40 != 0) { *((long long*)(_v48 + 432)) = _v40; if(( *(_v32 + 13) & 255) != 0) { RtlFillMemory(4, 0, &_v24); _v24 = _v24 & 0xfe; _v24 = _v24 & 1 | 60; _v23 = *(_v32 + 17) & 255; _v22 = _v22 & 0xf0 | *( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 8)) + 1) & 0xf; _v22 = _v22 & 0xf; _v21 = *(_v32 + 13) & 255; r8 = &_v24; LCCMD_UnparkSlaveRequest(); } goto L11; } return 31; } LMpolicy_Free_Ar_Addr(); LMpolicy_Free_Pm_Addr(); LDM_ReleaseUnparkResourceRequest(); *((long long*)(_v48 + 432)) = 0; LMpolicy_UnPark_Complete(); return 0; } return 31; } return 31; } LMutils_Alloc_ID_From_Pool( signed long long __rax, // r53 signed long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00466949 signed char _v17; // _cfa_ffffffef signed char _v18; // _cfa_ffffffee signed int _v24; // _cfa_ffffffe8 long long _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t38; // _t38 signed long long _t42; // _t42 __rdi = __rdi; _t42 = __rdx; _t38 = __rax; _v40 = __rdi; _v17 = 0; while(_v17 <= 7) { _v18 = 0; while(_v18 <= 31) { _v24 = 1 << __cl; _t38 = (_t38 << 2) + _v40; if(( *_t38 & _v24) == 0) { *((_t38 << 2) + _v40) = *((_t42 << 2) + _v40) | _v24; return ((_v17 & 255) << 5) + _v18; } _v18 = _v18 + 1; } _v17 = _v17 + 1; } return 0; } LMutils_Free_ID_From_Pool( signed char __esi, // r5 signed int __rax, // r53 signed int __rdx, // r56 long long __rdi // r57 ) {// addr = 0x004669D0 signed char _v17; // _cfa_ffffffef signed int _v18; // _cfa_ffffffee signed int _v24; // _cfa_ffffffe8 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v40 = __rdi; _v44 = __esi; _v18 = (_v44 & 255) >> 5; _v17 = (0 - (_v18 & 255) << 5) + _v44; _v24 = 1 << (_v17 & 255); *((__rax << 2) + _v40) = *((__rdx << 2) + _v40) & !_v24; return _v18 & 255; } LMpolicy_Alloc_Ar_Addr() {// addr = 0x00466A36 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; LMutils_Alloc_ID_From_Pool(_v16 + 69432, __rdx, _v16 + 69432); return; } LMpolicy_Free_Ar_Addr() {// addr = 0x00466A56 long long _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed char _t8; // _t8 long long _t12; // _t12 _v16 = _t12; _v20 = _t8; LMutils_Free_ID_From_Pool(_v20 & 255, __rax, _v16 + 69432, _v16 + 69432); return; } LMpolicy_Alloc_Pm_Addr() {// addr = 0x00466A82 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; LMutils_Alloc_ID_From_Pool(_v16 + 69464, __rdx, _v16 + 69464); return; } LMpolicy_Free_Pm_Addr() {// addr = 0x00466AA2 long long _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed char _t8; // _t8 long long _t12; // _t12 _v16 = _t12; _v20 = _t8; LMutils_Free_ID_From_Pool(_v20 & 255, __rax, _v16 + 69464, _v16 + 69464); return; } LMpolicy_LMP_Set_Broadcast_Scan_Window() {// addr = 0x00466ACE signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t103; // _t103 signed char* _t105; // _t105 long long _t109; // _t109 long long _t113; // _t113 _v32 = _t109; _v40 = _t113; _v48 = _t105; _v24 = _v32 + 69392; _v10 = *_v48 & 255; _v48 = &(_v48[1]); *(_v24 + 17) = (_v10 & 2) >> 1; if(( *(_v40 + 4) & 65535) == 8 && ( *(_v40 + 2) & 255) == 1) { if((_v10 & 1) != 0) { *((short*)(_v32 + 69418)) = casting_uint16(_v48); _v48 = &(_v48[2]); } *(_v32 + 69426) = casting_uint16(_v48); _v52 = *(_v40 + 532) & 0xff; _v9 = ( *(_v32 + 69426) & 0xffff) / _v52; _v64 = _v9 & 255; *__rsp = *(_v40 + 532) & 0xff; r9d = *(_v32 + 69426) & 0xffff; r8d = _v10 & 1; DebugPrint(0, _v32, _t103, _v40, _v48, _t113); LCCMD_SetBroadcastScanWindowRequest(); } return 0; } LMpolicy_LMP_Modify_Beacon() {// addr = 0x00466C15 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t37; // _t37 long long _t39; // _t39 long long _t42; // _t42 _v32 = _t39; _v40 = _t42; _v48 = _t37; _v16 = _v32 + 69392; if(( *(_v40 + 4) & 65535) == 8) { if(( *(_v40 + 2) & 255) != 0) { __edx = *(_v40 + 2) & 0xff; r9d = 28; r8 = _v48; LMpolicy_Extract_Park_Parameters( *(_v40 + 2) & 255, *(_v40 + 2) & 0xff); *((char*)(_v40 + 516)) = 28; LMpolicy_Slave_Request_Beacon_Scan(); return 0; } return 0; } return 0; } LMpolicy_Get_Park_PDU( long long __rdx // r56 ) {// addr = 0x00466CB7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t124; // _t124 _v16 = _t124; _v24 = __rsi; _v32 = __rdx; if(_v24 != 0) { LMutils_Set_Uint16( *(_v16 + 9202) & 0xffff, _v32 + 2); LMutils_Set_Uint16( *(_v16 + 9200) & 0xffff, _v32 + 4); *(_v32 + 1) = *(_v24 + 533) & 255; *(_v32 + 6) = *(_v16 + 9204) & 255; *(_v32 + 7) = *(_v24 + 532) & 255; *(_v32 + 8) = *(_v24 + 529) & 255; *(_v32 + 9) = *(_v24 + 530) & 255; *(_v32 + 10) = *(_v16 + 9213) & 255; *(_v32 + 11) = *(_v16 + 9214) & 255; *(_v32 + 12) = *(_v16 + 9206) & 255; *(_v32 + 13) = *(_v16 + 9205) & 255; *(_v32 + 14) = *(_v16 + 9207) & 255; *(_v32 + 15) = *(_v16 + 9212) & 255; *(_v32 + 16) = *(_v32 + 16) & 0xf0 | *(_v16 + 9208) & 0xf; *(_v32 + 16) = *(_v32 + 16) & 0xf; return 0; } return 3; } LMpolicy_LMP_Unpark_Pmaddr_Accepted_Ack( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00466E1C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; if(_v24 != 0) { LCCMD_BeaconScanCancelRequest(); LMpolicy_UnPark_Complete(); if(( *(_v24 + 4) & 0x4000) != 0) { LMconnection_LM_Disconnect(); *((char*)(_v24 + 87)) = 0; return; } } return; } LMpolicy_LMP_Unpark_Bd_Addr_Req() {// addr = 0x00466EA9 signed int _v9; // _cfa_fffffff7 _unknown_ _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 char _v12; // _cfa_fffffff4 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 _unknown_ _t89; // _t89 signed int _t104; // _t104 signed char* _t166; // _t166 intOrPtr _t168; // _t168 intOrPtr _t170; // _t170 signed char* _t174; // _t174 long long _t177; // _t177 long long _t180; // _t180 _v48 = _t177; _v56 = _t180; _v64 = _t174; _v32 = _v48 + 69392; _v12 = 0; if(( *(_v56 + 4) & 65535) == 8 && ( *(_v56 + 2) & 255) == 1) { _v9 = *_v64 & 255; _v64 = &(_v64[1]); _t175 = _v64; _t181 = _v64; _t178 = ?_? ( &_v24); LMutils_Translate_Byte_Array_to_Bd_Addr( ?_? ( &_v24), _v64); _v11 = _v9 & 7; _t89 = DebugPrint(0, ?_? ( &_v24), __rcx, _v64, &_v24, _v64); if(_v11 != 0) { _t170 = _v48; __rcx = _t170 + 191072; _t181 = _t170 + 191072; _t178 = ?_? ( &_v24); RtlCompareMemory(6, &_v24, _t170 + 191072); _v12 = _t89 == 0; } if(_v12 == 0) { _t104 = (_v9 & 0x70) >> 4; _v11 = _t104; _t166 = _v64; _t175 = &(_t166[6]); _t181 = &(_t166[6]); _t178 = ?_? ( &_v24); LMutils_Translate_Byte_Array_to_Bd_Addr( &_v24, &(_t166[6])); if(_v11 != 0) { _t168 = _v48; __rcx = _t168 + 191072; _t181 = _t168 + 191072; _t178 = ?_? ( &_v24); RtlCompareMemory(6, &_v24, _t168 + 191072); _v12 = _t104 == 0; } } if(( *(_v32 + 10) & 255) != 1 && _v12 != 0) { *(_v32 + 15) = _v11 & 255; *((char*)(_v56 + 529)) = 0; *(_v56 + 524) = 1; *(_v48 + 69400) = 1; *(_v32 + 10) = 1; _t181 = *(_v56 + 432); _t178 = _v48; LCCMD_UnparkRequest(); } r9d = (_v64[1]) & 0xff; r8d = *_v64 & 0xff; _v80 = (_v64[5]) & 0xff; _v88 = (_v64[4]) & 0xff; _v96 = (_v64[3]) & 0xff; *__rsp = (_v64[2]) & 0xff; DebugPrint(0, _v64, __rcx, _t175, _t178, _t181); } return 0; } LMpolicy_LMP_Unpark_Pm_Addr_Req() {// addr = 0x004670FC signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed char _v14; // _cfa_fffffff2 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t104; // _t104 signed char _t110; // _t110 signed char _t122; // _t122 signed char* _t164; // _t164 _v32 = _t162; _v40 = _t164; _v48 = __rdx; _v13 = 0; _v12 = 1; _v11 = 1; if(((_v40[4]) & 65535) != 8 || ((_v40[2]) & 255) != 1) { L36: return 0; } else { _t150 = _v48; _v10 = *_v48 & 255; _v48 = &(_v48[1]); if((_v10 & 1) != 0) { (_v40[0x215]) = (_v10 & 2) >> 1; _t150 = _v48; _t162 = _v48; _t122 = casting_uint16(_v48); __rdx = _v40; (__rdx[0x21e]) = _t122; _v48 = &(_v48[2]); } _v14 = 0; while(_v12 != 0) { _t150 = _v48; _v13 = *_v48 & 7; if(_v13 == 0) { L29: if(_v14 != 0) { if(((_v40[0x20e]) & 255) != 1 && _v14 != 0) { (_v40[0x213]) = _v13 & 255; (_v40[0xe]) = (_v40[0xd]) & 255; if(((_v40[0x20c]) & 255) != 2) { (_v40[0x20c]) = 1; } (_v40[0x20c]) = 1; LCCMD_UnparkRequest(); } goto L36; } DebugPrint(0, _t150, __rcx, __rdx, _t162, _t164); return 0; } _t150 = _v48; _v9 = (_v48[1]) & 255; if(_v9 == 0) { goto L29; } if(_v13 == 0) { L10: _t104 = 0; L11: _v14 = _t104; if(_v14 == 0) { _t150 = _v48; _v13 = ( *_v48 & 0x70) >> 4; if(_v13 == 0) { goto L29; } _t150 = _v48; _v9 = (_v48[2]) & 255; if(_v9 == 0) { goto L29; } if(_v13 == 0) { L18: _t110 = 0; L19: _v14 = _t110; if(_v14 == 0) { _v48 = &(_v48[3]); if(_v11 > 7) { _v12 = 0; } continue; } _v11 = _v11 + 1; r9d = _v9 & 255; r8d = _v13 & 255; DebugPrint(0, _t150, __rcx, __rdx, _t162, _t164); goto L29; } _t150 = _v40; if(((_v40[0x211]) & 255) != _v9) { goto L18; } _t110 = 1; goto L19; } _v11 = _v11 + 1; r9d = _v9 & 255; r8d = _v13 & 255; DebugPrint(0, _t150, __rcx, __rdx, _t162, _t164); goto L29; } _t150 = _v40; if(((_v40[0x211]) & 255) != _v9) { goto L10; } _t104 = 1; goto L11; } goto L29; } } LMpolicy_Park_Link_Accessable( long long __rdi // r57 ) {// addr = 0x00467385 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(( *(_v16 + 4) & 65535) == 8) { if(( *(_v16 + 2) & 255) != 0 || ( *(_v16 + 10) & 65535) == 30 || ( *(_v16 + 10) & 65535) == 29) { goto L5; } else { return 0; } } L5: return 1; } LmPolicy_Park_State_Allowed( _unknown_ __eax // r0 ) {// addr = 0x004673D1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t41; // _t41 _v16 = _t41; _v24 = __rsi; if(_v24 == 0) { return 31; } if(( *(_v24 + 4) & 65535) != 1 || LMscoctr_Get_Number_SYN_Connections(_v16 + 66256) != 0 || ( *(_v24 + 10) & 65535) == 7) { return 12; } else { if(( *(_v16 + 191033) & 1) != 0) { if(( *(_v24 + 41) & 1) != 0) { if(( *(_v24 + 8) & 8) != 0) { return 0; } return 12; } return 26; } return 17; } } _LMpolicy_Derive_Park_Parameters( _unknown_ __eax, // r0 signed short __ecx // r2 ) {// addr = 0x00467480 signed short _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 intOrPtr _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed short _t155; // _t155 intOrPtr _t186; // _t186 intOrPtr _t191; // _t191 intOrPtr _t195; // _t195 long long _t212; // _t212 long long _t214; // _t214 _v32 = _t212; _v40 = _t214; _v56 = r8; _v44 = _t155; _v48 = __ecx; if((_v44 & 65535) == _v48 && (_v48 & 1) != 0) { return 30; } if(( *(_v32 + 69396) & 65535) == 0) { *(_v32 + 69416) = _v48 & 65535; goto L8; } else { if(( *(_v32 + 69416) & 65535) > _v44 || ( *(_v32 + 69416) & 65535) < _v48) { return 30; } else { L8: __rdx = *((intOrPtr*)(_v56 + 432)); *(_v40 + 17) = (LLINK_ReadPicoClock(_v32, __rdx) & 134217728) >> 27; if(( *(_v32 + 69396) & 65535) == 0) { _t186 = _v32; if(( *(_t186 + 69404) & 255) == 0) { *(_v32 + 69418) = 0; *((char*)(_v32 + 69420)) = 2; *(_v32 + 69408) = 8; *(_v32 + 69429) = 1; *(_v32 + 69430) = 0; *(_v32 + 69422) = 48; *(_v32 + 69421) = 8; *(_v32 + 69423) = 1; *((char*)(_v32 + 69428)) = 32; *(_v32 + 69424) = 1; *(_v32 + 69425) = 0; _t186 = _v32; *(_t186 + 69404) = 1; } if(_t186 + 4 < ( *(_v32 + 69424) & 0xff) * ( *(_v32 + 69421) & 0xff) + ( *(_v32 + 69422) & 0xff)) { _t191 = _v32; _v12 = ( *(_t191 + 69424) & 0xff) * ( *(_v32 + 69421) & 0xff); _v10 = 0; if((_v48 & 65535) < (_v12 & 65535) + __rdx + 6) { *(_v32 + 69416) = _t191 + 6; } *(_v32 + 69422) = _v32 - 4; _t195 = _v32; _v60 = *(_t195 + 69408) & 0xff; *((char*)(_v32 + 69420)) = _t195 + 1; *(_v32 + 69404) = 0; } } if(( *(_v32 + 69416) & 65535) <= ( *(_v32 + 69418) & 65535)) { *(_v32 + 69418) = 0; } *(_v40 + 16) = *(_v32 + 69408) & 255; return 0; } } } LmPolicy_Prepare_Park( _unknown_ __eax // r0 ) {// addr = 0x0046771D signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed int _t42; // _t42 signed char _t49; // _t49 long long _t73; // _t73 long long _t82; // _t82 _v32 = _t73; _v40 = _t82; _v44 = _t49; _v9 = 0; if(_v40 != 0) { LMch_Disable_L2CAP_Traffic(); LMpolicy_LM_Set_Park_Source(_v44 & 255, _v32, _v40); *(_v40 + 518) = 0; BTSTS_SetDeviceState(); _t42 = *(_v40 + 2) & 255; if(_t42 != 0) { if(_v44 != 1) { LMP_Send_Accepted_Tag_Log_Opcode( *(_v40 + 13) & 0xff, 25, _v32, _v40); } else { *(_v40 + 529) = 1; *(_v40 + 530) = 1; LMpolicy_Send_LMP_Park_Req(); } } else { LMpolicy_Alloc_Pm_Addr(); *(_v40 + 529) = _t42; LMpolicy_Alloc_Ar_Addr(); *(_v40 + 530) = _t42; *(_v40 + 522) = 1; _v9 = LMafh_Inactivate_AFH(_v32); } return _v9 & 255; } return 31; } LmPolicy_HCI_Enter_Park_State( _unknown_ __eax, // r0 signed long long __rax // r53 ) {// addr = 0x0046784E intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 _unknown_ _t41; // _t41 signed short _t52; // _t52 signed int _t54; // _t54 signed short _t57; // _t57 long long _t59; // _t59 intOrPtr _t61; // _t61 intOrPtr _t65; // _t65 long long _t70; // _t70 _t59 = __rax; _v32 = _t70; _v36 = _t57; _v40 = _t54; _v44 = _t52; _v12 = 0; _t41 = LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v24 = _t59; if(_v24 != 0) { _v12 = LmPolicy_Park_State_Allowed(_t41); if(_v12 == 0) { _t61 = _v24; _t43 = *(_t61 + 6) & 65535; if(( *(_t61 + 6) & 65535) == 0) { L9: r8 = _v24; _v12 = _LMpolicy_Derive_Park_Parameters(_t43, _v44 & 65535); if(_v12 == 0) { _v12 = LmPolicy_Prepare_Park(_t44); return _v12; } return _v12; } _t65 = _v24; _t43 = *(_t65 + 6) & 65535; if(( *(_t65 + 6) & 65535) >= _v40) { goto L9; } if(( *(_v24 + 6) & 65535) >= _v44) { _t43 = _v44 & 65535; _v40 = _v44 & 65535; goto L9; } return 18; } return _v12; } return 18; } LDM_ReleaseUnparkResourceRequest() {// addr = 0x0046794D signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t29; // _t29 _v32 = _t26; _v40 = _t29; _v9 = 0; if(_v40 != 0) { if( *((intOrPtr*)(_v40 + 88)) != 0) { LINK_Delete(_v32, *((intOrPtr*)(_v40 + 88))); } LINK_Delete(_v32, _v40); _v9 = 1; } return _v9 & 255; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x004679AC signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00467A02 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LMdm_Read_Local_Slot_Offset( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00467B43 signed short _v12; // _cfa_fffffff4 signed short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t25; // _t25 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t25 = *( *((intOrPtr*)( *((intOrPtr*)(_v40 + 104)) + 16)) + 2) & 255; if(_t25 != 0) { _v12 = 0; if((_t25 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } return _v24 & 0x7ff; } LMpolicy_LC_Switch_Role_CB() {// addr = 0x00467BE1 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 _unknown_ _t53; // _t53 intOrPtr _t54; // _t54 long long _t55; // _t55 long long _t62; // _t62 _unknown_ _t65; // _t65 long long _t68; // _t68 _unknown_ _t69; // _t69 long long _t71; // _t71 long long _t72; // _t72 _v32 = _t68; _v40 = _t71; _v56 = _t62; _v44 = _t34; if(_v44 != 0) { DebugPrint(0, _t53, _t62, _t65, _t68, _t71); } if(_v40 == 0) { DebugPrint(0, _t53, _t62, _t65, _t68, _t71); return; } _t54 = _v32; _t66 = _t54 + 60216; _t55 = _v40; _t72 = _t55; _t69 = _t54 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _t55; if(_v16 == 0) { DebugPrint(0, _t55, _t62, _t66, _t69, _t72); return; } if(( *(_v16 + 1) & 255) == 0) { DebugPrint(0, _v16, _v16, _t66, _t69, _t72); return; } if( *((intOrPtr*)(_v16 + 72)) != 0) { r8 = *((intOrPtr*)(_v16 + 72)); r8(); return; } return; } LMpolicy_LM_Timeout_CB() {// addr = 0x00467CE4 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t41; // _t41 long long _t43; // _t43 _v32 = _t41; _v40 = _t43; _v16 = _v40; if(_v16 == 0) { DebugPrint(0, _v16, _v16, __rdx, _t41, _t43); return; } if(( *(_v16 + 1) & 255) == 0) { DebugPrint(0, _v16, _v16, __rdx, _t41, _t43); return; } if( *((intOrPtr*)(_v16 + 72)) != 0) { r8 = *((intOrPtr*)(_v16 + 72)); r8(); return; } return; } LMpolicy_Get_Minimum_SwitchClock( _unknown_ __eax // r0 ) {// addr = 0x00467D82 intOrPtr _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 intOrPtr _t77; // _t77 long long _t79; // _t79 long long _t81; // _t81 _v64 = _t79; _v72 = _t81; _v36 = LLINK_ReadPicoClock(_v64, *((intOrPtr*)(_v72 + 432))); _v28 = _v36; _v36 = _v28 & 252; _v32 = ( *(_v72 + 56) & 0xffff) + ( *(_v72 + 56) & 0xffff); _t77 = _v72; if(( *(_t77 + 2) & 255) != 0) { if(_v32 <= 31) { _v32 = 32; } _v16 = _v36; _v12 = (( *(_v72 + 56) & 0xffff) << 4) + 8; _v40 = _v12 + _v16; _v36 = _v40 & 268435455; } else { if(_v32 <= 31) { _v32 = 32; } _v24 = _v36; _v20 = _t77 + _t77; _v56 = _v20 + _v24; _v36 = _v56 & 268435455; _v36 = _v36 + 512; } return _v36; } LMpolicy_Validate_MSS_Admission() {// addr = 0x00467E5A intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t113; // _t113 intOrPtr _t151; // _t151 intOrPtr _t153; // _t153 intOrPtr _t154; // _t154 _unknown_ _t167; // _t167 long long _t171; // _t171 _v32 = _t171; _v40 = __rsi; _v44 = _t113; _v12 = 0; _t143 = _v32; if(( *(_v32 + 191032) & 0x20) != 0) { _t144 = _v40; if(( *(_v40 + 40) & 8) == 0) { L4: DebugPrint(0, _t144, __rcx, _t167, _t171, __rsi); _v12 = 33; goto L26; } _t144 = _v40; if(( *(_v40 + 40) & 0x20) != 0) { _t172 = _v32 + 191308; if(BTSTS_CheckDeviceState(64, _v32 + 191308) == 0) { if(( *(_v40 + 4) & 65535) != 1) { L10: if(( *(_v40 + 61) & 255) == 0) { if(( *(_v40 + 4) & 0xe) == 0) { if(( *(_v40 + 4) & 0x7000) == 0) { _t151 = _v40; _t152 = *((intOrPtr*)(_t151 + 776)); _t169 = _v40 + 776; if( *((intOrPtr*)(_t151 + 776)) != _v40 + 776) { L18: DebugPrint(0, _t152, __rcx, _t169, _t172, __rsi); _v12 = 33; goto L26; } _t153 = _v40; _t152 = *((intOrPtr*)(_t153 + 784)); _t169 = _v40 + 776; if( *((intOrPtr*)(_t153 + 784)) == _v40 + 776) { _t154 = _v40; _t80 = *(_t154 + 2) & 255; if(( *(_t154 + 2) & 255) != 0) { _v12 = 0; goto L26; } if(_v44 != 0 || LMconfig_LM_Check_Sctnet_Slv_State(_t80) == 0) { if(_v44 != 1 || LMconfig_LM_Check_Sctnet_Slv_State(_t80) != 2) { goto L26; } else { goto L24; } } else { L24: LMconfig_LM_Check_Sctnet_Slv_State(_t81); DebugPrint(0, _v32 + 191308, __rcx, _t169, _v32 + 191308, __rsi); _v12 = 33; goto L26; } } goto L18; } r8d = *(_v40 + 10) & 0xffff; DebugPrint(0, _v40, __rcx, _t167, _t172, __rsi); _v12 = 12; goto L26; } DebugPrint(0, _v40, __rcx, _t167, _t172, __rsi); _v12 = 12; goto L26; } DebugPrint(0, _v40, __rcx, _t167, _t172, __rsi); _v12 = 12; goto L26; } _t165 = _v40; if(( *(_v40 + 8) & 1) != 0) { goto L10; } DebugPrint(0, _t165, __rcx, _t167, _t172, __rsi); _v12 = 33; goto L26; } DebugPrint(0, _v32, __rcx, _t167, _t172, __rsi); _v12 = 50; goto L26; } goto L4; } else { DebugPrint(0, _t143, __rcx, _t167, _t171, __rsi); _v12 = 17; L26: return; } } LMpolicy_LM_Switch_Role() {// addr = 0x00468142 char _v9; // _cfa_fffffff7 char _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 _unknown_ _t81; // _t81 char _t99; // _t99 _unknown_ _t166; // _t166 long long _t172; // _t172 intOrPtr _t181; // _t181 long long _t186; // _t186 intOrPtr _t190; // _t190 _v48 = _t172; _v56 = _t186; _v60 = _t99; _v24 = 2059; _t81 = LM_Find_Link_Table_Entry(); _v32 = _v56; if(_v32 == 0) { _v16 = 2; EG_Generate_Command_Status_Event(); } else { _t149 = _v32; LMpolicy_Validate_MSS_Admission(); if(_t81 == 0) { _t190 = _v32; LMsec_MssCheckSecurityAdmission(); if(_t81 != 0) { if(( *(_v32 + 2) & 255) == _v60) { _v16 = 0; EG_Generate_Command_Status_Event(); r8 = _v32 + 2; EG_Event_Composer(0); } else { if( *((intOrPtr*)(_v32 + 72)) != 0) { r8 = *((intOrPtr*)(_v32 + 72)); r8(); } _v16 = 0; EG_Generate_Command_Status_Event(); } } else { if(_v60 != 0) { _t166 = _v32 + 424; _t135 = _v48; _t181 = _v48; _v9 = LMTask_NewHostSwitchToSlave(); } else { _t166 = _v32 + 424; _t135 = _v48; _t181 = _v48; _v9 = LMTask_NewHostSwitchToMaster(); } if(_v9 == 255) { DebugPrint(0, _t135, _t149, _t166, _t181, _t190); _v16 = 42; EG_Generate_Command_Status_Event(); } else { _v16 = 0; EG_Generate_Command_Status_Event(); DebugPrint(0, ?_? ( &_v16), _v48 + 190168, &_v24, _v48 + 190168, &_v16); } } } else { _v16 = 0; EG_Generate_Command_Status_Event(); _v16 = 53; r8 = _v32 + 2; EG_Event_Composer(0); } } return; } LMpolicy_LM_Switch_Req() {// addr = 0x004683F9 unsigned int _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed short _t51; // _t51 long long _t93; // _t93 long long _t102; // _t102 _v48 = _t93; _v56 = _t102; if(( *(_v56 + 2) & 255) == 1) { _t51 = LMdm_Read_Local_Slot_Offset(_v48, *((intOrPtr*)(_v56 + 432))); r9 = _v48 + 191072; r8d = _t51 & 65535; LMP_Send_Slot_Offset(); } _v28 = LMpolicy_Get_Minimum_SwitchClock(LMch_Disable_L2CAP_Traffic()); *(_v56 + 68) = _v28 >> 1; *((char*)(_v56 + 62)) = DM_Set_Timer(); r8d = *(_v56 + 68); LMP_Send_Switch_Req(); return; } LMpolicy_LM_Handle_LC_Role_Event() {// addr = 0x00468533 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t104; // _t104 long long _t111; // _t111 long long _t124; // _t124 _v32 = _t111; _v40 = _t124; _v48 = _t104; _v16 = 0; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _v40; if(_v16 == 0) { return; } if(( *(_v48 + 1) & 255) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v48 + 8))); LCCMD_LinkDeleteRequest(); if(( *(_v16 + 2) & 255) == 0) { LMconfig_LM_Sctnet_State_Remove_S(); } goto L9; } else { LLINK_ReadPicoClock(_v32, _v40); LCCMD_LinkDeleteRequest(); *((long long*)(_v16 + 432)) = *((intOrPtr*)(_v48 + 8)); if(( *(_v16 + 2) & 255) == 0) { *((intOrPtr*)(_v16 + 440)) = casting_uint32(_v48 + 3); } if(( *(_v16 + 2) & 255) == 1) { LMconfig_LM_Sctnet_State_Remove_S(); } L9: if(LMsec_Fsm_Mss_Callback_Enc_Admission_Check(_v32, _v16) == 0) { LMch_Enable_L2CAP_Traffic(); } if(( *(_v48 + 1) & 255) != 0) { r8 = *((intOrPtr*)(_v16 + 72)); r8(); } else { r8 = *((intOrPtr*)(_v16 + 72)); r8(); } return; } } LMpolicy_Switch_Complete_Success() {// addr = 0x004686E7 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t231; // _t231 long long _t247; // _t247 _v32 = _t231; _v40 = _t247; _v24 = _v40; _v10 = 0; _v9 = 0; _v11 = 0; ShowSecurityStatus(); *(_v24 + 15) = ( *(_v24 + 15) & 255) == 0; *((short*)(_v24 + 56)) = 40; *((short*)(_v24 + 6)) = 32000; if(( *(_v24 + 2) & 255) != 0) { *(_v24 + 2) = 0; *((char*)(_v32 + 60222)) = _v32 - 1; *((char*)(_v32 + 60223)) = _v32 + 1; LCCMD_SetSupervisionTimeoutRequest(); if(( *(_v24 + 4) & 65535) == 1) { _v10 = 1; } else { *(_v24 + 14) = 0; r8d = 51; LMP_Send_Accepted(); *(_v24 + 14) = 0; if(( *(_v32 + 65880) & 255) != 1 || LMssp_SSP_Enabled_On_Link(_v32, _v24) != 0) { LMconnection_Local_Setup_Complete(); } else { LMsec_core_Init_Authentication(); *(_v24 + 4) = 256; } } } else { *(_v24 + 2) = 1; *((char*)(_v32 + 60223)) = _v32 - 1; *((char*)(_v32 + 60222)) = _v32 + 1; LCCMD_SetSupervisionTimeoutRequest(); } LMbw_Adjust_Link_Priority(); if(LMsec_Fsm_Mss_Callback_Enc_Admission_Check(_v32, _v24) != 1) { if(( *(_v24 + 2) & 255) != 0) { LMafh_Deactivate_AFH(); } else { if(_v10 != 0) { LMafh_Activate_AFH(_v32); } } *(_v24 + 64) = 0; LMqos_Restore_Packet_Type_After_Role_Switch(); if(( *(_v24 + 4) & 65535) == 1) { r8d = 0; LMP_Send_L2Cap_Flow(); } r8 = _v24 + 2; EG_Event_Composer(0); _v9 = 1; } else { LMsec_Fsm_Event_Callback(); } return; } LMpolicy_Switch_Complete_Failure() {// addr = 0x00468A06 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t133; // _t133 long long _t143; // _t143 _v32 = _t133; _v40 = _t143; _v9 = 0; _v24 = _v40; _v10 = 53; if(( *(_v24 + 2) & 255) == 1) { if(( *(_v24 + 4) & 65535) == 1) { LMafh_Start_Classification_Reporting( *(_v24 + 84) & 65535, _v32); } else { r8d = 51; LMP_Send_Accepted(); if(( *(_v32 + 65880) & 255) != 1 || LMssp_SSP_Enabled_On_Link(_v32, _v24) != 0) { LMconnection_Local_Setup_Complete(); } else { LMsec_core_Init_Authentication(); *(_v24 + 4) = 256; } } } if(LMsec_Fsm_Mss_Callback_Enc_Admission_Check(_v32, _v24) != 1) { if(( *(_v24 + 4) & 65535) != 1) { *((char*)(_v24 + 64)) = 0; _v9 = 1; } else { *((char*)(_v24 + 64)) = 0; r8d = 0; LMP_Send_L2Cap_Flow(); r8 = _v24 + 2; EG_Event_Composer(0); _v9 = 1; } } else { LMsec_Fsm_Event_Callback(); } return; } LMpolicy_Switch_Complete_Event() {// addr = 0x00468BE4 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed char _t67; // _t67 signed char _t85; // _t85 intOrPtr _t90; // _t90 long long _t147; // _t147 long long _t156; // _t156 _v32 = _t147; _v40 = _t156; _v44 = _t90; if(( *(_v40 + 61) & 255) != 17) { _t67 = 53; } else { _t67 = 0; } _v9 = _t67; if((_v9 & 255) == 0) { if(_v44 != 0) { _t85 = 53; } else { _t85 = 0; } _v9 = _t85; } LMch_Enable_L2CAP_Traffic(); if(( *(_v40 + 2) & 255) != 0) { if(( *(_v40 + 2) & 255) == 1 && ( *(_v40 + 4) & 65535) == 1) { r8d = 0; LMP_Send_L2Cap_Flow(); } } else { if(( *(_v40 + 4) & 65535) == 1) { r8d = 0; LMP_Send_L2Cap_Flow(); if(( *(_v40 + 61) & 255) == 17) { LMafh_Activate_AFH(_v32); } } } LMqos_Restore_Packet_Type_After_Role_Switch(); *(_v40 + 64) = 0; if( *((intOrPtr*)(_v40 + 72)) != 0) { r8 = *((intOrPtr*)(_v40 + 72)); r8(); } if((_v9 & 255) == 0 || (_v9 & 255) != 0 && ( *(_v40 + 4) & 65535) == 1) { r8 = _v40 + 2; EG_Event_Composer(0); if(_v44 != 34) { goto L22; } else { *((char*)(_v40 + 92)) = 34; LMconnection_Disconnect_Related_Links(); return; } } L22: return; } LMPolicy_RoleSwitch_SS_PageScanCancelCB() {// addr = 0x00468DE1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 intOrPtr _t52; // _t52 long long _t59; // _t59 long long _t61; // _t61 long long _t65; // _t65 _v32 = _t61; _v40 = _t65; _v56 = _t59; _v44 = _t34; _v24 = _v32 + 54760; _v16 = *((intOrPtr*)(_v24 + 16)); __esi = 32; if(BTSTS_CheckDeviceState(32, _v32 + 191308) == 0) { L4: *(_v16 + 14) = *(_v16 + 13) & 255; LM_Encode_LMP_Not_Accepted_PDU(_v32 + 60216); L5: *((char*)(_v24 + 10)) = 0; return; } _t52 = _v24; _t33 = *(_t52 + 10) & 255; if(( *(_t52 + 10) & 255) != 1) { goto L4; } if( *((intOrPtr*)(_v16 + 72)) != 0) { r8 = *((intOrPtr*)(_v16 + 72)); _t33 = *(_v24 + 11) & 255; r8(); } goto L5; } LMpolicy_LMP_Switch_Req() {// addr = 0x00468EAD signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 intOrPtr _v56; // _cfa_ffffffc8 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed char _t84; // _t84 signed int _t93; // _t93 signed char _t97; // _t97 intOrPtr _t150; // _t150 intOrPtr _t151; // _t151 long long _t170; // _t170 long long _t175; // _t175 intOrPtr _t179; // _t179 long long _t185; // _t185 intOrPtr _t188; // _t188 _v80 = _t175; _v88 = _t185; _v96 = _t170; _v40 = 0; _v36 = LLINK_ReadPicoClock(_v80, *((intOrPtr*)(_v88 + 432))); _v32 = _v36; _v28 = _v32; _v24 = 4; _v72 = _v24 + _v28; _v36 = _v72 & 0xfc; _t84 = casting_uint32(_v96); _v44 = _t84; _t168 = _v88; LMpolicy_Validate_MSS_Admission(); _v40 = _t84; if(_v40 != 0) { L19: return _v40; } _t172 = _v88; _t148 = _v80; _t188 = _v88; _t179 = _v80; LMsec_MssCheckSecurityAdmission(); if(_t84 != 0) { _t149 = _v88; if(( *(_v88 + 116) & 255) != 1) { _v20 = _v44 + _v44; _v16 = _v36; _v56 = _v20 - _v16; _t93 = _v56 == 0; _v11 = _t93; _t150 = _v56; _v10 = (_t93 & 268435455) >> 27; if((_v11 & 255) != 0 || (_v10 & 255) != 0) { _t97 = 1; } else { _t97 = 0; } _v9 = _t97; if((_v9 & 255) == 0) { _t151 = _v88; _t99 = *(_t151 + 2) & 255; if(( *(_t151 + 2) & 255) != 0 || LMconfig_LM_Check_Sctnet_Slv_State(_t99) != 1 || ( *(_v80 + 190504) & 2) == 0) { L16: if( *((intOrPtr*)(_v88 + 72)) != 0) { r8 = *((intOrPtr*)(_v88 + 72)); r8(); } _v40 = 0; goto L19; } else { _t160 = _v80 + 191308; _t182 = _v80 + 191308; if(BTSTS_CheckDeviceState(32, _v80 + 191308) != 0) { goto L16; } DebugPrint(0, _t160, _t168, _t172, _t182, _t188); BTSTS_SetDeviceState(); LCCMD_PageScanCancelRequest(); *(_v80 + 54770) = 1; *((long long*)(_v80 + 54776)) = _v88; *(_v80 + 54771) = 1; *(_v80 + 54784) = _v44; return 0; } } else { r8d = _v36; DebugPrint(0, _t150, _t168, _t172, _t179, _t188); _v40 = 36; goto L19; } } else { DebugPrint(0, _t149, _t168, _t172, _t179, _t188); _v40 = 33; goto L19; } } else { DebugPrint(0, _t148, _t168, _t172, _t179, _t188); _v40 = 33; goto L19; } } LMpolicy_Handle_InterError( _unknown_ __eax // r0 ) {// addr = 0x00469156 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t20; // _t20 long long _t36; // _t36 long long _t42; // _t42 _v32 = _t36; _v40 = _t42; if(( *(_v40 + 2) & 255) == 0) { LMconfig_LM_Sctnet_State_Remove_S(); } _t20 = LMsec_Fsm_Mss_Callback_Enc_Admission_Check(_v32, _v40); if(_t20 == 0) { _t20 = LMch_Enable_L2CAP_Traffic(); } BTSTS_ClearDeviceState(); LMpolicy_Switch_Complete_Failure(); _v9 = _t20; if(_v9 == 0) { _v10 = 18; } else { _v10 = 0; } return _v10 & 255; } LMpolicy_LMP_Accpt_Switch_BB_Ack( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004691F8 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; if( *((intOrPtr*)(_v24 + 72)) != 0) { r8 = *((intOrPtr*)(_v24 + 72)); r8(); return; } return; } LMpolicy_RoleSwitch_Initailize( long long __rdi // r57 ) {// addr = 0x00469237 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 60)) = 0; *((char*)(_v16 + 61)) = 0; *((char*)(_v16 + 62)) = 0; *((char*)(_v16 + 63)) = 0; *((intOrPtr*)(_v16 + 68)) = 0; *((char*)(_v16 + 64)) = 0; *((long long*)(_v16 + 72)) = MssState_Idle_Event_Handler; return; } MssState_Idle_Event_Handler() {// addr = 0x00469280 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 unsigned int _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 signed long long _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t159; // _t159 signed short _t180; // _t180 char _t199; // _t199 signed long long _t236; // _t236 signed long long _t271; // _t271 intOrPtr _t304; // _t304 signed long long _t315; // _t315 signed long long _t334; // _t334 _v48 = _t315; _v56 = _t334; _v72 = _t302; _v60 = _t199; _v25 = 0; _v27 = 0; _v26 = 0; if(_v60 != 0 && _v60 != 1) { return; } if(( *(_v56 + 61) & 255) == 0) { if(_v60 != 0) { if(_v60 == 1) { *(_v56 + 14) = *(_v56 + 13) & 255; LMch_Disable_L2CAP_Traffic(); if(( *(_v56 + 4) & 65535) == 1) { _t302 = _v56; LMbw_Adjust_Link_Priority(); } if(( *(_v56 + 2) & 255) != 0) { _t159 = LMdm_Read_Local_Slot_Offset(_v48, *((intOrPtr*)(_v56 + 432))); r9 = _v48 + 191072; r8d = _t159 & 65535; LMP_Send_Slot_Offset(); } _t334 = _v48; *__rsp = LMpolicy_LMP_Accpt_Switch_BB_Ack; r9d = 27; r8d = 19; LMP_Send_Accepted_Tag( *((intOrPtr*)(_v56 + 432))); *(_v56 + 68) = *_v72; if(( *(_v56 + 2) & 255) == 0) { LMconfig_LM_Sctnet_State_Add_S(); } _t315 = _v48 + 191308; BTSTS_SetDeviceState(); _v26 = 2; _v27 = 5; } L24: *(_v56 + 60) = _v26 & 255; _t236 = _v56; *(_t236 + 61) = _v27 & 255; *((long long*)(_v56 + 72)) = *((intOrPtr*)(_t236 * 8 + &MssStateTable)); r9d = _v27 & 255; r8d = _v25 & 255; DebugPrint(0, _v56, _t302, *((intOrPtr*)(_t236 * 8 + &MssStateTable)), _t315, _t334); return; } *(_v56 + 15) = *(_v56 + 2) & 255; *(_v56 + 14) = *(_v56 + 15) & 255; if(( *(_v56 + 4) & 65535) == 1) { _t334 = _v56; LMbw_Adjust_Link_Priority(); _t304 = *((intOrPtr*)( *((intOrPtr*)(_v56 + 432)) + 48)); _t302 = _v48; _t315 = _v48 + 60216; r8d = 0; LMP_Send_L2Cap_Flow(); } _t269 = _v56; if(( *(_v56 + 116) & 255) == 0) { DebugPrint(0, _t269, _t302, _t304, _t315, _t334); LMch_Disable_L2CAP_Traffic(); _t271 = _v56; _t170 = *(_t271 + 2) & 255; if(( *(_t271 + 2) & 255) == 1) { _t180 = LMdm_Read_Local_Slot_Offset(_v48, *((intOrPtr*)(_v56 + 432))); r9 = _v48 + 191072; r8d = _t180 & 65535; _t170 = LMP_Send_Slot_Offset(); } _t334 = _v56; _v32 = LMpolicy_Get_Minimum_SwitchClock(_t170); *(_v56 + 68) = _v32 >> 1; _t302 = _v56; *((char*)(_v56 + 62)) = DM_Set_Timer(); r8d = *(_v56 + 68); LMP_Send_Switch_Req(); } else { _t334 = _v56; LMsec_Fsm_Event_Callback(); } if(( *(_v56 + 2) & 255) == 0) { LMconfig_LM_Sctnet_State_Add_S(); } _t315 = _v48 + 191308; BTSTS_SetDeviceState(); _v26 = 1; _v27 = 1; goto L24; } else { return; } } MssState_LocalInitPend_Event_Handler() {// addr = 0x004696DB char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 char _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v56; // _cfa_ffffffc8 intOrPtr _v72; // _cfa_ffffffb8 signed long long _v80; // _cfa_ffffffb0 signed long long _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 signed long long _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed int _t250; // _t250 signed int _t302; // _t302 signed char _t306; // _t306 _unknown_ _t311; // _t311 _unknown_ _t318; // _t318 signed int _t329; // _t329 signed int _t333; // _t333 _unknown_ _t338; // _t338 _unknown_ _t345; // _t345 signed char _t372; // _t372 signed long long _t437; // _t437 signed long long _t495; // _t495 signed long long _t509; // _t509 signed long long _t551; // _t551 signed long long _t554; // _t554 signed long long _t580; // _t580 _v80 = _t551; _v88 = _t580; _v104 = _t522; _v92 = _t372; _v12 = 0; _v11 = *(_v88 + 61) & 255; _v10 = _v11 & 255; _t250 = _v92 & 255; if(_t250 == 3) { DM_Clear_Timer(); *(_v88 + 62) = 0; if(( *(_v88 + 4) & 65535) == 1) { _t522 = _v80; r8d = 0; LMP_Send_L2Cap_Flow(); } _t581 = _v88; if(LMsec_Fsm_Mss_Callback_Enc_Admission_Check(_v80, _v88) != 1) { if(( *(_v88 + 4) & 65535) == 1) { if(( *(_v88 + 4) & 65535) == 1) { LMbw_Adjust_Link_Priority(); _t581 = _v88; LMch_Enable_L2CAP_Traffic(); _v16 = 53; r8 = _v88 + 2; _t522 = _v88 + 424; EG_Event_Composer(0); _v11 = 0; } } else { _t581 = _v88; LMch_Enable_L2CAP_Traffic(); if(( *(_v88 + 2) & 255) == 1) { if(( *(_v80 + 65880) & 255) != 1 || LMssp_SSP_Enabled_On_Link(_v80, _v88) != 0) { _t522 = _v80; r8d = 51; LMP_Send_Accepted(); _t581 = _v88; LMconnection_Local_Setup_Complete(); } else { _t581 = _v88; LMsec_core_Init_Authentication(); *(_v88 + 4) = 256; } } _v11 = 0; } } else { _t581 = _v88; LMsec_Fsm_Event_Callback(); _v11 = 18; } _t554 = _v80 + 191308; BTSTS_ClearDeviceState(); _v12 = 1; L54: _t437 = _v88; *(_t437 + 61) = _v11 & 255; *((long long*)(_v88 + 72)) = *((intOrPtr*)(_t437 * 8 + &MssStateTable)); r9d = _v11 & 255; r8d = _v10 & 255; DebugPrint(0, _v88, _t522, *((intOrPtr*)(_t437 * 8 + &MssStateTable)), _t554, _t581); return; } if(_t250 == 5) { *(_v88 + 62) = 0; if(( *(_v88 + 4) & 65535) == 1) { _t522 = _v80; r8d = 0; LMP_Send_L2Cap_Flow(); } _t581 = _v88; if(LMsec_Fsm_Mss_Callback_Enc_Admission_Check(_v80, _v88) != 1) { if(( *(_v88 + 4) & 65535) == 1) { if(( *(_v88 + 4) & 65535) == 1) { LMbw_Adjust_Link_Priority(); _t581 = _v88; LMch_Enable_L2CAP_Traffic(); _v16 = 53; r8 = _v88 + 2; _t522 = _v88 + 424; EG_Event_Composer(0); _v11 = 0; } } else { _t581 = _v88; LMch_Enable_L2CAP_Traffic(); if(( *(_v88 + 2) & 255) == 1) { if(( *(_v80 + 65880) & 255) != 1 || LMssp_SSP_Enabled_On_Link(_v80, _v88) != 0) { _t522 = _v80; r8d = 51; LMP_Send_Accepted(); _t581 = _v88; LMconnection_Local_Setup_Complete(); } else { _t581 = _v88; LMsec_core_Init_Authentication(); *(_v88 + 4) = 256; } } _v11 = 0; } } else { _t581 = _v88; LMsec_Fsm_Event_Callback(); _v11 = 18; } _t554 = _v80 + 191308; BTSTS_ClearDeviceState(); _v12 = 1; goto L54; } if(_t250 != 2) { goto L54; } DM_Clear_Timer(); *(_v88 + 62) = 0; if(( *(_v88 + 2) & 255) != 0) { LMafh_Stop_Classification_Reporting(); _t495 = _v88; _t545 = *((intOrPtr*)(_t495 + 432)); _t587 = *((intOrPtr*)(_t495 + 432)); _t578 = _v80; _v40 = LLINK_ReadPicoClock(_v80, *((intOrPtr*)(_t495 + 432))); _v36 = *((intOrPtr*)(_v88 + 68)) + *((intOrPtr*)(_v88 + 68)); _v24 = _v36; _v20 = _v40; _v56 = _v24 - _v20; _t302 = _v56 == 0; _v13 = _t302; _v14 = (_t302 & 268435455) >> 27; if((_v13 & 255) != 0 || (_v14 & 255) != 0) { _t306 = 1; } else { _t306 = 0; } _v15 = _t306; if((_v15 & 255) != 0) { r9d = _v40; r8d = _v36; _t311 = DebugPrint(0, *(_v88 + 432), _t522, _t545, _t578, _t587); _t581 = _v88; _t554 = _v80; _v11 = LMpolicy_Handle_InterError(_t311); } else { _t581 = *(_v88 + 432); _t554 = _v80; _v9 = LCCMD_SwitchToMasterRequest(); if(_v9 == 0) { _t318 = DebugPrint(0, *(_v88 + 432), _t522, _t545, _t554, _t581); _t581 = _v88; _t554 = _v80; _v11 = LMpolicy_Handle_InterError(_t318); } else { _v11 = 9; } } L22: if(( *(_v88 + 4) & 65535) == 1) { _t522 = _v88; _t581 = _v88; _t554 = _v80; LMbw_Adjust_Link_Priority(); } _v12 = 1; goto L54; } _t509 = _v88; _t548 = *((intOrPtr*)(_t509 + 432)); _t588 = *((intOrPtr*)(_t509 + 432)); _t579 = _v80; _v40 = LLINK_ReadPicoClock(_v80, *((intOrPtr*)(_t509 + 432))); _v36 = *((intOrPtr*)(_v88 + 68)) + *((intOrPtr*)(_v88 + 68)); _v32 = _v36; _v28 = _v40; _v72 = _v32 - _v28; _t329 = _v72 == 0; _v15 = _t329; _v14 = (_t329 & 268435455) >> 27; if((_v15 & 255) != 0) { L6: _t333 = 1; L8: _v13 = _t333; if((_v13 & 255) != 0) { r9d = _v40; r8d = _v36; _t338 = DebugPrint(0, *(_v88 + 432), _t522, _t548, _t579, _t588); _t581 = _v88; _t554 = _v80; _v11 = LMpolicy_Handle_InterError(_t338); } else { _t581 = *(_v88 + 432); r8d = LMpolicy_LC_Switch_Role_CB; _t554 = _v80; _v9 = LCCMD_SwitchToSlaveRequest(); if(_v9 == 0) { _t345 = DebugPrint(0, *(_v88 + 432), _t522, _t548, _t554, _t581); _t581 = _v88; _t554 = _v80; _v11 = LMpolicy_Handle_InterError(_t345); } else { _v11 = 9; } } goto L22; } if((_v14 & 255) == 0) { _t333 = 0; goto L8; } goto L6; } MssState_LocalInitPendHostCancel_Event_Handler() {// addr = 0x00469EC9 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t37; // _t37 signed char _t46; // _t46 signed long long _t61; // _t61 long long _t66; // _t66 long long _t68; // _t68 _unknown_ _t70; // _t70 signed long long _t72; // _t72 signed long long _t73; // _t73 _v32 = _t68; _v40 = _t72; _v56 = _t66; _v44 = _t46; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t37 = _v44 & 255; if(_t37 == 2) { _t67 = _v40; _t73 = _v40; LMconnection_Send_LMP_Detach(); _t70 = _v32 + 191308; BTSTS_ClearDeviceState(); _v10 = 0; _v11 = 1; } else { if(_t37 == 3) { _t67 = _v40; _t73 = _v40; LMconnection_Send_LMP_Detach(); _t70 = _v32 + 191308; BTSTS_ClearDeviceState(); _v10 = 0; _v11 = 1; } else { } } _t61 = _v40; *(_t61 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t61 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, _t67, __rdx, _t70, _t73); return _v11 & 255; } Mssstate_LocalInitPendPeerDetach_Event_Handler() {// addr = 0x00469FCF signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 signed long long _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t34; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t39 = _v40; *(_t39 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t39 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return _v11 & 255; } MssState_LocalInitPendLSTO_Event_Handler() {// addr = 0x0046A052 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 signed long long _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t34; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t39 = _v40; *(_t39 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t39 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return _v11 & 255; } MssState_PeerInitPend_Event_Handler( _unknown_ __eax // r0 ) {// addr = 0x0046A0D5 char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 signed char _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v56; // _cfa_ffffffc8 intOrPtr _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed long long _v88; // _cfa_ffffffa8 signed char _v92; // _cfa_ffffffa4 signed long long _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed int _t135; // _t135 signed char _t139; // _t139 _unknown_ _t144; // _t144 _unknown_ _t157; // _t157 signed int _t168; // _t168 signed char _t172; // _t172 _unknown_ _t177; // _t177 _unknown_ _t184; // _t184 signed char _t201; // _t201 signed long long _t237; // _t237 signed long long _t245; // _t245 signed long long _t253; // _t253 long long _t274; // _t274 intOrPtr _t277; // _t277 signed long long _t279; // _t279 signed long long _t282; // _t282 _v80 = _t274; _v88 = _t279; _v104 = __rcx; _v92 = _t201; _v12 = 0; _v11 = *(_v88 + 61) & 255; _v10 = _v11 & 255; if((_v92 & 255) == 2) { if(( *(_v88 + 2) & 255) != 0) { LMafh_Stop_Classification_Reporting(); _t237 = _v88; _t267 = *((intOrPtr*)(_t237 + 432)); _t281 = *((intOrPtr*)(_t237 + 432)); _t276 = _v80; _v40 = LLINK_ReadPicoClock(_v80, *((intOrPtr*)(_t237 + 432))); _v36 = *((intOrPtr*)(_v88 + 68)) + *((intOrPtr*)(_v88 + 68)); _v24 = _v36; _v20 = _v40; _v56 = _v24 - _v20; _t135 = _v56 == 0; _v13 = _t135; _v14 = (_t135 & 268435455) >> 27; if((_v13 & 255) != 0 || (_v14 & 255) != 0) { _t139 = 1; } else { _t139 = 0; } _v15 = _t139; if((_v15 & 255) != 0) { r9d = _v40; r8d = _v36; _t144 = DebugPrint(0, *(_v88 + 432), __rcx, _t267, _t276, _t281); _t282 = _v88; _t277 = _v80; _v11 = LMpolicy_Handle_InterError(_t144); } else { _t282 = *(_v88 + 432); _t277 = _v80; _v9 = LCCMD_SwitchToMasterRequest(); if(_v9 == 0) { _t157 = DebugPrint(0, *(_v88 + 432), __rcx, _t267, _t277, _t282); _t282 = _v88; _t277 = _v80; _v11 = LMpolicy_Handle_InterError(_t157); } else { _v11 = 9; } } } else { _t253 = _v88; _t271 = *((intOrPtr*)(_t253 + 432)); _t283 = *((intOrPtr*)(_t253 + 432)); _t278 = _v80; _v40 = LLINK_ReadPicoClock(_v80, *((intOrPtr*)(_t253 + 432))); _v36 = *((intOrPtr*)(_v88 + 68)) + *((intOrPtr*)(_v88 + 68)); _v32 = _v36; _v28 = _v40; _v72 = _v32 - _v28; _t168 = _v72 == 0; _v15 = _t168; _v14 = (_t168 & 268435455) >> 27; if((_v15 & 255) != 0 || (_v14 & 255) != 0) { _t172 = 1; } else { _t172 = 0; } _v13 = _t172; if((_v13 & 255) != 0) { r9d = _v40; r8d = _v36; _t177 = DebugPrint(0, *(_v88 + 432), __rcx, _t271, _t278, _t283); _t282 = _v88; _t277 = _v80; _v11 = LMpolicy_Handle_InterError(_t177); } else { _t282 = *(_v88 + 432); r8d = LMpolicy_LC_Switch_Role_CB; _t277 = _v80; _v9 = LCCMD_SwitchToSlaveRequest(); if(_v9 == 0) { _t184 = DebugPrint(0, *(_v88 + 432), __rcx, _t271, _t277, _t282); _t282 = _v88; _t277 = _v80; _v11 = LMpolicy_Handle_InterError(_t184); } else { _v11 = 9; } } } if(( *(_v88 + 4) & 65535) == 1) { __rcx = _v88; _t282 = __rcx; _t277 = _v80; LMbw_Adjust_Link_Priority(); } _v12 = 1; } _t245 = _v88; *(_t245 + 61) = _v11 & 255; *((long long*)(_v88 + 72)) = *((intOrPtr*)(_t245 * 8 + &MssStateTable)); r9d = _v11 & 255; r8d = _v10 & 255; DebugPrint(0, _v88, __rcx, *((intOrPtr*)(_t245 * 8 + &MssStateTable)), _t277, _t282); return _v12 & 255; } MssState_PeerInitPendHostCancel_Event_Handler() {// addr = 0x0046A461 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t41; // _t41 signed long long _t49; // _t49 long long _t54; // _t54 _v32 = _t54; _v40 = __rsi; _v56 = __rcx; _v44 = _t41; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; if((_v44 & 255) == 2) { __rcx = _v40; __rsi = __rcx; LMconnection_Send_LMP_Detach(); _t54 = _v32 + 191308; BTSTS_ClearDeviceState(); _v10 = 0; _v11 = 1; } _t49 = _v40; *(_t49 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t49 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, _t54, __rsi); return _v11 & 255; } MssState_PeerInitPendPeerDetach_Event_Handler() {// addr = 0x0046A525 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 signed long long _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t34; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t39 = _v40; *(_t39 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t39 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return _v11 & 255; } MssState_PeerInitPendLSTO_Event_Handler() {// addr = 0x0046A5A8 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 signed long long _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t34; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t39 = _v40; *(_t39 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t39 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return _v11 & 255; } MssState_LCCmdPend_Event_Handler( _unknown_ __eax // r0 ) {// addr = 0x0046A62B char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t59; // _t59 signed char _t71; // _t71 signed long long _t93; // _t93 long long _t102; // _t102 signed long long _t109; // _t109 _v32 = _t102; _v40 = _t109; _v56 = __rcx; _v44 = _t71; _v12 = 0; _v11 = *(_v40 + 61) & 255; _v10 = _v11 & 255; if((_v44 & 255) == 9) { _v24 = _v56; if(( *(_v24 + 1) & 255) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v24 + 8))); LCCMD_LinkDeleteRequest(); if(( *(_v40 + 2) & 255) == 0) { LMconfig_LM_Sctnet_State_Remove_S(); } _t59 = LMsec_Fsm_Mss_Callback_Enc_Admission_Check(_v32, _v40); if(_t59 == 0) { _t59 = LMch_Enable_L2CAP_Traffic(); } BTSTS_ClearDeviceState(); _t109 = _v40; _t102 = _v32; LMpolicy_Switch_Complete_Failure(); _v9 = _t59; if(_v9 == 0) { _v11 = 18; } else { _v11 = 0; } } else { _v11 = 13; } _v12 = 1; } _t93 = _v40; *(_t93 + 61) = _v11 & 255; *((long long*)(_v40 + 72)) = *((intOrPtr*)(_t93 * 8 + &MssStateTable)); r9d = _v11 & 255; r8d = _v10 & 255; DebugPrint(0, _v40, __rcx, *((intOrPtr*)(_t93 * 8 + &MssStateTable)), _t102, _t109); return _v12 & 255; } MssState_LCCmdPendHostCancel_Event_Handler() {// addr = 0x0046A79D signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t61; // _t61 signed long long _t82; // _t82 long long _t88; // _t88 signed long long _t93; // _t93 _v32 = _t88; _v40 = _t93; _v56 = __rcx; _v44 = _t61; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; if((_v44 & 255) == 9) { _v24 = _v56; if(( *(_v24 + 1) & 255) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v24 + 8))); LCCMD_LinkDeleteRequest(); if(( *(_v40 + 2) & 255) == 0) { LMconfig_LM_Sctnet_State_Remove_S(); } __rcx = _v40; _t93 = __rcx; LMconnection_Send_LMP_Detach(); _t88 = _v32 + 191308; BTSTS_ClearDeviceState(); _v10 = 0; } else { _v10 = 14; } _v11 = 1; } _t82 = _v40; *(_t82 + 61) = _v10 & 255; *((long long*)(_v40 + 72)) = *((intOrPtr*)(_t82 * 8 + &MssStateTable)); r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, *((intOrPtr*)(_t82 * 8 + &MssStateTable)), _t88, _t93); return; } MssState_LCCmdPendPeerDetach_Event_Handler() {// addr = 0x0046A8D4 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 signed long long _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t34; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t39 = _v40; *(_t39 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t39 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return _v11 & 255; } MssState_LCCmdPendLSTO_Event_Handler() {// addr = 0x0046A957 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 signed long long _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t34; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t39 = _v40; *(_t39 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t39 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return _v11 & 255; } MssState_LCRolePend_Event_Handler() {// addr = 0x0046A9DA signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t43; // _t43 signed char _t52; // _t52 signed long long _t66; // _t66 long long _t74; // _t74 intOrPtr _t76; // _t76 signed long long _t78; // _t78 signed long long _t79; // _t79 _v32 = _t74; _v40 = _t78; _v56 = __rcx; _v44 = _t52; _v12 = 0; _v11 = *(_v40 + 61) & 255; _v10 = _v11 & 255; _t43 = _v44 & 255; if(_t43 == 11) { BTSTS_ClearDeviceState(); _t79 = _v40; _t76 = _v32; LMpolicy_Switch_Complete_Success(); _v9 = _t43; if(_v9 == 0) { _v11 = 17; } else { _v11 = 0; } _v12 = 1; } else { if(_t43 == 12) { BTSTS_ClearDeviceState(); _t79 = _v40; _t76 = _v32; LMpolicy_Switch_Complete_Failure(); _v9 = _t43; if(_v9 == 0) { _v11 = 18; } else { _v11 = 0; } _v12 = 1; } else { } } _t66 = _v40; *(_t66 + 61) = _v11 & 255; *((long long*)(_v40 + 72)) = *((intOrPtr*)(_t66 * 8 + &MssStateTable)); r9d = _v11 & 255; r8d = _v10 & 255; DebugPrint(0, _v40, __rcx, *((intOrPtr*)(_t66 * 8 + &MssStateTable)), _t76, _t79); return _v12 & 255; } MssState_LCRolePendHostCancel_Event_Handler() {// addr = 0x0046AAF7 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t63; // _t63 signed char _t77; // _t77 signed long long _t103; // _t103 long long _t113; // _t113 long long _t115; // _t115 _unknown_ _t117; // _t117 signed long long _t119; // _t119 signed long long _t120; // _t120 _v32 = _t115; _v40 = _t119; _v56 = _t113; _v44 = _t77; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t63 = _v44 & 255; if(_t63 == 11) { if(( *(_v40 + 2) & 255) != 0) { *(_v40 + 2) = 0; *((char*)(_v32 + 60222)) = _v32 - 1; *((char*)(_v32 + 60223)) = _v32 + 1; } else { *(_v40 + 2) = 1; *((char*)(_v32 + 60223)) = _v32 - 1; *((char*)(_v32 + 60222)) = _v32 + 1; } _t114 = _v40; _t120 = _v40; LMconnection_Send_LMP_Detach(); _t117 = _v32 + 191308; BTSTS_ClearDeviceState(); _v10 = 0; _v11 = 1; } else { if(_t63 == 12) { _t114 = _v40; _t120 = _v40; LMconnection_Send_LMP_Detach(); _t117 = _v32 + 191308; BTSTS_ClearDeviceState(); _v10 = 0; _v11 = 1; } } _t103 = _v40; *(_t103 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t103 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, _t114, __rdx, _t117, _t120); return _v11 & 255; } MssState_LCRolePendPeerDetach_Event_Handler() {// addr = 0x0046AC82 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 signed long long _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t34; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t39 = _v40; *(_t39 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t39 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return _v11 & 255; } MssState_LCRolePendPeerLSTO_Event_Handler() {// addr = 0x0046AD05 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t34; // _t34 signed long long _t39; // _t39 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t34; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; _t39 = _v40; *(_t39 + 61) = _v10 & 255; __rdx = *((intOrPtr*)(_t39 * 8 + &MssStateTable)); *((long long*)(_v40 + 72)) = __rdx; r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); return _v11 & 255; } MssState_LCRoleSuccess_Event_Handler() {// addr = 0x0046AD88 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t53; // _t53 signed long long _t63; // _t63 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t53; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; if((_v44 & 255) == 16) { if(( *(_v40 + 4) & 65535) == 1) { __rcx = _v32; __rdi = __rcx + 60216; r8d = 0; LMP_Send_L2Cap_Flow(); } _v10 = 0; _v11 = 1; } _t63 = _v40; *(_t63 + 61) = _v10 & 255; *((long long*)(_v40 + 72)) = *((intOrPtr*)(_t63 * 8 + &MssStateTable)); r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, *((intOrPtr*)(_t63 * 8 + &MssStateTable)), __rdi, __rsi); return _v11 & 255; } MssState_LCRoleFail_Event_Handler() {// addr = 0x0046AE6B signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t53; // _t53 signed long long _t63; // _t63 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t53; _v11 = 0; _v10 = *(_v40 + 61) & 255; _v9 = _v10 & 255; if((_v44 & 255) == 16) { if(( *(_v40 + 4) & 65535) == 1) { __rcx = _v32; __rdi = __rcx + 60216; r8d = 0; LMP_Send_L2Cap_Flow(); } _v10 = 0; _v11 = 1; } _t63 = _v40; *(_t63 + 61) = _v10 & 255; *((long long*)(_v40 + 72)) = *((intOrPtr*)(_t63 * 8 + &MssStateTable)); r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, *((intOrPtr*)(_t63 * 8 + &MssStateTable)), __rdi, __rsi); return _v11 & 255; } LMdm_Is_Max_Tx_Power( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x0046AF50 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; if(( *( *((intOrPtr*)( *((intOrPtr*)(_v16 + 432)) + 104)) + 4) & 255) < _v20) { return 0; } return 1; } LMdm_Is_Min_Tx_Power( long long __rdi // r57 ) {// addr = 0x0046AF83 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(( *( *((intOrPtr*)( *((intOrPtr*)(_v16 + 432)) + 104)) + 4) & 255) != 0) { return 0; } return 1; } _LMlpctrl_Peer_Power_Timer_Work( _unknown_ __eax // r0 ) {// addr = 0x0046AFB0 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char _t41; // _t41 intOrPtr _t61; // _t61 _unknown_ _t69; // _t69 long long _t77; // _t77 intOrPtr _t81; // _t81 long long _t84; // _t84 intOrPtr _t86; // _t86 _v32 = _t77; _v40 = _t84; _v24 = _v40; _v10 = 0; if(LMtst_Power_Control_Allowed(__eax) == 0) { L14: *(_v24 + 90) = DM_Set_Timer(); oldRssi = _v10 & 255; return; } if(LMpolicy_Power_Control_Allowed(_v24) == 0) { goto L14; } _t41 = LMsec_IsEncryptionInProgress(); if(_t41 == 1) { goto L14; } _t61 = _v24; _t74 = *((intOrPtr*)(_t61 + 432)); _t62 = _v32; _t86 = *((intOrPtr*)(_t61 + 432)); _t81 = _v32; LMdm_Get_Peer_Rssi(); _v10 = _t41; _t42 = oldRssi & 255; if((oldRssi & 255) != _v10) { _t42 = DebugPrint(0, _t62, _t69, _t74, _t81, _t86); } if(_v10 >= 186) { if(_v10 < 217) { goto L14; } _v9 = LMlpctrl_LM_Decr_Peer_Power(_t42, _v32 + 60216, _v24); if(_v9 == 0) { goto L14; } *(_v24 + 90) = 0; return; } else { _v9 = LMlpctrl_LM_Incr_Peer_Power(_t42); if(_v9 == 0) { goto L14; } *(_v24 + 90) = 0; return; } } LMlpctrl_LMP_PWR_BB_Ack( _unknown_ __eax, // r0 long long __rdi // r57 ) {// addr = 0x0046B0ED long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; if(( *(_v16 + 90) & 255) == 0) { *(_v16 + 90) = DM_Set_Timer(); return; } return; } LMlpctrl_LMP_Decr_Power_Req_All_LE_LLink() {// addr = 0x0046B137 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t26; // _t26 signed int _t38; // _t38 _v32 = _t38; _v24 = 0; _v9 = 0; while(_v9 <= 1) { _t26 = _t26 * 184 + _v32 + 33792; if(( *(_t26 + 8) & 255) != 0) { _v24 = 4416 + _v32 * 184 + _v32 + 33800; _t26 = _v32; if(__dl > ( *(_t26 + 191296) & 255)) { _t26 = _v32; LCCMD_DecreaseTxPowerRequest(); } } _v9 = _v9 + 1; } return; } LMlpctrl_LMP_Decr_Power_Req_All_LLink( signed long long __rax // r53 ) {// addr = 0x0046B1D3 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t30; // _t30 signed int _t48; // _t48 _t30 = __rax; _v32 = _t48; _v9 = 0; while(_v9 <= 6) { _t30 = _t30 * 808 + _v32 + 60208; if(( *(_t30 + 17) & 255) != 0) { if( *((intOrPtr*)(_t30 * 808 + _v32 + 60656)) != 0) { _v24 = _v32 * 808 + _v32 + 60224; _t30 = _v32; if(__dl > ( *(_t30 + 191078) & 255)) { _t30 = _v32; LCCMD_DecreaseTxPowerRequest(); } } } _v9 = _v9 + 1; } return; } LMlpctrl_LMP_Incr_Power_Req() {// addr = 0x0046B29B short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t55; // _t55 long long _t58; // _t58 long long _t62; // _t62 _v48 = _t58; _v56 = _t62; _v64 = _t55; if(LMdm_Is_Max_Tx_Power( *(_v48 + 191078) & 0xff, _v56) != 1) { LCCMD_IncreaseTxPowerRequest(); } else { *(_v56 + 14) = *(_v56 + 2) & 255 ^ 1; _v31 = *(_v56 + 14) & 255; _v22 = 33; _v18 = 0; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); } return; } LMlpctrl_LMP_Decr_Power_Req() {// addr = 0x0046B354 short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t48; // _t48 long long _t51; // _t51 long long _t55; // _t55 _v48 = _t51; _v56 = _t55; _v64 = _t48; if(LMdm_Is_Min_Tx_Power(_v56) != 1) { LCCMD_DecreaseTxPowerRequest(); } else { *(_v56 + 14) = *(_v56 + 2) & 255 ^ 1; _v31 = *(_v56 + 14) & 255; _v22 = 34; _v18 = 0; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); } return; } LMlpctrl_LMP_Max_Power( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046B3FD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *((char*)(_v24 + 89)) = 0; return 0; } LMlpctrl_LMP_Min_Power( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046B41C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *((char*)(_v24 + 89)) = 1; return 0; } LMlpctrl_Incr_Tx_Power_Ack( _unknown_ __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046B43B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __al; if(_v28 == 0) { *((char*)(_v24 + 88)) = 2; return; } *((char*)(_v24 + 88)) = 0; return; } LMlpctrl_Decr_Tx_Power_Ack( _unknown_ __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046B466 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __al; if(_v28 == 0) { *((char*)(_v24 + 88)) = 2; return; } *((char*)(_v24 + 88)) = 1; return; } LMlpctrl_LM_Incr_Peer_Power( _unknown_ __eax // r0 ) {// addr = 0x0046B491 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t53; // _t53 long long _t100; // _t100 _v32 = _t100; _v40 = __rsi; _v9 = 0; _v10 = 0; *(_v40 + 14) = *(_v40 + 2) & 255; _t53 = *(_v40 + 89) & 0xff; if(_t53 == 1) { *(_v40 + 89) = 2; if( *((intOrPtr*)(_v40 + 432)) != 0) { r9d = LMlpctrl_LMP_PWR_BB_Ack; r8d = 3; _v9 = LMP_Send_Incr_Power_Req(); _v10 = _v9 == 0; *(_v40 + 91) = 1; } } else { if(_t53 == 2) { if(( *(_v40 + 91) & 255) <= 24 && *((intOrPtr*)(_v40 + 432)) != 0) { r9d = LMlpctrl_LMP_PWR_BB_Ack; r8d = 3; _v9 = LMP_Send_Incr_Power_Req(); _v10 = _v9 == 0; *(_v40 + 91) = _v40 + 1; } } } return _v10 & 255; } LMlpctrl_LM_Decr_Peer_Power( _unknown_ __eax, // r0 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046B5DD signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t53; // _t53 __rsi = __rsi; _v32 = __rdi; _v40 = __rsi; _v9 = 0; _v10 = 0; *(_v40 + 14) = *(_v40 + 2) & 255; _t53 = *(_v40 + 89) & 0xff; if(_t53 != 1) { if(_t53 == 2) { if(( *(_v40 + 91) & 255) <= 24 && *((intOrPtr*)(_v40 + 432)) != 0) { r9d = LMlpctrl_LMP_PWR_BB_Ack; r8d = 4; _v9 = LMP_Send_Decr_Power_Req(); _v10 = _v9 == 0; *(_v40 + 91) = _v40 + 1; } } else { if(_t53 == 0) { *(_v40 + 89) = 2; if( *((intOrPtr*)(_v40 + 432)) != 0) { r9d = LMlpctrl_LMP_PWR_BB_Ack; r8d = 4; _v9 = LMP_Send_Decr_Power_Req(); *(_v40 + 91) = 1; _v10 = _v9 == 0; } } } } return _v10 & 255; } LMlpctrl_Start_Monitor( _unknown_ __eax, // r0 long long __rdi // r57 ) {// addr = 0x0046B733 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; if(( *(_v16 + 191034) & 4) != 0) { *((char*)(_v24 + 90)) = DM_Set_Timer(); return; } return; } LMlpctrl_Stop_Monitor() {// addr = 0x0046B77E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; if(( *(_v16 + 191034) & 4) != 0) { DM_Clear_Timer(); *((char*)(_v24 + 90)) = 0; return; } return; } LMlpctrl_LMP_Power_Ctrol_Req( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046B7C6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; return 0; } LMlpctrl_LMP_Power_Ctrol_Res( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046B7DD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; return 0; } casting_uint8( signed char* __rdi // r57 ) {// addr = 0x0046B7F4 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 255; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x0046B80D signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0046B83C signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } LMqos_Update_ACLU_Packet_Types( _unknown_ __rax // r53 ) {// addr = 0x0046B892 long long _v16; // _cfa_fffffff0 signed char _v25; // _cfa_ffffffe7 char _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 char _v38; // _cfa_ffffffda char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed int* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 intOrPtr _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 signed char _t170; // _t170 intOrPtr _t220; // _t220 _unknown_ _t234; // _t234 long long _t236; // _t236 char* _t242; // _t242 _unknown_ _t245; // _t245 _unknown_ _t247; // _t247 long long _t249; // _t249 _unknown_ _t251; // _t251 _v64 = _t249; _v68 = _t220; _t236 = *fs:0x28]; _v16 = _t236; _v27 = 0; _v26 = _t236 != 0; _v40 = 3; _v39 = 3; _v38 = 3; DebugPrint(0, _t236, _t245, _t247, _t249, _t251); if(_v64 == 0) { goto L39; } else { _v44 = 0; while(_v44 <= 7) { *((char*)(__rbp + _t236 - 16)) = 128; _v44 = _v44 + 1; } if(_v26 == 0) { if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 3; _v27 = _v27 + 1; _v40 = 3; _v39 = 3; _v38 = 3; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 4; _v27 = _v27 + 1; _v40 = 4; _v39 = 4; _v38 = 4; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 10; _v27 = _v27 + 1; _v39 = 10; _v38 = 10; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 11; _v27 = _v27 + 1; _v39 = 11; _v38 = 11; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 14; _v27 = _v27 + 1; _v38 = 14; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 15; _v27 = _v27 + 1; _v38 = 15; } } else { if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 3; _v27 = _v27 + 1; _v40 = 3; _v39 = 3; _v38 = 3; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 36; _v27 = _v27 + 1; _v40 = 36; _v39 = 36; _v38 = 36; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 40; _v27 = _v27 + 1; _v40 = 40; _v39 = 40; _v38 = 40; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 42; _v27 = _v27 + 1; _v39 = 42; _v38 = 42; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 43; _v27 = _v27 + 1; _v39 = 43; _v38 = 43; } if(_t236 != 0) { *((char*)(__rbp + _t236 - 16)) = 46; _v27 = _v27 + 1; _v38 = 46; } if(_v68 < 0) { *((char*)(__rbp + _t236 - 16)) = 47; _v27 = _v27 + 1; _v38 = 47; } } if(_v26 != 1) { _t170 = 0; } else { _t170 = 32; } _v25 = _t170; _v56 = *(_v64 + 72); *_v56 = _v25 & 255; (_v56[0]) = _v27 & 255; _t242 = &_v40; RtlCopyMemory(3, &(_v56[3]), _t242); _v44 = 0; while(1) { _t234 = (_v27 & 255) - _v44; if(_t234 <= 0) { break; } *((char*)(_v56 + _t242 + 4)) = __cl; _v44 = _v44 + 1; } L39: if(_t234 == 0) { return; } __stack_chk_fail(); return; } } LMqos_LM_Gen_Allowed_Packet_Types( signed short __edi // r4 ) {// addr = 0x0046BB89 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed short _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edi = __edi; _v28 = __edi; _v12 = _v28 & 65535; _v16 = 0; if((_v12 & 8) != 0) { _v16 = _v16 | 8; } if((_v12 & 16) != 0) { _v16 = _v16 | 16; } if((_v12 & 1024) != 0) { _v16 = _v16 | 1024; } if((_v12 & 2048) != 0) { _v16 = _v16 | 2048; } if((_v12 & 16384) != 0) { _v16 = _v16 | 16384; } if((_v12 & 32768) != 0) { _v16 = _v16 | 32768; } if((_v12 & 2) != 0) { _v16 = _v16 | 1048576; } if((_v12 & 256) != 0) { _v16 = _v16 | 67108864; } if((_v12 & 4096) != 0) { _v16 = _v16 | 1073741824; } if((_v12 & 4) != 0) { _v16 = _v16 | 16777216; } if((_v12 & 512) != 0) { _v16 = _v16 | 134217728; } if((_v12 & 8192) != 0) { _v16 = _v16 | 2147483648; } return _v16; } LMqos_LC_Set_ACLU_Pkt_Type_CB() {// addr = 0x0046BC7C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t16; // _t16 char _t18; // _t18 long long _t28; // _t28 long long _t31; // _t31 _v32 = _t28; _v40 = _t31; _v56 = __rcx; _v44 = _t18; if(_v44 != 0) { _t16 = 31; } else { _t16 = 0; } _v44 = _t16; if(_v40 == 0) { } else { LM_Find_Link_Table_Entry_By_LLink(); _v16 = *((intOrPtr*)(_v40 + 80)); if(_v16 != 0) { LMch_Enable_L2CAP_Traffic(); return; } } return; } LMqos_LM_Validate_Change_Packet_Type( signed short* __rdx, // r56 long long __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x0046BCF6 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed short* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; _v10 = *_v48 & 65535; if((_v10 & 0xff1e) == 0) { L2: return 18; } if((_v10 & 0xe1) == 0) { if((_v10 & 0xf00) != 0) { if(( *_v40 & 1) == 0) { _v10 = _v10 & 61695; } } if((_v10 & 0xf000) != 0) { if(( *_v40 & 2) == 0) { _v10 = _v10 & 4095; } } if((_v10 & 0x1102) != 0) { if(((_v40[3]) & 2) == 0) { _v10 = _v10 & 61181; } } if((_v10 & 0x2204) != 0 && ((_v40[3]) & 4) == 0) { _v10 = _v10 & 56827; } if((_v10 & 0x300) != 0 && ((_v40[4]) & 255) < 0) { _v10 = _v10 & 64767; } if((_v10 & 0x3000) != 0 && ((_v40[5]) & 1) == 0) { _v10 = _v10 & 53247; } if((_v10 & 0xf00) != 0 && ( *(_v32 + 40) & 1) == 0) { _v10 = _v10 & 61695; } if((_v10 & 0xf000) != 0 && ( *(_v32 + 40) & 2) == 0) { _v10 = _v10 & 4095; } if((_v10 & 0x1102) != 0 && ( *(_v32 + 43) & 2) == 0) { _v10 = _v10 & 61181; } if((_v10 & 0x2204) != 0 && ( *(_v32 + 43) & 4) == 0) { _v10 = _v10 & 56827; } if((_v10 & 0x300) != 0 && ( *(_v32 + 44) & 255) < 0) { _v10 = _v10 & 64767; } if((_v10 & 0x3000) != 0 && ( *(_v32 + 45) & 1) == 0) { _v10 = _v10 & 53247; } if(_v10 != 0) { if(( *(_v32 + 10) & 65535) != 7) { *_v48 = __dx; return 0; } return 12; } else { return 18; } } goto L2; } LMqos_LM_Change_Validated_Packet_Type( _unknown_ __eax // r0 ) {// addr = 0x0046BF24 char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed short _t136; // _t136 _unknown_ _t215; // _t215 _unknown_ _t218; // _t218 long long _t220; // _t220 long long _t231; // _t231 _v32 = _t220; _v40 = _t231; _v44 = _t136; _v16 = 0; _v24 = _v40 + 624; *(_v24 + 20) = _v44 & 65535; _v10 = LMqos_Convert_To_Max_Slots(_v44 & 65535); _t221 = _v32; _v9 = LMsco_Count_SCO_Link_Num(_v32); r8d = _v10 & 255; DebugPrint(0, _v32, _t215, _t218, _v32, _t231); _t184 = _v24; r9d = _v10 & 255; r8d = *(_v24 + 26) & 0xff; DebugPrint(0, _v24, _t215, _t218, _v32, _t231); if(_v9 == 0 || _v10 <= 1) { _t185 = _v24; if(( *(_v24 + 25) & 255) == _v10) { L9: _t186 = _v24; if(( *(_v24 + 25) & 255) != _v10) { DebugPrint(0, _t186, _t215, _t218, _t221, _t231); *(_v24 + 26) = _v10 & 255; *((char*)(_v24 + 24)) = 1; _v16 = LMqos_LM_Max_Slot_Req(); } else { DebugPrint(0, _t186, _t215, _t218, _t221, _t231); *(_v24 + 22) = _v44 & 65535; LMqos_Update_Allowed_Packets( *(_v24 + 29) & 255); LMqos_Update_Link_QoS( *(_v24 + 60) & 255, *((intOrPtr*)(_v24 + 32)), *((intOrPtr*)(_v24 + 40))); LMqos_Update_ACLU_Packet_Types( *((intOrPtr*)(_v40 + 768))); _v16 = 31; } goto L12; } if((_v44 & 0xff00) == 0) { L6: DebugPrint(0, _t185, _t215, _t218, _t221, _t231); if(( *(_v24 + 25) & 255) != _v10) { *(_v24 + 26) = _v10 & 255; } *(_v24 + 22) = _v44 & 65535; LMqos_Update_Allowed_Packets( *(_v24 + 29) & 255); LMqos_Update_Link_QoS( *(_v24 + 60) & 255, *((intOrPtr*)(_v24 + 32)), *((intOrPtr*)(_v24 + 40))); LMqos_Update_ACLU_Packet_Types( *((intOrPtr*)(_v40 + 768))); *((char*)(_v24 + 24)) = 1; _v16 = LMqos_LM_Max_Slot_Req(); goto L12; } _t185 = _v32; if(( *(_v32 + 66257) & 255) != 0) { goto L9; } goto L6; } else { DebugPrint(0, _t184, _t215, _t218, _t221, _t231); LMqos_Restore_Packet_Type_After_Role_Switch(); L12: return _v16; } } LMqos_LM_Change_Packet_Type( _unknown_ __eax // r0 ) {// addr = 0x0046C1F1 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed short _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed short _t21; // _t21 long long _t28; // _t28 long long _t31; // _t31 _v32 = _t28; _v40 = _t31; _v44 = _t21; __rdx = &_v44; _v12 = LMqos_LM_Validate_Change_Packet_Type( &_v44, _v40, _v32 + 191032); if(_v12 == 0) { _v12 = LMqos_LM_Change_Validated_Packet_Type(_v44 & 65535); } return _v12; } LMqos_LM_Max_Slot_Req() {// addr = 0x0046C250 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 long long _t32; // _t32 _v16 = _t32; _v24 = __rsi; _v28 = __edx; if(( *(_v24 + 649) & 255) != _v28) { r8d = _v28 & 255; LMP_Send_Max_Slot_Req(); } return 0; } LMqos_LMP_Max_Slot() {// addr = 0x0046C2C1 char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t134; // _t134 signed char* _t136; // _t136 long long _t139; // _t139 intOrPtr _t141; // _t141 long long _t147; // _t147 _v32 = _t139; _v40 = _t147; _v48 = _t136; _v10 = *_v48 & 255; _v24 = _v40 + 624; if((_v10 & 255) == 1 || (_v10 & 255) == 3 || (_v10 & 255) == 5) { _t113 = _v32; _t140 = _v32; _v9 = LMsco_Count_SCO_Link_Num(_v32); if(_v9 != 0 && (_v10 & 255) > 1) { DebugPrint(0, _t113, _t134, _t136, _t140, _t147); _v10 = 1; } _t141 = _v40; LMqos_Update_Allowed_Packets(_v10 & 255); _t116 = _v24; if(( *(_v24 + 25) & 255) != (_v10 & 255)) { DebugPrint(0, _t116, _t134, _t136, _t141, _t147); *(_v24 + 25) = _v10 & 255; LMqos_Update_ACLU_Packet_Types( *((intOrPtr*)(_v40 + 768))); if(( *(_v40 + 32) & 255) != 0) { r8d = _v10 & 0xff; LMP_Send_Max_Slot_Req(); r8d = 0; LCCMD_MaxSlotRequest(); EG_Event_Composer(0); } } return 0; } else { return 30; } } LMqos_Update_Allowed_Packets( _unknown_ __eax // r0 ) {// addr = 0x0046C485 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char _t70; // _t70 _unknown_ _t75; // _t75 intOrPtr _t80; // _t80 intOrPtr _t82; // _t82 _unknown_ _t83; // _t83 _v32 = __rdi; _v36 = __cl; _v40 = _t70; _t80 = _v32; _v10 = *(_t80 + 646) & 65535; DebugPrint(0, _t80, __rcx, _t83, __rdi, __rsi); if(_v36 != 0) { _v10 = _v10 & *(_t80 + _t80 + &_LMqos_max_slot_pkt_types) & 65535; } *(_v32 + 653) = _v40 & 255; _t82 = _v32; if(( *(_t82 + 629) & 255) != 1) { _v10 = _v10 & 52248; if(( *(_t82 + _t82 + &br_rate_to_pkt_mapping) & 65535 & _v10) != 0) { _v10 = _v10 & *(_t82 + _t82 + &br_rate_to_pkt_mapping) & 65535; } } else { _v10 = _v10 & 13070; if(( *(_t82 + _t82 + &edr_rate_to_pkt_mapping) & 65535 & _v10) != 0) { _v10 = _v10 & *(_t82 + _t82 + &edr_rate_to_pkt_mapping) & 65535; } } *((intOrPtr*)(_v32 + 640)) = LMqos_LM_Gen_Allowed_Packet_Types(_v10 & 65535); return; } LMqos_LMP_Max_Slot_Req() {// addr = 0x0046C574 signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t68; // _t68 long long _t70; // _t70 long long _t74; // _t74 _v32 = _t70; _v40 = _t74; _v48 = _t68; _v9 = *_v48 & 255; *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; _v16 = LMpol_Max_Slots_Allowed(); if(_v16 == 0) { *(_v40 + 652) = _v9 & 255; r8d = 0; LCCMD_MaxSlotRequest(); r8d = 46; LMP_Send_Accepted(); _v16 = 0; } return _v16; } LMqos_Send_LMP_Preferred_Rate() {// addr = 0x0046C661 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed char _t37; // _t37 long long _t49; // _t49 _v32 = _t49; _v40 = __rsi; _v44 = _t37; _v9 = (_v44 & 255) - 1; *(_v40 + 655) = _v44 & 255; if(( *(_v40 + 629) & 255) != 0) { _v9 = _v9 & 255 | (_v44 & 255) << 3; } r8d = _v9 & 255; LMP_Send_Preferred_Rate(); return 0; } LMqos_LM_Auto_Rate() {// addr = 0x0046C6FB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t32; // _t32 long long _t34; // _t34 _v16 = _t32; _v24 = _t34; if(( *(_v24 + 41) & 4) != 0) { LMP_Send_Auto_Rate(); *((char*)(_v24 + 653)) = 3; } return 0; } LMqos_LMP_Preferred_Rate( signed char* __rdx // r56 ) {// addr = 0x0046C76D signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t182; // _t182 _unknown_ _t186; // _t186 intOrPtr _t187; // _t187 intOrPtr _t195; // _t195 _unknown_ _t199; // _t199 intOrPtr _t200; // _t200 long long _t205; // _t205 long long _t210; // _t210 _v32 = _t205; _v40 = _t210; _v48 = __rdx; _v24 = _v40 + 624; _v11 = 0; if(( *(_v24 + 5) & 255) != 1) { _v10 = ( *_v48 & 1) + 1; _v9 = ( *_v48 & 255) >> 1 & 3; if(_v9 != 0 && _v9 <= 3) { _v11 = (_v9 & 255) + (_v9 & 255) - 1; } if(_v11 == 0) { L16: if(( *(_v24 + _v24 + &_LMqos_max_slot_pkt_types) & 65535 & *(_v24 + 22) & 65535 & *(_v24 + _v24 + &br_rate_to_pkt_mapping) & 65535) != 0) { LMqos_Update_Allowed_Packets( *(_v24 + 25) & 255); } goto L19; } else { _t182 = _v24; _t186 = _t182 - 1 + _t182 - 1 + _t182 - 1 + (_v9 & 255) - 1; _t187 = _v24; _t110 = *(_t187 + _t187 + &_LMqos_max_slot_pkt_types) & 65535 & *(_t182 + 22) & 65535 & *(_t186 + _t186 + &_LMqos_max_slot_fec_pkt_types.8655) & 65535 & 0xcc18; if(( *(_t187 + _t187 + &_LMqos_max_slot_pkt_types) & 65535 & *(_t182 + 22) & 65535 & *(_t186 + _t186 + &_LMqos_max_slot_fec_pkt_types.8655) & 65535 & 0xcc18) == 0) { goto L16; } LMqos_Update_Allowed_Packets(_t110); L19: return; } } _v10 = ( *_v48 & 255) >> 3 & 3; _v9 = ( *_v48 & 255) >> 5 & 3; if(_v9 == 0 || _v9 > 3) { _v11 = 0; } else { _v11 = (_v9 & 255) + (_v9 & 255) - 1; } if(_v11 == 0) { L8: if(( *(_v24 + _v24 + &_LMqos_max_slot_pkt_types) & 65535 & *(_v24 + 22) & 65535 & *(_v24 + _v24 + &edr_rate_to_pkt_mapping) & 65535) != 0) { LMqos_Update_Allowed_Packets( *(_v24 + 25) & 255); } goto L19; } _t195 = _v24; _t199 = (_v10 & 255) + (_v10 & 255) + (_v10 & 255) + (_v9 & 255) - 1; _t200 = _v24; _t139 = *(_t200 + _t200 + &_LMqos_max_slot_pkt_types) & 65535 & *(_t195 + 22) & 65535 & *(_t199 + _t199 + &_LMqos_max_slot_edr_pkt_types.8656) & 65535 & 0x330e; if(( *(_t200 + _t200 + &_LMqos_max_slot_pkt_types) & 65535 & *(_t195 + 22) & 65535 & *(_t199 + _t199 + &_LMqos_max_slot_edr_pkt_types.8656) & 65535 & 0x330e) == 0) { goto L8; } LMqos_Update_Allowed_Packets(_t139); goto L19; } LMqos_LMP_Auto_Rate( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046C9BF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *((char*)(_v24 + 655)) = 3; *((char*)(_v24 + 654)) = __dl; return 0; } LMqos_LM_Write_Supervision_Timeout( signed long long __rax // r53 ) {// addr = 0x0046C9F6 short _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t68; // _t68 signed short _t77; // _t77 signed short _t82; // _t82 long long _t93; // _t93 long long _t111; // _t111 long long _t116; // _t116 _t93 = __rax; _v32 = _t116; _v48 = _t111; _v36 = _t82; _v40 = _t77; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v24 = _t93; if(_v24 == 0) { return 2; } if(( *(_v24 + 2) & 255) != 0) { return 12; } if(( *(_v24 + 4) & 6) == 0 || _v40 == 0) { L9: *(_v24 + 14) = *(_v24 + 2) & 255; r9d = LMqos_LMP_Supervision_TO_BB_Ack; r8d = _v40 & 65535; LMP_Send_Supervision_Timeout(); *(_v24 + 6) = _v40 & 65535; __rsi = *((intOrPtr*)(_v24 + 432)); LCCMD_SetSupervisionTimeoutRequest(); HCI_Fill_Data_Unit(0, *((intOrPtr*)( *((intOrPtr*)(_v24 + 432)) + 48)), _v48, *((intOrPtr*)(_v24 + 432))); return 0; } else { if(( *(_v24 + 4) & 4) == 0) { _t68 = *(_v24 + 510) & 65535; } else { _t68 = *(_v24 + 456) & 65535; } _v12 = _t68; _v10 = ((_v12 & 65535) >> 10) + _v12 + 40; if((_v40 & 65535) >= _v10) { goto L9; } else { return 12; } } } LMqos_LM_Read_Supervision_Timeout( signed long long __rax // r53 ) {// addr = 0x0046CB71 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t25; // _t25 long long _t28; // _t28 long long _t34; // _t34 long long _t39; // _t39 _t28 = __rax; _v32 = _t39; _v48 = _t34; _v36 = _t25; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v16 = _t28; if(_v16 == 0) { return 2; } __rsi = _v48 + 24; HCI_Fill_Data_Unit(2, _v16 + 626, _v48, __rsi); _v48 = _v48 + 24; HCI_Fill_Data_Unit(2, _v16 + 6, _v48, __rsi); return 0; } LMqos_LMP_Supervision_Timeout( signed char* __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046CC00 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; if(( *(_v24 + 2) & 255) != 1) { return 36; } *((short*)(_v24 + 6)) = (((_v32[1]) & 0xff) << 8) + ( *_v32 & 0xff); LCCMD_SetSupervisionTimeoutRequest(); EG_Event_Composer(0); return 0; } LMqos_LMP_Quality_of_Service_Req( long long __rdx // r56 ) {// addr = 0x0046CCAB char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 intOrPtr _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 char* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t71; // _t71 intOrPtr _t100; // _t100 long long _t122; // _t122 long long _t127; // _t127 _v32 = _t122; _v40 = _t127; _v48 = __rdx; _v16 = 0; _v9 = 0; *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; if(( *(_v40 + 10) & 65535) != 42 || ( *(_v40 + 2) & 255) != 0) { _v12 = casting_uint16(_v48); _v12 = _v12 & 254; if(_v12 == 0) { _v12 = 2; } _v16 = LMqos_Update_QoS(); if(_v16 == 0) { _t100 = _v40; _t71 = ( *(_t100 + 56) & 0xffff) * 10000; _t72 = _t71 >= 0 ? _t100 + 15 : _t71; _t73 = (_t71 >= 0 ? _t100 + 15 : _t71) >> 4; _t88 = (_t71 >= 0 ? _t100 + 15 : _t71) >> 4; *(_v40 + 664) = (_t71 >= 0 ? _t100 + 15 : _t71) >> 4; r8d = 42; LMP_Send_Accepted(); r10 = _v40 + 676; r9 = _v40 + 664; r8 = _v40 + 672; r11 = _v40 + 684; _v64 = r10; _v72 = r9; _v80 = r8; *__rsp = _v40 + 656; r9 = r11; r8 = &_v9; EG_Event_Composer(0); } return _v16; } else { return 35; } } LMqos_LMP_Quality_of_Service( long long __rdx // r56 ) {// addr = 0x0046CE4B char _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 char* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t64; // _t64 signed int _t69; // _t69 signed long long _t88; // _t88 long long _t109; // _t109 signed long long _t113; // _t113 _v32 = _t109; _v40 = _t113; _v48 = __rdx; _v16 = 0; _v9 = 0; if(( *(_v40 + 2) & 255) == 1) { _v12 = casting_uint16(_v48); if(( *(_v40 + 56) & 65535) != _v12) { _v12 = _v12 & 254; LMqos_Write_QoS(); _t88 = _v40; _t64 = ( *(_t88 + 56) & 0xffff) * 10000; _t65 = _t64 >= 0 ? _t88 + 15 : _t64; _t66 = (_t64 >= 0 ? _t88 + 15 : _t64) >> 4; _t75 = (_t64 >= 0 ? _t88 + 15 : _t64) >> 4; *(_v40 + 664) = (_t64 >= 0 ? _t88 + 15 : _t64) >> 4; __edi = *(_v40 + 646) & 0xffff; _t69 = LMqos_Max_Packet_Size( *(_v40 + 646) & 0xffff); _v56 = _v40; *(_v40 + 656) = _t69 / _v56; r10 = _v40 + 676; r9 = _v40 + 664; r8 = _v40 + 672; r11 = _v40 + 684; _v64 = r10; _v72 = r9; _v80 = r8; *__rsp = _v40 + 656; r9 = r11; r8 = &_v9; EG_Event_Composer(0); } } return 0; } LMqos_Check_Link_QoS( _unknown_ __eax, // r0 signed int __ecx, // r2 signed int __edx, // r3 signed char __esi, // r5 signed int __rdx, // r56 signed long long __rdi // r57 ) {// addr = 0x0046CFBA signed int _v12; // _cfa_fffffff4 signed long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed short _t74; // _t74 signed int _t77; // _t77 signed int _t83; // _t83 signed int _t96; // _t96 signed long long _t119; // _t119 signed long long _t121; // _t121 signed long long _t132; // _t132 signed int _t138; // _t138 __rdi = __rdi; _t138 = __rdx; __esi = __esi; __ecx = __ecx; _v32 = __rdi; _v40 = __edx; _v44 = __ecx; _v36 = __esi; if( *((intOrPtr*)(_v32 + 664)) == 0) { *(_v32 + 668) = _v40; } _t119 = _v32; *(_t119 + 685) = _v36 & 255; if(_v36 != 0) { if(_v44 != 0) { if(_v44 == 255) { _t119 = _v32; _v12 = (( *(_t119 + 649) & 0xff) + 1) * 625; } else { _t132 = _v32; _t96 = LMqos_Max_Packet_Size( *(_t132 + 646) & 0xffff); _t119 = _t132 * 1000000; _v56 = _t138; _v12 = _t96 / _v56; } if(_v40 > _v12) { _v40 = _v12; } } if(_v40 != 255) { if(_t119 << 4 <= 19999) { _t74 = 2; } else { _t74 = _v40 * 3777893186295716171 + _v40 * 3777893186295716171; } *(_v32 + 58) = _t74; } else { *(_v32 + 58) = *(_v32 + 56) & 65535; } _t121 = _v32; _t77 = ( *(_t121 + 58) & 0xffff) * 10000; _t78 = _t77 >= 0 ? _t121 + 15 : _t77; _t79 = (_t77 >= 0 ? _t121 + 15 : _t77) >> 4; _t102 = (_t77 >= 0 ? _t121 + 15 : _t77) >> 4; *(_v32 + 668) = (_t77 >= 0 ? _t121 + 15 : _t77) >> 4; if(_v44 == 255) { *((intOrPtr*)(_v32 + 660)) = _v44; } else { _t83 = LMqos_Max_Packet_Size( *(_v32 + 646) & 0xffff); _v56 = *(_v32 + 58) & 0xffff; *(_v32 + 660) = _t83 * 1600 / _v56; } return 0; } else { return 0; } } LMqos_Max_Packet_Size( signed short __edi // r4 ) {// addr = 0x0046D15A intOrPtr _v12; // _cfa_fffffff4 signed int _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 intOrPtr _t29; // _t29 intOrPtr _t33; // _t33 intOrPtr _t38; // _t38 intOrPtr _t40; // _t40 intOrPtr _t45; // _t45 intOrPtr _t48; // _t48 __edi = __edi; _v28 = __edi; if((_v28 & 0x3300) == 0) { if((_v28 & 0xcc00) == 0) { if((_v28 & 6) == 0) { if((_v28 & 0x10) == 0) { _t29 = 17; } else { _t29 = 27; } _v12 = _t29; } else { if((_v28 & 4) == 0) { _t33 = 54; } else { _t33 = 83; } _v12 = _t33; } } else { if((_v28 & 0xc000) == 0) { if((_v28 & 0x800) == 0) { _t38 = 121; } else { _t38 = 183; } _v12 = _t38; } else { if((_v28 & 65535) >= 0) { _t40 = 224; } else { _t40 = 339; } _v12 = _t40; } } } else { if((_v28 & 0x3000) == 0) { if((_v28 & 0x200) == 0) { _t45 = 367; } else { _t45 = 552; } _v12 = _t45; } else { if((_v28 & 0x2000) == 0) { _t48 = 679; } else { _t48 = 1021; } _v12 = _t48; } } return _v12; } LMqos_Convert_To_Max_Slots( signed short __edi // r4 ) {// addr = 0x0046D258 signed int _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; if((_v12 & 0xf000) == 0) { if((_v12 & 0xf00) == 0) { return 1; } return 3; } return 5; } LMqos_Send_HC_Packet_Type_Changed_Event( char __edx // r3 ) {// addr = 0x0046D291 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 long long _t33; // _t33 __edx = __edx; _v32 = _t33; _v40 = __rsi; _v44 = __edx; _v10 = *(_v40 + 646) & 65535; if(( *(_v32 + 191082) & 255) == 0) { _v10 = _v10 & 65535 ^ 13062; } r8 = &_v10; EG_Event_Composer(0); return; } LMqos_Update_Link_QoS( _unknown_ __eax, // r0 intOrPtr __ecx, // r2 signed int __edx // r3 ) {// addr = 0x0046D308 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 signed int _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed short _t96; // _t96 signed int _t99; // _t99 signed int _t103; // _t103 signed int _t118; // _t118 signed int _t131; // _t131 signed long long _t162; // _t162 signed long long _t163; // _t163 signed long long _t164; // _t164 signed long long _t171; // _t171 signed int _t177; // _t177 _v48 = __rdi; _v56 = __edx; _v60 = __ecx; _v52 = __esi; _v32 = _v48 + 624; if( *(_v32 + 40) == 0) { *(_v32 + 40) = _v56; } *(_v32 + 60) = _v52 & 255; if(_v52 == 0) { L5: return 0; } else { _t162 = _v32; if( *((intOrPtr*)(_t162 + 40)) != 0) { L6: if(_v60 != 0) { if(_v60 == 255) { _t162 = _v32; _v24 = (( *(_t162 + 25) & 0xff) + 1) * 625; } else { _t171 = _v32; _t131 = LMqos_Max_Packet_Size( *(_t171 + 22) & 0xffff); _t162 = _t171 * 1000000; _v72 = _t177; _v24 = _t131 / _v72; } if(_v56 > _v24) { _v56 = _v24; } } _t163 = _t162 << 4; if(_t163 <= 19999) { _t96 = 2; } else { _t163 = (3777893186295716171 >> 12) - (_t163 << 4 >> 63); _t96 = _v56 * 3777893186295716171 + _v56 * 3777893186295716171; } _v12 = _t96; if(_v12 > 4) { _t164 = _v32; _t99 = LMqos_Max_Packet_Size( *(_t164 + 22) & 0xffff); _v72 = _v12 & 65535; _v20 = _t99 * 1600 / _v72; } else { _v10 = *(_t163 + _t163 + &_LMqos_max_slot_pkt_types) & 65535; _t164 = _v32; _t118 = LMqos_Max_Packet_Size( *(_t164 + 22) & 65535 & _v10 & 65535); _v72 = _v12 & 65535; _v20 = _t118 * 1600 / _v72; } _t103 = (_v12 & 65535) * 10000; _t104 = _t103 >= 0 ? _t164 + 15 : _t103; _t105 = (_t103 >= 0 ? _t164 + 15 : _t103) >> 4; _v16 = (_t103 >= 0 ? _t164 + 15 : _t103) >> 4; if(_v16 > _v56) { return 39; } else { *(_v48 + 56) = _v12 & 65535; *(_v32 + 40) = _v16; *(_v32 + 32) = _v20; return 0; } } _t162 = _v32; if( *((intOrPtr*)(_t162 + 32)) != 0) { goto L6; } goto L5; } } LMqos_Update_Link_Flow_Spec( _unknown_ __eax, // r0 signed char __edx // r3 ) {// addr = 0x0046D4EA signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed short _t118; // _t118 signed int _t120; // _t120 signed int _t125; // _t125 signed int _t138; // _t138 signed long long _t174; // _t174 signed long long _t175; // _t175 signed int _t206; // _t206 _v32 = __rdi; _v44 = __ecx; _v48 = r8d; _v36 = sil; _v40 = __edx; if( *(_v32 + 664) == 0) { *(_v32 + 664) = _v48; } *(_v32 + 684) = _v40 & 255; if(_v40 == 0 || *(_v32 + 664) == 0 && *((intOrPtr*)(_v32 + 656)) == 0) { return 0; } if(_v44 != 0) { _t138 = LMqos_Max_Packet_Size( *(_v32 + 646) & 0xffff); _v56 = _t206; _v24 = _t138 / _v56; if(_v48 > _v24) { _v48 = _v24; } } if(_v36 != 0) { _t174 = _v32; _v10 = *(_t174 + 58) & 65535; } else { _t174 = _v32; _v10 = *(_t174 + 766) & 65535; } _t175 = _t174 << 4; if(_t175 <= 19999) { _t118 = 2; } else { _t175 = (3777893186295716171 >> 12) - (_t175 << 4 >> 63); _t118 = _v48 * 3777893186295716171 + _v48 * 3777893186295716171; } _v10 = _t118; _t120 = (_v10 & 65535) * 10000; _t121 = _t120 >= 0 ? _t175 + 15 : _t120; _t122 = (_t120 >= 0 ? _t175 + 15 : _t120) >> 4; _v20 = (_t120 >= 0 ? _t175 + 15 : _t120) >> 4; _t125 = LMqos_Max_Packet_Size( *(_v32 + 646) & 0xffff); _v56 = _v10 & 65535; _v16 = _t125 * 1600 / _v56; if(_v20 > _v48 || _v16 < _v44) { return 39; } else { if(( *(_v32 + 686) & 255) != 0) { *(_v32 + 56) = _v10 & 65535; *(_v32 + 700) = _v20; *(_v32 + 692) = _v16; *((intOrPtr*)(_v32 + 696)) = *((intOrPtr*)(_v32 + 712)); *((intOrPtr*)(_v32 + 704)) = *((intOrPtr*)(_v32 + 720)); } else { *(_v32 + 760) = _v10 & 65535; *(_v32 + 764) = _v10 & 65535; *(_v32 + 736) = _v20; *(_v32 + 728) = _v16; *((intOrPtr*)(_v32 + 732)) = *((intOrPtr*)(_v32 + 748)); *((intOrPtr*)(_v32 + 740)) = *((intOrPtr*)(_v32 + 756)); *(_v32 + 56) = *(_v32 + 58) & 65535; } return 0; } } LMqos_Get_Communication_Interval( _unknown_ __eax, // r0 intOrPtr __ecx, // r2 signed int __edx // r3 ) {// addr = 0x0046D748 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 signed int _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed short _t85; // _t85 signed int _t87; // _t87 signed int _t95; // _t95 signed int _t104; // _t104 signed int _t114; // _t114 signed int _t120; // _t120 signed long long _t150; // _t150 signed long long _t151; // _t151 signed long long _t157; // _t157 signed long long _t158; // _t158 signed int _t159; // _t159 signed int _t164; // _t164 _v32 = __rdi; _v40 = __edx; _v44 = __ecx; _v36 = __esi; _t150 = _v32; if( *(_t150 + 664) == 0) { _t150 = _v32; *(_t150 + 664) = _v40; } if(_v44 != 0) { if(_v36 != 0) { _t157 = _v32; _t114 = LMqos_Max_Packet_Size( *(_t157 + _t157 + &_LMqos_max_slot_pkt_types) & 0xffff); _t150 = _t157 * 1000000; _v56 = _t159; _v24 = _t114 / _v56; } else { _t158 = _v32; _t120 = LMqos_Max_Packet_Size( *(_t158 + 646) & 0xffff); _t150 = _t158 * 1000000; _v56 = _t164; _v24 = _t120 / _v56; } if(_v40 > _v24) { _v40 = _v24; } } _t151 = _t150 << 4; if(_t151 <= 19999) { _t85 = 2; } else { _t151 = (3777893186295716171 >> 12) - (_t151 << 4 >> 63); _t85 = _v40 * 3777893186295716171 + _v40 * 3777893186295716171; } _v10 = _t85; _t87 = (_v10 & 65535) * 10000; _t88 = _t87 >= 0 ? _t151 + 15 : _t87; _t89 = (_t87 >= 0 ? _t151 + 15 : _t87) >> 4; _v16 = (_t87 >= 0 ? _t151 + 15 : _t87) >> 4; if(_v36 != 0) { _t95 = LMqos_Max_Packet_Size( *(_v32 + _v32 + &_LMqos_max_slot_pkt_types) & 0xffff); _v56 = _v10 & 65535; _v20 = _t95 * 1600 / _v56; } else { _t104 = LMqos_Max_Packet_Size( *(_v32 + 646) & 0xffff); _v56 = _v10 & 65535; _v20 = _t104 * 1600 / _v56; } if(_v16 > _v40 || _v20 < _v44) { return 0; } else { return _v10 & 65535; } } LMqos_LMP_Packet_Type_Table_Req() {// addr = 0x0046D8FB signed int _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t55; // _t55 signed char* _t104; // _t104 long long _t107; // _t107 long long _t115; // _t115 _v32 = _t107; _v40 = _t115; _v48 = _t104; _v16 = 0; _v9 = *_v48 & 255; _v24 = _v40 + 624; if(_v9 != 1) { L3: if( *((intOrPtr*)(_v24 + 8)) == 0) { if(( *(_v24 + 5) & 255) != _v9) { if(_v9 != 1) { _t55 = 1; } else { _t55 = 2; } *((intOrPtr*)(_v24 + 8)) = _t55; LMch_Disable_L2CAP_Traffic(); if(LMP_Transmit_Remaining_ACLU_Tx() == 0) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v32 + 60216); LMch_Enable_L2CAP_Traffic(); } L16: return _v16; } L10: r8d = 32523; LMP_Send_Accepted_Ext(); goto L16; } if( *((intOrPtr*)(_v24 + 8)) != 1 || _v9 != 0) { if( *((intOrPtr*)(_v24 + 8)) != 2 || _v9 != 1) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v32 + 60216); goto L16; } else { goto L10; } } else { goto L10; } } if(( *(_v40 + 646) & 0x3306) != 0) { goto L3; } else { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v32 + 60216); goto L16; } } LMqos_LMP_Accepted() {// addr = 0x0046DAAB char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 char _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 intOrPtr _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 char* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t145; // _t145 _unknown_ _t311; // _t311 signed char* _t319; // _t319 long long _t323; // _t323 long long _t338; // _t338 _v32 = _t323; _v40 = _t338; _v48 = _t319; _v13 = 0; _v11 = *_v48 & 255; _v12 = 0; _v24 = _v40 + 624; _t145 = _v11 & 255; if(_t145 == 42) { _v16 = *(_v40 + 56) & 65535; if(( *(_v40 + 687) & 255) == 0) { *(_v40 + 56) = *(_v40 + 58) & 65535; *((intOrPtr*)(_v40 + 676)) = *((intOrPtr*)(_v40 + 680)); LMqos_Update_Link_QoS( *(_v40 + 685) & 255, *((intOrPtr*)(_v40 + 660)), *((intOrPtr*)(_v40 + 668))); if(( *(_v40 + 56) & 65535) != _v16) { LMbw_Adjust_Link_Priority(); } r10 = _v40 + 676; r9 = _v40 + 664; r8 = _v40 + 672; r11 = _v40 + 684; _v64 = r10; _v72 = r9; _v80 = r8; *__rsp = _v40 + 656; r9 = r11; r8 = &_v12; EG_Event_Composer(0); } else { if(( *(_v40 + 686) & 255) != 0) { r8d = *(_v40 + 716); LMqos_Update_Link_Flow_Spec( *(_v40 + 686) & 255, *(_v40 + 689) & 0xff); } else { r8d = *(_v40 + 752); LMqos_Update_Link_Flow_Spec( *(_v40 + 686) & 255, *(_v40 + 725) & 0xff); } if(( *(_v40 + 56) & 65535) != _v16) { LMbw_Adjust_Link_Priority(); } _Send_HC_Flow_Spec_Complete_Event(0); } L21: return; } if(_t145 != 46) { goto L21; } *(_v24 + 22) = *(_v24 + 20) & 65535; _v10 = LMqos_Convert_To_Max_Slots( *(_v24 + 22) & 0xffff); _t281 = _v32; _t331 = _v32; _v9 = LMsco_Count_SCO_Link_Num(_v32); if(_v9 != 0) { DebugPrint(0, _t281, _t311, _t319, _t331, _t338); _t310 = _v24; if(( *(_v24 + 26) & 255) != 1) { DebugPrint(0, _t310, _t311, _t319, _t331, _t338); } } if(( *(_v24 + 26) & 255) != 0 && ( *(_v24 + 25) & 255) != ( *(_v24 + 26) & 255)) { r9d = _v10 & 255; r8d = *(_v24 + 26) & 0xff; DebugPrint(0, _v24, _t311, _t319, _t331, _t338); *(_v24 + 25) = *(_v24 + 26) & 255; *(_v24 + 26) = 0; LMqos_Update_Allowed_Packets( *(_v24 + 25) & 255); LMqos_Update_ACLU_Packet_Types( *((intOrPtr*)(_v40 + 768))); if(( *(_v40 + 32) & 255) != 0) { r8d = 0; LCCMD_MaxSlotRequest(); EG_Event_Composer(0); LMqos_Send_HC_Packet_Type_Changed_Event(_v13 & 0xff); } } LMqos_Update_Link_QoS( *(_v24 + 60) & 255, *((intOrPtr*)(_v24 + 32)), *((intOrPtr*)(_v24 + 40))); goto L21; } LMqos_LMP_Accepted_Ext( signed short __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046DECC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed short _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v28 = __edx; if((_v28 & 65535) == 32523) { *((char*)(_v24 + 629)) = *((intOrPtr*)(_v24 + 632)) == 2; *((intOrPtr*)(_v24 + 632)) = 0; LMqos_Update_Allowed_Packets( *(_v24 + 649) & 255); LMqos_Update_ACLU_Packet_Types( *((intOrPtr*)(_v24 + 768))); LCCMD_SetACLUPktTypeTableRequest(); } return 0; } LMqos_Write_QoS() {// addr = 0x0046DF96 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed short _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed short _t17; // _t17 long long _t25; // _t25 long long _t28; // _t28 _v16 = _t25; _v24 = _t28; _v28 = _t17; _v32 = __ecx; *(_v24 + 56) = _v28 & 65535; BTCFG_WriteNumOfBroadcastRetransmissions(__ecx); if(( *(_v24 + 4) & 65535) == 1) { LMbw_Adjust_Link_Priority(); return; } return; } LMqos_Update_QoS() {// addr = 0x0046DFF5 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed short _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed short _t21; // _t21 intOrPtr _t28; // _t28 long long _t32; // _t32 long long _t35; // _t35 _v16 = _t32; _v24 = _t35; _v28 = _t21; _v32 = __ecx; *(_v24 + 56) = _v28 & 65535; _t28 = _v24; _t17 = *(_t28 + 2) & 255; if(( *(_t28 + 2) & 255) == 1) { BTCFG_WriteNumOfBroadcastRetransmissions(_t17); } if(( *(_v24 + 4) & 65535) == 1) { LMbw_Adjust_Link_Priority(); } return 0; } LMqos_LMP_Not_Accepted( signed int __ecx // r2 ) {// addr = 0x0046E065 signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed short _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 intOrPtr _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 char* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed short _t48; // _t48 long long _t72; // _t72 long long _t76; // _t76 _v32 = _t72; _v40 = _t76; _v48 = __ecx; _v44 = _t48; _v10 = 0; _v9 = _v48; _t39 = _v44 & 65535; if(_t39 != 46) { if(_t39 == 32523) { *((intOrPtr*)(_v40 + 632)) = 0; LMch_Enable_L2CAP_Traffic(); } else { if(_t39 == 42) { if(( *(_v40 + 687) & 255) == 0) { r10 = _v40 + 676; r9 = _v40 + 664; r8 = _v40 + 672; r11 = _v40 + 684; _v64 = r10; _v72 = r9; _v80 = r8; *__rsp = _v40 + 656; r9 = r11; r8 = &_v10; EG_Event_Composer(0); } else { _Send_HC_Flow_Spec_Complete_Event(_v48 & 255); } } } } return; } LMqos_LM_Flow_Specification( intOrPtr _a8, // _cfa_8 signed int _a16 // _cfa_10 ) {// addr = 0x0046E18F signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t131; // _t131 signed char _t135; // _t135 signed short _t160; // _t160 long long _t166; // _t166 long long _t206; // _t206 _v32 = _t206; _v48 = r8d; _v52 = r9d; _v36 = _t160; _v40 = _t135; _v44 = _t131; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t166, _v32 + 60216); _v24 = _t166; if(_v24 == 0) { return 2; } r9d = _v48; r8d = _a16; *__rsp = _a8; _v16 = LMqos_Check_Link_Flow_Specification(); _v10 = LMqos_Get_Communication_Interval(_t119, _v48, _a16); if(_v10 != 0) { if(_v40 != 0) { if(_v40 == 1) { *(_v24 + 58) = _v10 & 65535; *(_v24 + 716) = _a16; *((intOrPtr*)(_v24 + 712)) = _a8; *(_v24 + 689) = _v44 & 255; *(_v24 + 720) = _v52; *(_v24 + 708) = _v48; *(_v24 + 686) = _v40 & 255; } } else { *(_v24 + 686) = _v40 & 255; if(( *(_v24 + 2) & 255) != 0) { *(_v24 + 752) = _a16; *((intOrPtr*)(_v24 + 748)) = _a8; *(_v24 + 725) = _v44 & 255; *(_v24 + 756) = _v52; *(_v24 + 744) = _v48; *(_v24 + 58) = _v10 & 65535; } else { *(_v24 + 766) = _v10 & 65535; *(_v24 + 58) = *(_v24 + 56) & 65535; *(_v24 + 736) = _a16; *((intOrPtr*)(_v24 + 732)) = _a8; *(_v24 + 724) = _v44 & 255; *(_v24 + 740) = _v52; *(_v24 + 728) = _v48; } } } if(_v10 != 0 && _v16 == 0) { *((char*)(_v24 + 687)) = 1; *(_v24 + 14) = *(_v24 + 2) & 255; r8d = ( *(_v32 + 190535) & 255) + 1 & 255; r9d = r8d; r8d = *(_v24 + 58) & 0xffff; LMP_Send_Quality_Of_Service_Req(); } return _v16; } LMqos_LM_QOS_Setup( _unknown_ __rax // r53 ) {// addr = 0x0046E3FF signed char _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t45; // _t45 long long _t77; // _t77 long long _t87; // _t87 long long _t91; // _t91 _v48 = _t91; _v56 = __rsi; _v64 = _t87; _v12 = casting_uint16(_v56); _v9 = casting_uint8(_v56 + 3); _v28 = casting_uint32(_v56 + 4); _v24 = casting_uint32(_v56 + 8); _v20 = casting_uint32(_v56 + 12); _t77 = _v56 + 16; _v16 = casting_uint32(_t77); _t89 = _v48 + 60216; _t45 = LM_Find_Link_Table_Entry_By_Connection_Handle(_v12 & 65535, _t77, _v48 + 60216); _v40 = _t77; if(_v40 == 0) { return 2; } LMqos_Check_Link_QoS(_t45, _v28, _v20, _v9 & 255, _t89, _v40); r8d = ( *(_v48 + 190535) & 255) + 1 & 255; r9d = r8d; r8d = *(_v40 + 58) & 0xffff; LMP_Send_Quality_Of_Service_Req(); HCI_Fill_Data_Unit(0, *((intOrPtr*)( *((intOrPtr*)(_v40 + 432)) + 48)), _v64, __rsi); return 0; } LM_Change_Connection_Packet_Type_Command( _unknown_ __eax, // r0 char* __rax // r53 ) {// addr = 0x0046E54A signed char _v9; // _cfa_fffffff7 char _v24; // _cfa_ffffffe8 char* _v32; // _cfa_ffffffe0 char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed short _t89; // _t89 signed short _t97; // _t97 char* _t101; // _t101 long long _t119; // _t119 long long _t131; // _t131 char* _t142; // _t142 _t101 = __rax; _v48 = _t131; _v64 = _t119; _v52 = _t97; _v56 = _t89; _v9 = 2; _v24 = 1039; _t128 = _v48 + 66256; LMscoctr_Find_SCO_By_Connection_Handle(_v52 & 65535, _v48 + 66256, _v48 + 66256); _v40 = _t101; if(_v40 == 0) { _t128 = _v48 + 60216; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t101, _v48 + 60216); _v32 = _t101; if(_v32 != 0) { if(( *(_v48 + 191082) & 255) == 0) { _v56 = _v56 & 65535 ^ 13062; } _v9 = LMqos_LM_Validate_Change_Packet_Type( &_v56, _v32, _v48 + 191032); if((_v9 & 255) == 0) { if(((_v56 & 0x3306) != 0 & 255) != ((_v32[0x275]) & 0xff) && (_v32[0x278]) == 0) { (_v32[0xe]) = (_v32[2]) & 255; LMqos_Send_LMP_Packet_Type_Table_Req(); } _v9 = LMqos_LM_Change_Validated_Packet_Type(_v56 & 65535); } if((_v9 & 255) != 31) { _t128 = &_v24; _t142 = &_v9; EG_Generate_Command_Status_Event(); _v9 = 0; } else { _v9 = 0; _t128 = &_v24; EG_Generate_Command_Status_Event(); _t142 = _v32; LMqos_Send_HC_Packet_Type_Changed_Event(_v9 & 0xff); } } } else { _t142 = _v40; _v9 = LMsco_LM_Change_SCO_Packet_Type(_v56 & 65535); } __ecx = 0; HCI_Fill_Data_Unit(0, _t128, _v64, _t142); return _v9 & 0xff; } LMqos_LMP_Supervision_TO_BB_Ack() {// addr = 0x0046E734 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 long long _t32; // _t32 long long _t36; // _t36 _v80 = _t32; _v88 = _t36; _v9 = 0; _v12 = 3127; _v24 = &_v72; HCI_Fill_Data_Unit(1, &_v9, _v24, _v24 + 24); _v24 = _v24 + 24; HCI_Fill_Data_Unit(2, _v88 + 626, _v24, _v24 + 24); EG_Generate_Command_Complete_Event(); return; } LMqos_ACLU_Qos_Init( long long __rdi // r57 ) {// addr = 0x0046E7B9 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((short*)(_v16 + 22)) = 8; *((intOrPtr*)(_v16 + 16)) = 8; *((short*)(_v16 + 20)) = 8; *((char*)(_v16 + 25)) = 1; *((char*)(_v16 + 28)) = 1; *((char*)(_v16 + 29)) = 3; *((char*)(_v16 + 30)) = 1; *((char*)(_v16 + 31)) = 1; *((char*)(_v16 + 60)) = 1; return; } LMqos_UpdatePacketTypes( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046E812 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v16 = _v40 + 624; if(( *(_v32 + 191032) & 1) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xf0; } if(( *(_v32 + 191032) & 2) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xfff; } if(( *(_v32 + 191035) & 2) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xeefd; } if(( *(_v32 + 191035) & 4) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xddfb; } if(( *(_v32 + 191036) & 255) < 0) { *(_v16 + 22) = *(_v16 + 22) & 0xfc; } if(( *(_v32 + 191037) & 1) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xcf; } if(( *(_v40 + 40) & 1) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xf0; } if(( *(_v40 + 40) & 2) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xfff; } if(( *(_v40 + 43) & 2) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xeefd; } if(( *(_v40 + 43) & 4) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xddfb; } if(( *(_v40 + 44) & 255) < 0) { *(_v16 + 22) = *(_v16 + 22) & 0xfc; } if(( *(_v40 + 45) & 1) == 0) { *(_v16 + 22) = *(_v16 + 22) & 0xcf; return; } return; } LMqos_ACLU_Packet_Connection_Finalise() {// addr = 0x0046EA14 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t119; // _t119 long long _t126; // _t126 _v32 = _t119; _v40 = _t126; _v16 = _v40 + 624; LMqos_UpdatePacketTypes(_v32, _v40); if(( *(_v16 + 22) & 0x3306) == 0) { if(( *(_v16 + 22) & 0xcc00) == 0) { __edi = *(_v16 + 22) & 0xffff; *((intOrPtr*)(_v16 + 16)) = LMqos_LM_Gen_Allowed_Packet_Types( *(_v16 + 22) & 0xffff); } else { if(( *(_v16 + 22) & 0xcc00) != 0) { LMqos_LM_Change_Packet_Type( *(_v16 + 22) & 65535); } } } else { *(_v40 + 14) = *(_v40 + 2) & 255; if(( *(_v40 + 2) & 255) == 0 && ( *(_v40 + 629) & 255) == 0 && *((intOrPtr*)(_v40 + 632)) == 0) { LMqos_Send_LMP_Packet_Type_Table_Req(); } if(( *(_v16 + 22) & 0x3300) != 0) { LMqos_LM_Change_Packet_Type( *(_v16 + 22) & 65535); } } *((char*)(_v16 + 24)) = 0; LMqos_Update_ACLU_Packet_Types( *((intOrPtr*)(_v40 + 768))); r8d = 0; LCCMD_MaxSlotRequest(); return; } LMqos_Send_LMP_Packet_Type_Table_Req() {// addr = 0x0046EB9F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 intOrPtr _t21; // _t21 signed char _t28; // _t28 long long _t40; // _t40 long long _t44; // _t44 _v16 = _t40; _v24 = _t44; _v28 = _t28; LMch_Disable_L2CAP_Traffic(); if(_v28 != 1) { _t21 = 1; } else { _t21 = 2; } *((intOrPtr*)(_v24 + 632)) = _t21; r8d = _v28 & 255; LMP_Send_Packet_Type_Table_Req(); return; } LMpol_Max_Slots_Allowed() {// addr = 0x0046EC31 char _v9; // _cfa_fffffff7 char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t24; // _t24 long long _t32; // _t32 _v32 = _t32; _v40 = __rsi; _v44 = _t24; _v16 = 0; _v9 = 0; if(( *(_v40 + 4) & 4) != 0 && _v44 > 1) { _v16 = 36; } _t31 = _v32; _t33 = _v32; _v9 = LMsco_Count_SCO_Link_Num(_v32); if(_v9 != 0 && _v44 > 1) { DebugPrint(0, _t31, __rcx, __rdx, _t33, __rsi); _v16 = 52; } return _v16; } _Send_HC_Flow_Spec_Complete_Event( signed char __edx // r3 ) {// addr = 0x0046ECB0 char _v25; // _cfa_ffffffe7 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 intOrPtr _v88; // _cfa_ffffffa8 intOrPtr _v96; // _cfa_ffffffa0 intOrPtr _v104; // _cfa_ffffff98 char* _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t106; // _t106 long long _t109; // _t109 __edx = __edx; _v48 = _t106; _v56 = _t109; _v60 = __edx; _v25 = 0; if((_v60 & 255) == 0) { if(( *(_v56 + 686) & 255) != 0) { *((char*)(_v56 + 690)) = 1; } else { *((char*)(_v56 + 726)) = 1; } } *((char*)(_v56 + 687)) = 0; if(( *(_v56 + 686) & 255) != 0) { r11 = _v56 + 700; r10 = _v56 + 696; r9 = _v56 + 704; r8 = _v56 + 692; _v88 = r11; _v96 = r10; _v104 = r9; _v112 = r8; *__rsp = _v56 + 684; r9 = _v56 + 686; r8 = &_v25; EG_Event_Composer(0); return; } else { r11 = _v56 + 736; r10 = _v56 + 732; r9 = _v56 + 740; r8 = _v56 + 728; _v88 = r11; _v96 = r10; _v104 = r9; _v112 = r8; *__rsp = _v56 + 684; r9 = _v56 + 686; r8 = &_v25; EG_Event_Composer(0); return; } } LMqos_Check_Link_Flow_Specification( intOrPtr _a8 // _cfa_8 ) {// addr = 0x0046EE49 signed short _v26; // _cfa_ffffffe6 short _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 intOrPtr _v68; // _cfa_ffffffbc intOrPtr _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 char _t114; // _t114 _unknown_ _t134; // _t134 long long _t150; // _t150 _v48 = _t150; _v56 = __rsi; _v68 = r8d; _v72 = r9d; _v60 = _t114; _v64 = __ecx; _v28 = 0; _v32 = 0; while(_v32 <= 6) { _v32 = _v32 + 1; } _v26 = 1600 - _v28; _v76 = *(_v56 + 649) & 0xff; __edi = *(_v56 + 646) & 0xffff; if(LMqos_Max_Packet_Size( *(_v56 + 646) & 0xffff) * (_v26 & 65535) / _v76 <= _v72) { return 31; } *((intOrPtr*)(_v56 + 752)) = _v68; *((intOrPtr*)(_v56 + 748)) = _a8; *(_v56 + 725) = _v64 & 255; *((intOrPtr*)(_v56 + 744)) = _v72; return 0; } LMqos_LMP_Accpt_PTT_BB_Ack( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046F007 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40 + 624; if(_v16 != 0 && *((intOrPtr*)(_v16 + 144)) != 0) { *((char*)(_v16 + 5)) = *((intOrPtr*)(_v16 + 8)) == 2; *((intOrPtr*)(_v16 + 8)) = 0; LMqos_Update_Allowed_Packets( *(_v16 + 25) & 255); LMqos_Update_ACLU_Packet_Types( *((intOrPtr*)(_v40 + 768))); LCCMD_SetACLUPktTypeTableRequest(); return; } return; } LMqos_ACLU_Empty_BB_Ack_Acept_PTT_Req( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046F0D5 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t23; // _t23 _v16 = __rdi; _v24 = __rsi; if(_v24 != 0) { if( *((intOrPtr*)(_v24 + 768)) != 0) { LCCMD_LinkFlowControlRequest(); LM_Find_Link_Table_Entry_By_LLink(); _v24 = *((intOrPtr*)(_v24 + 432)); *__rsp = LMqos_LMP_Accpt_PTT_BB_Ack; r9d = 20; r8d = 32523; LMP_Send_Accepted_Ext_Tag( *((intOrPtr*)(_v24 + 432))); return; } } return; } LMqos_Restore_Packet_Type_After_Role_Switch() {// addr = 0x0046F1A1 signed int _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t175; // _t175 long long _t184; // _t184 _v32 = _t175; _v40 = _t184; _v9 = 1; _v24 = _v40 + 624; if(( *(_v40 + 4) & 65535) != 1 || ( *(_v24 + 25) & 255) == (_v9 & 255)) { return; } else { *(_v24 + 26) = *(_v24 + 25) & 255; *(_v24 + 20) = *(_v24 + 22) & 65535; *(_v24 + 25) = 1; LMqos_Update_Allowed_Packets(_v9 & 255); LMqos_Update_ACLU_Packet_Types( *((intOrPtr*)(_v24 + 144))); *(_v24 + 28) = 1; if(( *(_v40 + 40) & 2) == 0) { if(( *(_v40 + 40) & 1) != 0) { *(_v24 + 28) = 3; } } else { *(_v24 + 28) = 5; } if(( *(_v24 + 28) & 255) > 1) { r8d = *(_v24 + 28) & 0xff; LMP_Send_Max_Slot(); } if(( *(_v40 + 32) & 255) != 0) { r8d = 0; LCCMD_MaxSlotRequest(); EG_Event_Composer(0); } *(_v40 + 14) = *(_v40 + 2) & 255; r8d = *(_v24 + 26) & 0xff; LMP_Send_Max_Slot_Req(); return; } } LMqos_Read_Link_Quality( signed long long __rax // r53 ) {// addr = 0x0046F3A7 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t25; // _t25 long long _t28; // _t28 long long _t34; // _t34 long long _t39; // _t39 _t28 = __rax; _v32 = _t39; _v48 = _t34; _v36 = _t25; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v16 = _t28; if(_v16 == 0) { return 2; } __rsi = _v48 + 24; HCI_Fill_Data_Unit(2, _v16 + 626, _v48, __rsi); _v48 = _v48 + 24; HCI_Fill_Data_Unit(1, _v16 + 93, _v48, __rsi); return 0; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0046F438 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } LM_SoftReset_PageScanCancelCB() {// addr = 0x0046F477 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t6; // _t6 _v16 = _t6; _v24 = __rsi; _v40 = __rcx; _v28 = __al; LM_SoftReset_Disconn(); return; } LM_SoftReset_Timeout() {// addr = 0x0046F49E char _v9; // _cfa_fffffff7 char _v12; // _cfa_fffffff4 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t27; // _t27 _unknown_ _t34; // _t34 _unknown_ _t36; // _t36 long long _t39; // _t39 long long _t45; // _t45 _v48 = _t39; _v56 = _t45; _v9 = 0; _v12 = 3075; DebugPrint(0, _t27, _t34, _t36, _t39, _t45); BT_SoftReset(); BthEnableInterrupt(); BthEnableRxTx(); _v12 = 3075; __ecx = 1; write_du(1, &_v9, &_v40, _t45); EG_Generate_Command_Complete_Event(); DebugPrint(0, ?_? ( &_v12), _v48 + 190168, &_v40, _v48 + 190168, &_v12); return; } LM_RadioOff_All_Link_Delete_Timeout() {// addr = 0x0046F54E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 long long _t20; // _t20 _v16 = _t20; _v24 = __rsi; DebugPrint(0, _t16, __rcx, __rdx, _t20, __rsi); BT_RadioOffDeinitialize(); RADIO_DeInitialise(); BthRadioOff(); DebugPrint(0, _v16, __rcx, __rdx, _v16, __rsi); return; } LM_RadioOff_Detach_Timeout() {// addr = 0x0046F5B6 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed long long _t58; // _t58 signed long long _t62; // _t62 signed long long _t68; // _t68 signed long long _t69; // _t69 _v32 = _t68; _v40 = __rsi; _v10 = 0; _v9 = 0; DebugPrint(0, _t58, __rcx, __rdx, _t68, __rsi); _v10 = 0; while(_v10 <= 6) { __rdx = _v32; _t58 = _t58 * 808 + __rdx + 60208; if(( *(_t58 + 17) & 255) != 0) { _t62 = _v32; __rdx = _t62 + 60224; _v24 = _t62 * 808 + __rdx; _t58 = *(_v24 + 432); if(_t58 != 0) { _t58 = *( *(_v24 + 432) + 48); if(_t58 != 0) { _v9 = _v9 + 1; DebugPrint(0, _t58, __rcx, __rdx, _t68, __rsi); __rdx = _v24; _t58 = _v32; __rsi = __rdx; _t68 = _t58; LMconnection_Disconnect_Related_Links(); } } } _v10 = _v10 + 1; } if(_v9 == 0) { _t61 = _v32; _t69 = _v32; LM_RadioOff_All_Link_Delete_Timeout(); } else { _t61 = _v32; _t69 = _v32; DM_Set_Timer(); } DebugPrint(0, _t61, __rcx, __rdx, _t69, __rsi); return; } LM_SoftReset_Disconn() {// addr = 0x0046F6E6 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t48; // _t48 signed int _t66; // _t66 _v32 = _t66; _v9 = 0; _v10 = 0; while(_v10 <= 6) { _t48 = _t48 * 808 + _v32 + 60208; if(( *(_t48 + 17) & 255) != 0) { _v24 = _v32 * 808 + _v32 + 60224; _t48 = *(_v24 + 432); if(_t48 != 0) { _t48 = *( *(_v24 + 432) + 48); if(_t48 != 0) { _v9 = _v9 + 1; _t48 = *(_v24 + 432); r9d = 0; r8d = 21; LMP_Send_Detach(); } } } _v10 = _v10 + 1; } if(_v9 == 0) { LM_SoftReset_Timeout(); return; } DM_Set_Timer(); return; } LM_SoftReset() {// addr = 0x0046F7F8 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t36; // _t36 _v16 = _t36; r8d = *(_v16 + 190504) & 0xff; DebugPrint(0, _v16, __rcx, __rdx, _t36, __rsi); if(( *(_v16 + 190504) & 2) == 0) { LM_SoftReset_Disconn(); return; } if(BTSTS_CheckDeviceState(32, _v16 + 191308) != 0 || *((intOrPtr*)(_v16 + 54744)) == 0) { LM_SoftReset_Disconn(); return; } else { LCCMD_PageScanCancelRequest(); return; } } LM_RadioOffPageScanCancelCB() {// addr = 0x0046F8A2 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t47; // _t47 signed long long _t55; // _t55 signed int _t73; // _t73 long long _t77; // _t77 _v32 = _t73; _v40 = _t77; _v56 = __rcx; _v44 = _t47; _v9 = 0; if(_v44 != 0) { L8: if(_v9 == 0) { LM_RadioOff_Detach_Timeout(); return; } DM_Set_Timer(); return; } else { _v10 = 0; while(_v10 <= 6) { _t55 = _t55 * 808 + _v32 + 60208; if(( *(_t55 + 17) & 255) != 0) { _v24 = _v32 * 808 + _v32 + 60224; _t55 = *(_v24 + 432); if(_t55 != 0) { _t55 = *( *(_v24 + 432) + 48); if(_t55 != 0) { _v9 = _v9 + 1; _t55 = *(_v24 + 432); r9d = 0; r8d = 21; LMP_Send_Detach(); } } } _v10 = _v10 + 1; } goto L8; } } LM_RadioOnPageScanRequestCB() {// addr = 0x0046F9CB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v40 = __rcx; _v28 = __al; if(_v28 == 0) { RADIO_GenerateRadioChangeEvent(); return; } return; } LM_RadioOff() {// addr = 0x0046F9FD long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; LCCMD_PageScanCancelRequest(); return; } LM_RadioOn() {// addr = 0x0046FA1C _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 signed int _t11; // _t11 long long _t33; // _t33 intOrPtr _t34; // _t34 _v16 = _t33; _t34 = _v16; BthRadioOn(_v16); _t26 = *((intOrPtr*)(_v16 + 191488)); if((_t11 & 1) != 0) { _t26 = *_v16 + 544; _t34 = *_v16 + 544; RT_PCI_IO_WRITE32(); } DebugPrint(0, _t26, __rcx, __rdx, _t34, __rsi); BthEnableInterrupt(); BthEnableRxTx(); LCCMD_PageScanRequest(); return; } LM_Initialise() {// addr = 0x0046FAB3 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t22; // _t22 long long _t39; // _t39 _v16 = _t39; DebugPrint(0, _t22, __rcx, __rdx, _t39, __rsi); RtlFillMemory(12736, 0, _v16 + 60216); DM_Init_Timer(_v16 + 60216); LMconfig_Initialise(); LMconnection_Initialise(); LMscan_Initialise(); LMscoctr_Initialise(__rdx, _v16 + 66256); LMpolicy_Initialise(); LM_Inquiry_Initialise(); LMafh_Initialise(); LMsec_Initialize(); LMPbback_Initialise(); LMtst_Initialise(); LMEvt_Initialise(); LMTask_Initialise(); LMTrx_Initialise(); LMbw_Initialise(_v16); return; } LM_DeInitialise() {// addr = 0x0046FBA1 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; LMTask_DeInitialise(); return; } LM_Task( long long __rdi // r57 ) {// addr = 0x0046FBBB long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t5; // _t5 _v16 = __rdi; LMdisp_LMP_Command_Dispatcher(_t5); DM_Handle_Expired_Timers(_v16); LMEvt_DispatchPendingEvent(); return; } SecuritySanityCheck() {// addr = 0x0046FBED long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; if(( *(_v16 + 118) & 255) != 0 || ( *(_v16 + 126) & 255) != 0) { r8d = *(_v16 + 126) & 0xff; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return; } else { return; } } ConnectionSanityCheck() {// addr = 0x0046FC47 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed int _v60; // _cfa_ffffffc4 signed int _v68; // _cfa_ffffffbc signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c long long _v108; // _cfa_ffffff94 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r12); _push(__rbx); __rsp = __rsp - 96; _v48 = __rdi; if(( *(_v48 + 12) & 255) != 0) { if(( *(_v48 + 34) & 255) == 0) { r8d = *(_v48 + 34) & 0xff; DebugPrint(0, _v48, __rcx, __rdx, __rdi, __rsi); } } if(( *(_v48 + 32) & 255) == 0 || ( *(_v48 + 37) & 255) != 3 || ( *(_v48 + 38) & 255) != 3 || *((intOrPtr*)(_v48 + 432)) == 0 || *((intOrPtr*)(_v48 + 768)) == 0) { _v32 = 0; if( *((intOrPtr*)(_v48 + 432)) != 0 && *((intOrPtr*)( *((intOrPtr*)(_v48 + 432)) + 96)) != 0 && *((intOrPtr*)( *((intOrPtr*)(_v48 + 432)) + 104)) != 0 && *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v48 + 432)) + 104)) + 24)) != 0) { _v32 = *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v48 + 432)) + 104)) + 24)) + 4; } if(_v32 == 0) { __rcx = *((intOrPtr*)(_v48 + 768)); __rdx = *((intOrPtr*)(_v48 + 432)); _v108 = __rcx; *__rsp = __rdx; r9d = *(_v48 + 38) & 0xff; r8d = *(_v48 + 37) & 0xff; DebugPrint(0, _v48, __rcx, __rdx, __rdi, __rsi); } else { r11d = *_v32 & 0xff; r10d = (_v32[1]) & 0xff; r9d = (_v32[2]) & 0xff; r8d = (_v32[3]) & 0xff; __rcx = *((intOrPtr*)(_v48 + 768)); __rdx = *((intOrPtr*)(_v48 + 432)); r12d = *(_v48 + 38) & 0xff; _v60 = r11d; _v68 = r10d; _v76 = r9d; _v84 = r8d; _v92 = (_v32[4]) & 0xff; _v100 = (_v32[5]) & 0xff; _v108 = __rcx; *__rsp = __rdx; r9d = r12d; r8d = *(_v48 + 37) & 0xff; DebugPrint(0, _v48, __rcx, __rdx, __rdi, __rsi); } } if(( *(_v48 + 35) & 255) != 0) { DebugPrint(0, _v48, __rcx, __rdx, __rdi, __rsi); } __rsp = __rsp + 96; _pop(__rbx); _pop(r12); return; } QosSanityCheck() {// addr = 0x0046FED8 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _v32 = __rdi; _v16 = _v32 + 624; if( *((intOrPtr*)(_v16 + 8)) != 0 || ( *(_v16 + 24) & 255) != 0 || ( *(_v16 + 26) & 255) != 0) { r9d = *(_v16 + 26) & 0xff; r8d = *(_v16 + 24) & 0xff; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); } if( *((intOrPtr*)(_v16 + 36)) != 0 || *(_v16 + 44) != 0 || *(_v16 + 56) != 0 || ( *(_v16 + 61) & 255) != 0 || ( *(_v16 + 63) & 255) != 0) { _v48 = *(_v16 + 63) & 0xff; *__rsp = *(_v16 + 61) & 0xff; r9d = *(_v16 + 56); r8d = *(_v16 + 44); DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); } if(( *(_v16 + 65) & 255) != 0 || *(_v16 + 84) != 0 || *(_v16 + 88) != 0 || *(_v16 + 92) != 0 || *(_v16 + 96) != 0) { _v48 = *(_v16 + 96); *__rsp = *(_v16 + 92); r9d = *(_v16 + 88); r8d = *(_v16 + 84); DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); } if(( *(_v16 + 101) & 255) != 0 || *(_v16 + 124) != 0 || *(_v16 + 132) != 0 || ( *(_v16 + 142) & 65535) != 0) { *__rsp = *(_v16 + 142) & 0xffff; r9d = *(_v16 + 132); r8d = *(_v16 + 124); DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); } if(( *(_v32 + 10) & 65535) != 0) { DebugPrint(0, _v32, __rcx, __rdx, __rdi, __rsi); return; } return; } LinkPolicySanityCheck() {// addr = 0x0047011E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; if(( *(_v24 + 61) & 255) != 0) { DebugPrint(0, _v24, __rcx, __rdx, __rdi, __rsi); return; } if(( *(_v16 + 54760) & 255) != 0 || ( *(_v16 + 54792) & 255) != 0) { r8d = *(_v16 + 54792) & 0xff; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return; } else { return; } } LM_SanityCheck( _unknown_ __rax // r53 ) {// addr = 0x004701BC signed int _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed char _v29; // _cfa_ffffffe3 char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t104; // _t104 signed int _t111; // _t111 signed long long _t155; // _t155 signed int _t160; // _t160 signed int _t181; // _t181 signed int _t200; // _t200 _v80 = _t200; _v28 = 0; _v27 = 0; _v26 = 0; _v25 = 0; _v29 = 0; while(_v29 <= 6) { _t155 = _v80; if(( *(_t155 + 190499) & 255) == 1) { break; } _t198 = _v80; _t104 = *(_t155 * 808 + _v80 + 0xeb41) & 255; if(_t104 != 1) { L11: _v29 = _v29 + 1; continue; } else { _v64 = _v80 * 808 + _v80 + 60224; _v56 = _v64 + 624; _v28 = _v28 + 1; _t104 = *(_v64 + 2) & 255; if(_t104 != 0) { _v26 = _v26 + 1; } else { _v27 = _v27 + 1; } if( *((intOrPtr*)(_v64 + 768)) == 0) { L10: ConnectionSanityCheck(); _t198 = _v64; __rsi = _v64; LinkPolicySanityCheck(); _t200 = _v64; SecuritySanityCheck(); goto L11; } _v48 = *((intOrPtr*)( *((intOrPtr*)(_v64 + 768)) + 72)); _t104 = *(_v48 + 20) & 65535; if(_t104 == 17) { L9: _v25 = _v25 + 1; goto L10; } _t104 = *(_v48 + 20) & 65535; if(_t104 != 19) { goto L10; } goto L9; } } if(_v28 == 0) { L17: _v36 = 0; _t160 = *(_v80 + 191488); if((_t104 & 1) == 0) { _v36 = 4294967295; _v72 = _t160; } else { _t181 = *_v80 + 960; __rcx = &_v36; __rsi = __rcx; _t200 = _t181; RT_PCI_IO_READ32(); _v72 = _t181; } _t111 = _v72 & 0xef; _v72 = _t111; if((_t111 & 1) != 0) { _t200 = *_v80 + 960; RT_PCI_IO_WRITE32(); } L22: if(( *(_v80 + 60220) & 255) != _v28 || ( *(_v80 + 60223) & 255) != _v27 || ( *(_v80 + 60222) & 255) != _v26 || ( *(_v80 + 191474) & 255) != _v28 || ( *(_v80 + 191477) & 255) != _v25) { r10d = *(_v80 + 191477) & 0xff; r9d = _v25 & 255; r8d = *(_v80 + 191474) & 0xff; r11d = *(_v80 + 60220) & 0xff; _v104 = r10d; _v112 = r9d; _v120 = r8d; _v128 = _v28 & 255; _v136 = *(_v80 + 60222) & 0xff; _v144 = _v26 & 255; *__rsp = *(_v80 + 60223) & 0xff; r9d = _v27 & 255; r8d = r11d; DebugPrint(0, _v80, __rcx, _t198, _t200, __rsi); return; } else { return; } } _t104 = _v25 & 255; if(_t104 != _v28) { goto L22; } goto L17; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00470498 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004704D7 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x00470509 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0047051B signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LMConnRnr_LC_Page_CB() {// addr = 0x0047065C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t41; // _t41 _unknown_ _t63; // _t63 intOrPtr _t64; // _t64 long long _t65; // _t65 long long _t73; // _t73 _unknown_ _t76; // _t76 long long _t79; // _t79 _unknown_ _t80; // _t80 long long _t82; // _t82 long long _t83; // _t83 _v32 = _t79; _v40 = _t82; _v56 = _t73; _v44 = _t41; if(_v44 != 0) { DebugPrint(0, _t63, _t73, _t76, _t79, _t82); } if(_v40 == 0) { DebugPrint(0, _t63, _t73, _t76, _t79, _t82); return; } else { _t64 = _v32; _t77 = _t64 + 60216; _t65 = _v40; _t83 = _t65; _t80 = _t64 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _t65; if(_v16 == 0) { DebugPrint(0, _t65, _t73, _t77, _t80, _t83); return; } if(( *(_v16 + 1) & 255) == 0) { DebugPrint(0, _v16, _v16, _t77, _t80, _t83); return; } if( *((intOrPtr*)(_v16 + 24)) == 0) { DebugPrint(0, _v16, _t73, _t77, _t80, _t83); return; } r8 = *((intOrPtr*)(_v16 + 24)); r8(); return; } } LMConnRnr_LC_LinkDelete_CB() {// addr = 0x0047078A long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t41; // _t41 _unknown_ _t63; // _t63 intOrPtr _t64; // _t64 long long _t65; // _t65 long long _t73; // _t73 _unknown_ _t76; // _t76 long long _t79; // _t79 _unknown_ _t80; // _t80 long long _t82; // _t82 long long _t83; // _t83 _v32 = _t79; _v40 = _t82; _v56 = _t73; _v44 = _t41; if(_v44 != 0) { DebugPrint(0, _t63, _t73, _t76, _t79, _t82); } if(_v40 == 0) { DebugPrint(0, _t63, _t73, _t76, _t79, _t82); return; } else { _t64 = _v32; _t77 = _t64 + 60216; _t65 = _v40; _t83 = _t65; _t80 = _t64 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _t65; if(_v16 == 0) { DebugPrint(0, _t65, _t73, _t77, _t80, _t83); return; } if(( *(_v16 + 1) & 255) == 0) { DebugPrint(0, _v16, _v16, _t77, _t80, _t83); return; } if( *((intOrPtr*)(_v16 + 24)) == 0) { DebugPrint(0, _v16, _t73, _t77, _t80, _t83); return; } r8 = *((intOrPtr*)(_v16 + 24)); r8(); return; } } LMConnRnr_TrxFeature_ExitCB( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004708B8 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; if(_v16 == 0 || _v24 == 0 || _v32 == 0) { return; } else { if(( *(_v24 + 1) & 255) != 0) { if( *((intOrPtr*)(_v24 + 24)) == 0) { goto L8; } else { r8 = *((intOrPtr*)(_v24 + 24)); r8(); return; } } L8: return; } } LMConnRnr_TrxExtFeature_ExitCB( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00470924 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; if(_v16 == 0 || _v24 == 0 || _v32 == 0) { return; } else { if(( *(_v24 + 1) & 255) != 0) { if( *((intOrPtr*)(_v24 + 24)) == 0) { goto L8; } else { r8 = *((intOrPtr*)(_v24 + 24)); r8(); return; } } L8: return; } } LMRnr_TrxName_ExitCB( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00470990 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; if(_v32 == 0 || _v40 == 0 || _v48 == 0) { return; } else { if(( *(_v40 + 1) & 255) == 0) { return; } _v16 = _v48 + 6; r8 = _v16 + 2; EG_Event_Composer(0); return; } } LMConnRnr_TrxName_ExitCB( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00470A13 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; if(_v16 == 0 || _v24 == 0 || _v32 == 0) { return; } else { if(( *(_v24 + 1) & 255) != 0) { if( *((intOrPtr*)(_v24 + 24)) == 0) { goto L8; } else { r8 = *((intOrPtr*)(_v24 + 24)); r8(); return; } } L8: return; } } LMConnRnr_LC_Event_Handler() {// addr = 0x00470A7F signed int _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t38; // _t38 signed char _t39; // _t39 _unknown_ _t58; // _t58 intOrPtr _t59; // _t59 long long _t60; // _t60 long long _t66; // _t66 _unknown_ _t71; // _t71 long long _t76; // _t76 _unknown_ _t77; // _t77 long long _t81; // _t81 long long _t82; // _t82 _v32 = _t76; _v40 = _t81; _v56 = _t66; _v44 = _t39; _v9 = 0; if(_v40 == 0) { DebugPrint(0, _t58, _t66, _t71, _t76, _t81); } else { _t59 = _v32; _t72 = _t59 + 60216; _t60 = _v40; _t82 = _t60; _t77 = _t59 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v24 = _t60; if(_v24 == 0) { DebugPrint(0, _t60, _t66, _t72, _t77, _t82); } else { if(( *(_v24 + 1) & 255) == 0) { DebugPrint(0, _v24, _v24, _t72, _t77, _t82); } else { _t38 = _v44 & 255; if(_t38 == 2) { LMConnRnr_Event_Handler(); _v9 = _t38; } else { if(_t38 == 20) { LMConnRnr_Event_Handler(); _v9 = _t38; } else { if(_t38 == 1) { LMConnRnr_Event_Handler(); _v9 = _t38; } } } } } } return; } LMConnRnr_Event_Handler() {// addr = 0x00470BB4 signed int _v9; // _cfa_fffffff7 signed int _v11; // _cfa_fffffff5 char _v12; // _cfa_fffffff4 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 signed char _v140; // _cfa_ffffff74 long long _v152; // _cfa_ffffff68 _unknown_ __rbp; // r59 signed char _t47; // _t47 _v128 = __rdi; _v136 = __rsi; _v152 = __rcx; _v140 = _t47; _v12 = 0; __rax = _v136; _v11 = *(__rax + 19) & 255; _v9 = _v11 & 255; r8d = _v140 & 255; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); if((_v9 & 255) <= 19) { goto __rax; } if(_v136 != 0) { __rax = _v136; *(__rax + 19) = _v11 & 255; } if(_v12 == 0) { r9d = _v11 & 255; r8d = _v9 & 255; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); } else { r9d = _v11 & 255; r8d = _v9 & 255; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); } return; } LM_Read_Remote_Name() {// addr = 0x004726AD char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 _unknown_ _t109; // _t109 signed int _t113; // _t113 intOrPtr _t134; // _t134 signed int _t139; // _t139 long long _t171; // _t171 _unknown_ _t195; // _t195 long long _t211; // _t211 signed int _t229; // _t229 _v64 = _t211; _v72 = _t229; _v10 = 0; _v24 = 1049; _t109 = BTSTS_CheckDeviceState(1024, _v64 + 191308); if(_t109 == 0) { _t134 = _v64; _t184 = _t134 + 191072; _t135 = _v72; _t230 = _t134 + 191072; _t213 = _v72; RtlCompareMemory(6, _v72, _t134 + 191072); if(_t109 != 0) { LM_Find_Link_Table_Entry(); _v48 = _v72; if(_v48 == 0) { if( *(_v72 + 16) >> 15 == 0) { _t113 = 0; } else { _t113 = *(_v72 + 16) & 32767; } _v16 = _t113; _t139 = _v72; r8d = LMConnRnr_Event_Handler; LM_Add_Link_Table_Entry( *(_v64 + 190530) & 65535, _t139); _v48 = _t139; if(_v48 == 0) { _v20 = 7; EG_Generate_Command_Status_Event(); return; } else { _v88 = _v48 + 432; _v96 = LMConnRnr_LC_Page_CB; *__rsp = LMConnRnr_LC_Event_Handler; r9d = 0; r8d = 0; _v9 = LCCMD_PageRequest(); if(_v9 == 0) { LM_Delete_Link_Table_Entry(_v64 + 60216); _v48 = 0; _v20 = 7; EG_Generate_Command_Status_Event(); return; } BTSTS_SetDeviceState(); *(_v48 + 19) = 1; return; } } if( *((intOrPtr*)(_v48 + 24)) != LMConnRnr_Event_Handler) { if( *((intOrPtr*)(_v48 + 792)) != _v48 + 792 || *((intOrPtr*)(_v48 + 800)) != _v48 + 792) { _v40 = _v48 + 792; _v56 = *_v40; while(_v56 != _v40) { _v32 = _v56 - 288; if( *((intOrPtr*)(_v32 + 280)) != LMRnr_TrxName_ExitCB) { _v56 = *_v56; continue; } _v10 = 1; goto L14; } goto L14; } else { L14: if(_v10 != 0) { _v20 = 12; EG_Generate_Command_Status_Event(); return; } _t171 = _v64; LMTrx_NewName(_t171); _v32 = _t171; if(_v32 == 0) { _v20 = 7; EG_Generate_Command_Status_Event(); return; } _v20 = 0; EG_Generate_Command_Status_Event(); return; } } _v20 = 12; EG_Generate_Command_Status_Event(); return; } DebugPrint(0, _t135, _t184, _t195, _t213, _t230); _v20 = 18; EG_Generate_Command_Status_Event(); return; } _v20 = 7; EG_Generate_Command_Status_Event(); return; } LM_Read_Remote_Name_Cancel() {// addr = 0x00472A58 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 _unknown_ __rbp; // r59 long long _t151; // _t151 long long _t164; // _t164 _v112 = _t151; _v120 = _t164; _v16 = 0; _v9 = 0; _v40 = 0; LM_Find_Link_Table_Entry(); _v32 = _v120; if(_v32 == 0) { _v16 = 18; _v12 = 1050; write_du(1, &_v16, &_v104, &_v104 + 24); write_du(6, _v120, &_v104 + 24, &_v104 + 24); EG_Generate_Command_Complete_Event(); return; } if( *((intOrPtr*)(_v32 + 24)) != LMConnRnr_Event_Handler) { if( *((intOrPtr*)(_v32 + 792)) != _v32 + 792 || *((intOrPtr*)(_v32 + 800)) != _v32 + 792) { _v24 = _v32 + 792; _v48 = *_v24; while(_v48 != _v24) { _v40 = _v48 - 288; if( *((intOrPtr*)(_v40 + 280)) != LMRnr_TrxName_ExitCB) { _v48 = *_v48; continue; } _v9 = 1; goto L10; } goto L10; } else { L10: if(_v9 == 0) { _v16 = 18; _v12 = 1050; write_du(1, &_v16, &_v104, &_v104 + 24); write_end_du(6, &_v104 + 24, _v120); EG_Generate_Command_Complete_Event(); return; } _v16 = 0; _v12 = 1050; write_du(1, &_v16, &_v104, &_v104 + 24); write_end_du(6, &_v104 + 24, _v120); EG_Generate_Command_Complete_Event(); r10 = *((intOrPtr*)(_v40 + 272)); r9d = 0; r8d = 0; r10(); return; } } r8 = *((intOrPtr*)(_v32 + 24)); r8(); return; } LMconnection_LMP_Name_Res() {// addr = 0x00472CD5 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; DebugPrint(0, *((intOrPtr*)(_v24 + 432)), __rcx, __rdx, __rdi, __rsi); return 0; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00472D20 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00472D76 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LMscan_Page_Scan_Delay_Timeout() {// addr = 0x00472EB7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 long long _t14; // _t14 _v16 = _t14; _v24 = __rsi; DebugPrint(0, _t11, __rcx, __rdx, _t14, __rsi); *((char*)(_v16 + 191059)) = 0; LCCMD_PageScanRequest(); return; } LMscan_Initialise() {// addr = 0x00472EFE long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; __esi = 3; LCEVHDR_RegisterEventHandler(3, __rdx, _v16); return; } LMscan_Page_Scan_Incoming() {// addr = 0x00472F22 char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 char _t171; // _t171 _unknown_ _t232; // _t232 _unknown_ _t306; // _t306 intOrPtr _t309; // _t309 long long _t344; // _t344 intOrPtr _t368; // _t368 intOrPtr _t386; // _t386 long long _t387; // _t387 intOrPtr _t389; // _t389 long long _t407; // _t407 intOrPtr _t409; // _t409 intOrPtr _t413; // _t413 _unknown_ _t418; // _t418 intOrPtr _t422; // _t422 _unknown_ _t426; // _t426 long long _t438; // _t438 _unknown_ _t439; // _t439 long long _t440; // _t440 intOrPtr _t442; // _t442 intOrPtr _t446; // _t446 _unknown_ _t449; // _t449 intOrPtr _t451; // _t451 _v32 = _t407; _v40 = _t438; _v48 = _t387; _v16 = 31; DebugPrint(0, _t306, _t385, _t387, _t407, _t438); if(_v40 == 0) { return; } if( *((intOrPtr*)(_v40 + 88)) == 0) { return; } _t309 = _v48; _t388 = _t309 + 16; _t439 = _t309 + 16; _t171 = LM_Find_Link_Table_Entry(); _v24 = _v32 + 60216; if(_v24 != 0) { _t386 = _v48; _t389 = _v40; _t440 = _v24; _t312 = _v32; _t409 = _v32; LMTask_NewReconnection(); _v9 = _t171; if(_v9 != 255) { DebugPrint(0, _t312, _t386, _t389, _t409, _t440); _v16 = 0; } else { DebugPrint(0, _t312, _t386, _t389, _t409, _t440); _v16 = 11; r9d = 0; r8d = _v16 & 255; LMP_Send_Detach(); if( *((intOrPtr*)(_v40 + 88)) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 88))); LCCMD_LinkDeleteRequest(); } _t391 = _v40; LLINK_ReadPicoClock(_v32, _v40); _t442 = _v40; _t413 = _v32; LCCMD_LinkDeleteRequest(); _t321 = _v32; if(( *(_v32 + 191059) & 255) == 0) { *(_v32 + 191059) = DM_Set_Timer(); } else { DebugPrint(0, _t321, _t386, _t391, _t413, _t442); } } goto L28; } else { BTCoex_EventCallback(); _t329 = _v32 + 191308; _t418 = _v32 + 191308; if(LMconfig_LM_Check_Sctnet_Slv_State(_t171) == 2) { DebugPrint(0, _t329, _t385, _t388, _t418, _t439); _v16 = 43; r9d = 0; r8d = _v16 & 255; LMP_Send_Detach(); if( *((intOrPtr*)(_v40 + 88)) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 88))); LCCMD_LinkDeleteRequest(); } _t395 = _v40; LLINK_ReadPicoClock(_v32, _v40); _t446 = _v40; _t422 = _v32; LCCMD_LinkDeleteRequest(); _t338 = _v32; if(( *(_v32 + 191059) & 255) == 0) { *(_v32 + 191059) = DM_Set_Timer(); } else { DebugPrint(0, _t338, _t385, _t395, _t422, _t446); } L28: return; } _t344 = _v32; _t449 = _v48 + 16; _t399 = _v32; _t426 = _v32 + 60216; r8d = LM_Connection_Event_Handler; LM_Add_Link_Table_Entry( *(_t344 + 190530) & 0xffff, _t344); _v24 = _t344; if(_v24 == 0) { DebugPrint(0, _t344, _t385, _t399, _t426, _t449); _v16 = 9; r9d = 0; r8d = _v16 & 255; LMP_Send_Detach(); if( *((intOrPtr*)(_v40 + 88)) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 88))); LCCMD_LinkDeleteRequest(); } _t401 = _v40; LLINK_ReadPicoClock(_v32, _v40); _t451 = _v40; _t430 = _v32; LCCMD_LinkDeleteRequest(); L13: _t353 = _v32; if(( *(_v32 + 191059) & 255) == 0) { *(_v32 + 191059) = DM_Set_Timer(); } else { DebugPrint(0, _t353, _t385, _t401, _t430, _t451); } goto L28; } *((char*)(_v24 + 2)) = 1; *((short*)(_v24 + 10)) = 51; *((short*)(_v24 + 4)) = 1024; *(_v24 + 36) = 0; *((long long*)(_v24 + 432)) = _v40; *(_v24 + 16) = *(_v48 + 3) & 255; _t434 = _v48 + 4; *((intOrPtr*)(_v24 + 440)) = casting_uint32(_v48 + 4); _t368 = _v40; _t406 = *((intOrPtr*)(_t368 + 88)); *((long long*)(_v24 + 768)) = *((intOrPtr*)(_t368 + 88)); *((short*)(_v24 + 644)) = 65310; *((short*)(_v24 + 646)) = 65310; *((char*)(_v32 + 60220)) = _v32 + 1; *((char*)(_v32 + 60222)) = _v32 + 1; _t376 = _v32; if(( *(_v32 + 191082) & 255) == 0) { _t406 = *((intOrPtr*)( *((intOrPtr*)(_v24 + 432)) + 48)); _t376 = *((intOrPtr*)(_v24 + 432)); _t385 = _v32; _t434 = _v32 + 60216; r8d = 0; LMP_Send_L2Cap_Flow(); } DebugPrint(0, _t376, _t385, _t406, _t434, _t449); LMch_Disable_L2CAP_Traffic(); _t385 = _v24; LMch_Pause_L2CAP_Report(); _t232 = LMconfig_LM_Sctnet_State_Add_S(); _t401 = _v24; _t451 = _v24; _t430 = _v32; LMlpctrl_Start_Monitor(_t232, _v32); _v16 = 0; goto L13; } } LMscan_Change_Page_Scan_Activity() {// addr = 0x00473553 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed short _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed short _t63; // _t63 signed short _t69; // _t69 long long _t80; // _t80 long long _t89; // _t89 _v32 = _t89; _v36 = _t69; _v40 = _t63; _v10 = UDM_ComputeSR( *(_v32 + 190520) & 0xffff, *(_v32 + 190518) & 0xffff); _v9 = UDM_ComputeSR(_v40 & 65535, _v36 & 65535); _t80 = _v32; BTCFG_WritePageScanActivity(); if((_v10 & 255) == _v9) { L9: return; } else { _v11 = 0; while(_v11 <= 6) { LM_Find_Link_Table_Entry_By_Index(_v11 & 255, _v32 + 60216); _v24 = _t80; if(_v24 != 0) { _t80 = _v24; if(( *(_t80 + 1) & 255) != 0) { _t80 = *((intOrPtr*)(_v24 + 432)); if(_t80 != 0) { _t80 = _v24; if(( *(_t80 + 4) & 65535) == 1) { _t80 = *((intOrPtr*)(_v24 + 432)); r9d = _v9 & 255; r8d = 0; LMP_Send_Page_Scan_Mode_Req(); } } } } _v11 = _v11 + 1; } goto L9; } } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00473684 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } dump_list() {// addr = 0x004736B3 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0047377B signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LLINK_Suspend( long long __rdi // r57 ) {// addr = 0x00473B5C long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 1; return; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x00473B6E long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00473B80 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LMscoctr_Covert_LM_To_LC_ESCO_Packet_Type( char __edi // r4 ) {// addr = 0x00473CC1 char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; if(_v12 != 7) { if(_v12 != 12) { if(_v12 != 13) { if(_v12 != 38) { if(_v12 != 44) { if(_v12 != 55) { if(_v12 != 61) { return 23; } return 61; } return 55; } return 60; } return 54; } return 29; } return 28; } return 23; } LMscoctr_Initialise( signed long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00473D2C char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v9 = 0; while(_v9 <= 3) { _v24 = ((__rdx << 2) + __rdx << 5) + _v32 + 40; *_v24 = 0; _v9 = _v9 + 1; } return; } LMscoctr_Alloc( _unknown_ __rax // r53 ) {// addr = 0x00473D6E signed int _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed short _v68; // _cfa_ffffffbc signed char _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 _unknown_ __rbp; // r59 signed short _t134; // _t134 signed int _t175; // _t175 signed int _t176; // _t176 long long _t223; // _t223 signed long long _t224; // _t224 long long _t232; // _t232 _v48 = _t232; _v56 = __rsi; _v64 = _t223; _v68 = _t134; _v72 = r8d; _v76 = r9d; _v9 = 0; _v40 = 0; do { _t224 = _v9 & 255; } while(( *(((_t224 << 2) + _t224 << 5) + _v48 + 0x28) & 255) != 0 && _v9 <= 2); if(_v9 > 2) { L17: return; } _v40 = ((_t224 << 2) + _t224 << 5) + _v48 + 40; RtlFillMemory(160, 0, _v40); *_v40 = 2; *(_v40 + 10) = _v76 & 255; _t175 = _v40; *(_t175 + 30) = _v68 & 65535; _t176 = _v40; *((short*)(_t176 + 8)) = _t175 + 3584; *(_v40 + 15) = _t176 + 1; if(( *(_v64 + 2) & 255) == 1 && _v76 == 2) { *(_v40 + 15) = 0; } *(_v40 + 12) = 0; *(_v40 + 13) = 0; *(_v40 + 24) = 0; *(_v40 + 22) = 0; *(_v40 + 23) = 0; *(_v40 + 28) = 0; *(_v40 + 26) = 0; *(_v40 + 18) = 0; *(_v40 + 34) = _v72 & 255; *((long long*)(_v40 + 64)) = _v64; *(_v40 + 72) = 0; *(_v40 + 80) = 0; if(_v76 != 2) { L14: *(_v40 + 17) = 0; *(_v40 + 16) = 0; *(_v40 + 4) = 0; *(_v40 + 14) = 0; *(_v40 + 11) = 0; if(_v76 == 0) { *((char*)(_v48 + 1)) = _v48 + 1; } _v24 = *((intOrPtr*)(_v64 + 784)); *_v24 = _v40 + 88; *((long long*)(_v40 + 88)) = _v64 + 776; *((long long*)(_v40 + 96)) = _v24; *((long long*)(_v64 + 784)) = _v40 + 88; check_list_constant(); goto L17; } else { *(_v40 + 1) = 0; *(_v40 + 2) = 0; if(( *(_v64 + 2) & 255) != 0) { L13: *((char*)(_v48 + 2)) = _v48 + 1; goto L14; } PNET_NewLTAddr(); _v32 = _v56; if(_v32 != 0) { *(_v40 + 24) = *(_v32 + 1) & 255; *(_v40 + 80) = _v32; goto L13; } *_v40 = 2; return; } } LMscoctr_Free() {// addr = 0x00474014 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t101; // _t101 long long _t110; // _t110 long long _t113; // _t113 _v48 = _t110; _v56 = _t113; _v64 = _t101; _v40 = *((intOrPtr*)(_v64 + 64)); if(_v64 != 0) { *_v64 = 0; if(( *(_v64 + 10) & 255) == 0) { *(_v48 + 1) = _v48 - 1; } if(( *(_v64 + 10) & 255) == 2) { if(( *(_v40 + 2) & 255) == 0) { PNET_DeleteLTAddr(); } *((char*)(_v48 + 2)) = _v48 - 1; } } if(( *(_v48 + 1) & 255) != 0) { return; } else { _v16 = _v48 + 520; *_v16 = 0; return; } } LMscoctr_Get_Number_SYN_Connections( long long __rdi // r57 ) {// addr = 0x0047414C signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v9 = ( *(_v32 + 2) & 255) + ( *(_v32 + 1) & 255); return _v9 & 255; } LMscoctr_Derive_SCO_Parameters( _unknown_ __eax // r0 ) {// addr = 0x0047416F unsigned int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 intOrPtr _t65; // _t65 intOrPtr _t67; // _t67 intOrPtr _t79; // _t79 long long _t97; // _t97 long long _t101; // _t101 _v32 = _t97; _v40 = _t101; _v44 = _t67; _v48 = _t65; _v52 = r8d; _v10 = LMscoctr_Derive_LM_SCO_Packet_Type(r8d); _t79 = _v40; *(_t79 + 16) = _v10 & 255; _t55 = (_v10 & 255) + 1; *((char*)(_v40 + 14)) = _t79 + _t79; _t75 = _v52; if(_v52 == 0) { *((char*)(_v40 + 17)) = LMscoctr_Map_AirMode_HCI2LMP(LMscoctr_Get_Air_Coding( *(_v40 + 30) & 0xffff) & 255, _t75); } *((intOrPtr*)(_v40 + 4)) = _v44; if(_v48 != 0) { *(_v40 + 15) = 0; *(_v40 + 13) = 0; *(_v40 + 11) = 0; *(_v32 + 66261) = 0; return; } else { _v16 = LLINK_ReadPicoClock(_v32, *((intOrPtr*)( *((intOrPtr*)(_v40 + 64)) + 432))); _v9 = (_v16 & 134217728) >> 27; r8d = 2; *(_v40 + 13) = LMpol_Adjust_Dsco(); *(_v40 + 11) = _v9 & 255; return; } } LMscoctr_Assign_SCO_Parameters( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0047428B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *(_v16 + 13) = *(_v24 + 13) & 255; *(_v16 + 14) = *(_v24 + 14) & 255; *((intOrPtr*)(_v16 + 4)) = *((intOrPtr*)(_v24 + 4)); *(_v16 + 16) = *(_v24 + 16) & 255; *(_v16 + 17) = *(_v24 + 17) & 255; *(_v16 + 11) = *(_v24 + 11) & 255; *(_v16 + 15) = *(_v24 + 15) & 255; return; } LMscoctr_Extract_SCO_Parameters_From_PDU( intOrPtr __edx, // r3 long long __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x00474301 intOrPtr _v20; // _cfa_ffffffec long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v40 = __rdi; _v48 = __rsi; _v52 = __edx; _v20 = 0; if(_v52 == 1) { *(_v40 + 15) = *_v48 & 255; } _v48 = &(_v48[1]); *(_v40 + 11) = ( *_v48 & 2) >> 1; _v48 = &(_v48[1]); *(_v40 + 13) = *_v48 & 255; _v48 = &(_v48[1]); *(_v40 + 14) = *_v48 & 255; _v48 = &(_v48[1]); *(_v40 + 16) = *_v48 & 255; _v48 = &(_v48[1]); *(_v40 + 4) = 32 << __cl; if(_v52 == 1 && (( *(_v40 + 14) & 255) >> 1 & 255) != ( *(_v40 + 16) & 0xff) + 1) { _v20 = 28; } if(( *(_v40 + 13) & 255) > ( *(_v40 + 14) & 255)) { _v20 = 27; } *(_v40 + 17) = *_v48 & 255; return _v20; } LMscoctr_Map_AirMode_LMP2HCI( char __edi, // r4 _unknown_ __eflags // r9 ) {// addr = 0x00474403 long long _v16; // _cfa_fffffff0 char _v21; // _cfa_ffffffeb char _v22; // _cfa_ffffffea char _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed int _t16; // _t16 __eflags = __eflags; __edi = __edi; _v28 = __edi; __rax = *fs:0x28]; _v16 = __rax; _v24 = 1; _v23 = 2; _v22 = 0; _v21 = 3; _t16 = *(__rbp + __rax - 16) & 255; if(__eflags != 0) { __stack_chk_fail(); return _t16; } return _t16; } LMscoctr_Map_AirMode_HCI2LMP( char __edi, // r4 _unknown_ __eflags // r9 ) {// addr = 0x00474453 long long _v16; // _cfa_fffffff0 char _v21; // _cfa_ffffffeb char _v22; // _cfa_ffffffea char _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed int _t16; // _t16 __eflags = __eflags; __edi = __edi; _v28 = __edi; __rax = *fs:0x28]; _v16 = __rax; _v24 = 2; _v23 = 0; _v22 = 1; _v21 = 3; _t16 = *(__rbp + __rax - 16) & 255; if(__eflags != 0) { __stack_chk_fail(); return _t16; } return _t16; } LMscoctr_Get_Active_LM_SCO_Packet_Type( _unknown_ __eax, // r0 long long __rdi // r57 ) {// addr = 0x004744A3 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v10 = 255; _v9 = 0; while(_v9 <= 2) { if(( *((((_v9 & 255) << 2) + (_v9 & 255) << 5) + _v32 + 0x28) & 255) == 0 || ( *((((_v9 & 255) << 2) + (_v9 & 255) << 5) + _v32 + 0x28) & 255) == 2) { _v9 = _v9 + 1; continue; } else { if(( *((((_v9 & 255) << 2) + (_v9 & 255) << 5) + _v32 + 0x32) & 255) != 2) { _v10 = *((((_v9 & 255) << 2) + (_v9 & 255) << 5) + _v32 + 0x38) & 255; } else { __edi = *((((_v9 & 255) << 2) + (_v9 & 255) << 5) + _v32 + 0x3e) & 0xff; _v10 = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet( *((((_v9 & 255) << 2) + (_v9 & 255) << 5) + _v32 + 0x3e) & 0xff); } break; } } return _v10 & 255; } LMscoctr_Is_All_Bandwidth_Used_By_SCO( _unknown_ __eax // r0 ) {// addr = 0x004745AC long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 intOrPtr _t18; // _t18 intOrPtr _t19; // _t19 long long _t21; // _t21 _v16 = _t21; _t18 = _v16; _t9 = *(_t18 + 1) & 255; if(( *(_t18 + 1) & 255) == 0) { L3: return 0; } _t19 = _v16; LMscoctr_Get_Active_LM_SCO_Packet_Type(_t9, _t19); if(_t19 + 1 != ( *(_v16 + 1) & 0xff)) { goto L3; } return 1; } LMscoctr_Is_Bandwidth_Available_For_SCO_Packet_Types( _unknown_ __eax // r0 ) {// addr = 0x004745F3 signed char _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed char _v32; // _cfa_ffffffe0 char _v35; // _cfa_ffffffdd char _v36; // _cfa_ffffffdc char _v37; // _cfa_ffffffdb char _v38; // _cfa_ffffffda char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed long long _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t55; // _t55 signed int _t72; // _t72 signed int _t78; // _t78 signed int _t84; // _t84 signed int _t85; // _t85 signed long long _t98; // _t98 signed long long _t99; // _t99 signed long long _t105; // _t105 _v64 = _t105; _v68 = _t84; _v48 = _v64 + 6040; _v25 = LMscoctr_Get_Active_LM_SCO_Packet_Type(__eax, _v48); _t98 = _v48; _t54 = *(_t98 + 1) & 255; if(( *(_t98 + 1) & 255) == 0 || LMscoctr_Is_All_Bandwidth_Used_By_SCO(_t54) == 0 && (__rsi << (_v25 & 255) & __rdx) != 0) { _t55 = 1; } else { _t55 = 0; } _v26 = _t55; _v40 = 5; _v39 = 2; _v38 = 6; _v37 = 4; _v36 = 7; _v35 = 6; if(_v26 == 0) { L16: return _v26 & 255; } _t99 = _v48; if(( *(_t99 + 2) & 255) == 0) { } else { _v26 = 0; _v32 = 0; while(_v32 <= 2) { if((1 << ( *(__rbp + _t99 * 2 - 32) & 0xff) & _v68) == 0) { _v26 = _v26 + 1; } else { _t78 = *(__rbp + _t99 * 2 - 32) & 0xff; _t85 = *(__rbp + _t99 * 2 - 32) & 0xff; _t72 = *(__rbp + _t99 * 2 - 31) & 255; _t99 = _v64; *__rsp = _t78; r9d = _t85; r8d = 0; LMscoctr_Derive_D_eSCO(); if(_t72 == 255) { _v26 = _v26 + 1; } } _v32 = _v32 + 1; } if(_v26 == 3) { _v26 = 0; } } } LMscoctr_Find_SCO_By_Connection_Handle( _unknown_ __esi, // r5 signed int __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00474746 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; __esi = __esi; _v32 = __rdi; _v36 = __ax; _v16 = 0; if(_v36 > 3583 && _v36 <= 3586) { _v16 = ((__rdx << 2) + __rdx << 5) - 573440 + _v32 + 40; if(__al == 0) { _v16 = 0; } } return; } LMscoctr_Find_SCO_By_SCO_Handle( _unknown_ __esi, // r5 signed long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x004747AC char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; __esi = __esi; _v32 = __rdi; _v36 = __al; _v24 = 0; if(_v36 == 0) { L8: return; } else { _v9 = 0; while(_v9 <= 2 && _v24 == 0) { _v24 = ((__rdx << 2) + __rdx << 5) + _v32 + 40; if(__al == 0 || __al != _v36) { _v24 = 0; } _v9 = _v9 + 1; } goto L8; } } LMscoctr_Find_Pending_SCO_By_ACLC_Link( signed long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00474825 signed char* _v9; // _cfa_fffffff7 signed char _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v48 = __rdi; _v56 = __rsi; _v32 = 0; _v24 = 0; if(_v56 == 0) { return; } _v9 = 0; while(_v9 <= 2) { _v32 = ((__rdx << 2) + __rdx << 5) + _v48 + 40; if(( *_v32 & 255) == 3 || ( *_v32 & 255) == 6 || ( *_v32 & 255) == 8) { _v24 = (_v32[0x40]); if( *((intOrPtr*)(_v24 + 432)) == _v56) { L11: return; } goto L7; } else { L7: _v32 = 0; _v9 = &(_v9[1]); continue; } } goto L11; } LMscoctr_Find_SCO_By_LC_SCO_Link( signed long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004748CF char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; _v24 = 0; if(_v40 == 0) { L8: return; } else { _v9 = 0; while(_v9 <= 2 && _v24 == 0) { _v24 = ((__rdx << 2) + __rdx << 5) + _v32 + 40; if(__al == 0 || *((intOrPtr*)(_v24 + 72)) != _v40) { _v24 = 0; } _v9 = _v9 + 1; } goto L8; } } LMscoctr_Derive_LM_SCO_Packet_Type( _unknown_ __eax // r0 ) {// addr = 0x00474949 signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 long long _t27; // _t27 _v32 = _t27; _v40 = __rsi; _v44 = __edx; _v10 = 2; __rax = _v32; _v9 = LMscoctr_Get_Active_LM_SCO_Packet_Type(__eax, _v32); if(_v9 == 255) { if(__rax == 0) { if(__rax == 0) { if(__rax != 0) { _v10 = 0; } } else { _v10 = 1; } } else { _v10 = 2; } } else { _v10 = _v9 & 255; } return _v10 & 255; } LMscoctr_Get_SCO_Transitioning_Ref( signed long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x004749B7 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; _v48 = __rdi; _v32 = 0; _v9 = 0; while(_v9 <= 3 && _v32 == 0) { _v24 = ((__rdx << 2) + __rdx << 5) + _v48 + 40; if(__al == 0) { L4: _v9 = _v9 + 1; continue; } if(__al == 4 || __al > 5) { goto L4; } else { _v32 = _v24; continue; } } return; } LMscoctr_Find_SCO_Under_Negotiation( _unknown_ __rax // r53 ) {// addr = 0x00474A30 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 intOrPtr _t19; // _t19 long long _t28; // _t28 long long _t30; // _t30 long long _t31; // _t31 _v32 = _t31; _v36 = _t19; if(_v36 != 1) { _v16 = _v32 + 520; if(__al == 0) { _v16 = 0; } else { _t28 = _v32; LMscoctr_Find_SCO_By_SCO_Handle(__al & 255, __rdx, _t28); _v16 = _t28; } } else { _t30 = _v32; LMscoctr_Find_SCO_By_SCO_Handle(__al & 255, __rdx, _t30); _v16 = _t30; } return; } LMscoctr_Allocate_Negotation_SCO_Link( _unknown_ __eax // r0 ) {// addr = 0x00474AAA signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 intOrPtr _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 intOrPtr _t54; // _t54 intOrPtr _t67; // _t67 long long _t82; // _t82 long long _t84; // _t84 _v48 = _t82; _v56 = _t84; _v60 = _t54; _v64 = __ecx; _v68 = r8d; _v32 = _v48 + 66256; _v24 = _v32 + 520; __edi = _v64; _v9 = LMscoctr_Convert_HCI_To_LM_SCO_Packet_Type(_v64, _v32 + 520); *_v24 = 2; _t67 = _v24; *(_t67 + 13) = 0; *((char*)(_v24 + 14)) = _t67 + _t67; *((intOrPtr*)(_v24 + 4)) = _v64; *(_v24 + 16) = _v9 & 255; *(_v24 + 17) = _v68 & 255; *(_v24 + 15) = *(_v56 + 15) & 255; if(_v60 != 1) { *(_v24 + 11) = (LLINK_ReadPicoClock(_v48, *((intOrPtr*)( *((intOrPtr*)(_v56 + 64)) + 432))) & 134217728) >> 27; } else { *(_v24 + 11) = 0; *(_v32 + 5) = *(_v56 + 15) & 255; } return; } LMscoctr_Free_Negotiation_SCO_Link( long long __rdi // r57 ) {// addr = 0x00474B92 _unknown_ _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32 + 520; *_v16 = 0; return; } LMscoctr_Accept_And_Free_Negotiated_SCO_Link() {// addr = 0x00474BB1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t10; // _t10 long long _t13; // _t13 _v16 = _t10; _v24 = _t13; LMscoctr_Assign_SCO_Parameters(_v24, _v16 + 520); LMscoctr_Free_Negotiation_SCO_Link(_v16); return; } LMscoctr_Convert_HCI_To_LM_SCO_Packet_Type( intOrPtr __edi, // r4 _unknown_ __rax // r53 ) {// addr = 0x00474BE9 signed char _v9; // _cfa_fffffff7 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rax = __rax; __edi = __edi; _v28 = __edi; if(__rax == 0) { if(__rax == 0) { _v9 = 2; } else { _v9 = 1; } } else { _v9 = 0; } return _v9 & 255; } LMscoctr_Derive_D_eSCO( intOrPtr _a8 // _cfa_8 ) {// addr = 0x00474C1C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 signed char _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t17; // _t17 long long _t23; // _t23 _v16 = _t23; _v24 = __rsi; _v40 = r9d; _v28 = __dl; _v32 = _t17; _v36 = r8d; r8d = _v36 & 255; _v48 = _a8; *__rsp = _v40; r9d = r8d; r8d = _v32 & 255; LMscoctr_Derive_D_eSCO_AtLeast(_t17); return; } LMscoctr_Derive_D_eSCO_AtLeast( _unknown_ __eax, // r0 intOrPtr _a8, // _cfa_8 intOrPtr _a16 // _cfa_10 ) {// addr = 0x00474C75 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed short _v30; // _cfa_ffffffe2 signed short _v32; // _cfa_ffffffe0 signed short _v34; // _cfa_ffffffde signed short _v36; // _cfa_ffffffdc signed short _v38; // _cfa_ffffffda signed short _v44; // _cfa_ffffffd4 signed long long _v56; // _cfa_ffffffc8 signed long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed char _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v104; // _cfa_ffffff98 intOrPtr _v112; // _cfa_ffffff90 intOrPtr _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t222; // _t222 _unknown_ _t243; // _t243 _unknown_ _t259; // _t259 _unknown_ _t282; // _t282 signed char _t324; // _t324 long long _t423; // _t423 _v80 = _t423; _v96 = __rdx; _v84 = sil; _v88 = _t324; _v100 = r8d; _v104 = r9d; _v64 = _v80 + 6040; _v38 = 0; _v36 = 0; _v34 = 0; _v32 = 0; _v30 = 0; _v56 = 0; _v27 = 0; _v26 = 0; _v25 = 0; _v44 = 0; _t424 = _v64 + 24; RtlFillMemory(5, 0, _v64 + 24); _v36 = 0; while(_v36 <= 2) { __rcx = _v64 + 40; _v56 = ((__rdx << 2) + __rdx << 5) + __rcx; _t403 = _v56; if(( *_v56 & 255) == 0) { L21: _v36 = _v36 + 1; continue; } _t403 = _v56; if(( *_v56 & 255) == 2) { goto L21; } _t403 = _v56; if(_v56 == _v96) { goto L21; } else { _v38 = *(_v56 + 13) & 0xff; if(( *(_v56 + 10) & 255) != 0) { _t282 = LMscoctr_GetSlotOccupancy( *(_v56 + 22) & 0xff, __rdx); _v27 = LMscoctr_GetSlotOccupancy( *(_v56 + 23) & 0xff, __rdx) + _t282; } else { _v27 = 2; } if(( *(_v56 + 14) & 255) <= _v88) { _t403 = _v56; if(( *(_v56 + 14) & 255) >= _v88) { L13: _v34 = 0; while((_v32 & 65535) + (_v34 & 65535) <= 35) { __rdx = _v56; if((_v34 & 65535) % ( *(__rdx + 14) & 0xff) != (_v38 & 0xffff)) { L19: _v34 = _v34 + 2; continue; } _t403 = _v56; _v44 = ( *(_v56 + 18) & 0xff) + (_v27 & 255); _v32 = 0; while((_v32 & 65535) < _v44) { _t403 = _v64; _t424 = _v64; _LMscoctr_SetDEscoCalculatorBit((_v34 & 65535) + (_v32 & 65535), _v64, _v64); _v32 = _v32 + 1; } _v34 = _v34 + (_v88 & 255); _v32 = 0; goto L19; } goto L21; } _t403 = _v56; if(((_v88 & 0xff) / ( *(_v56 + 14) & 255) & 255) == 0) { goto L13; } *__rsp = _v88 & 255; r9d = *(_v56 + 14) & 0xff; r8d = 4294967295; DebugPrint(0, _v56, __rcx, __rdx, _t424, __rsi); return 4294967295; } _t403 = _v56; if((( *(_v56 + 14) & 0xff) / _v88 & 255) == 0) { goto L13; } *__rsp = _v88 & 255; r9d = *(_v56 + 14) & 0xff; r8d = 4294967295; DebugPrint(0, _v56, __rcx, __rdx, _t424, __rsi); return 4294967295; } } _t222 = LMscoctr_GetSlotOccupancy(_a8, __rdx); _v27 = LMscoctr_GetSlotOccupancy(_a16, __rdx) + _t222; if((_v88 & 255) > _v84) { _v36 = _v84 & 255; L42: while((_v88 & 255) >= _v36) { _v30 = 0; _v34 = 0; _v32 = 0; while((_v32 & 65535) + (_v34 & 65535) <= 35) { if((_v34 & 65535) % (_v88 & 255) != (_v36 & 65535)) { _v34 = _v34 + 2; continue; } _v32 = 0; while((_v32 & 65535) < (_v100 & 255) + (_v27 & 255) && (_v32 & 65535) + (_v34 & 65535) <= 35) { _t403 = _v64; _t424 = _v64; if(_LMscoctr_TestDEscoCalculatorBit((_v34 & 65535) + (_v32 & 65535), _v64, _v64) == 0) { _v32 = _v32 + 2; continue; } _v30 = 1; break; } if(_v30 == 1) { L40: if(_v30 == 0) { L45: _v38 = _v36 & 65535; if(_v38 < (_v88 & 255)) { _v25 = _v88 & 255; _t243 = LMscoctr_GetSlotOccupancy(_a8, __rdx); _v27 = LMscoctr_GetSlotOccupancy(_a16, __rdx) + _t243; _v26 = _v27 & 255; _v34 = 0; while(_v34 <= 2) { __rcx = _v64 + 40; _v56 = ((__rdx << 2) + __rdx << 5) + __rcx; _t403 = _v56; if(( *_v56 & 255) != 0) { _t403 = _v56; if(( *_v56 & 255) != 2) { _t403 = _v56; if(_v56 != _v96) { if(( *(_v56 + 14) & 255) > _v25) { _v26 = (_v26 & 255) * ( *(_v56 + 14) & 0xff) / _v25; _v25 = *(_v56 + 14) & 255; } if(( *(_v56 + 10) & 255) != 0) { _t259 = LMscoctr_GetSlotOccupancy( *(_v56 + 22) & 0xff, __rdx); _v27 = LMscoctr_GetSlotOccupancy( *(_v56 + 23) & 0xff, __rdx) + _t259; } else { _v27 = 0; } _t403 = _v56; _v27 = (_v27 & 255) * (_v25 & 0xff) / ( *(_v56 + 14) & 255); _v26 = _v26 + (_v27 & 255); } } } _v34 = _v34 + 1; } if((_v26 & 255) >= _v25) { _v38 = 65535; } L61: r8d = _v88 & 255; _v112 = _a16; _v120 = _a8; _v128 = _v104 & 255; *__rsp = _v100 & 255; r9d = r8d; r8d = _v38; DebugPrint(0, _t403, __rcx, __rdx, _t424, __rsi); return _v38 & 65535; } _v38 = 65535; goto L61; } _v36 = _v36 + 2; goto L42; } _v34 = _v34 + (_v88 & 255); _v32 = 0; } goto L40; } goto L45; } _v38 = 65535; goto L61; } LMscoctr_Commit_to_New_Synchronous_Parameters( _unknown_ __eax // r0 ) {// addr = 0x004751C3 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t111; // _t111 _v48 = __rdi; _v56 = __rsi; _v32 = _v48 + 1680; *(_v56 + 11) = (_v32[3]) & 255; *(_v56 + 13) = (_v32[2]) & 255; *(_v56 + 14) = *_v32 & 255; *(_v56 + 18) = (_v32[1]) & 255; *(_v56 + 22) = (_v32[4]) & 255; *(_v56 + 23) = (_v32[5]) & 255; if(( *(_v56 + 22) & 255) == 21) { *(_v56 + 22) = 7; } _t111 = _v56; _t95 = ( *(_t111 + 23) & 255) - 21; if(( *(_t111 + 23) & 255) == 21) { *(_v56 + 23) = 7; } *(_v56 + 26) = (_v32[8]) & 65535; *(_v56 + 28) = (_v32[0xa]) & 65535; *(_v56 + 17) = LMscoctr_Map_AirMode_HCI2LMP((_v32[0xc]) & 3, _t95); *(_v56 + 15) = (_v32[6]) & 255; *(_v56 + 24) = (_v32[7]) & 255; *(_v56 + 30) = *(_v56 + 30) & 0xfc; *(_v56 + 30) = *(_v56 + 30) & 65535 | LMscoctr_Map_AirMode_LMP2HCI( *(_v56 + 17) & 0xff, _t95) & 255; return; } LMscoctr_Map_eSCO_Pkt_Type_LMP2HCI( char __edi // r4 ) {// addr = 0x00475302 signed short _v10; // _cfa_fffffff6 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edi = __edi; _v28 = __edi; _v10 = 8; if(_v28 != 7) { if(_v28 != 12) { if(_v28 != 13) { if(_v28 != 38) { if(_v28 != 44) { if(_v28 != 55) { if(_v28 == 61) { _v10 = 512; } } else { _v10 = 128; } } else { _v10 = 256; } } else { _v10 = 64; } } else { _v10 = 32; } } else { _v10 = 16; } } else { _v10 = 8; } return _v10 & 65535; } LMscoctr_Get_eSCO_BB_Packet_From_LMP_Type( char __edi // r4 ) {// addr = 0x00475377 intOrPtr _v12; // _cfa_fffffff4 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edi = __edi; _v28 = __edi; _v12 = 0; if(_v28 != 7) { if(_v28 != 12) { if(_v28 != 13) { if(_v28 != 38) { if(_v28 != 55) { if(_v28 != 44) { if(_v28 == 61) { _v12 = 29; } } else { _v12 = 28; } } else { _v12 = 23; } } else { _v12 = 22; } } else { _v12 = 13; } } else { _v12 = 12; } } else { _v12 = 21; } return _v12; } LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet( intOrPtr __edi // r4 ) {// addr = 0x004753F3 signed char _v9; // _cfa_fffffff7 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edi = __edi; _v28 = __edi; _v9 = 0; if(_v28 != 21) { if(_v28 != 12) { if(_v28 != 13) { if(_v28 != 22) { if(_v28 != 23) { if(_v28 != 28) { if(_v28 == 29) { _v9 = 61; } } else { _v9 = 44; } } else { _v9 = 55; } } else { _v9 = 38; } } else { _v9 = 13; } } else { _v9 = 12; } } else { _v9 = 7; } return _v9 & 255; } LMscoctr_Extract_eSCO_Parameters_From_LMP_PDU() {// addr = 0x00475456 char _v25; // _cfa_ffffffe7 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t106; // _t106 signed char* _t185; // _t185 long long _t190; // _t190 _v48 = _t190; _v56 = __rsi; _v40 = _v48 + 7720; _v25 = 0; (_v40[6]) = *_v56 & 255; (_v40[7]) = (_v56[1]) & 255; if(( *_v40 & 255) != ((_v56[4]) & 255) || ((_v40[1]) & 255) != ((_v56[5]) & 255) || ((_v40[4]) & 0xff) != LMscoctr_Get_eSCO_BB_Packet_From_LMP_Type((_v56[6]) & 0xff)) { L4: _v25 = 1; goto L5; } else { _t185 = _v40; _t106 = LMscoctr_Get_eSCO_BB_Packet_From_LMP_Type((_v56[7]) & 0xff); _t135 = ((_t185[5]) & 0xff) - _t106; if(((_t185[5]) & 0xff) == _t106) { L5: (_v40[3]) = ((_v56[2]) & 2) >> 1; (_v40[2]) = (_v56[3]) & 255; *_v40 = (_v56[4]) & 255; (_v40[1]) = (_v56[5]) & 255; (_v40[4]) = LMscoctr_Get_eSCO_BB_Packet_From_LMP_Type((_v56[6]) & 0xff); (_v40[5]) = LMscoctr_Get_eSCO_BB_Packet_From_LMP_Type((_v56[7]) & 0xff); (_v40[0xa]) = casting_uint16( &(_v56[8])); (_v40[8]) = casting_uint16( &(_v56[0xa])); (_v40[0xc]) = (_v40[0xc]) & 0xfc; (_v40[0xc]) = (_v40[0xc]) & 65535 | LMscoctr_Map_AirMode_LMP2HCI((_v56[0xc]) & 0xff, _t135) & 255; (_v40[0xe]) = (_v56[0xd]) & 255; if(_v25 != 0) { r8d = (_v40[5]) & 0xff; r9d = r8d; r8d = (_v40[4]) & 0xff; LMscoctr_Derive_D_eSCO_List( *_v40 & 255); return; } return; } goto L4; } } LMscoctr_Detect_Transaction_Collisions() {// addr = 0x00475669 _unknown_ __rbp; // r59 return 0; } LMscoctr_Validate_eSCO_Features( char __edi, // r4 long long __rdx, // r56 signed short* __rsi // r58 ) {// addr = 0x00475674 signed int _v10; // _cfa_fffffff6 char _v28; // _cfa_ffffffe4 signed short* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdx = __rdx; __edi = __edi; _v40 = __rsi; _v48 = __rdx; _v28 = __edi; _v10 = 0; if(( *(_v48 + 3) & 255) >= 0) { return 17; } _v10 = _v10 | 8; if(( *(_v48 + 4) & 1) != 0) { _v10 = _v10 | 16; } if(( *(_v48 + 4) & 2) != 0) { _v10 = _v10 | 32; } if(( *(_v48 + 5) & 0x20) != 0) { _v10 = _v10 | 64; if(( *(_v48 + 5) & 255) < 0) { _v10 = _v10 | 256; } } if(( *(_v48 + 5) & 0x40) != 0) { _v10 = _v10 | 128; if(( *(_v48 + 5) & 255) < 0) { _v10 = _v10 | 512; } } if(( *_v40 & 65535) == 0) { L17: if(_v28 != 0 || ( *(_v48 + 1) & 0x40) != 0) { if(_v28 != 1 || ( *(_v48 + 1) & 255) >= 0) { if(_v28 != 2 || ( *(_v48 + 2) & 1) != 0) { if(_v28 != 3 || ( *(_v48 + 2) & 8) != 0) { return 0; } else { return 17; } } else { return 17; } } else { return 17; } } else { return 17; } } else { if(( *_v40 & 65535 & _v10) == 0) { return 17; } *_v40 = *_v40 & 65535 & _v10; goto L17; } } LMscoctr_Validate_Local_eSCO_Features( _unknown_ __eax // r0 ) {// addr = 0x00475803 intOrPtr _v12; // _cfa_fffffff4 signed char _v28; // _cfa_ffffffe4 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t16; // _t16 long long _t18; // _t18 long long _t20; // _t20 _v40 = _t20; _v48 = _t18; _v28 = _t16; _v12 = LMscoctr_Validate_eSCO_Features(_v28 & 255, _v48, _v40); if(_v12 != 0) { _v12 = 17; } return _v12; } LMscoctr_Validate_Remote_eSCO_Features( _unknown_ __eax // r0 ) {// addr = 0x00475843 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t17; // _t17 _v32 = __rdi; _v48 = _t17; _v36 = __esi; __rsi = _v48; __edi = _v36 & 255; _v12 = LMscoctr_Validate_eSCO_Features(_v36 & 255, _v32 + 40, _v48); if(_v12 != 0) { _v12 = 26; } return _v12; } LMscoctr_RangeCheck_Host_eSCO_Parameters( signed short __edx, // r3 _unknown_ __edi, // r4 _unknown_ __esi // r5 ) {// addr = 0x00475887 intOrPtr _v12; // _cfa_fffffff4 short _v28; // _cfa_ffffffe4 char _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; __edx = __edx; _v28 = __di; _v32 = __cl; _v36 = __edx; _v12 = 0; if(_v28 <= 3) { _v12 = 18; } if(_v32 > 2 && _v32 != 255) { _v12 = 18; } if((_v36 & 0x3f8) == 0) { _v12 = 18; } return _v12; } LMscoctr_IsValid_eSCO_Packet_Type( char __edi // r4 ) {// addr = 0x004758DB char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; if(_v12 != 0) { if(_v12 != 7) { if(_v12 != 12) { if(_v12 != 13) { if(_v12 != 38) { if(_v12 != 44) { if(_v12 != 55) { if(_v12 != 61) { return 0; } return 1; } return 1; } return 1; } return 1; } return 1; } return 1; } return 1; } return 1; } LMscoctr_IsValid_eSCO_Packet_Length( _unknown_ __eax // r0 ) {// addr = 0x00475953 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed char _v28; // _cfa_ffffffe4 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char _t32; // _t32 _v40 = __rsi; _v28 = _t32; _v12 = ( *_v40 & 0xff) + (((_v40[1]) & 0xff) << 8); _v9 = LMscoctr_Covert_LM_To_LC_ESCO_Packet_Type(_v28 & 255); asm("setnb al"); return; } LMscoctr_RangeCheck_Peer_eSCO_Parameters( _unknown_ __eax // r0 ) {// addr = 0x004759C6 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t58; // _t58 signed int _t60; // _t60 long long _t125; // _t125 _v32 = __rdi; _v40 = _t125; _v9 = 0; _v9 = ( *(_v32 + 2) & 255) != 0; if(( *(_v40 + 1) & 255) < _v9 || ( *(_v40 + 1) & 255) > 7) { return 30; } if(( *(_v40 + 2) & 255) <= 7) { if(( *(_v40 + 2) & 255) > 3) { *(_v40 + 2) = *(_v40 + 2) & 3; } if(( *(_v40 + 3) & 255) != 255) { if(( *(_v40 + 3) & 1) == 0) { if(( *(_v40 + 4) & 255) <= 1 || ( *(_v40 + 4) & 255) == 255) { return 30; } else { if(( *(_v40 + 4) & 1) == 0) { if(( *(_v40 + 5) & 1) == 0) { if(LMscoctr_IsValid_eSCO_Packet_Type( *(_v40 + 6) & 0xff) != 0) { if(LMscoctr_IsValid_eSCO_Packet_Type( *(_v40 + 7) & 0xff) != 0) { _t58 = *(_v40 + 6) & 0xff; LMscoctr_IsValid_eSCO_Packet_Length(_t58); if(_t58 != 0) { _t60 = *(_v40 + 7) & 0xff; LMscoctr_IsValid_eSCO_Packet_Length(_t60); if(_t60 != 0) { if(( *(_v40 + 12) & 255) <= 3) { if(( *(_v40 + 13) & 255) <= 4) { return 0; } return 30; } return 30; } return 30; } return 30; } return 30; } return 30; } return 30; } return 30; } } return 30; } return 30; } else { return 30; } } LMscoctr_Is_An_LMP_Parameter_Set( intOrPtr __ecx, // r2 signed char __edx, // r3 long long __rdi // r57 ) {// addr = 0x00475BC0 signed int _v17; // _cfa_ffffffef intOrPtr _v24; // _cfa_ffffffe8 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc short _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t51; // _t51 intOrPtr _t80; // _t80 __rdi = __rdi; _v40 = __rdi; _v52 = __ecx; _v44 = sil; _v48 = __edx; _v56 = r8d; _v24 = 0; while(( *(_v40 + 3) & 0xff) > _v24) { if(( *(_v40 + 10 + (_v24 + 84) * 8) & 0xff) != _v52 || ( *(_v40 + 12 + (_v24 + 84) * 8) & 65535) != _v56) { L10: _v24 = _v24 + 1; continue; } else { _t80 = _v40; if(( *(_t80 + 8 + (_v24 + 84) * 8) & 255) != _v44) { goto L10; } if(_t80 == 0) { _t51 = 2; } else { _t51 = 6; } _v17 = _t51; if(((_v48 & 255) + (_v44 & 255) + (_v17 & 255)) * 625 > ( *(_v40 + 4) & 0xff) * 1000 || (_v44 & 255) < (_v48 & 255) + (_v17 & 255)) { goto L10; } else { return 1; } } } return 0; } LMscoctr_Inc_Num_LMP_Parameter_Sets() {// addr = 0x00475CCB long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; *((char*)(_v16 + 3)) = _v16 + 1; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return; } LMscoctr_Clear_LMP_Parameter_Set() {// addr = 0x00475D11 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 intOrPtr _t41; // _t41 _v16 = __rdi; _v20 = _t41; *((char*)(_v16 + 10 + (_v20 + 84) * 8)) = 0; *((short*)(_v16 + 12 + (_v20 + 84) * 8)) = 0; *((char*)(_v16 + 8 + (_v20 + 84) * 8)) = 0; *((char*)(_v16 + 9 + (_v20 + 84) * 8)) = 0; *((char*)(_v16 + 3)) = _v16 - 1; DebugPrint(0, _v16, __rcx, _v20 + 84, __rdi, __rsi); return; } LMscoctr_Add_LMP_Parameter_Set( char __ecx, // r2 signed char __edx // r3 ) {// addr = 0x00475DA8 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _v16 = __rdi; _v28 = __ecx; _v20 = sil; _v24 = __edx; _v32 = r8d; if(( *(_v16 + 3) & 255) > 124) { return 4294967295; } *((char*)(_v16 + 10 + (( *(_v16 + 3) & 0xff) + 84) * 8)) = _v28; *(_v16 + 12 + (( *(_v16 + 3) & 0xff) + 84) * 8) = _v32 & 65535; *(_v16 + 8 + (( *(_v16 + 3) & 0xff) + 84) * 8) = _v20 & 255; *(_v16 + 9 + (( *(_v16 + 3) & 0xff) + 84) * 8) = _v24 & 255; *(_v16 + 3) = _v16 + 1; _v48 = _v32 & 65535; *__rsp = _v28; r9d = _v24 & 255; r8d = _v20 & 255; DebugPrint(0, _v16, ( *(_v16 + 3) & 0xff) + 84, *(_v16 + 3) & 0xff, __rdi, __rsi); return 0; } LMscoctr_Copy_LMP_Parameter_Set() {// addr = 0x00475EB3 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 intOrPtr _t16; // _t16 signed int _t25; // _t25 _v16 = _t25; _v20 = __esi; _v24 = _t16; __rsi = _v16 + 680 + (_v16 << 3); RtlCopyMemory(8, (_v16 << 3) + _v16 + 680, _v16 + 680 + (_v16 << 3)); return; } LMscoctr_Remove_LMP_Parameter_Set() {// addr = 0x00475F06 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 intOrPtr _t13; // _t13 long long _t18; // _t18 _v32 = _t18; _v36 = _t13; _v12 = _v36; while(_v12 <= 123) { LMscoctr_Copy_LMP_Parameter_Set(); _v12 = _v12 + 1; } LMscoctr_Clear_LMP_Parameter_Set(); return; } LMscoctr_Remove_LMP_Parameter_Sets() {// addr = 0x00475F51 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t31; // _t31 long long _t33; // _t33 _v32 = _t33; _v40 = __rsi; _v48 = _t31; _v16 = 0; _v12 = *(_v32 + 3) & 0xff; while(_v16 < _v12) { r8 = _v40; r8(); if(_v16 == 1) { LMscoctr_Remove_LMP_Parameter_Set(); _v12 = _v12 - 1; _v16 = _v16 - 1; } _v16 = _v16 + 1; } return; } LMscoctr_Clear_LMP_Parameter_Sets() {// addr = 0x00475FC1 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t19; // _t19 _v16 = _t19; RtlFillMemory(1000, 0, _v16 + 680); *((char*)(_v16 + 3)) = 0; DebugPrint(0, _v16, __rcx, __rdx, _v16 + 680, __rsi); return; } LMscoctr_Rule_Wesco_Not_Equal_To( signed char __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00476019 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v48 = __rdx; _v36 = __esi; _v9 = 0; if(( *(_v32 + 9 + ((_v36 & 255) + 84) * 8) & 255) != ( *(_v48 + 3) & 255)) { _v9 = 1; } return _v9 & 255; } LMscoctr_Rule_Matches_Exactly( signed char __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00476058 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v48 = __rdx; _v36 = __esi; _v9 = 0; if(( *(_v32 + 8 + ((_v36 & 255) + 84) * 8) & 255) == ( *(_v48 + 2) & 255)) { if(( *(_v32 + 9 + ((_v36 & 255) + 84) * 8) & 255) == ( *(_v48 + 3) & 255) && ( *(_v32 + 10 + ((_v36 & 255) + 84) * 8) & 255) == ( *(_v48 + 1) & 255) && ( *(_v32 + 12 + ((_v36 & 255) + 84) * 8) & 65535) == ( *(_v48 + 4) & 65535)) { _v9 = 1; } } return _v9 & 255; } LMscoctr_Rule_Latency_Above( _unknown_ __eax // r0 ) {// addr = 0x004760F8 signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t44; // _t44 long long _t51; // _t51 long long _t57; // _t57 _v32 = _t57; _v48 = _t51; _v36 = _t44; _v9 = 0; __ecx = *(_v32 + 10 + ((_v36 & 255) + 84) * 8) & 0xff; if(LMscoctr_Calculate_Latency_In_uSec( *(_v32 + 10 + ((_v36 & 255) + 84) * 8) & 0xff, *(_v32 + 10 + ((_v36 & 255) + 84) * 8) & 0xff, *(_v32 + 9 + ((_v36 & 255) + 84) * 8) & 0xff, _v32, (_v36 & 255) + 84) > ( *(_v48 + 6) & 65535)) { _v9 = 1; } return _v9 & 255; } LMscoctr_Rule_No_Possible_D_Value() {// addr = 0x0047618B signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t61; // _t61 long long _t72; // _t72 _v32 = _t72; _v48 = _t61; _v36 = __esi; _v24 = _v32 - 6040; _v9 = 0; if(( *(_v32 + 8 + ((_v36 & 255) + 84) * 8) & 255) != 0) { r8d = *(_v32 + 10 + ((_v36 & 255) + 84) * 8) & 0xff; *__rsp = *(_v32 + 10 + ((_v36 & 255) + 84) * 8) & 0xff; r9d = r8d; r8d = 0; LMscoctr_Derive_D_eSCO(); if(( *(_v32 + 8 + ((_v36 & 255) + 84) * 8) & 255) == 255) { _v9 = 1; } } return _v9 & 255; } LMscoctr_Calculate_Latency_In_uSec( intOrPtr __ecx, // r2 intOrPtr __edx, // r3 char __esi, // r5 _unknown_ __rax, // r53 _unknown_ __rdx // r56 ) {// addr = 0x0047625B signed short _v18; // _cfa_ffffffee intOrPtr _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t17; // _t17 _unknown_ _t30; // _t30 __rdx = __rdx; __rax = __rax; _v44 = __edx; _v48 = __ecx; _v36 = dil; _v40 = __esi; _t30 = __rdx + __rax; if(__rax == 0) { _t17 = 1; } else { _t17 = 3; } _v18 = (_t17 + _t30 + 1) * 625; return _v18 & 65535; } LMscoctr_Derive_Initial_LMP_Parameter_Sets_From_Host_Constraints( _unknown_ __eax // r0 ) {// addr = 0x004762B7 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 long long _v24; // _cfa_ffffffe8 short _v34; // _cfa_ffffffde signed int _v35; // _cfa_ffffffdd char _v36; // _cfa_ffffffdc char _v37; // _cfa_ffffffdb char _v38; // _cfa_ffffffda short _v40; // _cfa_ffffffd8 short _v42; // _cfa_ffffffd6 signed int _v43; // _cfa_ffffffd5 char _v44; // _cfa_ffffffd4 char _v45; // _cfa_ffffffd3 char _v46; // _cfa_ffffffd2 short _v48; // _cfa_ffffffd0 short _v50; // _cfa_ffffffce signed int _v51; // _cfa_ffffffcd char _v52; // _cfa_ffffffcc char _v53; // _cfa_ffffffcb char _v54; // _cfa_ffffffca short _v56; // _cfa_ffffffc8 short _v58; // _cfa_ffffffc6 signed int _v59; // _cfa_ffffffc5 char _v60; // _cfa_ffffffc4 char _v61; // _cfa_ffffffc3 char _v62; // _cfa_ffffffc2 short _v64; // _cfa_ffffffc0 short _v66; // _cfa_ffffffbe signed int _v67; // _cfa_ffffffbd char _v68; // _cfa_ffffffbc char _v69; // _cfa_ffffffbb char _v70; // _cfa_ffffffba short _v72; // _cfa_ffffffb8 short _v74; // _cfa_ffffffb6 signed int _v75; // _cfa_ffffffb5 char _v76; // _cfa_ffffffb4 char _v77; // _cfa_ffffffb3 char _v78; // _cfa_ffffffb2 short _v80; // _cfa_ffffffb0 short _v82; // _cfa_ffffffae signed int _v83; // _cfa_ffffffad char _v84; // _cfa_ffffffac char _v85; // _cfa_ffffffab char _v86; // _cfa_ffffffaa short _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c intOrPtr _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c _unknown_ __rbp; // r59 signed int _t183; // _t183 signed short _t184; // _t184 signed int _t187; // _t187 intOrPtr _t188; // _t188 signed int _t202; // _t202 signed long long _t211; // _t211 signed long long _t214; // _t214 _v96 = _t214; _v100 = _t202; _v104 = _t188; _v108 = _t184; _v112 = r8d; _v116 = r9d; _v88 = 64; _v86 = 22; _v85 = 2; _v84 = 4; _v83 = 0; _v82 = 60; _v80 = 128; _v78 = 23; _v77 = 2; _v76 = 4; _v75 = 0; _v74 = 90; _v72 = 8; _v70 = 21; _v69 = 2; _v68 = 4; _v67 = 0; _v66 = 30; _v64 = 256; _v62 = 28; _v61 = 6; _v60 = 8; _v59 = 0; _v58 = 360; _v56 = 512; _v54 = 29; _v53 = 6; _v52 = 8; _v51 = 0; _v50 = 540; _v48 = 16; _v46 = 12; _v45 = 6; _v44 = 8; _v43 = 0; _v42 = 120; _v40 = 32; _v38 = 13; _v37 = 6; _v36 = 8; _v35 = 0; _v34 = 180; _v24 = *((intOrPtr*)(_v96 + 1696)); if(_v100 == 0) { L2: return 0; } if(_v104 != 0) { RtlFillMemory(1000, 0, _v96 + 680); _t211 = _v96; *(_t211 + 3) = 0; _v11 = 0; while(_v11 <= 6) { if(( *(__rbp + _t211 * 8 - 80) & 65535 & _v116) == 0) { L23: _v11 = _v11 + 1; continue; } if(_v112 != 255) { _v10 = ( *(__rbp + _t211 * 8 - 77) & 255) * _v112; } else { if(_v24 == 0) { _t183 = 0; } else { _t183 = *(_v24 + 18) & 255; } _v10 = _t183; } _t211 = _v96; *(_t211 + 4) = _v108 & 65535; _v14 = *(__rbp + _t211 * 8 - 74) & 65535; while(_v14 != 0) { if((_v14 & 65535) * 1600 % _v100 != 0) { L18: _v14 = _v14 - 1; continue; } _v9 = (_v14 & 65535) * 1600 / _v100; if(( *(__rbp + _t211 * 8 - 76) & 255) > _v9 || (_v9 & 1) != 0 || (_v9 & 255) < (_v10 & 255) + ( *(__rbp + _t211 * 8 - 77) & 0xff) || ((_v10 & 255) + (_v9 & 255) + ( *(__rbp + _t211 * 8 - 77) & 0xff)) * 625 > (_v108 & 65535) * 1000) { } else { _t187 = *(__rbp + _t211 * 8 - 78) & 0xff; _t211 = _v96; r8d = _v14 & 65535; if(LMscoctr_Add_LMP_Parameter_Set(_t187, _v10 & 255) != 0) { goto L23; } } goto L18; } goto L23; } return *(_v96 + 3) & 0xff; } goto L2; } LMscoctr_CanMap_eSCO_Parameters( _unknown_ _a8 // _cfa_8 ) {// addr = 0x00476555 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 short _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 short _t60; // _t60 intOrPtr _t64; // _t64 intOrPtr _t74; // _t74 long long _t95; // _t95 _v32 = _t95; _v36 = _t74; _v40 = _t64; _v44 = _t60; _v48 = r8d; _v52 = r9d; _v12 = 0; _v24 = _v32 + 6040; if(LMscoctr_Get_Number_SYN_Connections(_v24) <= 3) { r8d = _v52 & 65535; r9d = r8d; r8d = _v48 & 255; LMscoctr_Derive_Initial_LMP_Parameter_Sets_From_Host_Constraints(_t49); _v16 = 0; while(( *(_v24 + 3) & 0xff) > _v16) { *__rsp = *(_v24 + 10 + (_v16 + 84) * 8) & 0xff; r9d = *(_v24 + 10 + (_v16 + 84) * 8) & 0xff; r8d = 0; LMscoctr_Derive_D_eSCO(); if(( *(_v24 + 8 + (_v16 + 84) * 8) & 255) != 255) { _v12 = _v12 + 1; } _v16 = _v16 + 1; } if(_v12 == 0) { return 44; } return 0; } return 10; } LMscoctr_Validate_Host_eSCO_Parameters( _unknown_ __eax, // r0 long long __rax, // r53 signed char _a8, // _cfa_8 signed short _a16 // _cfa_10 ) {// addr = 0x00476684 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc intOrPtr _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 _unknown_ __rbp; // r59 intOrPtr _t84; // _t84 intOrPtr _t89; // _t89 signed short _t97; // _t97 _unknown_ _t104; // _t104 long long _t108; // _t108 long long _t120; // _t120 _t108 = __rax; _v48 = _t120; _v56 = _t89; _v60 = _t84; _v52 = _t97; _v64 = r8d; _v68 = r9d; _v72 = _a8; _v76 = _a16; _v16 = 0; _v32 = 0; _v10 = LMscoctr_Map_AirMode_HCI2LMP(_v68 & 3, _t104); _v9 = _v10 & 3; _v24 = 0; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t108, _v48 + 60216); _v32 = _t108; if(_v32 == 0) { LMscoctr_Find_SCO_By_Connection_Handle(_v52 & 65535, _v48 + 66256, _v48 + 66256); _v24 = _t108; if(_v24 != 0) { _v32 = *((intOrPtr*)(_v24 + 64)); } } if(_v32 != 0) { _v16 = LMscoctr_RangeCheck_Host_eSCO_Parameters(_v76 & 0xffff, _v64 & 65535, _v72 & 255); __eflags = _v16; if(_v16 == 0) { _v16 = LMscoctr_Validate_Local_eSCO_Features(_v9 & 255); __eflags = _v16; if(_v16 == 0) { _v16 = LMscoctr_Validate_Remote_eSCO_Features(_t73); __eflags = _v16; if(_v16 == 0) { r9d = _v76 & 0xffff; r8d = _v72 & 255; *__rsp = _v24; _v16 = LMscoctr_CanMap_eSCO_Parameters(); return _v16; } return _v16; } return _v16; } return _v16; } else { return 2; } } LMscoctr_Validate_Peer_eSCO_Parameters( _unknown_ __eax // r0 ) {// addr = 0x00476802 signed int _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed short _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t59; // _t59 long long _t63; // _t63 long long _t66; // _t66 _v32 = _t63; _v40 = _t66; _v48 = _t59; _v16 = 0; _v9 = *(_v48 + 12) & 255; _v12 = 0; _v12 = LMscoctr_Map_eSCO_Pkt_Type_LMP2HCI( *(_v48 + 6) & 0xff); _v12 = LMscoctr_Map_eSCO_Pkt_Type_LMP2HCI( *(_v48 + 7) & 0xff) | _v12 & 65535; _v16 = LMscoctr_RangeCheck_Peer_eSCO_Parameters(LMscoctr_Map_eSCO_Pkt_Type_LMP2HCI( *(_v48 + 7) & 0xff) | _v12 & 65535); if(_v16 == 0) { _v16 = LMscoctr_Validate_Local_eSCO_Features(_v9 & 255); if(_v16 == 0) { _v16 = LMscoctr_Validate_Remote_eSCO_Features(_t43); if(_v16 == 0) { return _v16; } return _v16; } return _v16; } return _v16; } LMscoctr_Set_Topical_eSCO_Link( _unknown_ __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004768D4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __al; *((long long*)(_v16 + 1696)) = _v24; *(_v16 + 1704) = _v28 & 255; return; } LMscoctr_Get_Topical_eSCO_Link_Transaction_Type( long long __rdi // r57 ) {// addr = 0x00476904 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *((intOrPtr*)(_v16 + 1704)); } _LMscoctr_SetDEscoCalculatorBit( signed int __esi, // r5 _unknown_ __rax, // r53 long long __rdi // r57 ) {// addr = 0x00476918 signed char _v17; // _cfa_ffffffef signed int _v24; // _cfa_ffffffe8 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t18; // _t18 __rdi = __rdi; __rax = __rax; _v40 = __rdi; _v44 = __esi; _t18 = _v44; _t19 = _t18 >= 0 ? __rax + 7 : _t18; _t20 = (_t18 >= 0 ? __rax + 7 : _t18) >> 3; _v24 = (_t18 >= 0 ? __rax + 7 : _t18) >> 3; _v17 = (_v44 + (_v44 >> 31 >> 29) & 7) - (_v44 >> 31 >> 29); *(_v40 + __rax + 24) = 1 << (_v17 & 255) | *(_v40 + __rax + 24) & 255; return __rax; } _LMscoctr_TestDEscoCalculatorBit( signed int __esi, // r5 _unknown_ __rax, // r53 long long __rdi // r57 ) {// addr = 0x0047697F char _v17; // _cfa_ffffffef signed int _v24; // _cfa_ffffffe8 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t14; // _t14 __rdi = __rdi; __rax = __rax; __esi = __esi; _v40 = __rdi; _v44 = __esi; _t14 = _v44; _t15 = _t14 >= 0 ? __rax + 7 : _t14; _t16 = (_t14 >= 0 ? __rax + 7 : _t14) >> 3; _v24 = (_t14 >= 0 ? __rax + 7 : _t14) >> 3; _v17 = (_v44 + (_v44 >> 31 >> 29) & 7) - (_v44 >> 31 >> 29); if((( *(_v40 + __rax + 24) & 0xff) >> __cl & 1) == 0) { return 0; } return 1; } LMscoctr_GetSlotOccupancy( signed int __edi, // r4 _unknown_ __rdx // r56 ) {// addr = 0x004769E4 signed int _v20; // _cfa_ffffffec _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 __rdx = __rdx; __edi = __edi; _v20 = __edi; if((_v20 & 1) == 0) { return 1; } return 3; } LMscoctr_Clean_eSCO_Scratchpad() {// addr = 0x00476A15 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; __edx = 16; __esi = 0; RtlFillMemory(16, 0, _v16 + 1680); return; } LMscoctr_Set_D_eSCO_and_Timing_Flag() {// addr = 0x00476A3F signed int _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t76; // _t76 signed char* _t80; // _t80 _v48 = _t76; _v56 = _t80; _v32 = 0; _v24 = 0; _v32 = *((intOrPtr*)(_v48 + 67952)); if(_v32 == 0) { } else { _v24 = *((intOrPtr*)(_v32 + 64)); if(_v24 == 0) { } else { (_v56[3]) = (LLINK_ReadPicoClock(_v48, *((intOrPtr*)(_v24 + 432))) & 134217728) >> 27; r9d = (_v56[4]) & 0xff; r8d = (_v56[3]) & 0xff; *__rsp = (_v56[5]) & 0xff; LMscoctr_Derive_D_eSCO(); _v10 = *_v56 & 255; if(_v10 != 255) { (_v56[2]) = _v10 & 65535; LMscoctr_Remove_From_D_eSCO_List(); return; } } } return; } LMscoctr_Calculate_Bandwidth( signed char* __rdi // r57 ) {// addr = 0x00476B47 signed char* _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; _v20 = *_v16 & 0xff; return ((_v16[8]) & 0xffff) * 1600 / _v20; } LMscoctr_Is_D_eSCO_Acceptable( _unknown_ __eax // r0 ) {// addr = 0x00476B77 unsigned int _v25; // _cfa_ffffffe7 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 long long _t66; // _t66 long long _t68; // _t68 long long _t72; // _t72 _v48 = _t68; _v56 = _t72; _v64 = _t66; _v25 = (LLINK_ReadPicoClock(_v48, *((intOrPtr*)(_v64 + 432))) & 134217728) >> 27; if(( *(_v64 + 2) & 255) != 0 || ( *(_v56 + 3) & 255) == _v25) { r9d = *(_v56 + 3) & 0xff; r8d = *(_v56 + 1) & 0xff; _v80 = *(_v56 + 5) & 0xff; *__rsp = *(_v56 + 4) & 0xff; if(( *(_v56 + 2) & 0xff) != LMscoctr_Derive_D_eSCO_AtLeast( *(_v56 + 2) & 0xff)) { return 0; } return 1; } else { return 0; } } LMscoctr_Transfer_Best_LMP_Parameter_Set_to_Scratchpad() {// addr = 0x00476C57 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t162; // _t162 _v48 = _t162; _v40 = _v48 + 67936; _v9 = 0; _v32 = 0; _v24 = 0; if(( *_v40 & 255) != ( *(_v48 + 66936) & 255) || ((_v40[1]) & 255) != ( *(_v48 + 66937) & 255) || ((_v40[4]) & 255) != ( *(_v48 + 66938) & 255) || ((_v40[5]) & 255) != ( *(_v48 + 66938) & 255)) { _v9 = 1; } *_v40 = *(_v48 + 66936) & 255; (_v40[1]) = *(_v48 + 66937) & 255; (_v40[4]) = *(_v48 + 66938) & 255; (_v40[5]) = *(_v48 + 66938) & 255; (_v40[8]) = *(_v48 + 66940) & 65535; (_v40[0xa]) = *(_v48 + 66940) & 65535; if(_v9 != 0) { _v32 = *((intOrPtr*)(_v48 + 67952)); if(_v32 != 0) { _v24 = *((intOrPtr*)(_v32 + 64)); if(_v24 == 0) { goto L9; } else { *(_v32 + 14) = *_v40 & 255; *(_v32 + 18) = (_v40[1]) & 255; *(_v32 + 22) = (_v40[4]) & 255; *(_v32 + 23) = (_v40[5]) & 255; __rsi = *((intOrPtr*)(_v24 + 432)); (_v40[3]) = (LLINK_ReadPicoClock(_v48, *((intOrPtr*)(_v24 + 432))) & 134217728) >> 27; r8d = (_v40[5]) & 0xff; r9d = r8d; r8d = (_v40[4]) & 0xff; LMscoctr_Derive_D_eSCO_List( *_v40 & 0xff); return; } } } L9: return; } LMscoctr_Suspend_Link() {// addr = 0x00476E43 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t10; // _t10 _v16 = _t10; if( *((intOrPtr*)(_v16 + 72)) != 0) { LLINK_Suspend( *((intOrPtr*)(_v16 + 72))); return; } return; } LMscoctr_Resume_Link() {// addr = 0x00476E6E long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t10; // _t10 _v16 = _t10; if( *((intOrPtr*)(_v16 + 72)) != 0) { LLINK_Resume( *((intOrPtr*)(_v16 + 72))); return; } return; } LMscoctr_Add_D_eSCO_Element() {// addr = 0x00476E99 signed char* _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed char _t37; // _t37 _unknown_ _t45; // _t45 _v16 = __rdi; _v20 = _t37; _t40 = _v16; if(( *_v16 & 255) > 16) { DebugPrint(0, _t40, __rcx, _t45, __rdi, __rsi); return; } r8d = _v20 & 255; DebugPrint(0, _v16, __rcx, _t45, __rdi, __rsi); (_v16[ &(_v16[6])]) = _v20 & 255; *_v16 = &(_v16[1]); return; } LMscoctr_Derive_D_eSCO_List( _unknown_ __eax // r0 ) {// addr = 0x00476F2C char _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v80; // _cfa_ffffffb0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t49; // _t49 signed char _t63; // _t63 signed char _t71; // _t71 _unknown_ _t99; // _t99 long long _t102; // _t102 _unknown_ _t107; // _t107 _v48 = _t102; _v64 = r8d; _v68 = r9d; _v52 = sil; _v56 = _t71; _v60 = _t63; _v40 = _v48 - 60216; *(_v48 + 6040) = 0; RtlFillMemory(18, 0, _v48 + 6046); r8d = _v56 & 255; DebugPrint(0, _v48 + 6046, __rcx, _t99, _v48 + 6046, _t107); _t49 = LMscoctr_GetSlotOccupancy(_v64, _t99); _v26 = LMscoctr_GetSlotOccupancy(_v68, _t99) + _t49; r8d = (_v56 & 255) + (_v26 & 255) & 65535; _v25 = LMpol_Adjust_Dsco(); DebugPrint(0, _v40, __rcx, _t99, _v40, *((intOrPtr*)(_v40 + 67952))); _v27 = 0; while((_v27 & 255) < _v52) { _t60 = _v27 & 255; if((_v27 & 255) == _v25) { r8d = _v60 & 255; _v80 = _v68; *__rsp = _v64; r9d = r8d; r8d = _v56 & 255; if(LMscoctr_Derive_D_eSCO_AtLeast(_t60) == _v27) { LMscoctr_Add_D_eSCO_Element(); } } _v27 = _v27 + 2; } return; } _LMscoctr_Remove_D_eSCO_Element( intOrPtr __esi, // r5 signed char* __rdi // r57 ) {// addr = 0x0047708F intOrPtr _v12; // _cfa_fffffff4 signed char* _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 _unknown_ _t26; // _t26 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v12 = _v36; while(_v12 <= 16) { (_v32[_t26 + 6]) = __cl; _v12 = _v12 + 1; } *_v32 = __dl; return *_v32 & 255; } LMscoctr_Remove_From_D_eSCO_List() {// addr = 0x004770DC intOrPtr _v12; // _cfa_fffffff4 signed char* _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 char _t22; // _t22 signed char* _t24; // _t24 signed char* _t26; // _t26 _v32 = _t26; _v36 = _t22; _v12 = 0; while(1) { _t24 = _v32; if(( *_t24 & 0xff) <= _v12) { break; } if(((_v32[ &(_t24[6])]) & 255) == _v36) { _LMscoctr_Remove_D_eSCO_Element(_v12, _v32); } _v12 = _v12 + 1; } return; } LMscoctr_Get_Input_Coding( signed short __edi // r4 ) {// addr = 0x0047712F signed int _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; if((_v12 & 0x4000) == 0) { return (_v12 & 65535) >> 8 & 3; } return 3; } LMscoctr_Get_PCM_Sample_Size( signed short __edi // r4 ) {// addr = 0x0047715D signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; return (_v12 & 65535) >> 5 & 1; } LMscoctr_Get_Linear_PCM_Bit_Pos( signed short __edi // r4 ) {// addr = 0x00477177 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; return (_v12 & 65535) >> 2 & 7; } LMscoctr_Get_Input_Sample_Size( _unknown_ __eax // r0 ) {// addr = 0x0047718E signed char _v9; // _cfa_fffffff7 signed int _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed short _t18; // _t18 _v28 = _t18; _v9 = LMscoctr_Get_PCM_Sample_Size(_v28 & 65535); if(_v9 != 1) { _v9 = 8; } else { _v9 = 16; } _v9 = _v9 - LMscoctr_Get_Linear_PCM_Bit_Pos(_v28 & 65535); return _v9 & 255; } LMscoctr_Get_Air_Coding( signed short __edi // r4 ) {// addr = 0x004771CE signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; return _v12 & 3; } LMscoctr_Store_Topical_Voice_Setting( _unknown_ __esi, // r5 long long __rdi // r57 ) {// addr = 0x004771E1 long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __ax; *((short*)(_v16 + 30)) = __dx; return; } LMscoctr_Restore_Topical_Voice_Setting( long long __rdi // r57 ) {// addr = 0x004771FD long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 30) & 65535; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00477210 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } LLINK_Suspend( long long __rdi // r57 ) {// addr = 0x00477351 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 1; return; } LMsco_LMP_Response_Timeout_CB() {// addr = 0x00477363 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 _unknown_ _t18; // _t18 long long _t20; // _t20 long long _t22; // _t22 _v32 = _t20; _v40 = _t22; _t16 = _v40; _v16 = _v40; if(_v16 == 0) { _t9 = DebugPrint(0, _t16, _t18, __rdx, _t20, _t22); } if(_v16 != 0) { LMsco_Event_Callback(_t9); return; } return; } LMsco_LocalInit_RemoveSCO_EventHandler() {// addr = 0x004773BC signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed char _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed int _t94; // _t94 signed int _t95; // _t95 signed int _t105; // _t105 signed char _t113; // _t113 long long _t177; // _t177 signed char _t189; // _t189 _v32 = _t177; _v40 = _t189; _v44 = _t113; _v20 = 31; _v10 = *(_v40 + 1) & 255; _v9 = _v10 & 255; _t94 = *(_v40 + 1) & 0xff; if(_t94 == 1) { _t95 = _v44 & 255; if(_t95 == 2) { *(_v40 + 3) = 0; *(_v40 + 32) = 34; *(_v40 + 33) = 34; if( *((intOrPtr*)(_v40 + 72)) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 72))); LCCMD_LinkDeleteRequest(); _v10 = 2; _v20 = 0; } } else { if(_t95 == 5) { DM_Clear_Timer(); *(_v40 + 3) = 0; *(_v40 + 32) = 8; *(_v40 + 33) = 8; if( *((intOrPtr*)(_v40 + 72)) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 72))); LCCMD_LinkDeleteRequest(); _v10 = 2; _v20 = 0; } } else { if(_t95 == 1) { DM_Clear_Timer(); *(_v40 + 3) = 0; if( *((intOrPtr*)(_v40 + 72)) != 0) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 72))); LCCMD_LinkDeleteRequest(); _v10 = 2; _v20 = 0; } } } } } else { if(_t94 == 2) { _t105 = _v44 & 255; if(_t105 != 4) { if(_t105 != 5) { if(_t105 == 3) { _v14 = *(_v40 + 8) & 65535; _v11 = *(_v40 + 32) & 255; _v24 = 0; LMscoctr_Free(); _v40 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v32); _v10 = 0; _v20 = 0; } } } } else { if(_t94 == 0) { } } } if(_v40 != 0) { *(_v40 + 1) = _v10 & 255; } return; } LMsco_LocalInit_RemoveSCO_Initialize() {// addr = 0x00477672 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t66; // _t66 signed char _t70; // _t70 long long _t111; // _t111 long long _t118; // _t118 _v32 = _t111; _v40 = _t118; _v44 = _t70; _v48 = _t66; _v52 = r8d; _v12 = 31; if( *((intOrPtr*)(_v40 + 72)) != 0 && *((intOrPtr*)(_v40 + 64)) != 0) { _v24 = *((intOrPtr*)(_v40 + 64)); *_v40 = 1; *(_v40 + 32) = _v44 & 255; *(_v40 + 33) = _v48 & 255; LLINK_Suspend( *((intOrPtr*)(_v40 + 72))); if(_v52 != 1) { LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 72))); LCCMD_LinkDeleteRequest(); *((char*)(_v40 + 2)) = 1; *((char*)(_v40 + 1)) = 2; } else { *((char*)(_v40 + 3)) = DM_Set_Timer(); r8d = _v48 & 255; r9d = r8d; r8d = *(_v40 + 15) & 0xff; LMP_Send_Remove_SCO_Link_Req(); *((char*)(_v40 + 2)) = 1; *((char*)(_v40 + 1)) = 1; } _v12 = 0; } return; } LMsco_PeerInit_RemoveSCO_EventHandler( signed char __edx, // r3 long long __rdi, // r57 signed char __rsi // r58 ) {// addr = 0x004777D4 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed char _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed int _t43; // _t43 _v32 = __rdi; _v40 = __rsi; _v44 = __edx; _v20 = 31; _v10 = *(_v40 + 1) & 255; _v9 = _v10 & 255; _t43 = *(_v40 + 1) & 0xff; if(_t43 != 0) { if(_t43 == 1) { if((_v44 & 255) == 3) { _v14 = *(_v40 + 8) & 65535; _v11 = *(_v40 + 32) & 255; _v24 = 0; LMscoctr_Free(); _v40 = 0; r8 = &_v11; EG_Event_Composer(0); LMpol_Adjust_ACL_Packet_Types_On_All_Links(_v32); _v10 = 0; _v20 = 0; } } } if(_v40 != 0) { *(_v40 + 1) = _v10 & 255; } return _v20; } LMsco_PeerInit_RemoveSCO_Initialize() {// addr = 0x004778E0 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed char _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t51; // _t51 signed char _t55; // _t55 long long _t84; // _t84 long long _t88; // _t88 _v32 = _t84; _v40 = _t88; _v44 = _t55; _v48 = _t51; _v52 = r8d; _v12 = 31; if( *((intOrPtr*)(_v40 + 72)) != 0 && *((intOrPtr*)(_v40 + 64)) != 0) { _v24 = *((intOrPtr*)(_v40 + 64)); *_v40 = 1; *(_v40 + 32) = _v44 & 255; *(_v40 + 33) = _v48 & 255; if(_v52 == 1) { r8d = 44; LMP_Send_Accepted(); } LLINK_ReadPicoClock(_v32, *((intOrPtr*)(_v40 + 72))); LCCMD_LinkDeleteRequest(); *((char*)(_v40 + 2)) = 2; *((char*)(_v40 + 1)) = 1; _v12 = 0; } return _v12; } LMsco_Delete( _unknown_ __eax // r0 ) {// addr = 0x004779E8 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 char _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t36; // _t36 char _t44; // _t44 char _t50; // _t50 long long _t68; // _t68 intOrPtr _t69; // _t69 long long _t70; // _t70 intOrPtr _t71; // _t71 _v32 = _t68; _v40 = _t70; _v44 = _t50; _v48 = _t44; _v52 = sil; _v56 = r9d; _v16 = 31; _v10 = *(_v40 + 1) & 255; _t36 = _v52 & 255; if(_t36 == 1) { _t71 = _v40; r8d = _v56 & 255; _t69 = _v32; LMsco_LocalInit_RemoveSCO_Initialize(); _v16 = _t36; } else { if(_t36 == 2) { _t71 = _v40; r8d = _v56 & 255; _t69 = _v32; _v16 = LMsco_PeerInit_RemoveSCO_Initialize(); } else { } } _v9 = *(_v40 + 1) & 255; *__rsp = _v16; r9d = _v9 & 255; r8d = _v10 & 255; DebugPrint(0, _v40, __rcx, __rdx, _t69, _t71); return _v16; } LMsco_Event_Callback( _unknown_ __eax // r0 ) {// addr = 0x00477AC2 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t34; // _t34 signed char _t45; // _t45 long long _t60; // _t60 long long _t62; // _t62 _v32 = _t60; _v40 = _t62; _v44 = _t45; _v16 = 31; if(_v40 != 0) { _v10 = *(_v40 + 1) & 255; _t34 = *(_v40 + 2) & 0xff; if(_t34 == 1) { __rcx = _v40; _t63 = __rcx; _t61 = _v32; LMsco_LocalInit_RemoveSCO_EventHandler(); _v16 = _t34; L8: _v9 = *(_v40 + 1) & 255; _v64 = _v16; *__rsp = _v9 & 255; r9d = _v10 & 255; r8d = _v44 & 255; DebugPrint(0, _v40, __rcx, __rdx, _t61, _t63); return _v16; } if(_t34 == 2) { __rcx = _v40; _t63 = __rcx; _t61 = _v32; _v16 = LMsco_PeerInit_RemoveSCO_EventHandler(_v44 & 255, _v32, __rcx); goto L8; } goto L8; } return 31; } LMsec_Authentication_EventCB() {// addr = 0x00477B9C char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 intOrPtr _t37; // _t37 intOrPtr _t57; // _t57 _unknown_ _t69; // _t69 long long _t83; // _t83 _unknown_ _t87; // _t87 long long _t92; // _t92 _v32 = _t92; _v40 = __rsi; _v44 = _t57; _v56 = _t83; _v11 = 0; DebugPrint(0, _t69, _t83, _t87, _t92, __rsi); ShowSecurityStatus(); if(_v40 == 0) { return; } _t37 = _v44; if(_t37 == 0) { } else { if(_t37 != 1) { L12: return; } if(( *(_v40 + 120) & 0x80) == 0) { if(( *(_v40 + 120) & 0x40) != 0 && ( *(_v40 + 120) & 0x80) == 0) { *(_v40 + 120) = *(_v40 + 120) & 65535 ^ 64; _v10 = LMlink_Get_Current_Key_Persistance(_v40); r8 = &_v10; EG_Event_Composer(0); DebugPrint(0, ?_? ( &_v11), _v40 + 626, &_v11, _v32 + 190168, __rsi); } } else { _v9 = 0; EG_Event_Composer(0); } } } LMsec_Security_Link_Detach_Callback() {// addr = 0x00477D03 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t53; // _t53 long long _t57; // _t57 _v16 = _t53; _v24 = _t57; if(_v24 != 0) { _t42 = _v24; if(( *(_v24 + 1) & 255) != 0) { DebugPrint(0, _t42, __rcx, __rdx, _t53, _t57); if(( *(_v24 + 219) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 219) = 0; } if(( *(_v24 + 148) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 148) = 0; } if(( *(_v24 + 132) & 65535) != 0) { LMsec_Fsm_Event_Callback(); } return 0; } return 0; } return 31; } CovertSecuritySubStateToStr( signed short __edi // r4 ) {// addr = 0x00477DF0 signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 65535) <= 35) { goto __rax; } return "unknown"; } CovertSecuritySuperStateToStr( signed short __edi // r4 ) {// addr = 0x00477F4C signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 65535; if(_t4 == 19) { return "ACL_TERM_PAIRING"; } if(_t4 > 19) { if(_t4 == 36) { return "SET_ENCR_OFF"; } if(_t4 > 36) { if(_t4 == 64) { return "HCI_MASTER_LINKKEY"; } if(_t4 > 64) { if(_t4 == 128) { return "ORIG_CHANGE_COMBKEY"; } if(_t4 == 512) { return "TERM_CHANGE_COMBKEY"; } L45: return 5041031; } if(_t4 == 38) { return "HCI_SET_ENCR_OFF"; } goto L45; } if(_t4 == 34) { return "HCI_SET_ENCR_ON"; } if(_t4 > 34) { return "ACL_SET_ENCR_ON"; } if(_t4 == 32) { return "SET_ENCR_ON"; } goto L45; } if(_t4 == 7) { return "ACL_AUTHENTICATION"; } if(_t4 > 7) { if(_t4 == 10) { return "HCI_ORIG_PAIRING"; } if(_t4 > 10) { if(_t4 == 11) { return "ACL_ORIG_PAIRING"; } if(_t4 == 16) { return "TERM_PAIRING"; } goto L45; } if(_t4 == 8) { return "ORIG_PAIRING"; } goto L45; } if(_t4 == 4) { return "AUTHENTICATION"; } if(_t4 == 6) { return "HCI_AUTHENTICATION"; } if(_t4 == 0) { return "IDLE"; } goto L45; } LMsec_IsEncryptionAllowed() {// addr = 0x00478090 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; if(_v16 == 0 || _v24 == 0) { return 0; } if(( *(_v24 + 132) & 65535) == 0 || ( *(_v24 + 132) & 65535) == 26) { return 1; } else { DebugPrint(0, _v24, __rcx, __rdx, __rdi, __rsi); return 0; } } LMsec_IsEncryptionInProgress() {// addr = 0x0047810D signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = 0; if(_v32 == 0 || _v40 == 0) { return 0; } else { if(( *(_v40 + 132) & 65535) != 0) { r8d = *(_v40 + 134) & 0xffff; DebugPrint(0, _v40, __rcx, __rdx, __rdi, __rsi); _v9 = 1; } return _v9 & 255; } } LMsec_MssCheckSecurityAdmission() {// addr = 0x0047818A char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t44; // _t44 _v32 = _t44; _v40 = __rsi; _v9 = 1; if(_v32 == 0 || _v40 == 0) { return; } if(( *(_v40 + 132) & 65535) == 0 || ( *(_v40 + 132) & 65535) == 25) { _t40 = _v40; _t45 = _v40; if(LMlink_Get_Current_Key_Persistance(_v40) == 1) { DebugPrint(0, _t40, __rcx, __rdx, _t45, __rsi); _v9 = 0; } } else { r8d = *(_v40 + 134) & 0xffff; DebugPrint(0, _v40, __rcx, __rdx, _t44, __rsi); _v9 = 0; } return; } LMsec_Initialize() {// addr = 0x0047824B long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t10; // _t10 _v16 = _t10; RtbtLmKeyDbInitialise(_v16); RtbtLmSspGenerateNewPublicPrivateKeyPair(); LMsec_core_Local_UnitKey_Initialize(__eflags); BTRAND_Seed_Initialize(); return; } ShowSecurityStatus() {// addr = 0x00478289 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 intOrPtr __rbx; // r54 _unknown_ __rbp; // r59 signed int _t52; // _t52 intOrPtr _t64; // _t64 _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 40; _v48 = __rdi; _v56 = __rsi; if(_v48 != 0) { DebugPrint(0, _v56, _v56, __rdx, __rdi, __rsi); __ecx = *(_v48 + 116) & 0xff; _t52 = *(_v48 + 4) & 0xffff; if(( *(_v48 + 4) & 65535) != 1) { } _t62 = _v48; if(( *(_v48 + 2) & 255) == 0) { } *__rsp = __ecx; r9d = _t52; r8 = __rdx; DebugPrint(0, _t62, _t62, __rdx, __rdi, __rsi); r12d = *(_v48 + 122) & 0xffff; _t64 = _v48; CovertSecuritySubStateToStr( *(_t64 + 122) & 0xffff); __rbx = _t64; r13d = *(_v48 + 120) & 0xffff; _t66 = _v48; CovertSecuritySuperStateToStr( *(_v48 + 120) & 0xffff); *__rsp = r12d; r9 = _t64; r8d = r13d; DebugPrint(0, _v48, _t66, __rdx, __rdi, __rsi); } __rsp = &(__rsp[0xa]); _pop(__rbx); _pop(r12); _pop(r13); return; } LMsec_core_Init_Authentication() {// addr = 0x004783A6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t87; // _t87 _unknown_ _t89; // _t89 long long _t91; // _t91 long long _t94; // _t94 _v16 = _t91; _v24 = _t94; i.8608 = i.8608 + 1; if(_v24 == 0) { return 18; } if(( *(_v24 + 120) & 65535) != 16) { if(( *(_v24 + 122) & 65535) != 0 || ( *(_v24 + 120) & 65535) != 0) { if(( *(_v24 + 122) & 65535) != 1 || ( *(_v24 + 120) & 8) != 0) { return 31; } else { r8d = *(_v24 + 122) & 0xffff; DebugPrint(0, _v24, _t87, _t89, _t91, _t94); *(_v24 + 120) = 11; *(_v24 + 15) = *(_v24 + 2) & 255; *(_v24 + 122) = 2; return 0; } } else { *(_v24 + 120) = 11; *(_v24 + 15) = *(_v24 + 2) & 255; if(LMsec_core_Get_Link_Key() == 1) { *(_v24 + 120) = 7; LMsec_core_Auth_Challenge(); } return 0; } } else { *(_v24 + 120) = 19; return 0; } } LMsec_core_Get_Link_Key() {// addr = 0x00478500 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t43; // _t43 _unknown_ _t53; // _t53 _unknown_ _t55; // _t55 long long _t58; // _t58 long long _t59; // _t59 long long _t61; // _t61 _v32 = _t58; _v40 = _t61; _v16 = 0; if(( *(_v40 + 114) & 255) == 0) { _t43 = _v40 + 424; _t59 = _t43; LMkeydb_Read_Link_Key(); _v16 = _t43; if(_v16 != 0) { LMutils_Array_Copy(16, _v16, _v16, _v40 + 184); return 1; } if(( *(_v40 + 125) & 255) == 8) { r8d = *(_v40 + 122) & 0xffff; DebugPrint(0, _v40, _t53, _t55, _t59, _t61); } else { *(_v40 + 122) = 1; } EG_Event_Composer(0); return 0; } return 1; } LMsec_core_Init_LinkKey_Negotiation() {// addr = 0x004785EB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t29; // _t29 _v16 = _t26; _v24 = _t29; *((char*)(_v24 + 146)) = __dl; __eflags = __al - 1; if(__eflags != 0) { LMsec_core_Init_UnitKey_Setup(__eflags); *((short*)(_v24 + 122)) = 7; return; } *((short*)(_v24 + 122)) = 6; LMsec_core_Init_CombKey_Setup(__eflags); return; } LMsec_core_Init_CombKey_Setup( _unknown_ __eflags // r9 ) {// addr = 0x0047865D long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 long long _t52; // _t52 long long _t56; // _t56 __eflags = __eflags; _v96 = _t52; _v104 = _t56; _v16 = *fs:0x28]; _v88 = _v96 + 191072; BTRAND_Rand128Bit(0, &_v72); LM_SecEng_Generate_Key_E21(); LMutils_Array_Copy(16, ?_? ( &_v56), &_v56, _v104 + 168); _v80 = _v104 + 184; LMsec_core_Array_Xor(16, ?_? ( &_v40), &_v72, _v80, &_v40); r8 = &_v40; LMsec_peer_Send_LMP_Message(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LMsec_core_Init_UnitKey_Setup( _unknown_ __eflags // r9 ) {// addr = 0x00478732 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t33; // _t33 long long _t35; // _t35 __eflags = __eflags; _v64 = _t33; _v72 = _t35; _v16 = *fs:0x28]; _v56 = _v64 + 65904; _v48 = _v72 + 184; __rdx = _v48; __edi = 16; LMsec_core_Array_Xor(16, ?_? ( &_v40), _v56, _v48, &_v40); r8 = &_v40; LMsec_peer_Send_LMP_Message(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LMsec_core_Local_UnitKey_Initialize( _unknown_ __eflags // r9 ) {// addr = 0x004787C5 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t19; // _t19 __eflags = __eflags; _v48 = _t19; _v16 = *fs:0x28]; BTRAND_Rand128Bit(0, &_v40); LM_SecEng_Generate_Key_E21(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LMsec_core_Array_Xor( signed char __edi, // r4 signed int* __rax, // r53 long long __rcx, // r55 long long __rdx, // r56 long long __rsi // r58 ) {// addr = 0x00478827 intOrPtr _v12; // _cfa_fffffff4 signed char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 __rsi = __rsi; __rcx = __rcx; __rax = __rax; __edi = __edi; _v40 = __rsi; _v48 = __rdx; _v56 = __rcx; _v28 = __edi; _v12 = 0; do { __rax = __rax + _v40; *__rax = *(_v12 + _v56) & 255 ^ *(_v12 + _v48) & 255; _v12 = _v12 + 1; } while((_v28 & 255) > _v12); return; } LMsec_core_Auth_Challenge() {// addr = 0x00478879 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 char _v92; // _cfa_ffffffa4 _unknown_ __rbp; // r59 _unknown_ _t39; // _t39 char _t41; // _t41 _unknown_ _t48; // _t48 long long _t79; // _t79 long long _t86; // _t86 _v80 = _t79; _v88 = _t86; _v92 = _t41; _v16 = *fs:0x28]; _v72 = 0; BTRAND_Rand128Bit(0, &_v56); LMutils_Array_Copy(16, ?_? ( &_v56), &_v56, _v88 + 232); _t39 = LMlink_Get_Current_Key_Persistance(_v88); _t47 = _t39; if(_t39 != 0) { _v72 = _v80 + 65920; } else { _v72 = _v88 + 184; } _v64 = _v88 + 424; r8 = &_v40; LM_SecEng_Authenticate_E1(_t47); LMutils_Array_Copy(4, ?_? ( &_v24), &_v24, _v88 + 200); _t48 = LMlink_Get_Current_Key_Persistance(_v88); if(_t48 == 0) { LMutils_Array_Copy(12, ?_? ( &_v40), &_v40, _v88 + 204); } *((short*)(_v88 + 122)) = 5; r8 = &_v56; LMsec_peer_Send_LMP_Message(); if(_t48 != 0) { __stack_chk_fail(); return; } return; } LMsec_core_Auth_Response() {// addr = 0x004789BB long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 char _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 _unknown_ _t30; // _t30 char _t32; // _t32 _unknown_ _t36; // _t36 long long _t52; // _t52 long long _t58; // _t58 long long _t64; // _t64 _v64 = _t58; _v72 = _t64; _v88 = _t52; _v76 = _t32; _v16 = *fs:0x28]; _v56 = 0; _v48 = _v64 + 191072; _t30 = LMlink_Get_Current_Key_Persistance(_v72); _t35 = _t30; if(_t30 != 0) { _v56 = _v64 + 65920; } else { _v56 = _v72 + 184; } r8 = &_v40; LM_SecEng_Authenticate_E1(_t35); _t36 = LMlink_Get_Current_Key_Persistance(_v72); if(_t36 == 0) { __edi = 12; LMutils_Array_Copy(12, ?_? ( &_v40), &_v40, _v72 + 204); } r8 = &_v24; LMsec_peer_Send_LMP_Message(); if(_t36 != 0) { __stack_chk_fail(); return; } return; } LMsec_core_Auth_Complete() {// addr = 0x00478AAD char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed char _t214; // _t214 long long _t275; // _t275 intOrPtr _t276; // _t276 long long _t281; // _t281 long long _t286; // _t286 long long _t287; // _t287 long long _t298; // _t298 long long _t304; // _t304 long long _t306; // _t306 long long _t319; // _t319 _unknown_ _t334; // _t334 _unknown_ _t342; // _t342 long long _t351; // _t351 long long _t352; // _t352 _v32 = _t351; _v40 = _t364; _v44 = _t214; _t352 = _v40; ShowSecurityStatus(); if(( *(_v40 + 148) & 255) != 0) { _t352 = _v32; DM_Clear_Timer(); *(_v40 + 148) = 0; } *(_v40 + 122) = 0; if(( *(_v40 + 120) & 8) != 0 || ( *(_v40 + 120) & 0x10) != 0 || ( *(_v40 + 120) & 0x80) != 0 || ( *(_v40 + 120) & 0x200) != 0) { if(( *(_v40 + 120) & 8) != 0) { *(_v40 + 120) = *(_v40 + 120) & 65535 ^ 8; } if(( *(_v40 + 120) & 0x10) != 0) { *(_v40 + 120) = *(_v40 + 120) & 65535 ^ 16; } if((_v44 & 255) == 0) { _t319 = _v40; _t364 = _t319 + 146; _t334 = _v40 + 184; _t342 = _v40 + 424; r8 = _t319 + 146; _t352 = _v32 + 190168; EG_Event_Composer(0); } } if(( *(_v40 + 37) & 255) == 3) { if((( *(_v40 + 120) & 1) == 0 & ( *(_v40 + 120) & 65535) >> 1 & 1) == 0) { if(( *(_v40 + 120) & 4) != 0) { *(_v40 + 120) = *(_v40 + 120) & 65535 ^ 4; } if(( *(_v40 + 120) & 0x80) == 0) { _t275 = _v40; _t169 = *(_t275 + 120) & 0x40; if(( *(_t275 + 120) & 0x40) != 0) { _t281 = _v40; _t169 = *(_t281 + 120) & 0x80; if(( *(_t281 + 120) & 0x80) == 0) { if((_v44 & 255) != 0) { r8d = *(_v40 + 122) & 0xffff; _t169 = DebugPrint(0, _v40, _t334, _t342, _t352, _t364); LMconnection_Disconnect_Acl(); } else { if(( *(_v40 + 116) & 255) != 0) { _t286 = _v40; _t169 = *(_t286 + 116) & 255; if(( *(_t286 + 116) & 255) == 1) { _t287 = _v40; _t169 = *(_t287 + 2) & 255; if(( *(_t287 + 2) & 255) != 0) { LMsec_Fsm_Event_Callback(); } else { LMsec_Fsm_Event_Callback(); } } } else { *(_v40 + 120) = *(_v40 + 120) & 65535 ^ 64; _v9 = LMlink_Get_Current_Key_Persistance(_v40); r8 = &_v9; _t169 = EG_Event_Composer(0); } } } } } else { if(( *(_v40 + 120) & 65535) != 128) { ShowSecurityStatus(); _t298 = _v40; _t169 = *(_t298 + 120) & 65535; *(_v40 + 120) = *(_t298 + 120) & 65535 ^ 2; } else { if(( *(_v40 + 116) & 255) == 0) { EG_Event_Composer(0); _t304 = _v40; _t169 = *(_t304 + 120) & 65535; *(_v40 + 120) = *(_t304 + 120) & 65535 ^ 128; } else { _t306 = _v40; _t169 = *(_t306 + 132) & 65535; if(( *(_t306 + 132) & 65535) != 0) { _t169 = DebugPrint(0, _v40, _t334, _t342, _t352, _t364); } else { LMsec_Fsm_Event_Callback(); } } } } } else { *(_v40 + 120) = *(_v40 + 120) & 0xe0; _t169 = EG_Event_Composer(0); } } else { *(_v40 + 120) = *(_v40 + 120) & 0xe0; LMconnection_LM_Auth_Complete(); } if(_v40 != 0) { _t276 = _v40; _t169 = *(_t276 + 149) & 255; if(( *(_t276 + 149) & 255) != 1) { goto L39; } else { EG_Event_Composer(0); *(_v40 + 149) = 0; return; } } L39: return; } LMsec_core_Init_Encryption_In_Connection_Setup( char __edx // r3 ) {// addr = 0x00478F73 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 long long _t66; // _t66 long long _t69; // _t69 _v16 = _t66; _v24 = _t69; _v28 = __edx; if(( *(_v24 + 124) & 0x20) == 0) { if(( *(_v24 + 125) & 255) != 0 || ( *(_v24 + 124) & 255) != 0) { return 12; } else { *(_v24 + 125) = 8; *(_v24 + 124) = 35; *(_v24 + 15) = *(_v24 + 2) & 255; *((char*)(_v24 + 117)) = _v28; LMch_Disable_L2CAP_Traffic(); r8 = &_v28; LMsec_peer_Send_LMP_Message(); L6: return 0; } } *(_v24 + 124) = *(_v24 + 124) & 255 | 3; goto L6; } LMsec_core_PeerData_Tx_Stop_Callback() {// addr = 0x00479047 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t34; // _t34 long long _t37; // _t37 _v16 = _t34; _v24 = _t37; if(( *(_v24 + 125) & 255) == 12) { r8 = _v24 + 232; LMsec_peer_Send_LMP_Message(); return; } if(( *(_v24 + 125) & 255) == 13) { r8d = 0; LMsec_peer_Send_LMP_Message(); return; } return; } LMsec_core_Enable_Rx_Encryption() {// addr = 0x004790CB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t20; _v24 = _t22; if(_v24 != 0) { r9d = 0; r8 = _v24 + 392; LCCMD_SetEncryption(); return; } return; } LMsec_core_Disable_Rx_Encryption() {// addr = 0x00479121 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 long long _t20; // _t20 long long _t22; // _t22 _v16 = _t20; _v24 = _t22; if(_v24 != 0) { r9d = 0; r8 = _v24 + 392; LCCMD_SetEncryption(); return; } return; } LMsec_core_PeerData_Tx_Go_Callback() {// addr = 0x00479177 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t55; // _t55 long long _t60; // _t60 _v16 = _t55; _v24 = _t60; ShowSecurityStatus(); if(( *(_v24 + 125) & 255) != 12) { if(( *(_v24 + 125) & 255) == 13) { *(_v24 + 116) = 0; LMsec_core_Set_Encryption_Complete(); return; } if(( *(_v24 + 148) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 148) = 0; return; } } else { *(_v24 + 116) = 1; *(_v24 + 125) = 0; if(( *(_v24 + 124) & 0x20) != 0) { LMsec_core_Set_Encryption_Complete(); return; } } return; } LMsec_core_Set_Encryption_Complete() {// addr = 0x00479246 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t105; // _t105 char* _t162; // _t162 long long _t166; // _t166 intOrPtr _t167; // _t167 long long _t173; // _t173 _v32 = _t166; _v40 = _t173; _v44 = _t105; _v9 = _v44; _t167 = _v40; ShowSecurityStatus(); if(( *(_v40 + 148) & 255) != 0) { _t167 = _v32; DM_Clear_Timer(); *(_v40 + 148) = 0; } *(_v40 + 125) = 0; if(( *(_v40 + 124) & 1 & ( *(_v40 + 124) & 255) >> 1 & 1) == 0) { if((( *(_v40 + 124) & 1) == 0 & ( *(_v40 + 124) & 255) >> 1 & 1) == 0) { *(_v40 + 124) = 0; } else { *(_v40 + 124) = 0; _t173 = _v40; LMch_Enable_L2CAP_Traffic(); LMEvt_FireEvent(); _t167 = _v32 + 190168; r8 = _v40 + 116; _t159 = _v40 + 626; _t162 = &_v9; EG_Event_Composer(0); } } else { *(_v40 + 124) = *(_v40 + 124) & 255 ^ 35; LMch_Enable_L2CAP_Traffic(); _t159 = _v40; _t173 = _v40; _t167 = _v32; LMconnection_LM_Encrypt_Complete(); } if(( *(_v40 + 126) & 255) != 1) { return; } else { if(( *(_v40 + 116) & 255) != 0 || ( *(_v40 + 61) & 255) != 1) { if(( *(_v40 + 116) & 255) != 1) { r8d = *(_v40 + 116) & 0xff; DebugPrint(0, _v40, _t159, _t162, _t167, _t173); return; } *(_v40 + 126) = 0; LMpolicy_Switch_Complete_Event(); return; } else { LMpolicy_LM_Switch_Req(); return; } } } LMsec_core_Pause_Resume_Complete() {// addr = 0x00479469 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t39; // _t39 long long _t64; // _t64 long long _t70; // _t70 _v32 = _t64; _v40 = _t70; _v44 = _t39; _v9 = _v44; ShowSecurityStatus(); EG_Event_Composer(0); if(( *(_v40 + 118) & 4) == 0) { if(( *(_v40 + 118) & 8) != 0) { EG_Event_Composer(0); } } else { LMpolicy_Switch_Complete_Event(); } *(_v40 + 118) = 0; LMch_Enable_L2CAP_Traffic(); return; } LMsec_core_Set_Connection_Encryption() {// addr = 0x00479553 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed char _t33; // _t33 long long _t49; // _t49 long long _t53; // _t53 _v32 = _t49; _v40 = _t53; _v44 = _t33; _v9 = _v44 & 255; *(_v40 + 390) = *(_v40 + 117) & 255; LMch_Disable_L2CAP_Traffic(); if(_v44 != 1) { *(_v40 + 117) = 0; } else { if(LMlink_Get_Current_Key_Persistance(_v40) != 1) { *(_v40 + 117) = 1; } else { *(_v40 + 117) = 2; _v9 = 1; } } r8 = &_v9; LMsec_peer_Send_LMP_Message(); return; } LMsec_core_Change_To_Temporary_Key( _unknown_ __eflags // r9 ) {// addr = 0x004795FD long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 long long _t78; // _t78 long long _t83; // _t83 __eflags = __eflags; _v80 = _t78; _v88 = _t83; _v16 = *fs:0x28]; r8d = &temp_rand; LMsec_peer_Send_LMP_Message(); _v64 = _v88 + 184; r8 = &_v56; LM_SecEng_Generate_Key_E22(); LMsec_core_Array_Xor(16, ?_? ( &_v40), _v80 + 65920, &_v56, &_v40); r8 = &_v40; LMsec_peer_Send_LMP_Message(); __esi = 1; LMlink_Set_Key_Persistance(1, _v88); *(_v88 + 15) = *(_v88 + 2) & 255; *(_v88 + 120) = *(_v88 + 120) & 65535 | 4; LMsec_core_Auth_Challenge(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LMsec_core_Change_To_Semi_Permanent_Key() {// addr = 0x00479726 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t29; // _t29 long long _t32; // _t32 _v16 = _t29; _v24 = _t32; *((short*)(_v24 + 122)) = 15; *((short*)(_v24 + 120)) = 64; __esi = 0; LMlink_Set_Key_Persistance(0, _v24); r8d = 0; LMsec_peer_Send_LMP_Message(); *(_v24 + 15) = *(_v24 + 2) & 255; *((short*)(_v24 + 120)) = 68; return; } LMsec_core_Get_Broadcast_Key_Length( _unknown_ __rax // r53 ) {// addr = 0x0047979E long long _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v57; // _cfa_ffffffc7 signed char _v58; // _cfa_ffffffc6 signed int _v59; // _cfa_ffffffc5 signed char _v60; // _cfa_ffffffc4 signed int _v62; // _cfa_ffffffc2 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t74; // _t74 signed int _t111; // _t111 long long _t115; // _t115 intOrPtr _t116; // _t116 intOrPtr _t121; // _t121 long long _t125; // _t125 _v80 = _t125; _v32 = *fs:0x28]; _v62 = *(_v80 + 6012) & 65535; _v56 = 0; _v48 = 0; _v60 = 0; while(_v60 <= 6) { _t115 = _v80; __esi = _v60 & 255; LM_Find_Link_Table_Entry_By_Index(_v60 & 255, _t115); _v72 = _t115; if(_v72 == 0 || ( *(_v72 + 1) & 255) != 1 || ( *(_v72 + 2) & 255) != 0) { L9: _v60 = _v60 + 1; continue; } else { _v62 = _v62 & *(_v72 + 388) & 65535; _v59 = 1; while(_v59 <= 16) { _t121 = _v72; if((( *(_t121 + 388) & 0xffff) >> (_v59 & 255) - 1 & 1) != 0) { *((char*)(__rbp + _t121 - 48)) = ( *(__rbp + (_v59 & 255) - 0xffffffffffffffd1) & 255) + 1; } _v59 = _v59 + 1; } goto L9; } } _t116 = _v80; _v59 = *(_t116 + 6008) & 255; while(_v59 != 0) { if(((_v62 & 65535) >> (_v59 & 255) - 1 & 1) != 0) { L17: if(_v59 != 0) { L25: _t74 = _v59 & 255; if(_t111 == 0) { return _t74; } __stack_chk_fail(); return _t74; } _v57 = 0; _v58 = 1; while(_v58 <= 16) { if(( *(__rbp + _t116 - 48) & 255) > _v57) { _v59 = _v58 & 255; _v57 = *(__rbp + _t116 - 48) & 255; } _v58 = _v58 + 1; } _t111 = _v59; if(_t111 == 0) { _v59 = *(_v80 + 6008) & 255; } goto L25; } _v59 = _v59 - 1; } goto L17; } LMsec_core_TimeoutHandler() {// addr = 0x0047992F char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 intOrPtr _t171; // _t171 intOrPtr _t172; // _t172 long long _t219; // _t219 long long _t232; // _t232 _v32 = _t219; _v40 = _t232; _v9 = 34; DM_Clear_Timer(); *(_v40 + 148) = 0; if(( *(_v40 + 37) & 255) == 3) { if((( *(_v40 + 120) & 1) == 0 & ( *(_v40 + 120) & 65535) >> 1 & 1) == 0) { if(( *(_v40 + 120) & 0x80) == 0) { L7: if(( *(_v40 + 120) & 0x40) != 0 && ( *(_v40 + 120) & 0x80) == 0 && ( *(_v40 + 124) & 255) != 38) { LMlink_Set_Key_Persistance(LMlink_Get_Previous_Key_Persistance(_v40), _v40); r8 = _v40 + 147; EG_Event_Composer(0); } goto L11; } if(( *(_v40 + 120) & 0x40) != 0) { goto L7; } else { EG_Event_Composer(0); goto L11; } } else { EG_Event_Composer(0); goto L11; } } else { LMconnection_LM_Auth_Complete(); L11: *(_v40 + 120) = 0; *(_v40 + 122) = 0; if(( *(_v40 + 124) & 1 & ( *(_v40 + 124) & 255) >> 1 & 1) == 0) { _t171 = _v40; _t172 = _v40; _t115 = ( *(_t172 + 124) & 1) == 0 & ( *(_t171 + 124) & 255) >> 1 & 1; if((( *(_t172 + 124) & 1) == 0 & ( *(_t171 + 124) & 255) >> 1 & 1) != 0) { if(( *(_v40 + 125) & 255) == 13 || ( *(_v40 + 125) & 255) == 14 || ( *(_v40 + 125) & 255) == 8) { _t115 = LMsec_peer_LMP_Not_Accepted(); } else { LMch_Enable_L2CAP_Traffic(); LMEvt_FireEvent(); r8 = _v40 + 116; _t115 = EG_Event_Composer(0); } } } else { LMconnection_LM_Encrypt_Complete(); } *(_v40 + 124) = 0; *(_v40 + 125) = 0; return; } } LMsec_core_Enc_Timeout_Handler() {// addr = 0x00479C1E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t50; // _t50 long long _t55; // _t55 _v16 = _t50; _v24 = _t55; ShowSecurityStatus(); if(( *(_v24 + 148) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 148) = 0; } if(( *(_v24 + 125) & 0xff) - 12 <= 1) { if(( *(_v24 + 118) & 2) != 0 || ( *(_v24 + 118) & 1) != 0) { LMpolicy_Switch_Complete_Event(); return; } else { LMconnection_Disconnect_Related_Links(); return; } } return; } LMsec_core_Init_Encryption_Transaction( _unknown_ __eax // r0 ) {// addr = 0x00479CDE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 char _t27; // _t27 long long _t45; // _t45 long long _t48; // _t48 _v16 = _t45; _v24 = _t48; _v32 = __rdx; _v36 = _t27; LMch_Disable_L2CAP_Traffic(); if(LMlink_Get_Current_Key_Persistance(_v24) == 1 && *_v32 == 1) { *_v32 = 2; } *(_v24 + 119) = *(_v16 + 66224) & 255; *(_v24 + 390) = *(_v24 + 117) & 255; *(_v24 + 117) = *_v32; return; } LMsec_Event_Callback() {// addr = 0x00479D6C signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t61; // _t61 signed char _t82; // _t82 signed char* _t122; // _t122 _unknown_ _t125; // _t125 long long _t128; // _t128 long long _t135; // _t135 _v32 = _t128; _v40 = _t135; _v56 = _t122; _v44 = _t82; _v9 = 0; _t61 = _v44 & 255; if(_t61 == 0) { if(( *_v56 & 255) == 1 && ( *(_v40 + 116) & 255) != 0) { *(_v40 + 15) = *(_v40 + 2) & 255; if(( *(_v40 + 45) & 4) == 0 || ( *(_v32 + 191037) & 4) == 0) { LMsec_core_Set_Connection_Encryption(); *(_v40 + 126) = 1; DebugPrint(0, _v40, _v40, _t125, _v32, _v40); } else { *((char*)(_v40 + 124)) = 36; *((char*)(_v40 + 125)) = 14; *(_v40 + 118) = 2; LMsec_peer_Send_LMP_Pause_Encryption_Req(); } _v9 = 1; } goto L20; } else { if(_t61 == 1) { if(( *(_v40 + 118) & 255) == 0) { if(( *(_v40 + 126) & 255) == 1 && ( *(_v40 + 117) & 255) == 0) { ShowSecurityStatus(); *(_v40 + 15) = *(_v40 + 2) & 255; LMsec_core_Set_Connection_Encryption(); _v9 = 1; } } else { ShowSecurityStatus(); *(_v40 + 118) = *(_v40 + 118) & 255 | 4; if(( *(_v40 + 118) & 2) != 0) { *(_v40 + 15) = *(_v40 + 2) & 255; LMsec_Proc_Resume_Encryption(); } _v9 = 1; } } L20: return; } } LMsec_Generate_Enc_Complete_Event() {// addr = 0x00479F30 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 long long _t31; // _t31 _v32 = _t31; _v40 = __rsi; _v44 = __edx; _v9 = _v44; LMEvt_FireEvent(); r8 = _v40 + 116; EG_Event_Composer(0); return; } LMsec_core_Pause_Init() {// addr = 0x00479F9F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t21; // _t21 long long _t31; // _t31 long long _t33; // _t33 _v16 = _t31; _v24 = _t33; if(( *(_v24 + 134) & 4) == 0) { _t21 = ( *(_v24 + 2) & 255) == 0; } else { _t21 = *(_v24 + 2) & 255; } *(_v24 + 15) = _t21; *(_v24 + 14) = *(_v24 + 15) & 255; LMch_Disable_L2CAP_Traffic(); return; } LMsec_core_Enc_L2flow_Ctrl() {// addr = 0x0047A00D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 char _t9; // _t9 long long _t11; // _t11 long long _t13; // _t13 _v16 = _t11; _v24 = _t13; _v28 = _t9; if(_v28 == 0) { LMch_Disable_L2CAP_Traffic(); return; } return; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0047A044 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } LM_SecEng_Array_Xor( signed char __edi, // r4 signed int* __rax, // r53 long long __rcx, // r55 long long __rdx, // r56 long long __rsi // r58 ) {// addr = 0x0047A09A intOrPtr _v12; // _cfa_fffffff4 signed char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 __rsi = __rsi; __rcx = __rcx; __rax = __rax; __edi = __edi; _v40 = __rsi; _v48 = __rdx; _v56 = __rcx; _v28 = __edi; _v12 = 0; do { __rax = __rax + _v40; *__rax = *(_v12 + _v56) & 255 ^ *(_v12 + _v48) & 255; _v12 = _v12 + 1; } while((_v28 & 255) > _v12); return; } LM_SecEng_Get_Byte_Array( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0047A0EC _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = __dl; *(_v16 + 1) = *(_v24 + 1) & 255; *(_v16 + 2) = *(_v24 + 2) & 255; *(_v16 + 3) = *(_v24 + 3) & 255; *(_v16 + 4) = *(_v24 + 4) & 255; *(_v16 + 5) = *(_v24 + 5) & 255; return; } LM_SecEng_Mod2_Reduce_Kc( signed long long __rdx, // r56 long long __rdi, // r57 signed long long __rsi // r58 ) {// addr = 0x0047A161 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed short _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec unsigned int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t137; // _t137 signed long long _t182; // _t182 signed long long _t184; // _t184 signed long long _t186; // _t186 signed long long _t188; // _t188 signed long long _t195; // _t195 signed long long _t196; // _t196 __rsi = __rsi; __rdi = __rdi; _t196 = __rdx; _v48 = __rdi; _v56 = __rsi; _v11 = 0; _v10 = 127; _v9 = 0; _v16 = 0; _v14 = 0; _v20 = 0; _v24 = 2147483648; if(( *(_v56 + 2) & 255) <= 15) { _v28 = 4294967295; } else { _t195 = _v56; _t137 = ( *(_t195 + 2) & 0xff) - 16; _t138 = _t137 >= 0 ? _t195 + 31 : _t137; _t139 = (_t137 >= 0 ? _t195 + 31 : _t137) >> 5; _v28 = (_t137 >= 0 ? _t195 + 31 : _t137) >> 5; } _v9 = *(_v56 + 2) & 255; do { } while(_v9 > 31); _t182 = _v56; _v14 = *_t182 & 65535; while(_v9 <= 30) { _v16 = ((_v14 & 65535) >> 15) + _t182 + _t182; _v14 = (_v14 & 65535) + (_v14 & 65535); _v20 = _v20 + 1; if(_v20 == 16) { _v14 = _v16 & 65535; _v16 = 0; } _v9 = _v9 + 1; } if(_v20 > 15) { _v20 = _v20 - 32; } while(1) { _t182 = _v56; if(( *(_t182 + 2) & 255) > _v10) { break; } _t184 = (_t182 << 2) + _v48; if(( *_t184 & _v24) != 0) { _t186 = (_t184 << 2) + _v48; _t196 = (_t196 << 2) + _v48; *_t186 = *_t196 & !_v24; if(_v20 > 0) { _t188 = (_t186 << 2) + _v48; *_t188 = _v14 & 65535 ^ *((_v28 << 2) + _v48); _t196 = (_v28 << 2) + _v48; *((_t188 << 2) + _v48) = (_v16 & 65535) << 16 ^ *_t196; } else { if(_v28 < 0) { _t186 = (_t186 << 2) + _v48; _t196 = (_v28 << 2) + _v48; *_t186 = _v16 & 65535 ^ *_t196; } if(_v28 <= 2) { _t196 = (_v28 + 1 << 2) + _v48; *((_t186 + 1 << 2) + _v48) = (_v14 & 65535) << 16 ^ *_t196; } } } _v14 = ((_v16 & 65535) << 15) + ((_v14 & 65535) >> 1); _v16 = _v16 >> 1; _v24 = _v24 >> 1; _v20 = _v20 - 1; if(_v20 == 0) { _v16 = _v14 & 65535; _v14 = 0; } if(_v20 == 240) { _v16 = _v14 & 65535; _v14 = 0; _v20 = 15; _v28 = _v28 + 1; } if((_v10 & 0x1f) == 0) { _v11 = _v11 + 1; _v24 = 2147483648; } _v10 = _v10 - 1; } return; } LM_SecEng_Mod2_Multiply_Kc( signed char __edx, // r3 signed long long __rax, // r53 long long __rcx, // r55 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0047A3B2 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 _unknown_ _t63; // _t63 signed long long _t105; // _t105 signed long long _t108; // _t108 __rsi = __rsi; __rdi = __rdi; __rcx = __rcx; _t105 = __rax; _v48 = __rdi; _v56 = __rsi; _v72 = __rcx; _v60 = __edx; _v16 = 1; _v10 = 0; _t63 = (_v60 & 255) - 1; _t64 = _t63 >= 0 ? __rax + 3 : _t63; _t65 = (_t63 >= 0 ? __rax + 3 : _t63) >> 2; _v24 = (_t63 >= 0 ? __rax + 3 : _t63) >> 2; _v20 = 0; while(_v20 <= 3) { _t105 = (_t105 << 2) + _v72; *_t105 = 0; _v20 = _v20 + 1; } _v9 = (_v60 & 255) << 3; _v28 = 0; do { _t108 = (_t105 << 2) + _v56; if(( *_t108 & _v16) == 0) { } else { _v20 = 0; while(_v20 <= 3) { _t108 = (_t108 << 2) + _v72; *_t108 = *((_v20 << 2) + _v48) ^ *((_v20 << 2) + _v72); _v20 = _v20 + 1; } } _v20 = 0; while(_v20 <= 2) { _t108 = (_t108 << 2) + _v48; *_t108 = ( *((_v20 + 1 << 2) + _v48) >> 31) + (_v20 << 2) + _v48 + (_v20 << 2) + _v48; _v20 = _v20 + 1; } _t105 = (_t108 << 2) + _v48; *_t105 = *((_v20 << 2) + _v48) + *((_v20 << 2) + _v48); _v16 = _v16 << 1; _v10 = _v10 + 1; _v28 = _v28 + 1; if(_v28 == 32) { _v16 = 1; _v24 = _v24 - 1; _v28 = 0; } } while((_v10 & 255) < _v9); return; } LM_SecEng_Safer_Plus_Encrypt( intOrPtr __ecx // r2 ) {// addr = 0x0047A519 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v72; // _cfa_ffffffb8 char _v344; // _cfa_fffffea8 intOrPtr _v348; // _cfa_fffffea4 signed char _v352; // _cfa_fffffea0 intOrPtr _v356; // _cfa_fffffe9c signed char _v360; // _cfa_fffffe98 signed char _v364; // _cfa_fffffe94 signed char _v368; // _cfa_fffffe90 signed char* _v376; // _cfa_fffffe88 signed char* _v384; // _cfa_fffffe80 signed int* _v392; // _cfa_fffffe78 long long _v400; // _cfa_fffffe70 long long _v408; // _cfa_fffffe68 long long _v416; // _cfa_fffffe60 intOrPtr _v420; // _cfa_fffffe5c _unknown_ __rbp; // r59 intOrPtr* _t284; // _t284 signed int _t361; // _t361 _unknown_ _t399; // _t399 signed char* _t414; // _t414 intOrPtr _t418; // _t418 signed int* _t419; // _t419 intOrPtr* _t420; // _t420 signed int* _t421; // _t421 signed int* _t422; // _t422 signed int* _t424; // _t424 signed int* _t425; // _t425 intOrPtr* _t426; // _t426 intOrPtr* _t427; // _t427 signed int* _t430; // _t430 intOrPtr* _t431; // _t431 intOrPtr* _t432; // _t432 intOrPtr _t433; // _t433 long long _t436; // _t436 long long _t498; // _t498 long long _t502; // _t502 _v400 = _t498; _v408 = _t502; _v416 = _t436; _v420 = __ecx; _v16 = *fs:0x28]; _t433 = _v408; RtlCopyMemory(16, &_v72, _t433); _v376 = &_v72 + 16; *_v376 = 0; _v384 = &_v72; _v392 = &_v344; while(_v384 < _v376) { *_v376 = *_v376 & 255 ^ *_v384 & 255; *_v392 = *_v384 & 255; _v392 = &(_v392[0]); _v384 = &(_v384[1]); } _v364 = 0; while(_v364 <= 15) { _v384 = &_v72; while(1) { _t414 = _v384; if(_t414 > _v376) { break; } *_v384 = ( *_v384 & 255) >> 5 | ( *_v384 & 0xff) << 3; _v384 = &(_v384[1]); } _v352 = _v364; _v348 = (_v364 + 1 << 4) - 1; _v368 = 0; while(_v368 <= 15) { _v352 = _v352 + 1; _v348 = _v348 + 1; while(_v352 > 16) { _v352 = _v352 - 17; } *((char*)(__rbp + _t414 - 336)) = _t433 + _t414; _v368 = _v368 + 1; } _v364 = _v364 + 1; } _t418 = _v416; RtlCopyMemory(16, _t418, _v400); _v356 = 1; while(_v356 <= 8) { _t419 = _t418 + &_v344; _v392 = _t419; if(_v356 != 3 || _v420 != 1) { L20: _v368 = 0; do { _t420 = _t419 + _v416; *_t420 = ( *(_v368 + 16 + _v392) & 255) + ( *((( *(_v392 + _v368) & 255 ^ *(_v368 + _v416) & 255) & 255) + &exparray) & 255); _v368 = _v368 + 1; _t421 = _t420 + _v416; *_t421 = *(_v368 + 16 + _v392) & 255 ^ *((( *(_v392 + _v368) & 0xff) + ( *(_v368 + _v416) & 0xff) & 255) + &logarray) & 255; _v368 = _v368 + 1; _t422 = _t421 + _v416; *_t422 = *(_v368 + 16 + _v392) & 255 ^ *((( *(_v392 + _v368) & 0xff) + ( *(_v368 + _v416) & 0xff) & 255) + &logarray) & 255; _v368 = _v368 + 1; _t419 = _t422 + _v416; *_t419 = ( *(_v368 + 16 + _v392) & 255) + ( *((( *(_v392 + _v368) & 255 ^ *(_v368 + _v416) & 255) & 255) + &exparray) & 255); _v368 = _v368 + 1; } while(_v368 != 16); _v368 = 0; while(_v368 <= 15) { *(__rbp + _t419 - 32) = 0; _v368 = _v368 + 1; } _v368 = 0; while(_v368 <= 15) { _v360 = 0; while(_v360 <= 15) { _t361 = *(__rbp + _t419 - 32) & 255; _t419 = _t419 + _v416; *(__rbp + _t419 - 32) = _t361 + ( *_t419 & 255) * ( *(_t419 + &matrix) & 255); _v360 = _v360 + 1; } _v368 = _v368 + 1; } _t418 = _v416; RtlCopyMemory(16, _t418, &_v40); _v356 = _v356 + 1; continue; } else { _v368 = 0; do { _t430 = _t419 + _v416; *_t430 = *(_v368 + _v400) & 255 ^ *(_v368 + _v416) & 255; _v368 = _v368 + 1; _t431 = _t430 + _v416; *_t431 = ( *(_v368 + _v400) & 255) + ( *(_v368 + _v416) & 255); _v368 = _v368 + 1; _t432 = _t431 + _v416; *_t432 = ( *(_v368 + _v400) & 255) + ( *(_v368 + _v416) & 255); _v368 = _v368 + 1; _t419 = _t432 + _v416; *_t419 = *(_v368 + _v400) & 255 ^ *(_v368 + _v416) & 255; _v368 = _v368 + 1; } while(_v368 != 16); goto L20; } } _t424 = &_v344 + 256; _v392 = _t424; _v368 = 0; do { _t425 = _t424 + _v416; *_t425 = *(_v392 + _v368) & 255 ^ *(_v368 + _v416) & 255; _v368 = _v368 + 1; _t426 = _t425 + _v416; *_t426 = ( *(_v392 + _v368) & 255) + ( *(_v368 + _v416) & 255); _v368 = _v368 + 1; _t427 = _t426 + _v416; *_t427 = ( *(_v392 + _v368) & 255) + ( *(_v368 + _v416) & 255); _v368 = _v368 + 1; _t284 = _t427; _t424 = _t427 + _v416; *_t424 = *(_v392 + _v368) & 255 ^ *(_v368 + _v416) & 255; _v368 = _v368 + 1; _t399 = _v368 - 16; } while(_t399 != 0); if(_t399 == 0) { return _t284; } __stack_chk_fail(); return _t284; } LM_SecEng_Keyed_Hash( _unknown_ __rcx // r55 ) {// addr = 0x0047AC63 long long _v16; // _cfa_fffffff0 char _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 char _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 char _v29; // _cfa_ffffffe3 signed int _v30; // _cfa_ffffffe2 char _v31; // _cfa_ffffffe1 signed int _v32; // _cfa_ffffffe0 signed int _v33; // _cfa_ffffffdf char _v34; // _cfa_ffffffde signed int _v35; // _cfa_ffffffdd char _v36; // _cfa_ffffffdc signed int _v37; // _cfa_ffffffdb char _v38; // _cfa_ffffffda signed int _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 long long _v80; // _cfa_ffffffb0 signed char* _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 intOrPtr _v100; // _cfa_ffffff9c intOrPtr _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 intOrPtr _t109; // _t109 signed int* _t118; // _t118 long long _t154; // _t154 long long _t155; // _t155 long long _t159; // _t159 signed char* _t162; // _t162 _v80 = _t159; _v88 = _t162; _v96 = _t155; _v100 = _t109; _v112 = r8; _v16 = *fs:0x28]; LM_SecEng_Safer_Plus_Encrypt(0); _t154 = _v80; _t118 = &_v56; __edi = 16; LM_SecEng_Array_Xor(16, _t118, _t154, &_v56, _t118); _v60 = 0; while(1) { __eflags = _v60 - 15; if(_v60 > 15) { break; } _t118 = _t118 + _v96; *((char*)(__rbp + _t118 - 48)) = _t154 + _t118; _v60 = _v60 + 1; } _v40 = ( *_v88 & 255) - 23; _v39 = (_v88[1]) & 255 ^ 229; _v38 = ((_v88[2]) & 255) - 33; _v37 = (_v88[3]) & 255 ^ 193; _v36 = ((_v88[4]) & 255) - 77; _v35 = (_v88[5]) & 255 ^ 167; _v34 = ((_v88[6]) & 255) - 107; _v33 = (_v88[7]) & 255 ^ 131; _v32 = (_v88[8]) & 255 ^ 233; _v31 = ((_v88[9]) & 255) - 27; _v30 = (_v88[0xa]) & 255 ^ 223; _v29 = ((_v88[0xb]) & 255) - 63; _v28 = (_v88[0xc]) & 255 ^ 179; _v27 = ((_v88[0xd]) & 255) - 89; _v26 = (_v88[0xe]) & 255 ^ 149; _v25 = ((_v88[0xf]) & 255) - 125; LM_SecEng_Safer_Plus_Encrypt(1); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LM_SecEng_Authenticate_E1( _unknown_ __eflags // r9 ) {// addr = 0x0047AE35 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 char* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t32; // _t32 long long _t36; // _t36 long long _t39; // _t39 long long _t44; // _t44 __eflags = __eflags; _v48 = _t39; _v56 = _t44; _v64 = _t36; _v72 = _t32; _v80 = r8; _v16 = *fs:0x28]; LM_SecEng_Get_Byte_Array( &_v24, _v64); r8 = ?_? ( &_v40); LM_SecEng_Keyed_Hash( &_v40); RtlCopyMemory(4, _v72, &_v40); RtlCopyMemory(12, _v80, &_v40 + 4); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LM_SecEng_Generate_Key_E21() {// addr = 0x0047AEDD long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 _unknown_ _v40; // _cfa_ffffffd8 signed int _v41; // _cfa_ffffffd7 char _v56; // _cfa_ffffffc8 intOrPtr _v60; // _cfa_ffffffc4 intOrPtr _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed char* _t45; // _t45 long long _t49; // _t49 long long _t52; // _t52 long long _t56; // _t56 _v80 = _t52; _v88 = _t56; _v96 = _t49; _v16 = *fs:0x28]; LM_SecEng_Get_Byte_Array( &_v24, _v88); RtlCopyMemory(15, &_v56, _v80); _t45 = _v80 + 15; _v41 = *_t45 & 255 ^ 6; _v60 = 0; _v64 = 0; while(1) { __eflags = _v64 - 15; if(_v64 > 15) { break; } *(__rbp + _t45 - 32) = *(__rbp + _t45 - 16) & 255; __eflags = _v60 - 5; if(_v60 != 5) { _v60 = _v60 + 1; } else { _v60 = 0; } _v64 = _v64 + 1; } __ecx = 1; LM_SecEng_Safer_Plus_Encrypt(1); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LM_SecEng_Generate_Key_E22() {// addr = 0x0047AFAB long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 signed int _v25; // _cfa_ffffffe7 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 long long _v104; // _cfa_ffffff98 intOrPtr _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed char _t84; // _t84 _unknown_ _t95; // _t95 long long _t98; // _t98 long long _t102; // _t102 long long _t107; // _t107 long long _t112; // _t112 _v80 = _t107; _v88 = _t112; _v104 = _t102; _v112 = r8; _v92 = _t84; _v16 = *fs:0x28]; _v60 = 0; RtlCopyMemory(_v92 & 255, &_v56, _v88); _t98 = &_v40; RtlCopyMemory(16, _t98, _v80); if((_v92 & 255) + 6 > 15) { _v60 = 16; } else { _v60 = (_v92 & 255) + 6; } if(_v92 > 15) { } else { _t98 = &_v24; LM_SecEng_Get_Byte_Array(_t98, _v104); _v68 = _v92 & 255; while(_v68 < _v60) { *(__rbp + _t98 - 48) = *(__rbp + _t98 - 16) & 255; _v68 = _v68 + 1; } } if(_v60 > 15) { } else { _v64 = 0; _v68 = 0; while(1) { _t95 = _v68 - 15; if(_t95 > 0) { goto L14; } *(__rbp + _t98 - 48) = *(__rbp + _t98 - 48) & 255; if(_v60 - 1 != _v64) { _v64 = _v64 + 1; } else { _v64 = 0; } _v68 = _v68 + 1; } } L14: _v25 = _v60 ^ _v25 & 255; LM_SecEng_Safer_Plus_Encrypt(1); if(_t95 != 0) { __stack_chk_fail(); return; } return; } LM_SecEng_Generate_Key_E3() {// addr = 0x0047B0FD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t9; // _t9 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v16 = _t13; _v24 = _t15; _v32 = _t11; _v40 = _t9; r8 = _v40; LM_SecEng_Keyed_Hash(_v40); return; } LM_SecEng_Generate_Kc_Prime( _unknown_ __eax, // r0 signed long long __rdx // r56 ) {// addr = 0x0047B137 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 char _v84; // _cfa_ffffffac signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed char _t58; // _t58 intOrPtr _t64; // _t64 signed char* _t66; // _t66 signed long long _t69; // _t69 long long _t71; // _t71 signed long long _t73; // _t73 signed long long _t77; // _t77 long long _t79; // _t79 _t77 = __rdx; _v80 = _t79; _v96 = __rdx; _v84 = __esi; _v12 = 0; if(_v84 == 16) { return RtlCopyMemory(16, _v96, _v80); } _v12 = 0; while(_v12 <= 3) { _t66 = _t66 + _v80; *((intOrPtr*)(__rbp + _t77 * 4 - 64)) = casting_uint32(_t66); _v12 = _v12 + 1; } _t69 = &_v72; LM_SecEng_Mod2_Reduce_Kc((_t66 - 1 << 2) + &gArrayG1Poly, _t69, (_t66 - 1 << 2) + &gArrayG1Poly); _t71 = (_t69 << 2) + &gArrayG2Poly; _v24 = _t71; _t58 = *(_t71 + &g2PolyByteLen) & 255; LM_SecEng_Mod2_Multiply_Kc(_t58 & 255, ?_? ( &_v72), &_v56, &_v72, _v24); _t73 = _v96; _v32 = _t73; _v12 = 0; while(_v12 <= 3) { _t58 = 3 - _v12; _t64 = *((intOrPtr*)(__rbp + _t73 * 4 - 48)); _t73 = _v32; *_t73 = _t64; _v32 = _v32 + 4; _v12 = _v12 + 1; } return _t58; } LLINK_ReadPicoClock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0047B250 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t49; // _t49 _v32 = __rdi; _v40 = __rsi; _v24 = 0; _t49 = *(_v40 + 1) & 255; if(_t49 != 24) { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 96)) + 32)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } else { if( *((intOrPtr*)( *((intOrPtr*)( *((intOrPtr*)(_v40 + 112)) + 16)) + 16)) != 0) { _v12 = 0; if((_t49 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } } } return _v24 & 268435455; } EncState_Idle_Event_Handler() {// addr = 0x0047B391 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t63; // _t63 _unknown_ _t82; // _t82 long long _t94; // _t94 _unknown_ _t96; // _t96 long long _t99; // _t99 intOrPtr _t101; // _t101 long long _t103; // _t103 intOrPtr _t104; // _t104 _v32 = _t99; _v40 = _t103; _v56 = _t94; _v44 = _t63; _v11 = 0; _v10 = 0; _v9 = 1; if((_v44 & 255) <= 33) { goto __rax; } *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t94, _t96, _t99, _t103); _v11 = 31; if((_v11 & 255) == 0 && _v9 == 1) { LMsec_Fsm_Set_Next_State(); _t104 = _v40; _t101 = _v32; LMch_Disable_L2CAP_Traffic(); if(_v10 == 1) { if(( *(_v40 + 148) & 255) != 0) { r9d = *(_v40 + 134) & 0xffff; r8d = _v44 & 255; DebugPrint(0, _v40, _t94, _t96, _t101, _t104); } else { *(_v40 + 148) = DM_Set_Timer(); } } } return; } EncState_Main_Task_Event_Handler() {// addr = 0x0047B7B4 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 signed char _v13; // _cfa_fffffff3 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t32; // _t32 signed char _t46; // _t46 long long _t61; // _t61 _v32 = _t61; _v40 = __rsi; _v56 = __rcx; _v44 = _t46; _v11 = 0; _v10 = 0; _v13 = 0; _v9 = 0; _v12 = 0; _t32 = _v44 & 255; if(_t32 == 9) { _v12 = 1; L6: if(_v12 == 1) { _v9 = *(_v40 + 140) & 255; if((_v9 & 255) > 23) { r9d = *(_v40 + 134) & 0xffff; r8d = _v9 & 255; DebugPrint(0, _v40, __rcx, __rdx, _t61, __rsi); return; } goto __rax; } return; } if(_t32 == 33) { _v13 = 8; LMsec_Fsm_Set_Next_State(); __rdx = &_v13; __rsi = _v40; __rcx = __rdx; _t61 = _v32; LMsec_Fsm_Event_Callback(); goto L6; } _v12 = 0; goto L6; } EncState_W4_Enc_Refresh_Pend_Event_Handler() {// addr = 0x0047BD9C signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t37; // _t37 signed char _t57; // _t57 signed char* _t85; // _t85 _unknown_ _t89; // _t89 long long _t92; // _t92 long long _t98; // _t98 _v32 = _t92; _v40 = _t98; _v56 = _t85; _v44 = _t57; _v10 = 0; _t37 = _v44 & 255; if(_t37 == 23) { _v10 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L11: return; } if(_t37 == 33) { _v10 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L11; } if(_t37 != 12) { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t85, _t89, _t92, _t98); goto L11; } if(( *(_v40 + 134) & 0x800) != 0 && ( *(_v40 + 134) & 8) != 0 && _v56 != 0) { _v9 = *_v56 & 255; LMsec_peer_Remote_Init_Encryption(); } goto L11; } EncState_W4_LMP_Mode_Rsp_Pend_Event_Handler() {// addr = 0x0047BF04 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t31; // _t31 _unknown_ _t36; // _t36 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t31; _v11 = 0; if((_v44 & 255) - 10 <= 23) { goto __rax; } *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), __rcx, __rdx, __rdi, __rsi); return _v11 & 0xff; } EncState_W4_Lmp_Key_Size_Req_Event_Handler( signed char __edx // r3 ) {// addr = 0x0047C330 signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t35; // _t35 signed char* _t79; // _t79 _unknown_ _t83; // _t83 long long _t86; // _t86 long long _t92; // _t92 _v32 = _t86; _v40 = _t92; _v56 = _t79; _v44 = __edx; _v10 = 0; _t35 = _v44 & 255; if(_t35 == 23) { _v10 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L11: return; } if(_t35 == 33) { _v10 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L11; } if(_t35 != 13) { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t79, _t83, _t86, _t92); goto L11; } if(( *(_v40 + 134) & 1) == 0) { return; } if(_v56 != 0) { _v9 = *_v56 & 255; LMsec_Fsm_Proc_Handle_Peer_Key_Size_Req(); } goto L11; } EncState_W4_Lmp_Key_Size_Rsp_Pend_Event_Handler() {// addr = 0x0047C483 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t29; // _t29 _unknown_ _t34; // _t34 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t29; _v10 = 0; if((_v44 & 255) - 13 <= 20) { goto __rax; } *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), __rcx, __rdx, __rdi, __rsi); return 0; } EncState_W4_Lmp_Start_Req_Event_Handler() {// addr = 0x0047C601 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 char _v42; // _cfa_ffffffd6 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed int _t55; // _t55 signed char _t75; // _t75 _unknown_ _t94; // _t94 long long _t116; // _t116 _unknown_ _t120; // _t120 long long _t127; // _t127 long long _t137; // _t137 _v64 = _t127; _v72 = _t137; _v88 = _t116; _v76 = _t75; _v16 = *fs:0x28]; _v42 = 0; _t55 = _v76 & 255; if(_t55 == 23) { _v42 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L14: if(_t94 == 0) { return; } __stack_chk_fail(); return; } if(_t55 == 33) { _v42 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L14; } if(_t55 != 16) { *__rsp = *(_v72 + 134) & 0xffff; r9d = _v76 & 255; r8d = *(_v72 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v72 + 432)), _t116, _t120, _t127, _t137); goto L14; } if(( *(_v72 + 2) & 255) != 1 || _v88 == 0) { L13: goto L14; } else { LMutils_Array_Copy(16, ?_? ( &_v40), _v88, &_v40); _Generate_Encryption_Key(); if(LMlink_Get_Current_Key_Persistance(_v72) != 1) { L8: _v41 = 13; L9: LMsec_Fsm_Set_Next_State(); r9d = LMsec_Lccmd_Callback_Set_Encrption; r8 = _v72 + 392; LCCMD_SetEncryption(); goto L13; } _t94 = ( *(_v72 + 117) & 255) - 2; if(_t94 != 0) { goto L8; } _v41 = 15; goto L9; } } EncState_W4_Lmp_Start_Rsp_Event_Handler() {// addr = 0x0047C7F8 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t40; // _t40 signed char _t64; // _t64 long long _t99; // _t99 _unknown_ _t103; // _t103 long long _t106; // _t106 long long _t113; // _t113 _v32 = _t106; _v40 = _t113; _v56 = _t99; _v44 = _t64; _v9 = 0; _t40 = _v44 & 255; if(_t40 == 23) { _v9 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t40 > 23) { if(_t40 == 27) { r9d = *(_v40 + 134) & 0xffff; r8d = _v44 & 255; DebugPrint(0, _v40, _t99, _t103, _t106, _t113); } else { if(_t40 == 33) { _v9 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { goto L11; } } } else { if(_t40 == 17) { LMsec_Fsm_Set_Next_State(); r9d = LMsec_Lccmd_Callback_Set_Encrption; r8 = _v40 + 392; LCCMD_SetEncryption(); } else { L11: *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t99, _t103, _t106, _t113); } } } return; } EncState_W4_Lmp_Stop_Req_Event_Handler() {// addr = 0x0047C9A6 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t35; // _t35 signed char _t52; // _t52 long long _t80; // _t80 _unknown_ _t84; // _t84 long long _t87; // _t87 long long _t94; // _t94 _v32 = _t87; _v40 = _t94; _v56 = _t80; _v44 = _t52; _v9 = 0; _t35 = _v44 & 255; if(_t35 == 23) { _v9 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t35 == 33) { _v9 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t35 != 18) { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t80, _t84, _t87, _t94); } else { LMsec_Fsm_Set_Next_State(); r9d = LMsec_Lccmd_Callback_Set_Encrption; r8 = _v40 + 392; LCCMD_SetEncryption(); } } } return; } EncState_W4_Lmp_Stop_Rsp_Event_Handler() {// addr = 0x0047CAFA signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t51; // _t51 signed char _t81; // _t81 long long _t128; // _t128 _unknown_ _t133; // _t133 long long _t136; // _t136 long long _t144; // _t144 _v32 = _t136; _v40 = _t144; _v56 = _t128; _v44 = _t81; _v9 = 0; _t51 = _v44 & 255; if(_t51 == 23) { _v9 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L15: return; } if(_t51 > 23) { if(_t51 == 29) { r9d = *(_v40 + 134) & 0xffff; r8d = _v44 & 255; DebugPrint(0, _v40, _t128, _t133, _t136, _t144); goto L15; } if(_t51 == 33) { _v9 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L15; } L14: *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t128, _t133, _t136, _t144); goto L15; } if(_t51 == 19) { if( *((intOrPtr*)(_v32 + 69504)) != 0) { _t123 = _v40; if(( *(_v40 + 117) & 255) == 2) { DebugPrint(0, _t123, _t128, _t133, _t136, _t144); r9d = 0; r8 = _v40 + 392; LCCMD_SetEncryption(); } } LMsec_Fsm_Set_Next_State(); r9d = LMsec_Lccmd_Callback_Set_Encrption; r8 = _v40 + 392; LCCMD_SetEncryption(); goto L15; } goto L14; } EncState_W4_Lmp_Pause_Rsp_Pend_Event_Handler() {// addr = 0x0047CD1E signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t31; // _t31 _unknown_ _t36; // _t36 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t31; _v9 = 0; if((_v44 & 255) - 10 <= 23) { goto __rax; } *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), __rcx, __rdx, __rdi, __rsi); return _v9 & 0xff; } EncState_W4_Lmp_Resume_Req_Event_Handler() {// addr = 0x0047CFB7 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t38; // _t38 signed char _t55; // _t55 long long _t87; // _t87 _unknown_ _t90; // _t90 long long _t96; // _t96 long long _t107; // _t107 _v32 = _t96; _v40 = _t107; _v56 = _t87; _v44 = _t55; _v9 = 0; _t38 = _v44 & 255; if(_t38 == 23) { _v9 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t38 == 33) { _v9 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t38 != 22) { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t87, _t90, _t96, _t107); } else { if(( *(_v40 + 2) & 255) != 0) { LMSec_Set_Enc_Source(74, 0, _v40); LMsec_core_Pause_Init(); LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Proc_Send_LMP_Pause_Encryption_Req(); } else { LMsec_Fsm_Set_Next_State(); LMsec_Proc_Master_Start_Encryption(); } } } } return; } EncState_W4_Bback_Mode_Rsp_Event_Handler() {// addr = 0x0047D143 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t66; // _t66 signed char _t101; // _t101 long long _t153; // _t153 _unknown_ _t159; // _t159 long long _t164; // _t164 long long _t178; // _t178 _v32 = _t164; _v40 = _t178; _v56 = _t153; _v44 = _t101; _v9 = 0; _t66 = _v44 & 255; if(_t66 == 23) { _v9 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L24: return; } if(_t66 > 23) { if(_t66 == 26) { L7: if(( *(_v40 + 134) & 2) == 0) { if(( *(_v40 + 134) & 1) != 0) { if(( *(_v40 + 2) & 255) != 0) { LMsec_Fsm_Set_Next_State(); if(_v44 == 13) { LMsec_Fsm_Event_Callback(); } } else { if(LMlink_Get_Current_Key_Persistance(_v40) != 0) { *(_v40 + 119) = LMsec_core_Get_Broadcast_Key_Length(_v32 + 60216); } else { *(_v40 + 119) = *(_v32 + 66224) & 255; } r8 = _v40 + 119; LMsec_peer_Send_LMP_Message(); LMsec_Fsm_Set_Next_State(); } } } else { if(( *(_v40 + 2) & 255) != 0) { LMsec_Fsm_Set_Next_State(); } else { if(( *(_v40 + 134) & 2) != 0) { LMsec_Fsm_Set_Next_State(); r9d = LMsec_Lccmd_Callback_Set_Encrption; r8 = _v40 + 392; LCCMD_SetEncryption(); } } } goto L24; } if(_t66 == 33) { _v9 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { L22: *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t153, _t159, _t164, _t178); } goto L24; } if(_t66 == 13) { goto L7; } else { goto L22; } } EncState_W4_Bback_Start_Rsp_Event_Handler() {// addr = 0x0047D3E6 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t32; // _t32 signed char _t46; // _t46 long long _t70; // _t70 _unknown_ _t74; // _t74 long long _t78; // _t78 long long _t85; // _t85 _v32 = _t78; _v40 = _t85; _v56 = _t70; _v44 = _t46; _v9 = 0; _t32 = _v44 & 255; if(_t32 == 28) { _v10 = 0; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t32 == 33) { _v9 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t32 == 23) { _v9 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t70, _t74, _t78, _t85); } } } return; } EncState_W4_Bback_L2cap_Flow_Stop_Event_Handler() {// addr = 0x0047D51A signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t61; // _t61 signed char _t82; // _t82 signed char* _t124; // _t124 _unknown_ _t129; // _t129 long long _t133; // _t133 long long _t142; // _t142 _v32 = _t133; _v40 = _t142; _v56 = _t124; _v44 = _t82; _v11 = 0; _t61 = _v44 & 255; if(_t61 == 23) { _v11 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L18: return; } if(_t61 > 23) { if(_t61 == 24) { if(( *(_v40 + 127) & 255) != 1) { LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(( *(_v40 + 141) & 255) == 1) { _v10 = *(_v40 + 142) & 255; LMSec_Set_Enc_Source(40, _v10 != 0 & 255, _v40); *((char*)(_v40 + 15)) = ( *(_v40 + 2) & 255) == 0; LMsec_peer_Remote_Init_Encryption(); *(_v40 + 141) = 0; *(_v40 + 127) = 0; } } goto L18; } if(_t61 == 33) { _v11 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L18; } L15: *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t124, _t129, _t133, _t142); goto L18; } if(_t61 == 12) { if(_v56 != 0) { _v9 = *_v56 & 255; *(_v40 + 127) = 1; *(_v40 + 141) = 1; *(_v40 + 142) = _v9 & 255; } goto L18; } goto L15; } EncState_W4_Bback_Stop_Rsp_Event_Handler() {// addr = 0x0047D736 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t46; // _t46 signed char _t69; // _t69 long long _t105; // _t105 _unknown_ _t109; // _t109 long long _t114; // _t114 long long _t124; // _t124 _v32 = _t114; _v40 = _t124; _v56 = _t105; _v44 = _t69; _v10 = 0; _v9 = 0; _t46 = _v44 & 255; if(_t46 == 30) { if(( *(_v40 + 134) & 0x1000) == 0) { LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { LMSec_Set_Enc_Source(4165, 1, _v40); LMsec_Fsm_Set_Next_State(); LMP_Send_Resume_Encryption_Req(); } } else { if(_t46 == 33) { _v9 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t46 == 23) { _v9 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t105, _t109, _t114, _t124); } } } return; } EncState_W4_Lccmd_Rsp_Disable_L2cap_Traffic_Event_Handler() {// addr = 0x0047D8F3 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t81; // _t81 signed char _t110; // _t110 signed char* _t165; // _t165 _unknown_ _t172; // _t172 long long _t178; // _t178 long long _t191; // _t191 _v32 = _t178; _v40 = _t191; _v56 = _t165; _v44 = _t110; _v12 = 0; _t81 = _v44 & 255; if(_t81 == 23) { _v12 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L22: return; } if(_t81 > 23) { if(_t81 == 33) { _v12 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L22; } if(_t81 != 34) { L19: *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t165, _t172, _t178, _t191); } else { if(( *(_v40 + 127) & 255) != 1) { if(_v56 != 0) { _v10 = *_v56 & 255; if(_v10 != 0) { _v12 = 31; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(( *(_v32 + 191082) & 255) != 1) { LMsec_Fsm_Set_Next_State(); r8d = 32; LMP_Send_L2Cap_Flow(); } else { LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } } } } else { if(( *(_v40 + 141) & 255) == 1) { _v11 = *(_v40 + 142) & 255; LMSec_Set_Enc_Source(40, _v11 != 0 & 255, _v40); *((char*)(_v40 + 15)) = ( *(_v40 + 2) & 255) == 0; LMsec_peer_Remote_Init_Encryption(); *(_v40 + 141) = 0; *(_v40 + 127) = 0; } } } goto L22; } if(_t81 == 12) { if(_v56 != 0) { _v9 = *_v56 & 255; *(_v40 + 127) = 1; *(_v40 + 141) = 1; *(_v40 + 142) = _v9 & 255; } goto L22; } else { goto L19; } } EncState_W4_Lccmd_Rsp_Master_Rx_Enc_Enable_Event_Handler() {// addr = 0x0047DBC6 signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t51; // _t51 signed char _t77; // _t77 signed char* _t119; // _t119 long long _t126; // _t126 long long _t134; // _t134 _v32 = _t126; _v40 = _t134; _v56 = _t119; _v44 = _t77; _v10 = 0; _t51 = _v44 & 255; if(_t51 == 27) { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t119, _t123, _t126, _t134); L15: return; } if(_t51 > 27) { if(_t51 == 33) { _v10 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L15; } if(_t51 != 34) { L13: *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t119, _t123, _t126, _t134); goto L15; } if(_v56 != 0) { _v9 = *_v56 & 255; if(_v9 != 0) { _v10 = 31; LMsec_Fsm_Set_Next_State(); _t123 = ?_? ( &_v10); _t134 = _v40; _t119 = &_v10; _t126 = _v32; LMsec_Fsm_Event_Callback(); } else { r8 = _v40 + 232; LMsec_peer_Send_LMP_Message(); LMsec_Fsm_Set_Next_State(); } } goto L15; } if(_t51 == 23) { _v10 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L15; } goto L13; } EncState_W4_Lccmd_Rsp_Master_Tx_Enc_Enable_Event_Handler() {// addr = 0x0047DDD2 signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t39; // _t39 signed char _t55; // _t55 signed char* _t83; // _t83 _unknown_ _t87; // _t87 long long _t92; // _t92 long long _t101; // _t101 _v32 = _t92; _v40 = _t101; _v56 = _t83; _v44 = _t55; _v10 = 0; _t39 = _v44 & 255; if(_t39 == 33) { _v10 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t39 == 34) { if(_v56 != 0) { _v9 = *_v56 & 255; if(_v9 != 0) { _v10 = 31; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Proc_Master_Stop_Enc(); } } } else { if(_t39 == 23) { _v10 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t83, _t87, _t92, _t101); } } } return; } EncState_W4_Lccmd_Rsp_Master_Complete_Start_Enc_Event_Handler() {// addr = 0x0047DF50 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t71; // _t71 signed char _t102; // _t102 char* _t158; // _t158 long long _t170; // _t170 long long _t183; // _t183 _v32 = _t170; _v40 = _t183; _v56 = _t158; _v44 = _t102; _v10 = 0; _t71 = _v44 & 255; if(_t71 == 23) { _v10 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L21: return; } if(_t71 > 23) { if(_t71 == 33) { _v10 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L21; } if(_t71 != 34) { L19: *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t158, _t163, _t170, _t183); goto L21; } if(_v56 != 0) { _v9 = *_v56 & 255; if(_v9 != 0) { _v10 = 31; LMsec_Fsm_Set_Next_State(); _t163 = &_v10; _t183 = _v40; _t158 = &_v10; _t170 = _v32; LMsec_Fsm_Event_Callback(); } else { if(( *(_v40 + 117) & 255) == 2 && *((intOrPtr*)(_v32 + 69504)) != 0) { r9d = 0; r8 = _v40 + 392; LCCMD_SetEncryption(); } _v10 = 0; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } } goto L21; } if(_t71 == 20) { r9d = *(_v40 + 134) & 0xffff; r8d = _v44 & 255; DebugPrint(0, _v40, _t158, _t163, _t170, _t183); if(( *(_v40 + 117) & 255) == 2 && *((intOrPtr*)(_v32 + 69504)) != 0) { r9d = 0; r8 = _v40 + 392; LCCMD_SetEncryption(); } _v10 = 0; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); LMsec_Fsm_Event_Callback(); goto L21; } else { goto L19; } } EncState_W4_Lccmd_Rsp_Master_Complete_Stop_Enc_Event_Handler() {// addr = 0x0047E228 signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t58; // _t58 signed char _t87; // _t87 signed char* _t136; // _t136 long long _t147; // _t147 long long _t161; // _t161 _v32 = _t147; _v40 = _t161; _v56 = _t136; _v44 = _t87; _v10 = 0; _t58 = _v44 & 255; if(_t58 == 23) { _v10 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); L18: return; } if(_t58 > 23) { if(_t58 == 33) { _v10 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); goto L18; } if(_t58 != 34) { L16: *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t136, _t141, _t147, _t161); goto L18; } if(_v56 != 0) { _v9 = *_v56 & 255; if(_v9 != 0) { _v10 = 31; LMsec_Fsm_Set_Next_State(); _t141 = ?_? ( &_v10); _t161 = _v40; _t136 = &_v10; _t147 = _v32; LMsec_Fsm_Event_Callback(); } else { if(( *(_v40 + 134) & 0x1000) == 0) { LMsec_Fsm_Set_Next_State(); } else { LMSec_Set_Enc_Source(4165, 1, _v40); LMsec_Fsm_Set_Next_State(); LMsec_Proc_Master_Start_Encryption(); } LMsec_Fsm_Event_Callback(); } } goto L18; } if(_t58 == 22) { r9d = *(_v40 + 134) & 0xffff; r8d = _v44 & 255; DebugPrint(0, _v40, _t136, _t141, _t147, _t161); LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); LMsec_Fsm_Event_Callback(); goto L18; } goto L16; } EncState_W4_Lccmd_Rsp_Slave_Accept_Enc_Start_Req_Event_Handler() {// addr = 0x0047E4A8 signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t41; // _t41 signed char _t59; // _t59 signed char* _t90; // _t90 _unknown_ _t94; // _t94 long long _t98; // _t98 long long _t107; // _t107 _v32 = _t98; _v40 = _t107; _v56 = _t90; _v44 = _t59; _v10 = 0; _t41 = _v44 & 255; if(_t41 == 33) { _v10 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t41 == 34) { if(_v56 != 0) { _v9 = *_v56 & 255; if(_v9 != 0) { _v10 = 31; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { LMsec_Fsm_Set_Next_State(); LMsec_peer_Send_LMP_Accepted(_v32); } } } else { if(_t41 == 23) { _v10 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t90, _t94, _t98, _t107); } } } return; } EncState_W4_Lccmd_Rsp_Slave_Accept_Enc_Stop_Req_Event_Handler() {// addr = 0x0047E639 signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t41; // _t41 signed char _t59; // _t59 signed char* _t90; // _t90 _unknown_ _t94; // _t94 long long _t98; // _t98 long long _t107; // _t107 _v32 = _t98; _v40 = _t107; _v56 = _t90; _v44 = _t59; _v10 = 0; _t41 = _v44 & 255; if(_t41 == 33) { _v10 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t41 == 34) { if(_v56 != 0) { _v9 = *_v56 & 255; if(_v9 != 0) { _v10 = 31; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { LMsec_Fsm_Set_Next_State(); LMsec_peer_Send_LMP_Accepted(_v32); } } } else { if(_t41 == 23) { _v10 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t90, _t94, _t98, _t107); } } } return; } EncState_W4_Resume_Pend_Event_Handler() {// addr = 0x0047E7CA long long _v16; // _cfa_fffffff0 char _v42; // _cfa_ffffffd6 char _v43; // _cfa_ffffffd5 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed char _t55; // _t55 signed int _t69; // _t69 long long _t80; // _t80 _unknown_ _t82; // _t82 long long _t87; // _t87 _v64 = _t87; _v72 = __rsi; _v88 = _t80; _v76 = _t55; _v16 = *fs:0x28]; _v43 = 0; _v42 = 0; if((_v76 & 255) <= 33) { goto __rax; } *__rsp = *(_v72 + 134) & 0xffff; r9d = _v76 & 255; r8d = *(_v72 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v72 + 432)), _t80, _t82, _t87, __rsi); if(_v42 == 1) { _t69 = *(_v72 + 148) & 255; if(_t69 != 0) { r9d = *(_v72 + 134) & 0xffff; r8d = _v76 & 255; DebugPrint(0, _v72, _t80, _t82, _t87, __rsi); } else { *(_v72 + 148) = DM_Set_Timer(); } } if(_t69 != 0) { __stack_chk_fail(); return; } return; } EncState_W4_Host_Set_Enc_Cmd_Event_Handler() {// addr = 0x0047EC96 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t34; // _t34 signed char _t58; // _t58 long long _t89; // _t89 _unknown_ _t92; // _t92 long long _t95; // _t95 long long _t102; // _t102 _v32 = _t95; _v40 = _t102; _v56 = _t89; _v44 = _t58; _v9 = 0; _t34 = _v44 & 255; if(_t34 == 23) { _v9 = 34; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t34 == 33) { _v9 = 8; LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); } else { if(_t34 != 0) { *__rsp = *(_v40 + 134) & 0xffff; r9d = _v44 & 255; r8d = *(_v40 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v40 + 432)), _t89, _t92, _t95, _t102); } else { if(( *(_v40 + 134) & 0x400) != 0) { DebugPrint(0, _v40, _t89, _t92, _t95, _t102); LMsec_Fsm_Set_Next_State(); LMch_Disable_L2CAP_Traffic(); } } } } return; } EncState_Enc_Finish_Trax_Event_Handler() {// addr = 0x0047EE0D signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t36; // _t36 signed long long _t46; // _t46 _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = _t36; _v9 = 0; if((_v44 & 255) > 36) { L4: *__rsp = (_v40[0x86]) & 0xffff; r9d = _v44 & 255; r8d = (_v40[0x84]) & 0xffff; DebugPrint(0, _v40[0x1b0], __rcx, __rdx, __rdi, __rsi); } else { __rdx = __rdx << _t46; if((111677538304 & __rdx) == 0) { goto L4; } else { if(_v56 != 0) { _v9 = *_v56 & 255; __rcx = _v40; __rsi = _v40; __rdi = _v32; LMsec_Fsm_Finalize_Enc_Trax(); } } } return; } EncState_NOP_Event_Handler( char __edx, // r3 long long __rcx, // r55 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0047EEDA signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rcx = __rcx; __edx = __edx; _v32 = __rdi; _v40 = __rsi; _v56 = __rcx; _v44 = __edx; _v9 = 0; return _v9 & 255; } LMsec_Fsm_Finalize_Enc_Trax() {// addr = 0x0047EEF9 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed char _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 char _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 char _t449; // _t449 long long _t652; // _t652 _v32 = _t652; _v40 = __rsi; _v44 = _t449; _v16 = *(_v40 + 134) & 65535; _v14 = _v44; _v13 = 0; _v12 = 1; _v11 = 1; _v10 = 0; _v9 = 0; DebugPrint(0, _v40, _t643, _t645, _t652, __rsi); _t550 = _v40; if(( *(_v40 + 148) & 255) != 0) { _t652 = _v32; DM_Clear_Timer(); _t550 = _v40; *(_v40 + 148) = 0; } if(_v44 != 0) { if(_v44 != 34) { if(_v44 != 8) { DebugPrint(0, _t550, _t643, _t645, _t652, __rsi); } else { DebugPrint(0, _t550, _t643, _t645, _t652, __rsi); _v9 = 0; } } else { DebugPrint(0, _t550, _t643, _t645, _t652, __rsi); _v9 = 1; } } else { if((_v16 & 1) == 0) { *(_v40 + 116) = 0; } else { *(_v40 + 116) = 1; } } if((_v16 & 0x80) == 0) { if(( *(_v40 + 134) & 0x400) == 0) { if((_v16 & 0x200) == 0) { if((_v16 & 0x100) == 0) { if(( *(_v40 + 134) & 0x800) == 0) { if((_v16 & 0x1000) == 0) { if((_v16 & 0x40) == 0) { if((_v16 & 0x10) == 0) { if((_v16 & 0x20) != 0) { _v13 = 1; _v12 = 1; _v11 = 1; } } else { _v13 = 1; _v12 = 1; _v11 = 1; } } else { if((_v16 & 2) == 0) { _t652 = _v32 + 190168; _t643 = _v40 + 626; _t645 = &_v14; EG_Event_Composer(0); _v13 = 0; _v12 = 1; _v11 = 1; } else { _t652 = _v40; LMsec_Fsm_Set_Next_State(); _v13 = 0; _v12 = 0; _v11 = 0; } } } else { _t652 = _v32 + 190168; _t643 = _v40 + 626; _t645 = &_v14; EG_Event_Composer(0); _v13 = 0; _v12 = 1; _v11 = 1; } } else { if(( *(_v40 + 134) & 2) == 0) { _v13 = 0; _v12 = 1; _v11 = 1; _v10 = 1; } else { DebugPrint(0, _v40, _t643, _t645, _t652, __rsi); if(( *(_v40 + 134) & 4) == 0) { LMSec_Set_Enc_Source(2057, 1, _v40); _t652 = _v40; LMsec_Fsm_Set_Next_State(); } else { LMSec_Set_Enc_Source(2053, 1, _v40); LMsec_Fsm_Set_Next_State(); _t643 = _v40; __rsi = _v40; _t652 = _v32; LMsec_Fsm_Proc_Set_Connection_Encryption(); } DebugPrint(0, _v40, _t643, _t645, _t652, __rsi); _v13 = 0; _v12 = 0; _v11 = 0; } } } else { if(( *(_v40 + 134) & 2) == 0) { if(( *(_v40 + 134) & 4) == 0) { if(_v44 != 0) { _t652 = _v40; LMsec_Fsm_Set_Next_State(); } else { _t652 = _v40; LMsec_Fsm_Set_Next_State(); } } else { if(_v44 != 0) { *(_v40 + 134) = *(_v40 + 134) & 0xfe; LMsec_Fsm_Set_Next_State(); _t645 = ?_? ( &_v14); __rsi = _v40; _t643 = &_v14; _t652 = _v32; LMpolicy_Mss_Enc_Event_Callback(7); _v9 = 0; } else { *(_v40 + 134) = *(_v40 + 134) & 0xfe; LMsec_Fsm_Set_Next_State(); _t645 = ?_? ( &_v14); __rsi = _v40; _t643 = &_v14; _t652 = _v32; LMpolicy_Mss_Enc_Event_Callback(8); } } _v13 = 1; _v12 = 1; _v11 = 1; } else { if((_v16 & 4) == 0) { if(_v44 != 0) { _t652 = _v40; LMsec_Fsm_Set_Next_State(); _v13 = 1; _v12 = 1; _v11 = 1; } else { _t652 = _v40; LMsec_Fsm_Set_Next_State(); _v13 = 1; _v12 = 1; _v11 = 1; } } else { if(_v44 != 0) { *(_v40 + 134) = *(_v40 + 134) & 0xfd; LMsec_Fsm_Set_Next_State(); _t645 = ?_? ( &_v44); __rsi = _v40; _t643 = &_v44; _t652 = _v32; LMpolicy_Mss_Enc_Event_Callback(7); _v13 = 1; _v12 = 1; _v11 = 1; _v9 = 0; } else { *(_v40 + 134) = *(_v40 + 134) & 0xfd; LMsec_Fsm_Set_Next_State(); _t645 = ?_? ( &_v44); __rsi = _v40; _t643 = &_v44; _t652 = _v32; LMpolicy_Mss_Enc_Event_Callback(6); _v13 = 1; _v12 = 0; _v11 = 0; } } } } } else { if(( *(_v40 + 134) & 2) == 0) { if(( *(_v40 + 134) & 4) == 0) { if(_v44 != 0) { _t652 = _v40; LMsec_Fsm_Set_Next_State(); } else { LMsec_Fsm_Set_Next_State(); _t652 = _v32 + 190168; _t643 = _v40 + 626; _t645 = &_v14; EG_Event_Composer(0); } } else { if(_v44 != 0) { LMsec_Fsm_Set_Next_State(); _t645 = ?_? ( &_v44); __rsi = _v40; _t643 = &_v44; _t652 = _v32; LMpolicy_Mss_Enc_Event_Callback(7); _v9 = 0; } else { LMsec_Fsm_Set_Next_State(); EG_Event_Composer(0); _t645 = ?_? ( &_v14); __rsi = _v40; _t643 = &_v14; _t652 = _v32; LMpolicy_Mss_Enc_Event_Callback(8); } } _v13 = 0; _v12 = 1; _v11 = 1; } else { if(( *(_v40 + 134) & 4) == 0) { _t652 = _v40; LMsec_Fsm_Set_Next_State(); } else { if(_v44 != 0) { LMsec_Fsm_Set_Next_State(); _t645 = ?_? ( &_v44); __rsi = _v40; _t643 = &_v44; _t652 = _v32; LMpolicy_Mss_Enc_Event_Callback(7); _v13 = 0; _v12 = 1; _v11 = 1; _v9 = 0; } else { LMsec_Fsm_Set_Next_State(); _t645 = ?_? ( &_v44); __rsi = _v40; _t643 = &_v44; _t652 = _v32; LMpolicy_Mss_Enc_Event_Callback(6); _v13 = 0; _v12 = 0; _v11 = 0; } } } } } else { if(( *(_v40 + 134) & 2) == 0) { if(( *(_v40 + 134) & 4) != 0) { _t652 = _v40; LMsec_Fsm_Set_Next_State(); if((_v16 & 0x40) == 0) { _v13 = 1; _v12 = 1; _v11 = 1; _v10 = 1; } else { _t652 = _v32 + 190168; _t643 = _v40 + 626; _t645 = &_v14; EG_Event_Composer(0); _v13 = 0; _v12 = 1; _v11 = 1; _v10 = 1; } } } else { if(( *(_v40 + 134) & 4) != 0) { if((_v16 & 0x40) == 0) { _t652 = _v40; LMsec_Fsm_Set_Next_State(); _v13 = 1; _v12 = 1; _v11 = 0; } else { if(_v44 != 0) { _v13 = 0; _v12 = 1; _v11 = 1; _v10 = 1; } else { LMsec_Fsm_Set_Next_State(); __rsi = _v40; _t652 = _v32; LMsec_Fsm_Event_Callback(); _v13 = 0; _v12 = 0; _v11 = 0; _v10 = 0; } } } } } } else { _t643 = _v40; __rsi = _v40; _t652 = _v32; LMconnection_LM_Encrypt_Complete(); _v13 = 0; _v12 = 1; _v11 = 1; } if(_v13 == 1) { _t643 = _v40; __rsi = _v40; _t652 = _v32; LMsec_Generate_Enc_Complete_Event(); } if(_v12 == 1) { __rsi = _v40; _t652 = _v32; LMch_Enable_L2CAP_Traffic(); if(( *(_v32 + 191082) & 255) == 0) { _t645 = *((intOrPtr*)( *((intOrPtr*)(_v40 + 432)) + 48)); _t643 = _v32; _t652 = _v32 + 60216; r8d = 0; LMP_Send_L2Cap_Flow(); } } if(_v10 != 0) { _t645 = ?_? ( &_v44); __rsi = _v40; _t643 = &_v44; _t652 = _v32; LMsec_Authentication_EventCB(); } if(_v9 != 0) { DebugPrint(0, _v40, _t643, _t645, _t652, __rsi); _t645 = _v40; __rsi = _v40; _t652 = _v32; LMconnection_Disconnect_Related_Links(); } if(_v11 != 0) { *(_v40 + 134) = 0; *(_v40 + 143) = 0; *(_v40 + 142) = 0; *(_v40 + 140) = 0; *(_v40 + 141) = 0; _t652 = _v40; LMsec_Fsm_Set_Next_State(); } _t553 = _v40; r8d = *(_v40 + 134) & 0xffff; DebugPrint(0, _v40, _t643, _t645, _t652, __rsi); *__rsp = _v10 & 255; r9d = _v11 & 255; r8d = _v12 & 255; DebugPrint(0, _v40, _t643, _t645, _t652, __rsi); DebugPrint(0, _t553, _t643, _t645, _t652, __rsi); return; } LMSec_Set_Enc_Source( signed int __edx, // r3 char __esi, // r5 long long __rdi // r57 ) {// addr = 0x0047F9B6 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v40 = __edx; _v36 = __esi; _v10 = 0; if(_v32 != 0) { if(_v36 != 0) { if(_v36 == 1) { _v10 = 1; } } else { _v10 = 2; } if(( *(_v32 + 4) & 1) == 0) { _v10 = _v10 | 128; } _v10 = _v10 | _v40; *(_v32 + 134) = _v10 & 65535; return; } return; } LMSec_Update_Enc_Trax_to_On( long long __rdi // r57 ) {// addr = 0x0047FA20 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(_v16 == 0) { return 0; } *(_v16 + 134) = *(_v16 + 134) & 0xfd; *(_v16 + 134) = *(_v16 + 134) & 65535 | 1; return *(_v16 + 134) & 65535; } LMSec_Update_Enc_Trax_to_Off( long long __rdi // r57 ) {// addr = 0x0047FA79 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(_v16 == 0) { return 0; } *(_v16 + 134) = *(_v16 + 134) & 0xfe; *(_v16 + 134) = *(_v16 + 134) & 65535 | 2; return *(_v16 + 134) & 65535; } LMsec_Set_Enc_Init( long long __rdi // r57 ) {// addr = 0x0047FAD2 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(_v16 != 0) { *((short*)(_v16 + 134)) = 0; *((short*)(_v16 + 132)) = 0; *((long long*)(_v16 + 416)) = EncStateTable; return; } return; } LMsec_Fsm_Set_Next_State() {// addr = 0x0047FB0F signed long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed short _t18; // _t18 signed short _t31; // _t31 signed long long _t36; // _t36 _unknown_ _t38; // _t38 _v16 = __rdi; _t18 = _t31; _v20 = _t18; if(_v16 != 0) { r9d = _v20 & 65535; r8d = *(_v16 + 132) & 0xffff; DebugPrint(0, *((intOrPtr*)(_v16 + 432)), __rcx, _t38, __rdi, __rsi); _t36 = _v16; *(_t36 + 132) = _v20 & 65535; *((long long*)(_v16 + 416)) = *((intOrPtr*)(_t36 * 8 + &EncStateTable)); return _t36; } return _t18; } LMsec_Fsm_Event_Callback() {// addr = 0x0047FB97 intOrPtr _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t59; // _t59 signed char _t65; // _t65 intOrPtr _t82; // _t82 intOrPtr _t85; // _t85 long long _t91; // _t91 long long _t96; // _t96 intOrPtr _t97; // _t97 long long _t99; // _t99 intOrPtr _t100; // _t100 _push(r12); _push(__rbx); __rsp = __rsp - 64; _v48 = _t96; _v56 = _t99; _v72 = _t91; _v60 = _t65; _v28 = 0; if(_v56 != 0 && *((intOrPtr*)(_v56 + 416)) != 0) { _t100 = _v56; _t97 = _v48; _v28 = LMsec_Fsm_LM_Link_Sanity_Check(); if(_v28 != 0) { r12d = _v60 & 255; _t82 = _v56; ConvertEncFsmStateToStr( *(_t82 + 132) & 0xffff); *__rsp = *(_v56 + 134) & 0xffff; r9d = r12d; r8 = _t82; DebugPrint(0, _v56, _t91, _t82, _t97, _t100); _v28 = 31; } else { r12d = *(_v56 + 134) & 0xffff; _t85 = _v56; ConvertEncFsmStateToStr( *(_t85 + 132) & 0xffff); _v76 = r12d; *__rsp = _v60 & 255; r9 = _t85; r8d = *(_v56 + 132) & 0xffff; _t59 = DebugPrint(0, *((intOrPtr*)(_v56 + 432)), _t91, _t85, _t97, _t100); r8 = *((intOrPtr*)(_v56 + 416)); r8(); _v28 = _t59; } } __rsp = &(__rsp[0x10]); _pop(__rbx); _pop(r12); return; } LMsec_Fsm_Proc_Master_Stop_Enc() {// addr = 0x0047FD03 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t9; // _t9 long long _t17; // _t17 long long _t19; // _t19 _v16 = _t17; _v24 = _t19; if(_v16 == 0 || _v24 == 0) { return; } else { r8d = 0; LMsec_peer_Send_LMP_Message(); return; } } LMsec_Fsm_Proc_Handle_Peer_Key_Size_Req() {// addr = 0x0047FD4B signed int _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed char _t63; // _t63 long long _t104; // _t104 long long _t116; // _t116 _v32 = _t104; _v40 = _t116; _v44 = _t63; _v9 = 0; _v9 = LMsec_Peer_Check_Key_Size(_v44 & 255, _v32, _v40); if((_v9 & 255) != _v44) { if(_v9 != 0) { if(LMlink_Get_Current_Key_Persistance(_v40) != 1) { *(_v40 + 119) = _v9 & 255; } else { *(_v40 + 119) = LMsec_core_Get_Broadcast_Key_Length(_v32 + 60216); } r8 = _v40 + 119; LMsec_peer_Send_LMP_Message(); LMsec_Fsm_Set_Next_State(); return; } _v10 = 32; r8d = 32; LMsec_peer_Send_LMP_Not_Accepted(); LMsec_Fsm_Set_Next_State(); LMsec_Fsm_Event_Callback(); return; } *(_v40 + 119) = _v44 & 255; LMsec_peer_Send_LMP_Accepted(_v32); if(( *(_v40 + 2) & 255) != 0) { LMsec_Fsm_Set_Next_State(); return; } LMsec_Fsm_Event_Callback(); return; } LMpolicy_Mss_Enc_Event_Callback( signed char __edx // r3 ) {// addr = 0x0047FECD signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char* _t70; // _t70 signed char* _t77; // _t77 _unknown_ _t91; // _t91 long long _t96; // _t96 signed char* _t100; // _t100 _v32 = _t96; _v40 = _t100; _v56 = _t87; _v44 = __edx; _t45 = _v44 & 255; if(_t45 == 7) { if(_v56 == 0) { L15: return; } _v9 = *_v56 & 255; _t70 = _v40; _t45 = (_t70[0x3d]) & 255; if(((_t70[0x3d]) & 255) == 0) { goto L15; } if((_v40[0x48]) != 0) { r8 = (_v40[0x48]); r8(); } if((_v9 & 255) == 0) { L11: r8 = &(_v40[2]); _t45 = EG_Event_Composer(0); goto L15; } else { _t45 = _v9 & 255; if((_v9 & 255) == 0) { goto L15; } _t77 = _v40; _t45 = (_t77[4]) & 65535; if(((_t77[4]) & 65535) != 1) { goto L15; } goto L11; } } if(_t45 != 8) { if(_t45 != 6) { *__rsp = (_v40[0x86]) & 0xffff; r9d = _v44 & 255; r8d = (_v40[0x84]) & 0xffff; DebugPrint(0, _v40[0x1b0], _t87, _t91, _t96, _t100); return; } LMpolicy_LM_Switch_Req(); return; } if(_v56 != 0) { _v9 = *_v56 & 255; _t87 = _v40; _t100 = _v40; _t96 = _v32; LMpolicy_Switch_Complete_Event(); } return; } LMsec_Fsm_Mss_Callback_Enc_Admission_Check( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00480060 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; if(_v16 == 0 || _v24 == 0) { return 0; } else { if(( *(_v24 + 134) & 4) != 0 && (( *(_v24 + 134) & 0x200) != 0 || ( *(_v24 + 134) & 0x100) != 0)) { return 1; } return 0; } } LMsec_Fsm_Proc_Set_Connection_Encryption() {// addr = 0x004800D2 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed char _t24; // _t24 long long _t35; // _t35 long long _t38; // _t38 _v32 = _t35; _v40 = _t38; _v44 = _t24; _v9 = _v44 & 255; if(_v44 != 1) { *(_v40 + 117) = 0; } else { if(LMlink_Get_Current_Key_Persistance(_v40) != 1) { *(_v40 + 117) = 1; } else { *(_v40 + 117) = 2; _v9 = 1; } } r8 = &_v9; LMsec_peer_Send_LMP_Message(); return; } LMsec_Fsm_Trax_Timeout_CB() {// addr = 0x00480150 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 long long _t15; // _t15 long long _t17; // _t17 _v32 = _t15; _v40 = _t17; _t13 = _v40; _v16 = _v40; if(_v16 == 0) { DebugPrint(0, _t13, __rcx, __rdx, _t15, _t17); return; } LMsec_Fsm_Event_Callback(); return; } LMsec_Fsm_LM_Link_Sanity_Check() {// addr = 0x004801A6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 intOrPtr _t16; // _t16 _v16 = __rdi; _v24 = __rsi; if(_v24 != 0) { if(( *(_v24 + 1) & 255) != 0) { _t16 = _v24; _t17 = *((intOrPtr*)(_t16 + 432)); if( *((intOrPtr*)(_t16 + 432)) != 0) { return 0; } DebugPrint(0, _t17, __rcx, __rdx, __rdi, __rsi); return 31; } return 31; } return 31; } ConvertEncFsmStateToStr( signed short __edi // r4 ) {// addr = 0x0048020E signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 65535) <= 28) { goto __rax; } return "NA"; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00480324 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00480363 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LMsec_HCI_Link_Key_Request_Reply() {// addr = 0x00480395 signed char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t114; // _t114 intOrPtr _t201; // _t201 long long _t220; // _t220 long long _t230; // _t230 long long _t238; // _t238 _unknown_ _t242; // _t242 long long _t249; // _t249 _v32 = _t238; _v40 = _t249; _v48 = _t230; _v56 = _t220; _v9 = 0; LM_Find_Link_Table_Entry(); _v24 = _v40; if(_v24 == 0) { _v9 = 18; L21: return _v9 & 255; } if(( *(_v24 + 122) & 65535) == 2 || ( *(_v24 + 122) & 65535) == 1) { _v16 = 0; _v12 = 1035; write_du(1, &_v16, _v56, _v56 + 24); write_du(6, _v24 + 424, _v56 + 24, _v56 + 24); _v9 = 127; _t242 = _v32 + 190168; EG_Generate_Command_Complete_Event(); if(( *(_v24 + 120) & 8) == 0) { if(( *(_v24 + 120) & 65535) != 0 || ( *(_v24 + 122) & 65535) != 1) { if(( *(_v24 + 122) & 65535) != 8) { goto L20; } goto L15; } else { L15: LMutils_Array_Copy(16, _v48, _v48, _v24 + 184); if(( *(_v24 + 122) & 65535) == 1) { *(_v24 + 122) = 0; } LMsec_core_Auth_Response(); L20: goto L21; } } _t114 = *(_v24 + 122) & 0xffff; if(_t114 == 1) { LMutils_Array_Copy(16, _v48, _v48, _v24 + 184); *(_v24 + 120) = *(_v24 + 120) & 3 | 4; LMsec_core_Auth_Challenge(); L11: goto L20; } if(_t114 != 2) { goto L20; } else { _t201 = _v24; _t226 = _t201 + 184; _t237 = _v48; _t257 = _t201 + 184; LMutils_Array_Copy(16, _v48, _v48, _t201 + 184); if(( *(_v24 + 2) & 255) != 0) { LMsec_core_Auth_Response(); *(_v24 + 120) = *(_v24 + 120) & 3 | 4; LMsec_core_Auth_Challenge(); } else { r8d = *(_v24 + 122) & 0xffff; DebugPrint(0, _v24, _t226, _t237, _t242, _t257); *(_v24 + 120) = *(_v24 + 120) & 3 | 4; LMsec_core_Auth_Challenge(); r8d = 35; LMsec_peer_Send_LMP_Not_Accepted(); } goto L11; } } else { _v9 = 12; goto L21; } } LMsec_HCI_Link_Key_Request_Negative_Reply() {// addr = 0x004806CF char _v9; // _cfa_fffffff7 char _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t114; // _t114 long long _t231; // _t231 long long _t241; // _t241 long long _t253; // _t253 _v80 = _t241; _v88 = _t253; _v96 = _t231; _v16 = 12; write_du(6, _v88, _v96 + 24, _t253); LM_Find_Link_Table_Entry(); _v24 = _v88; if(_v24 == 0 || ( *(_v24 + 122) & 65535) != 1 && ( *(_v24 + 122) & 65535) != 2) { L22: return; } else { _v16 = 127; _v12 = 1036; _v9 = 0; write_du(1, &_v9, &_v72, &_v72 + 24); write_du(6, _v88, &_v72 + 24, &_v72 + 24); __rcx = _v80 + 190168; _t237 = &_v72; _t256 = &_v12; _t246 = __rcx; EG_Generate_Command_Complete_Event(); if(( *(_v24 + 37) & 255) != 3) { L12: if(( *(_v24 + 120) & 8) == 0) { if(( *(_v24 + 122) & 65535) != 1 || ( *(_v24 + 120) & 65535) != 0) { r8d = *(_v24 + 122) & 0xffff; DebugPrint(0, _v24, __rcx, _t237, _t246, _t256); } else { *(_v24 + 122) = 0; r8d = 6; LMsec_peer_Send_LMP_Not_Accepted(); } goto L22; } _t114 = *(_v24 + 122) & 0xffff; if(_t114 == 1) { L16: *(_v24 + 122) = 3; EG_Event_Composer(0); goto L22; } if(_t114 != 2) { goto L22; } r8d = 6; LMsec_peer_Send_LMP_Not_Accepted(); r8d = *(_v24 + 122) & 0xffff; DebugPrint(0, _v24, __rcx, _t237, _v80, _v24); goto L16; } _t237 = _v24; _t256 = _v24; _t246 = _v80; if(LMssp_SSP_Enabled_On_Link(_v80, _v24) != 1) { goto L12; } else { if(( *(_v24 + 122) & 65535) == 2 || ( *(_v24 + 122) & 65535) == 1) { if(( *(_v24 + 120) & 65535) != 0) { if(( *(_v24 + 148) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 148) = 0; } __rcx = _v24; *((char*)(_v24 + 219)) = DM_Set_Timer(); _t237 = _v24 + 424; _t246 = _v80 + 190168; EG_Event_Composer(0); *(_v24 + 122) = 21; *((char*)(_v24 + 216)) = 1; } else { *(_v24 + 122) = 0; _t256 = _v24; r8d = 6; LMsec_peer_Send_LMP_Not_Accepted(); DebugPrint(0, _v80, __rcx, _t237, _v80, _v24); } } goto L22; } } } LMsec_HCI_Pin_Code_Request_Reply() {// addr = 0x00480A5C long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c char* _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed short _t94; // _t94 signed char _t117; // _t117 signed int _t137; // _t137 signed int _t141; // _t141 signed int _t152; // _t152 signed int _t159; // _t159 intOrPtr _t171; // _t171 long long _t179; // _t179 long long _t187; // _t187 signed int _t197; // _t197 _v80 = _t187; _v88 = _t197; _v96 = _t179; _v112 = r8; _v100 = _t117; _v16 = *fs:0x28]; _v60 = 0; _t137 = _v88; _t198 = _t137; LM_Find_Link_Table_Entry(); _v72 = _t137; __eflags = _v72; if(__eflags != 0) { __eflags = ( *(_v72 + 122) & 65535) - 3; if(__eflags != 0) { _v60 = 12; goto L19; } __eflags = _v100 - 16; if(_v100 > 16) { L12: _v60 = 18; _t141 = _v72; __eflags = *(_t141 + 120) & 8; if(( *(_t141 + 120) & 8) == 0) { __eflags = *(_v72 + 120) & 0x10; if(__eflags != 0) { *(_v72 + 122) = 0; __eflags = *(_v72 + 2) & 255; r8d = 6; LMsec_peer_Send_LMP_Not_Accepted(); _t198 = _v72; LMsec_core_Auth_Complete(); } } else { *(_v72 + 122) = 0; LMsec_core_Auth_Complete(); } goto L19; } __eflags = _v100; if(_v100 == 0) { goto L12; } _v60 = 127; *((char*)(_v72 + 145)) = 1; _t198 = _v72 + 152; LMutils_Array_Copy(_v100 & 255, _v72, _v96, _v72 + 152); *(_v72 + 144) = _v100 & 255; _t152 = _v72; _t106 = *(_t152 + 120) & 8; __eflags = *(_t152 + 120) & 8; if(( *(_t152 + 120) & 8) != 0) { L8: BTRAND_Rand128Bit(_t106, &_v40); LMutils_Array_Copy(16, ?_? ( &_v40), &_v40, _v72 + 232); _t198 = _v72; r8 = &_v40; LMsec_peer_Send_LMP_Message(); *(_v72 + 122) = 4; L17: goto L19; } _t159 = _v72; __eflags = *(_t159 + 120) & 0x10; if(( *(_t159 + 120) & 0x10) == 0) { L9: __eflags = *(_v72 + 120) & 0x10; if(__eflags != 0) { __eflags = *(_v80 + 65884) & 255; if(__eflags == 0) { r8 = &_v56; LM_SecEng_Generate_Key_E22(); LMutils_Array_Copy(16, ?_? ( &_v56), &_v56, _v72 + 184); *((char*)(_v72 + 114)) = 1; _t198 = _v72; LMsec_peer_Send_LMP_Accepted(_v80); *(_v72 + 122) = 17; } } goto L17; } _t171 = _v80; _t106 = *(_t171 + 65884) & 255; __eflags = ( *(_t171 + 65884) & 255) - 1; if(( *(_t171 + 65884) & 255) != 1) { goto L9; } goto L8; } else { _v60 = 18; L19: write_du(6, _v88, _v112 + 24, _t198); _t94 = _v60; if(__eflags == 0) { return _t94; } __stack_chk_fail(); return _t94; } } LMsec_HCI_LM_Create_New_Unit_Key( _unknown_ __eflags // r9 ) {// addr = 0x00480D4C long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t30; // _t30 __eflags = __eflags; _v80 = _t26; _v88 = _t30; _v16 = *fs:0x28]; BTRAND_Rand128Bit(0, &_v56); _v64 = _v88; LM_SecEng_Generate_Key_E21(); LMsec_Set_Unit_Key(_v80, _v80, &_v40); if(__eflags != 0) { __stack_chk_fail(); return 0; } return 0; } LMsec_HCI_Write_Authentication_Enable( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x00480DC4 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 5664)) = __dl; return 0; } LMsec_HCI_Read_Authentication_Enable() {// addr = 0x00480DE6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t9; // _t9 _v16 = _t9; _v24 = __rsi; __rdx = _v16 + 5664; __ecx = 1; write_du(1, _v16 + 5664, _v24 + 24, __rsi); return 0; } LMsec_HCI_Change_Connection_Link_Key() {// addr = 0x00480E22 intOrPtr _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed short _t57; // _t57 signed int _t59; // _t59 signed int _t60; // _t60 signed int _t61; // _t61 signed int _t62; // _t62 intOrPtr _t63; // _t63 signed int _t64; // _t64 long long _t75; // _t75 _v32 = _t75; _v36 = _t57; _v12 = 127; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t59, _v32 + 60216); _v24 = _t59; __eflags = _v24; if(_v24 != 0) { _t60 = _v24; __eflags = ( *(_t60 + 10) & 65535) - 7; if(( *(_t60 + 10) & 65535) != 7) { _t61 = _v24; __eflags = ( *(_t61 + 147) & 255) - 1; if(( *(_t61 + 147) & 255) == 1) { L6: _v12 = 12; return _v12; } _t62 = _v24; __eflags = *(_t62 + 114) & 255; if(( *(_t62 + 114) & 255) != 0) { _t63 = _v32; __eflags = *(_t63 + 65886) & 255; if(( *(_t63 + 65886) & 255) != 0) { _t64 = _v24; __eflags = *(_t64 + 120) & 65535; if(( *(_t64 + 120) & 65535) != 0) { L13: _v12 = 31; L14: return _v12; } __eflags = *(_v24 + 122) & 65535; if(__eflags == 0) { L12: *((short*)(_v24 + 120)) = 128; *(_v24 + 122) = 6; *((char*)(_v24 + 15)) = __dl; LMsec_core_Init_CombKey_Setup(__eflags); goto L14; } __eflags = ( *(_v24 + 122) & 65535) - 5; if(__eflags != 0) { goto L13; } goto L12; } _v12 = 38; return _v12; } goto L6; } _v12 = 12; return _v12; } _v12 = 18; return _v12; } LMsec_HCI_LM_Authentication_Requested( _unknown_ __eax // r0 ) {// addr = 0x00480F3C signed char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed short _t85; // _t85 long long _t91; // _t91 intOrPtr _t99; // _t99 long long _t128; // _t128 _unknown_ _t132; // _t132 _v48 = _t128; _v52 = _t85; _v9 = 0; _v24 = 1041; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t91, _v48 + 60216); _v32 = _t91; if(_v32 == 0) { return 18; } ShowSecurityStatus(); if(( *(_v32 + 122) & 65535) != 0 || ( *(_v32 + 120) & 65535) != 0) { if(( *(_v32 + 15) & 255) != ( *(_v32 + 2) & 255)) { if(LMssp_SSP_Enabled_On_Link(_v48, _v32) == 1) { *(_v32 + 149) = 1; _v9 = 128; } } else { _v9 = 12; } goto L18; } else { _v10 = 0; _t99 = _v48; _t116 = _t99 + 190168; _t132 = _t99 + 190168; EG_Generate_Command_Status_Event(); _t101 = _v32; if(( *(_v32 + 148) & 255) != 0) { DebugPrint(0, _t101, _t116, &_v24, _t132, &_v10); } else { *(_v32 + 148) = DM_Set_Timer(); } *(_v32 + 120) = 10; *(_v32 + 15) = *(_v32 + 2) & 255; if(LMssp_SSP_Enabled_On_Link(_v48, _v32) != 1) { if(LMsec_core_Get_Link_Key() == 1) { *(_v32 + 120) = 6; LMsec_core_Auth_Challenge(); } goto L13; } else { if(( *(_v32 + 125) & 255) != 8) { *(_v32 + 122) = 1; } EG_Event_Composer(0); L13: _v9 = 127; L18: return _v9 & 255; } } } LMsec_HCI_LM_Pin_Code_Request_Negative_Reply() {// addr = 0x00481127 signed short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr* _t58; // _t58 long long _t60; // _t60 long long _t74; // _t74 long long _t76; // _t76 long long _t82; // _t82 long long _t83; // _t83 _v32 = _t76; _v40 = _t82; _v48 = _t74; _v12 = 0; _t58 = _v40; target_bd_addr.8144 = *_t58; *7348252 = *(_t58 + 4) & 65535; _t75 = _v32 + 60216; _t60 = _v40; _t83 = _t60; LM_Find_Link_Table_Entry(); _v24 = _t60; if(_v24 == 0 || ( *(_v24 + 122) & 65535) != 3) { _v12 = 18; } else { if(( *(_v24 + 120) & 8) == 0) { if(( *(_v24 + 120) & 0x10) != 0) { *(_v24 + 122) = 0; r8d = 6; LMsec_peer_Send_LMP_Not_Accepted(); _t83 = _v24; LMsec_core_Auth_Complete(); } } else { *(_v24 + 122) = 0; LMsec_core_Auth_Complete(); } } write_du(6, _t75, _v48 + 24, _t83); return _v12; } LMsec_HCI_Set_Connection_Encryption() {// addr = 0x0048125B signed int _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char _t65; // _t65 _unknown_ _t70; // _t70 long long _t73; // _t73 intOrPtr _t80; // _t80 long long _t97; // _t97 _v32 = _t97; _v36 = __cx; _v40 = _t65; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t73, _v32 + 60216); _v24 = _t73; if(_v24 == 0) { return; } if(( *(_v24 + 10) & 65535) != 7) { if(( *(_v24 + 116) & 255) != (_v40 & 255)) { if(( *(_v24 + 114) & 255) != 0) { if(LMsec_IsEncryptionAllowed() != 0) { *(_v24 + 15) = *(_v24 + 2) & 255; if((_v40 & 255) != 1) { _t80 = _v24; _t52 = *(_t80 + 132) & 65535; if(( *(_t80 + 132) & 65535) != 0) { _t52 = LMSec_Update_Enc_Trax_to_Off(_v24); } else { *(_v24 + 134) = 22; } } else { if(( *(_v24 + 132) & 65535) != 0) { LMSec_Update_Enc_Trax_to_On(_v24); } else { *(_v24 + 134) = 21; } } LMsec_Fsm_Event_Callback(); return; } _v9 = *(_v24 + 134) & 1; if(_v9 != (_v40 & 255)) { return; } return; } return; } if(( *(_v24 + 116) & 255) != 1) { return; } DM_Set_Timer(); return; } else { return; } } LMsec_HCI_Master_Link_Key() {// addr = 0x004813ED long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 signed char _v73; // _cfa_ffffffb7 char _v74; // _cfa_ffffffb6 signed char _v75; // _cfa_ffffffb5 signed char _v76; // _cfa_ffffffb4 short _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v112; // _cfa_ffffff90 char _v116; // _cfa_ffffff8c _unknown_ __rbp; // r59 _unknown_ _t108; // _t108 _unknown_ _t109; // _t109 char _t123; // _t123 signed int _t130; // _t130 long long _t134; // _t134 intOrPtr _t157; // _t157 long long _t177; // _t177 _v112 = _t177; _v116 = _t123; _v16 = *fs:0x28]; _v76 = 0; _v75 = 0; _v74 = 127; *(_v112 + 60219) = 0; *(_v112 + 66226) = 0; _t134 = _v112; *((char*)(_t134 + 65887)) = _v116; _t86 = _v116; if(_v116 == 1) { _t108 = BTRAND_Rand128Bit(BTRAND_Rand128Bit(_t86, &_v72), &_v56); r8 = &_v40; LM_SecEng_Generate_Key_E22(); _t157 = _v112; _t160 = _t157 + 65920; _t191 = _t157 + 65920; LMutils_Array_Copy(16, ?_? ( &_v40), ?_? ( &_v40), _t157 + 65920); _t109 = BTRAND_Rand128Bit(_t108, &_v40); _t134 = _v112 + 66232; BTRAND_Rand128Bit(_t109, _t134); } _v73 = 0; while(_v73 <= 6) { _t166 = _v112 + 60216; LM_Find_Link_Table_Entry_By_Index(_v73 & 255, _v112 + 60216); _v96 = _t134; if(( *(_v96 + 4) & 65535) == 1) { L5: _t134 = _v96; if(( *(_t134 + 2) & 255) != 0) { L14: _v73 = _v73 + 1; continue; } _t134 = _v96; if(( *(_t134 + 122) & 65535) != 0) { goto L14; } _t134 = _v96; if(( *(_t134 + 120) & 65535) != 0) { goto L14; } _t134 = _v96; if(( *(_t134 + 114) & 255) != 1) { goto L14; } ShowSecurityStatus(); *(_v112 + 60219) = _v112 + 1; r8d = LMlink_Get_Current_Key_Persistance(_v96); DebugPrint(0, _v96, _t160, _t166, _v96, _t191); if(LMlink_Get_Current_Key_Persistance(_v96) != _v116) { if(_v116 != 0) { *((short*)(_v96 + 120)) = 64; *(_v112 + 66226) = _v112 + 1; LMsec_peer_Send_LMP_Encryption_Key_Size_Mask_Req(_v112); } else { LMsec_core_Change_To_Semi_Permanent_Key(); } } else { EG_Generate_Command_Status_Event(); r8 = &_v116; EG_Event_Composer(0); } break; } _t134 = _v96; if(( *(_t134 + 4) & 65535) != 4) { goto L14; } goto L5; } _v88 = 1047; _t130 = *(_v112 + 60219) & 255; if(_t130 == 0) { _v74 = 12; EG_Generate_Command_Status_Event(); } if(_t130 == 0) { return 127; } else { __stack_chk_fail(); return 127; } } LMsec_HCI_Read_Encryption_Key_Size() {// addr = 0x004816B4 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t31; // _t31 long long _t34; // _t34 long long _t43; // _t43 long long _t48; // _t48 _v32 = _t48; _v48 = _t43; _v36 = _t31; _v12 = 0; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, _t34, _v32 + 60216); _v24 = _t34; if(_v24 != 0) { if(( *(_v24 + 124) & 0x23) == 0) { _v12 = 47; } else { __rsi = _v48 + 48; write_du(2, _v24 + 626, _v48 + 24, __rsi); write_du(1, _v24 + 119, _v48 + 48, __rsi); } return _v12; } return 2; } LMsec_HCI_Report_Encryption_Change_Report() {// addr = 0x00481766 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t14; // _t14 long long _t30; // _t30 _v32 = _t30; _v40 = __rsi; if(_v40 != 0) { _v9 = 0; LMEvt_FireEvent(); r8 = _v40 + 116; EG_Event_Composer(0); return; } return; } LMsec_HCI_Send_Keypress_Notification( _unknown_ __rax, // r53 long long __rcx // r55 ) {// addr = 0x004817D7 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t20; // _t20 long long _t32; // _t32 long long _t36; // _t36 _v32 = _t32; _v40 = _t36; _v56 = __rcx; _v44 = _t20; LM_Find_Link_Table_Entry(); _v16 = _v40; if(_v16 == 0) { return 18; } write_end_du(6, _v56, _v16 + 424); return LMssp_Send_Keypress_Notification(_v44 & 255, _v32, _v16); } LMsec_HCI_Refresh_Enc_Key( signed long long __rax // r53 ) {// addr = 0x00481854 signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t29; // _t29 signed int _t30; // _t30 signed short _t32; // _t32 long long _t36; // _t36 long long _t43; // _t43 _t36 = __rax; _v32 = _t43; _v36 = _t32; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v24 = _t36; if(_v24 == 0) { return 18; } if(( *(_v24 + 116) & 255) != 0) { if(( *(_v24 + 45) & 4) == 0) { L5: return 12; } _t29 = *(_v32 + 191037) & 4; if(_t29 != 0) { LMsec_Fsm_Event_Callback(); _v12 = _t29; if(_v12 == 0) { _t30 = 128; } else { _t30 = _v12; } return _t30; } goto L5; } return 12; } LMsec_Lccmd_Callback_Set_Encrption() {// addr = 0x00481904 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t13; // _t13 long long _t18; // _t18 long long _t22; // _t22 long long _t25; // _t25 _v32 = _t22; _v40 = _t25; _v56 = _t18; _v44 = __al; LM_Find_Link_Table_Entry_By_LLink(); _v16 = _v40; if(_v16 != 0) { LMsec_Fsm_Event_Callback(); return; } return; } LMsec_Lccmd_Callback_L2cap_Flow_Stop() {// addr = 0x00481960 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t14; // _t14 long long _t21; // _t21 long long _t26; // _t26 long long _t29; // _t29 _v32 = _t26; _v40 = _t29; _v56 = _t21; _v44 = __al; if(_v40 == 0) { } else { LM_Find_Link_Table_Entry_By_LLink(); _v16 = *((intOrPtr*)(_v40 + 80)); if(_v16 != 0) { LMsec_Fsm_Event_Callback(); return; } } return; } BDADDR_Assign( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x004819C8 signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } RtbtLmKeyDbInitialise( long long __rdi // r57 ) {// addr = 0x00481A2E signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v9 = 0; num_link_keys = 0; while(_v9 <= 5) { *(((_v9 & 255) + (_v9 & 255) + __rdx << 3) - __rdx + &link_key_database) = 0; _v9 = _v9 + 1; } return; } LMkeydb_LM_Read_Stored_Link_Key( _unknown_ __rax // r53 ) {// addr = 0x00481A6F long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 char _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 char _t27; // _t27 long long _t38; // _t38 long long _t45; // _t45 _v64 = _t45; _v72 = __rsi; _v88 = _t38; _v96 = r8; _v76 = _t27; _v16 = *fs:0x28]; __eflags = _v76; if(_v76 == 0) { LMkeydb_Read_Link_Key(); _v48 = _v72; __eflags = _v48; if(__eflags != 0) { _v40 = 0; _v32 = 0; *_v96 = 1; r8 = &_v40; EG_Event_Composer(0); } } else { _DB_Read_All_Keys(); *_v96 = 0; } if(__eflags == 0) { return; } else { __stack_chk_fail(); return; } } LMkeydb_Read_Link_Key() {// addr = 0x00481B39 char _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t13; // _t13 long long _t28; // _t28 _v32 = _t28; _v9 = 0; while(_v9 <= 5) { _v24 = (__rdx + __rdx + __rdx << 3) - __rdx + &link_key_database; _t13 = *_v24 & 255; if(_t13 == 0) { L4: _v9 = _v9 + 1; continue; } __rsi = _v32; RtlCompareMemory(6, &(_v24[0x11]), _v32); if(_t13 != 0) { goto L4; } return; } return; } LMkeydb_Write_Link_Key() {// addr = 0x00481BAF char _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t28; // _t28 _unknown_ _t63; // _t63 long long _t67; // _t67 long long _t72; // _t72 _v32 = _t67; _v40 = _t72; _v9 = 0; while(_v9 <= 5) { _v24 = (_t63 + _t63 + _t63 << 3) - _t63 + &link_key_database; _t28 = *_v24 & 255; if(_t28 == 0) { L4: _v9 = _v9 + 1; continue; } RtlCompareMemory(6, &(_v24[0x11]), _v32); if(_t28 != 0) { goto L4; } _Set_DB_Entry_Link_Key(_v24, _v24, _v40); return 0; } _v9 = 0; while(_v9 <= 5) { _v24 = (_t63 + _t63 + _t63 << 3) - _t63 + &link_key_database; if(( *_v24 & 255) != 0) { _v9 = _v9 + 1; continue; } _Set_DB_Entry_Link_Key(_v24, _v24, _v40); BDADDR_Assign( &(_v24[0x11]), _v32); *_v24 = 1; num_link_keys = (num_link_keys & 255) + 1; return 0; } return 7; } _DB_Delete_Link_Key() {// addr = 0x00481CBD signed char _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t13; // _t13 long long _t30; // _t30 _v32 = _t30; _v9 = 0; while(_v9 <= 5) { _v24 = (__rdx + __rdx + __rdx << 3) - __rdx + &link_key_database; _t13 = *_v24 & 255; if(_t13 == 0) { L4: _v9 = _v9 + 1; continue; } __rsi = _v32; RtlCompareMemory(6, &(_v24[0x11]), _v32); if(_t13 != 0) { goto L4; } *_v24 = 0; num_link_keys = (num_link_keys & 255) - 1; return 0; } return 0; } _DB_Delete_All_Link_Keys() {// addr = 0x00481D47 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 _unknown_ __rbp; // r59 _v10 = 0; _v9 = 0; while(_v10 <= 5) { if(( *(((_v10 & 255) + (_v10 & 255) + _t27 << 3) - _t27 + &link_key_database) & 255) == 1) { *(((_v10 & 255) + (_v10 & 255) + _t28 << 3) - _t28 + &link_key_database) = 0; _v9 = _v9 + 1; } _v10 = _v10 + 1; } num_link_keys = 0; return _v9 & 255; } _DB_Read_All_Keys() {// addr = 0x00481DB4 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 char _v42; // _cfa_ffffffd6 char _v43; // _cfa_ffffffd5 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 char* _t45; // _t45 long long _t49; // _t49 _v64 = _t49; _v16 = *fs:0x28]; _v42 = 0; _v41 = 0; _v43 = 1; while(1) { __eflags = _v42 - 5; if(__eflags > 0) { break; } _v56 = (_t45 + _t45 + _t45 << 3) - _t45 + &link_key_database; __eflags = *_v56 & 255; if(( *_v56 & 255) != 0) { _v40 = 0; _v32 = 0; _t45 = &_v43; r8 = &_v40; EG_Event_Composer(0); _v41 = _v41 + 1; } _v42 = _v42 + 1; } if(__eflags != 0) { __stack_chk_fail(); return; } return; } _Set_DB_Entry_Link_Key( _unknown_ __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00481E8B signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v9 = 0; do { __eax = _v9 & 255; *((char*)(_v32 + (_v9 & 255) + 1)) = __cl; _v9 = _v9 + 1; } while(_v9 <= 15); return __eax; } LMkeydb_LM_Delete_Stored_Link_Key( char __edx, // r3 _unknown_ __rax, // r53 signed int* __rcx // r55 ) {// addr = 0x00481EC1 signed short _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 signed int* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t48; // _t48 long long _t51; // _t51 long long _t55; // _t55 __rcx = __rcx; _v32 = _t51; _v40 = _t55; _v56 = __rcx; _v44 = __edx; if(_v44 == 0) { LM_Find_Link_Table_Entry(); _v24 = _v32; if(_v24 != 0) { *(_v24 + 114) = 0; } L9: if(_v44 == 0) { *_v56 = _DB_Delete_Link_Key() == 0 & 255; } else { *_v56 = _DB_Delete_All_Link_Keys() & 255; } return; } _v10 = 0; while(_v10 <= 6) { _t48 = _v32; __esi = _v10 & 65535; LM_Find_Link_Table_Entry_By_Index(_v10 & 65535, _t48); _v24 = _t48; if(( *(_v24 + 1) & 255) != 0) { *(_v24 + 114) = 0; } _v10 = _v10 + 1; } goto L9; } _Compare_Sres( signed char* __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00481F80 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char* _t18; // _t18 __rsi = __rsi; __rdi = __rdi; _t18 = __rax; _v32 = __rdi; _v40 = __rsi; _v12 = 0; while(1) { _t18 = &( &(_t18[_v32])[_v40]); if(__dl != ( *_t18 & 255)) { break; } _v12 = _v12 + 1; if(_v12 <= 3) { continue; } return 1; } return 0; } _Update_Link_Key( _unknown_ __eflags // r9 ) {// addr = 0x00481FC7 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t27; // _t27 __eflags = __eflags; _v64 = __rdi; _v72 = _t27; _v16 = *fs:0x28]; _v48 = _v64 + 184; LMsec_core_Array_Xor(16, ?_? ( &_v40), _v72, _v48, &_v40); LMutils_Array_Copy(16, ?_? ( &_v40), &_v40, _v64 + 184); if(__eflags != 0) { __stack_chk_fail(); return; } return; } _Generate_Encryption_Key() {// addr = 0x00482042 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 _unknown_ _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v60; // _cfa_ffffffc4 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 _unknown_ __rbp; // r59 signed int _t69; // _t69 _unknown_ _t72; // _t72 char* _t78; // _t78 signed char* _t87; // _t87 long long _t90; // _t90 long long _t93; // _t93 long long _t97; // _t97 long long _t101; // _t101 _v96 = _t97; _v104 = _t101; _v112 = _t93; _v120 = _t90; _v16 = *fs:0x28]; _v60 = 0; _v80 = 0; if(LMlink_Get_Current_Key_Persistance(_v96) != 0) { if(( *(_v96 + 2) & 255) != 0) { _v88 = _v96 + 424; } else { _v88 = _v120; } _t78 = &_v24; LMutils_Translate_Bd_Addr_to_Byte_Array(_t78, _v88); do { *(__rbp + _t78 - 32) = *(__rbp + _t78 - 16) & 255; _t69 = *(__rbp + _t78 - 16) & 255; _t78 = _t78 + 6; *(__rbp + _t78 - 32) = _t69; _v60 = _v60 + 1; } while(_v60 <= 5); _v80 = _v112; } else { _t87 = _v96 + 204; _v72 = _t87; do { _t87 = &(_t87[_v72]); *(__rbp + _t87 - 32) = *_t87 & 255; _v60 = _v60 + 1; _t72 = _v60 - 11; } while(_t72 <= 0); _v80 = _v96 + 184; } LM_SecEng_Generate_Key_E3(); __edi = 16; LMutils_Array_Copy(16, ?_? ( &_v56), &_v56, _v96 + 392); if(_t72 != 0) { __stack_chk_fail(); return; } return; } LMsec_Proc_Master_Start_Encryption() {// addr = 0x00482185 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t9; // _t9 long long _t11; // _t11 _v16 = _t9; _v24 = _t11; if(__al == 0) { _Start_Encryption(); return; } return; } _Start_Encryption() {// addr = 0x004821B6 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t30; // _t30 long long _t63; // _t63 long long _t68; // _t68 _v48 = _t63; _v56 = _t68; _v16 = *fs:0x28]; *((char*)(_v56 + 125)) = 12; _t30 = LMlink_Get_Current_Key_Persistance(_v56); __eflags = _t30; if(_t30 != 0) { LMutils_Array_Copy(16, _v56 + 232, _v48 + 66232, _v56 + 232); } else { BTRAND_Rand128Bit(_t30, &_v40); LMutils_Array_Copy(16, ?_? ( &_v40), &_v40, _v56 + 232); } _Generate_Encryption_Key(); r9d = LMsec_Lccmd_Callback_Set_Encrption; r8 = _v56 + 392; LCCMD_SetEncryption(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } _Stop_Encryption() {// addr = 0x004822BC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t27; // _t27 _unknown_ _t29; // _t29 long long _t33; // _t33 long long _t36; // _t36 _v16 = _t33; _v24 = _t36; _t22 = _v24; if(( *(_v24 + 148) & 255) != 0) { _t17 = DebugPrint(0, _t22, _t27, _t29, _t33, _t36); } else { *(_v24 + 148) = DM_Set_Timer(); } *((char*)(_v24 + 124)) = 38; *((char*)(_v24 + 125)) = 13; LMsec_core_PeerData_Tx_Stop_Callback(); return; } LMsec_peer_LMP_Accepted( signed char* __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00482342 long long _v16; // _cfa_fffffff0 signed int _v41; // _cfa_ffffffd7 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v64 = __rdi; _v72 = __rsi; _v80 = __rdx; _v16 = *fs:0x28]; _v41 = *_v80 & 255; __eflags = (_v41 & 255) - 8 - 42; if(__eflags <= 0) { goto __rax; } if(__eflags != 0) { __stack_chk_fail(); return 0; } return 0; } LMsec_peer_LMP_Not_Accepted() {// addr = 0x00482542 long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 short _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t172; // _t172 short _t176; // _t176 signed long long _t193; // _t193 signed long long _t205; // _t205 signed long long _t257; // _t257 long long _t264; // _t264 signed long long _t276; // _t276 _v32 = _t264; _v40 = _t276; _v48 = _t172; _v44 = _t176; if(_v44 == 58) { return 0; } if(_v44 == 32535) { *(_v40 + 118) = 0; *(_v40 + 124) = 0; *(_v40 + 124) = 0; *(_v40 + 10) = 0; LMch_Enable_L2CAP_Traffic(); if(( *(_v40 + 118) & 8) != 0) { EG_Event_Composer(0); } if(( *(_v40 + 61) & 255) != 0) { if( *((intOrPtr*)(_v40 + 72)) != 0) { r8 = *((intOrPtr*)(_v40 + 72)); r8(); } if(_v48 == 0 || _v48 != 0 && ( *(_v40 + 4) & 65535) == 1) { r8 = _v40 + 2; EG_Event_Composer(0); } } return 0; } _t193 = _v40; if(( *(_t193 + 125) & 0xff) > 14) { L32: if(( *(_v40 + 122) & 0xffff) - 4 > 12) { if(_v44 != 11 || ( *(_v40 + 2) & 255) != 1 || _v48 != 35) { if(_v44 != 11 || _v48 != 34) { if(_v44 == 9 || _v44 == 10) { if(_v48 != 35) { *(_v40 + 114) = 0; LMsec_core_Auth_Complete(); } } goto L47; } else { *(_v40 + 114) = 0; LMsec_core_Auth_Complete(); goto L46; } } else { if(( *(_v40 + 120) & 4) != 0) { LMsec_core_Auth_Challenge(); *(_v40 + 122) = 19; } L46: L47: return 0; } } goto __rax; } else { _t205 = _t257 << _t193; if(_t205 != 0) { if(( *(_v40 + 124) & 255) != 38) { *(_v40 + 117) = 0; } else { *(_v40 + 117) = *(_v40 + 390) & 255; r9d = 0; r8 = _v40 + 392; LCCMD_SetEncryption(); } if(( *(_v40 + 2) & 255) != 1 || _v48 != 35 || _v44 != 15) { LMsec_core_Set_Encryption_Complete(); } else { *((char*)(_v40 + 15)) = ( *(_v40 + 2) & 255) == 0; } } else { if(_t205 != 0) { if(( *(_v40 + 2) & 255) != 1 || _v48 != 35 || _v44 != 15) { *(_v40 + 117) = 0; LMsec_core_Set_Encryption_Complete(); if(( *(_v40 + 120) & 0x40) != 0) { *(_v40 + 120) = _v40 - 64; } } else { *((char*)(_v40 + 15)) = ( *(_v40 + 2) & 255) == 0; } } } goto L32; } } LMsec_peer_LMP_Stop_Encryption_Req() {// addr = 0x00482B14 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t6; // _t6 long long _t8; // _t8 _v16 = _t6; _v24 = _t8; _v32 = __rdx; LMsec_Fsm_Event_Callback(); return; } LMsec_peer_LMP_Stop_Encryption_Req_Accepted_Ack( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00482B44 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMsec_peer_LMP_Start_Encryption_Req_Accepted_Ack( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00482B52 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMsec_peer_LMP_Temp_Key( _unknown_ __edx // r3 ) {// addr = 0x00482B60 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t37; // _t37 long long _t53; // _t53 long long _t59; // _t59 long long _t61; // _t61 _v80 = _t59; _v88 = _t61; _v96 = _t53; _v16 = *fs:0x28]; if(( *(_v88 + 2) & 255) == 1) { LMutils_Array_Copy(16, ?_? ( &_v40), _v96, &_v40); _v64 = _v88 + 232; LMsec_core_Array_Xor(16, ?_? ( &_v56), &_v40, _v64, &_v56); LMutils_Array_Copy(16, ?_? ( &_v56), &_v56, _v80 + 65920); __esi = 1; LMlink_Set_Key_Persistance(1, _v88); *((short*)(_v88 + 120)) = 68; _t37 = *(_v88 + 2) & 255; *((char*)(_v88 + 15)) = _t37 == 0; *((short*)(_v88 + 122)) = 16; } if(_t37 != 0) { __stack_chk_fail(); return 0; } return 0; } LMsec_peer_LMP_Temp_Rand() {// addr = 0x00482C42 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t34; // _t34 long long _t40; // _t40 long long _t42; // _t42 _v80 = _t40; _v88 = _t42; _v96 = _t34; _v16 = *fs:0x28]; __eflags = ( *(_v88 + 2) & 255) - 1; if(__eflags == 0) { LMutils_Array_Copy(16, ?_? ( &_v56), _v96, &_v56); _v64 = _v88 + 184; r8 = &_v40; LM_SecEng_Generate_Key_E22(); LMutils_Array_Copy(16, ?_? ( &_v40), &_v40, _v88 + 232); *((short*)(_v88 + 120)) = 64; } if(__eflags != 0) { __stack_chk_fail(); return 0; } return 0; } LMsec_peer_LMP_Use_Semi_Permanent_Key() {// addr = 0x00482CF9 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t38; // _t38 long long _t42; // _t42 _v16 = _t38; _v24 = _t42; _v32 = __rdx; if(( *(_v24 + 2) & 255) == 1 && ( *(_v24 + 125) & 255) == 0 && ( *(_v24 + 124) & 255) == 0) { __esi = 0; LMlink_Set_Key_Persistance(0, _v24); LMsec_peer_Send_LMP_Accepted(_v16); *((short*)(_v24 + 120)) = 64; LMsec_core_Auth_Complete(); } return 0; } LMsec_peer_LMP_Encryption_Key_Size_Mask_Req() {// addr = 0x00482D8D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v16 = _t19; _v24 = _t21; _v32 = _t17; if(( *(_v16 + 191034) & 255) >= 0) { if(( *(_v24 + 2) & 255) == 1) { LMsec_peer_Send_LMP_Encryption_Key_Size_Mask_Res(); } return 0; } return 26; } LMsec_peer_LMP_Resume_Encryption_Req() {// addr = 0x00482DDD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t6; // _t6 long long _t8; // _t8 _v16 = _t6; _v24 = _t8; _v32 = __rdx; LMsec_Fsm_Event_Callback(); return; } LMsec_peer_LMP_Unit_Key() {// addr = 0x00482E0D long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t54; // _t54 _unknown_ _t73; // _t73 intOrPtr _t77; // _t77 intOrPtr _t78; // _t78 intOrPtr _t95; // _t95 long long _t102; // _t102 long long _t113; // _t113 long long _t120; // _t120 _v48 = _t113; _v56 = _t120; _v64 = _t102; _v16 = *fs:0x28]; LMutils_Array_Copy(16, ?_? ( &_v40), _v64, &_v40); _t54 = *(_v56 + 122) & 0xffff; if(_t54 < 6) { L15: L17: if(_t73 == 0) { return 0; } __stack_chk_fail(); return 0; } if(_t54 <= 7) { _t77 = _v56; __eflags = ( *(_t77 + 122) & 65535) - 7; if(( *(_t77 + 122) & 65535) == 7) { _t95 = _v56; __eflags = *(_t95 + 2) & 255; if(( *(_t95 + 2) & 255) == 0) { LMutils_Array_Copy(16, _v56 + 184, _v48 + 65904, _v56 + 184); *((char*)(_v56 + 146)) = 1; } } _t78 = _v56; __eflags = *(_t78 + 120) & 8; if(( *(_t78 + 120) & 8) != 0) { *(_v56 + 120) = *(_v56 + 120) & 65535 | 4; LMsec_core_Auth_Challenge(); } goto L17; } _t73 = _t54 - 17; if(_t73 == 0) { __eflags = ( *(_v48 + 65886) & 255) - 1; if(__eflags != 0) { LMsec_core_Init_UnitKey_Setup(__eflags); __eflags = *(_v56 + 2) & 255; if(__eflags != 0) { _Update_Link_Key(__eflags); *((char*)(_v56 + 146)) = 2; } else { _t90 = _v48 + 60216; LMsec_Get_Unit_Key(_v48 + 60216); LMutils_Array_Copy(16, _v48 + 60216, _t90, _v56 + 184); *((char*)(_v56 + 146)) = 1; } } else { LMsec_core_Init_CombKey_Setup(__eflags); _Update_Link_Key(__eflags); *((char*)(_v56 + 146)) = 2; } *(_v56 + 122) = 18; goto L17; } else { goto L15; } } LMsec_peer_LMP_Sres( _unknown_ __eax // r0 ) {// addr = 0x00482FE5 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t80; // _t80 long long _t107; // _t107 long long _t112; // _t112 long long _t118; // _t118 _v32 = _t112; _v40 = _t118; _v48 = _t107; _v16 = *fs:0x28]; ShowSecurityStatus(); __edi = 4; LMutils_Array_Copy(4, ?_? ( &_v24), _v48, &_v24); if(_Compare_Sres( ?_? ( &_v24), _v40 + 200, &_v24) != 1) { if(( *(_v40 + 122) & 65535) == 5 || ( *(_v40 + 122) & 65535) == 16 || ( *(_v40 + 122) & 65535) == 19) { *(_v40 + 114) = 0; *(_v40 + 122) = 0; LMsec_core_Auth_Complete(); } L18: if(_t80 == 0) { return 0; } __stack_chk_fail(); return 0; } *(_v40 + 114) = 1; if(( *(_v40 + 122) & 0xffff) != 5) { goto L18; } if(( *(_v40 + 120) & 8) != 0) { L5: *(_v40 + 122) = 18; L12: goto L18; } if(( *(_v40 + 120) & 4) == 0) { L6: if(( *(_v40 + 120) & 0x40) == 0 || ( *(_v40 + 120) & 0x80) != 0) { LMsec_core_Auth_Complete(); goto L18; } else { if(( *(_v40 + 2) & 255) != 0) { LMsec_core_Auth_Complete(); } else { *(_v40 + 122) = 18; } goto L12; } } _t80 = *(_v40 + 120) & 0x80; if(_t80 == 0) { goto L6; } goto L5; } LMsec_peer_LMP_Au_Rand( _unknown_ __eax // r0 ) {// addr = 0x00483196 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed short _t131; // _t131 signed int _t199; // _t199 char* _t257; // _t257 long long _t270; // _t270 long long _t279; // _t279 long long _t291; // _t291 _v48 = _t279; _v56 = _t291; _v64 = _t270; _v16 = *fs:0x28]; _t271 = _v64; LMutils_Array_Copy(16, ?_? ( &_v40), _v64, ?_? ( &_v40)); if(( *(_v56 + 122) & 65535) != 1) { if(( *(_v56 + 122) & 65535) != 0) { if(( *(_v56 + 122) & 65535) != 5) { if(( *(_v56 + 122) & 65535) != 16) { if(( *(_v56 + 122) & 65535) != 18) { if(( *(_v56 + 122) & 65535) == 4 || ( *(_v56 + 122) & 65535) == 3) { _t131 = 6; goto L37; } else { r8d = *(_v56 + 122) & 0xffff; DebugPrint(0, _v56, _t257, _t271, _t279, &_v40); LMutils_Array_Copy(16, ?_? ( &_v40), &_v40, _v56 + 232); if(LMsec_core_Get_Link_Key() == 1) { LMsec_core_Auth_Response(); } goto L36; } } if(( *(_v56 + 120) & 8) != 0 || ( *(_v56 + 120) & 65535) == 132) { LMsec_core_Auth_Response(); *(_v56 + 122) = 0; } else { if(( *(_v56 + 120) & 0x10) != 0 || ( *(_v56 + 120) & 65535) == 516) { LMsec_core_Auth_Response(); LMsec_core_Auth_Challenge(); } else { if(( *(_v56 + 120) & 0x40) != 0 && ( *(_v56 + 120) & 0x80) == 0) { _t257 = &_v40; _t279 = _v48; LMsec_core_Auth_Response(); *(_v56 + 122) = 0; } } } goto L36; } if(( *(_v56 + 120) & 4) != 0) { LMsec_core_Auth_Response(); LMsec_core_Auth_Challenge(); } goto L36; } if(( *(_v56 + 120) & 4) == 0) { L34: goto L36; } if(( *(_v56 + 120) & 8) != 0 || ( *(_v56 + 120) & 0x80) != 0) { if(( *(_v56 + 2) & 255) != 0) { LMsec_core_Auth_Response(); *(_v56 + 122) = 19; goto L36; } else { _t131 = 35; goto L37; } } else { if(( *(_v56 + 2) & 255) != 0) { *(_v56 + 122) = 16; LMsec_core_Auth_Response(); goto L34; } else { _t131 = 35; goto L37; } } } else { LMutils_Array_Copy(16, ?_? ( &_v40), &_v40, _v56 + 232); if(LMsec_core_Get_Link_Key() == 1) { LMsec_core_Auth_Response(); } goto L36; } } else { LMutils_Array_Copy(16, ?_? ( &_v40), &_v40, _v56 + 232); _t199 = *(_v56 + 120) & 8; if(_t199 != 0) { *(_v56 + 122) = 2; } L36: _t131 = 0; L37: if(_t199 == 0) { return _t131; } __stack_chk_fail(); return _t131; } } LMsec_peer_LMP_In_Rand() {// addr = 0x004835B8 long long _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 char _v57; // _cfa_ffffffc7 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t21; // _t21 long long _t25; // _t25 _v80 = __rdi; _v88 = _t25; _v96 = _t21; _v16 = *fs:0x28]; _v57 = 0; __edi = 16; LMutils_Array_Copy(16, ?_? ( &_v56), _v96, &_v56); __eflags = ( *(_v88 + 122) & 0xffff) - 16; if(__eflags <= 0) { goto __rax; } if(__eflags != 0) { __stack_chk_fail(); return 0; } return 0; } LMsec_peer_LMP_Encryption_Mode_Req() {// addr = 0x00483B25 signed char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t61; // _t61 signed char* _t63; // _t63 long long _t65; // _t65 long long _t68; // _t68 _v32 = _t65; _v40 = _t68; _v48 = _t63; if(( *(_v32 + 191032) & 4) != 0) { if(( *(_v40 + 114) & 255) != 0) { *(_v40 + 390) = *(_v40 + 117) & 255; _v16 = *_v48 & 0xff; if(_v16 <= 2) { _v9 = _v16 != 0; if(( *(_v40 + 132) & 65535) != 0) { if(( *(_v40 + 132) & 65535) != 2) { DebugPrint(0, _v40, _t61, _t63, _t65, _t68); } } else { LMSec_Set_Enc_Source(40, _v9 & 0xff, _v40); } LMsec_Fsm_Event_Callback(); return; } return; } return; } return; } LMsec_peer_Remote_Init_Encryption() {// addr = 0x00483C2B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed char _t32; // _t32 long long _t51; // _t51 long long _t55; // _t55 _v16 = _t51; _v24 = _t55; _v28 = _t32; _t52 = _v24; if(LMlink_Get_Current_Key_Persistance(_v24) == 1 && _v28 == 1) { _v28 = 2; } *(_v24 + 117) = _v28 & 255; if(_v28 != 1) { DebugPrint(0, _v24, __rcx, __rdx, _t52, _t55); } else { *(_v24 + 119) = *(_v16 + 66224) & 255; } LMsec_Fsm_Set_Next_State(); LMsec_peer_Send_LMP_Accepted(_v16); return; } LMsec_peer_LMP_Pause_Encryption_Req() {// addr = 0x00483CDB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t6; // _t6 long long _t8; // _t8 _v16 = _t6; _v24 = _t8; _v32 = __rdx; LMsec_Fsm_Event_Callback(); return; } LMsec_Peer_Check_Key_Size( signed char __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00483D0B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; if(( *(_v16 + 66224) & 255) < _v28) { return *(_v16 + 66224) & 255; } if(( *(_v16 + 66225) & 255) > _v28) { return 0; } return _v28 & 255; } LMsec_peer_LMP_Encryption_Key_Size_Req() {// addr = 0x00483D56 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 long long _t15; // _t15 _v32 = _t13; _v40 = _t15; _v48 = _t11; _v9 = __al; LMsec_Fsm_Event_Callback(); return; } LMsec_peer_LMP_Start_Encryption_Req() {// addr = 0x00483D92 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 long long _t9; // _t9 long long _t11; // _t11 _v16 = _t9; _v24 = _t11; _v32 = _t7; LMsec_Fsm_Event_Callback(); return; } LMsec_peer_LMP_Encryption_Key_Size_Mask_Res() {// addr = 0x00483DC4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t38; // _t38 long long _t43; // _t43 long long _t45; // _t45 long long _t47; // _t47 _v16 = _t45; _v24 = _t47; _v32 = _t43; if(( *(_v24 + 4) & 65535) == 1 || ( *(_v24 + 4) & 65535) == 4) { if(( *(_v24 + 2) & 255) == 0 && ( *(_v24 + 122) & 65535) == 0 && ( *(_v24 + 120) & 65535) == 64) { _t38 = _v16; _t33 = ( *(_t38 + 65887) & 255) - 1; if(( *(_t38 + 65887) & 255) == 1) { *((short*)(_v24 + 388)) = __dx; LMsec_core_Change_To_Temporary_Key(_t33); } } } return 0; } LMsec_peer_LMP_Comb_Key() {// addr = 0x00483E56 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t107; // _t107 intOrPtr _t171; // _t171 intOrPtr _t172; // _t172 intOrPtr _t174; // _t174 intOrPtr _t179; // _t179 intOrPtr _t180; // _t180 intOrPtr _t181; // _t181 intOrPtr _t186; // _t186 intOrPtr _t199; // _t199 intOrPtr _t200; // _t200 intOrPtr _t201; // _t201 intOrPtr _t208; // _t208 _unknown_ _t219; // _t219 long long _t227; // _t227 long long _t239; // _t239 long long _t250; // _t250 _v32 = _t239; _v40 = _t250; _v48 = _t227; _v24 = _v48; if(( *(_v40 + 122) & 65535) == 6 && ( *(_v40 + 15) & 255) != ( *(_v40 + 13) & 255) && ( *(_v40 + 2) & 255) == 1) { r8d = *(_v40 + 122) & 0xffff; DebugPrint(0, _v40, _t219, _t227, _t239, _t250); _v9 = 35; EG_Event_Composer(0); *(_v40 + 122) = 0; } _t107 = *(_v40 + 122) & 0xffff; if(_t107 == 6) { _t171 = _v40; _t172 = _v40; __eflags = ( *(_t171 + 15) & 255) - ( *(_t172 + 13) & 255); if(( *(_t171 + 15) & 255) == ( *(_t172 + 13) & 255)) { L14: LMsec_peer_Complete_CombKey_Setup(); _t174 = _v40; __eflags = *(_t174 + 120) & 8; if(( *(_t174 + 120) & 8) != 0) { L17: *(_v40 + 120) = *(_v40 + 120) & 65535 | 4; LMsec_core_Auth_Challenge(); L31: L33: return 0; } _t179 = _v40; __eflags = *(_t179 + 120) & 0x10; if(( *(_t179 + 120) & 0x10) != 0) { goto L17; } _t180 = _v40; __eflags = ( *(_t180 + 120) & 65535) - 128; if(( *(_t180 + 120) & 65535) != 128) { goto L31; } goto L17; } _t181 = _v40; __eflags = *(_t181 + 2) & 255; if(( *(_t181 + 2) & 255) != 0) { goto L14; } return 35; } if(_t107 > 6) { __eflags = _t107 - 7; if(_t107 == 7) { LMutils_Array_Copy(16, _v40 + 184, _v32 + 65904, _v40 + 184); *((char*)(_v40 + 146)) = 1; _t186 = _v40; __eflags = *(_t186 + 120) & 8; if(( *(_t186 + 120) & 8) != 0) { L20: *(_v40 + 120) = *(_v40 + 120) & 65535 | 4; LMsec_core_Auth_Challenge(); L32: goto L33; } _t199 = _v40; __eflags = *(_t199 + 120) & 0x10; if(( *(_t199 + 120) & 0x10) == 0) { goto L32; } goto L20; } __eflags = _t107 - 17; if(_t107 == 17) { __eflags = ( *(_v32 + 65886) & 255) - 1; if(__eflags != 0) { LMsec_core_Init_UnitKey_Setup(__eflags); _t194 = _v32 + 60216; LMsec_Get_Unit_Key(_v32 + 60216); LMutils_Array_Copy(16, _v32 + 60216, _t194, _v40 + 184); *((char*)(_v40 + 146)) = 1; } else { LMsec_core_Init_CombKey_Setup(__eflags); LMsec_peer_Complete_CombKey_Setup(); } *(_v40 + 122) = 18; goto L33; } L30: goto L33; } if(_t107 == 0) { _t200 = _v32; __eflags = ( *(_t200 + 65886) & 255) - 1; if(( *(_t200 + 65886) & 255) != 1) { return 38; } _t201 = _v40; __eflags = *(_t201 + 114) & 255; if(( *(_t201 + 114) & 255) != 0) { __eflags = *(_v40 + 2) & 255; *(_v40 + 15) = __eflags == 0; *(_v40 + 120) = 516; LMsec_core_Init_CombKey_Setup(__eflags); LMsec_peer_Complete_CombKey_Setup(); *(_v40 + 122) = 18; goto L33; } _t208 = _v40; __eflags = *(_t208 + 2) & 255; *(_v40 + 15) = ( *(_t208 + 2) & 255) == 0; return 36; } goto L30; } LMsec_peer_Send_LMP_Encryption_Key_Size_Mask_Res() {// addr = 0x004841BD short _v18; // _cfa_ffffffee signed int _v20; // _cfa_ffffffec short _v22; // _cfa_ffffffea char _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t33; // _t33 _v48 = _t33; _v56 = __rsi; __edx = 24; RtlFillMemory(24, 0, &_v40); _v31 = 0; _v22 = 59; _v20 = *(_v48 + 66228) & 65535; _v18 = 0; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LMsec_peer_Send_LMP_Message() {// addr = 0x0048423B short _v18; // _cfa_ffffffee signed int _v22; // _cfa_ffffffea signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 intOrPtr _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t32; // _t32 long long _t44; // _t44 _v48 = _t44; _v56 = __rsi; _v72 = r8; _v60 = _t32; _v64 = __ecx; RtlFillMemory(24, 0, &_v40); _v31 = _v64 & 255; _v22 = _v60 & 255; _v18 = 0; if((_v60 & 255) - 8 <= 42) { goto __rax; } LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LMsec_peer_Send_LMP_Accepted( long long __rdi // r57 ) {// addr = 0x00484352 short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t29; // _t29 _v48 = __rdi; _v56 = __rsi; _v60 = _t29; _v64 = __ecx; _v31 = _v64 & 255; _v22 = 3; _v18 = 24; _v24 = _v60 & 255; *(_v56 + 82) = _v60 & 255; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LMsec_peer_Send_LMP_Not_Accepted() {// addr = 0x004843CA short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v31; // _cfa_ffffffe1 char _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 signed char _t31; // _t31 long long _t42; // _t42 _v48 = _t42; _v56 = __rsi; _v68 = r8d; _v60 = _t31; _v64 = __ecx; RtlFillMemory(24, 0, &_v40); _v31 = _v64 & 255; _v22 = 4; _v24 = _v60 & 255; _v32 = _v68; _v18 = 0; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LMsec_peer_Send_LMP_Pause_Encryption_Req() {// addr = 0x00484456 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t35; // _t35 long long _t62; // _t62 long long _t65; // _t65 _v16 = _t62; _v24 = _t65; if(( *(_v24 + 118) & 2) != 0) { LMch_Disable_L2CAP_Traffic(); } if(( *(_v24 + 118) & 2) == 0) { _t35 = ( *(_v24 + 2) & 255) == 0; } else { _t35 = *(_v24 + 2) & 255; } *(_v24 + 15) = _t35; *(_v24 + 14) = *(_v24 + 15) & 255; _LMsec_LMP_pause_encryption_req_PDU = ( *(_v24 + 15) & 255) - 2; *7348397 = 23; r8d = &_LMsec_LMP_pause_encryption_req_PDU; LM_Encode_LMP_PDU_Fully_Encoded(_v16 + 60216); return 0; } LMsec_Fsm_Proc_Send_LMP_Pause_Encryption_Req() {// addr = 0x0048452B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t23; // _t23 _v16 = _t23; _v24 = __rsi; _LMsec_LMP_pause_encryption_req_PDU = ( *(_v24 + 15) & 255) - 2; *7348397 = 23; r8d = &_LMsec_LMP_pause_encryption_req_PDU; LM_Encode_LMP_PDU_Fully_Encoded(_v16 + 60216); return 0; } LMsec_peer_Send_LMP_Encryption_Key_Size_Mask_Req( long long __rdi // r57 ) {// addr = 0x00484598 short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea char _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _v48 = __rdi; _v56 = __rsi; if(( *(_v56 + 42) & 255) < 0) { _v31 = 0; _v22 = 58; _v18 = 25; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } return; } LMsec_peer_BB_Ack_LMP_Accept_Encryption_Mode_Req() {// addr = 0x004845FD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t14; // _t14 long long _t16; // _t16 _v16 = _t14; _v24 = _t16; if(__al != 0 || __al != 0) { return; } else { _Stop_Encryption(); return; } } LMsec_peer_BB_Ack_LMP_Encrypt_Key_Size_Mask() {// addr = 0x0048463A char _v9; // _cfa_fffffff7 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 _v32 = _t11; _v40 = _t13; _v9 = 0; _v24 = 1047; EG_Generate_Command_Status_Event(); return; } LMsec_peer_BB_Ack_LMP_Use_Semi_Permanent_Key() {// addr = 0x00484674 char _v9; // _cfa_fffffff7 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t11; // _t11 long long _t13; // _t13 _v32 = _t11; _v40 = _t13; _v9 = 0; _v24 = 1047; EG_Generate_Command_Status_Event(); return; } LMsec_Proc_Resume_Encryption() {// addr = 0x004846AE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t39; // _t39 long long _t43; // _t43 _v16 = _t39; _v24 = _t43; ShowSecurityStatus(); if(( *(_v24 + 2) & 255) != 1) { _Start_Encryption(); } else { *((char*)(_v24 + 125)) = 11; LMP_Send_Resume_Encryption_Req(); } return 0; } LMsec_peer_Complete_CombKey_Setup() {// addr = 0x0048473D long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed int _t40; // _t40 intOrPtr _t57; // _t57 long long _t63; // _t63 long long _t69; // _t69 long long _t72; // _t72 _v112 = _t69; _v120 = _t72; _v128 = _t63; _v16 = *fs:0x28]; _v96 = _v120 + 168; _v88 = _v120 + 184; LMsec_core_Array_Xor(16, ?_? ( &_v40), _v88, _v128, &_v40); _v80 = _v120 + 424; LM_SecEng_Generate_Key_E21(); LMsec_core_Array_Xor(16, ?_? ( &_v72), &_v56, _v96, &_v72); if(LMssp_SSP_Enabled_On_Link(_v112, _v120) != 1) { L3: *((char*)(_v120 + 146)) = 0; } else { _t57 = _v120; _t33 = *(_t57 + 120) & 0x280; _t40 = *(_t57 + 120) & 0x280; if(_t40 == 0) { goto L3; } else { *((char*)(_v120 + 146)) = 6; } } LMutils_Array_Copy(16, ?_? ( &_v72), &_v72, _v120 + 184); if(_t40 != 0) { __stack_chk_fail(); return; } return; } LMslt_Is_Inside_Window( signed short __ecx, // r2 signed short __edx, // r3 _unknown_ __edi, // r4 signed short __esi // r5 ) {// addr = 0x0048484C signed char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed short _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed short _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __edi = __edi; _v28 = __di; _v32 = __esi; _v36 = __edx; _v40 = __ecx; _v9 = 0; _v12 = _v36 & 65535; while((_v12 & 65535) != ((_v40 & 65535) + (_v36 & 65535)) % (_v32 & 65535)) { if((_v28 & 65535) % _v32 != _v12) { _v12 = ((_v12 & 65535) + 2) % (_v32 & 65535); continue; } else { _v9 = 1; } break; } return _v9 & 255; } LMslt_Get_Dsniff() {// addr = 0x004848C8 signed short _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed short* _v48; // _cfa_ffffffd0 signed short* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t358; // _t358 signed short _t413; // _t413 signed short _t419; // _t419 signed short* _t481; // _t481 _v48 = __rcx; _v56 = r9; _v28 = _t413; _v32 = _t419; _v36 = _t358; _v40 = r8d; _v9 = 0; _v12 = 0; _v14 = 0; goto L2; do { } while(); do { goto L5; } while((_v40 & 255) > _v14); if(_v36 == 0) { if(_v40 != 0) { if(_v40 != 1) { L85: if(_v9 == 0) { r9d = _v12 & 65535; r8d = _v32 & 65535; DebugPrint(0, _t449, __rcx, __rdx, __rdi, __rsi); } else { r9d = _v12 & 65535; r8d = _v32 & 65535; DebugPrint(0, _t449, __rcx, __rdx, __rdi, __rsi); } return; } if((_v28 & 65535) < ((_v56[1]) & 0xffff) + (_v32 & 65535)) { L62: _t449 = _v56; if(( *_v56 & 65535) < _v28) { _v12 = 0; while(( *_v56 & 65535) > _v12) { if(((_v56[2]) & 65535) == _v12) { L79: _v12 = _v12 + 2; continue; } if(((_v12 & 65535) + (_v32 & 65535)) % ( *_v56 & 0xffff) == ((_v56[2]) & 0xffff)) { L83: _t449 = _v56; if(( *_v56 & 65535) > _v12) { _v9 = 1; } goto L85; } goto L79; } goto L83; } _v12 = 0; while((_v12 & 65535) < _v28) { if(((_v56[2]) & 65535) % _v28 == _v12) { L68: _v12 = _v12 + 2; continue; } _t449 = _v56; if((((_v56[1]) & 0xffff) + ((_v56[2]) & 0xffff)) % (_v28 & 65535) == (_v12 & 65535)) { L72: if((_v12 & 65535) < _v28) { _v9 = 1; } goto L85; } goto L68; } goto L72; } _t449 = _v56; if(( *_v56 & 0xffff) < ((_v56[1]) & 0xffff) + (_v32 & 65535)) { goto L62; } _v12 = 0; while((_v12 & 65535) < _v28) { if(((_v56[2]) & 65535) % _v28 == _v12) { L56: _v12 = _v12 + 2; continue; } _t449 = _v56; if((((_v56[1]) & 0xffff) + ((_v56[2]) & 0xffff)) % (_v28 & 65535) == (_v12 & 65535)) { L60: if((_v12 & 65535) < _v28) { _v9 = 1; } goto L85; } goto L56; } goto L60; } _v12 = 0; _v9 = 1; goto L85; } if(_v40 != 0) { if(_v40 != 1) { goto L85; } if(( *_v48 & 65535) != 6) { _t449 = _v56; if(( *_v48 & 0xffff) < (_v32 & 65535) + ((_v48[1]) & 0xffff) + ((_v56[1]) & 0xffff)) { goto L85; } _v12 = (((_v48[2]) & 0xffff) + ((_v48[1]) & 0xffff)) % ( *_v48 & 0xffff); while(((_v48[2]) & 65535) != _v12) { _t481 = _v48; if(((_t481[2]) & 65535) == _v12) { L40: _v12 = &(_t481[1]) % ( *_v48 & 0xffff); continue; } if(((_v56[2]) & 65535) % _v28 == _v12) { goto L40; } __rdx = _v48; _t481 = _v48; if(LMslt_Is_Inside_Window((_v56[1]) & 0xffff, ((_v56[2]) & 65535) % ( *__rdx & 65535) & 65535, _v12 & 65535, *_t481 & 0xffff) == 0) { L44: _t449 = _v48; if(((_v48[2]) & 65535) != _v12) { _v9 = 1; } goto L85; } goto L40; } goto L44; } _v12 = 0; while(( *_v48 & 65535) > _v12) { if(((_v48[2]) & 65535) == _v12) { L26: _v12 = _v12 + 2; continue; } __rdx = _v48; if(((_v56[2]) & 65535) % ( *__rdx & 65535) != _v12) { L30: _t449 = _v48; if(( *_v48 & 65535) > _v12) { _v9 = 1; } goto L85; } goto L26; } goto L30; } else { _v12 = 0; while(( *_v48 & 65535) > _v12) { if(((_v48[2]) & 65535) == _v12) { L13: _v12 = _v12 + 2; continue; } if((((_v48[2]) & 0xffff) + ((_v48[1]) & 0xffff)) % ( *_v48 & 0xffff) == (_v12 & 65535)) { L17: _t449 = _v48; if(( *_v48 & 65535) > _v12) { _v9 = 1; } goto L85; } else { goto L13; } } goto L17; } L2: if((_v36 & 255) > _v14) { _t449 = __rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v48; r9d = (__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v48[2]) & 0xffff; r8d = (__rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v48[1]) & 0xffff; DebugPrint(0, __rdx + __rdx + __rdx + __rdx + __rdx + __rdx + _v48, __rcx, __rdx, __rdi, __rsi); _v14 = _v14 + 1; goto L2; } else { _v14 = 0; } L5: } LMslt_Get_Dsco() {// addr = 0x00484E55 signed short _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed short* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t298; // _t298 signed short _t342; // _t342 signed short _t350; // _t350 _v48 = __rcx; _v28 = _t342; _v32 = _t350; _v36 = _t298; _v9 = 0; _v12 = 0; _v14 = 0; do { } while((_v36 & 255) > _v14); if(_v36 != 0) { if(_v36 != 1) { if(_v36 != 2) { goto L65; } if(_v28 != 6) { _t362 = &(_v48[3]); if((_v28 & 65535) < (_v32 & 65535) + ((_v48[1]) & 0xffff) + ((_v48[4]) & 0xffff)) { _v12 = _v32 & 65535; while(_v12 != 0) { _t362 = _v48; if(((_v48[2]) & 65535) % _v28 == _v12) { L58: _v12 = ((_v12 & 65535) + 2) % (_v28 & 65535); continue; } _t362 = &(_v48[3]); if(((_v48[5]) & 65535) % _v28 == _v12) { goto L58; } if(LMslt_Is_Inside_Window((_v48[1]) & 0xffff, (_v48[2]) & 0xffff, _v12 & 65535, *_v48 & 0xffff) != 0) { goto L58; } _t362 = &(_v48[3]); if(LMslt_Is_Inside_Window((_v48[4]) & 0xffff, (_v48[5]) & 0xffff, _v12 & 65535, (_v48[3]) & 0xffff) == 0) { L62: if(_v12 == 0) { _v12 = 0; } else { _v9 = 1; } goto L65; } goto L58; } goto L62; } _v12 = _v32 & 65535; while(_v12 != 0) { _t362 = _v48; if(((_v48[2]) & 65535) % _v28 == _v12) { L42: _v12 = ((_v12 & 65535) + 2) % (_v28 & 65535); continue; } _t362 = &(_v48[3]); if(((_v48[5]) & 65535) % _v28 == _v12) { goto L42; } if(LMslt_Is_Inside_Window((_v48[1]) & 0xffff, ((_v48[2]) & 65535) % _v28 & 65535, _v12 & 65535, _v28 & 65535) != 0) { goto L42; } _t362 = &(_v48[3]); if(LMslt_Is_Inside_Window((_v48[4]) & 0xffff, ((_v48[5]) & 65535) % _v28 & 65535, _v12 & 65535, _v28 & 65535) == 0) { L46: if(_v12 == 0) { _v12 = 0; } else { _v9 = 1; } goto L65; } goto L42; } goto L46; } _v12 = 0; while((_v12 & 65535) < _v28) { if(((_v48[2]) & 65535) % _v28 == _v12) { L25: _v12 = _v12 + 2; continue; } _t362 = &(_v48[3]); if(((_v48[5]) & 65535) % _v28 != _v12) { L29: if((_v12 & 65535) >= _v28) { _v12 = 0; } else { _v9 = 1; } goto L65; } goto L25; } goto L29; } else { _v12 = 0; while((_v12 & 65535) < _v28) { if(((_v48[2]) & 65535) % _v28 == _v12) { L11: _v12 = _v12 + 2; continue; } _t362 = _v48; if(((_v32 & 65535) + (_v12 & 65535)) % (_v28 & 65535) == (((_v48[2]) & 65535) % _v28 & 65535)) { L15: if((_v12 & 65535) >= _v28) { _v12 = 0; } else { _v9 = 1; } goto L65; } goto L11; } goto L15; } } else { _v12 = 0; _v9 = 1; L65: if(_v9 == 0) { r9d = _v12 & 65535; r8d = _v32 & 65535; DebugPrint(0, _t362, __rcx, __rdx, __rdi, __rsi); } else { r9d = _v12 & 65535; r8d = _v32 & 65535; DebugPrint(0, _t362, __rcx, __rdx, __rdi, __rsi); } return; } } swapInteger( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004852B0 intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v12 = *_v32; *_v32 = *_v40; *_v40 = _v12; return; } gcdEuclidIterative() {// addr = 0x004852DC signed int _v12; // _cfa_fffffff4 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v28 = __edi; _v32 = __esi; if(_v28 < _v32) { __rsi = &_v32; __rdi = &_v28; swapInteger( &_v28, &_v32); } _v12 = _v28 % _v32; while(_v12 != 0) { _v28 = _v32; _v32 = _v12; _v12 = _v28 % _v32; } return _v32; } LMslt_Try_Offset( signed int __ecx, // r2 signed int __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00485340 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac _unknown_ __rbp; // r59 signed int _t109; // _t109 signed int _t110; // _t110 signed int _t113; // _t113 signed int _t115; // _t115 signed int _t117; // _t117 __rsi = __rsi; __rdi = __rdi; _v64 = __rdi; _v72 = __rsi; _v76 = __edx; _v80 = __ecx; _v84 = r8d; _v44 = *((intOrPtr*)(_v64 + 8)); _v40 = *((intOrPtr*)(_v64 + 4)); _v36 = *_v72; _v48 = *((intOrPtr*)(_v72 + 4)); _v32 = *((intOrPtr*)(_v72 + 8)); _v28 = (_v44 - _v32 + _v36) % _v76; _v24 = _v40 + _v28; _v20 = _v24 % _v76; if(_v24 <= _v76) { _t109 = 0; } else { _t109 = _v24 / _v76 - 1; } _v16 = _t109; _v52 = 0; while(_v48 > 0) { _t110 = _v76; _t111 = _v48 - _t110 <= 0 ? _v48 : _t110; _v12 = _v48 - _t110 <= 0 ? _v48 : _t110; if(_v28 >= _v12) { _t113 = 0; } else { _t113 = _v12 - _v28; } _v52 = _v52 + _t113; if(_v24 >= _v12) { _t115 = 0; } else { _t115 = _v24 - _v12; } _v52 = _v52 + _t115; if(_v24 <= _v76) { _t117 = 0; } else { _t117 = _v20 - _v12 <= 0 ? _v20 : _v12; } _v52 = _v52 + _t117; _v52 = _v52 + _v16 * _v12; _v48 = _v48 - _v76; } _v52 = _v52 * _v84 / _v80; return _v52; } LMslt_Get_Best_Offset( _unknown_ __eax // r0 ) {// addr = 0x00485475 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ _v24; // _cfa_ffffffe8 _unknown_ _v28; // _cfa_ffffffe4 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 signed int* _v80; // _cfa_ffffffb0 signed int** _v88; // _cfa_ffffffa8 char _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int* _v104; // _cfa_ffffff98 signed int** _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed int _t278; // _t278 signed int _t317; // _t317 signed int _t321; // _t321 signed int _t325; // _t325 signed short _t409; // _t409 _v104 = _t463; _v112 = __rcx; _v92 = dil; _v96 = _t409; _v40 = *_v104; _v72 = _v40; _v88 = _v112; do { } while( *_v88 != 0); (_v104[8]) = _v72; if(_v104 == 0) { return 4294967295; } if( *_v112 == 0) { (_v104[2]) = 0; return 0; } else { _v44 = *( *_v112); _v96 = _v96 + (_v96 & 1) % _v40; _v60 = _v96 & 65535; _v68 = _v60; _v56 = 2147483647; _v64 = _v56; _v52 = 0; while(_v52 < _v40) { while(1) { _t440 = *_v88; if( *_v88 != 0) { _v80 = *_v88; _v16 = (_v80[7]); _v12 = (_v80[8]); if(((_v80[6]) & 65535) == 4 && ((_v80[6]) & 65535) == 0) { _v44 = *_v80; } } else { break; } __rsi = _v80; r8d = _v72; __rdi = _v104; _t278 = LMslt_Try_Offset(_v12, _v16, __rdi, __rsi); _t463 = _v104; _v48 = _v48 + ((_v80[6]) & 0xffff) * ((_v104[6]) & 0xffff) * _t278; if((_v104[4]) != 0) { __rdi = &(_v104[3]); r8d = _v72; __rsi = _v80; _t325 = LMslt_Try_Offset(_v12, _v16, __rdi, __rsi); _t463 = _v104; _v48 = _v48 + ((_v80[6]) & 0xffff) * ((_v104[6]) & 0xffff) * _t325; } if((_v80[4]) != 0) { __rsi = &(_v80[3]); r8d = _v72; __rdi = _v104; _t321 = LMslt_Try_Offset(_v12, _v16, __rdi, __rsi); _t463 = _v104; _v48 = _v48 + ((_v80[6]) & 0xffff) * ((_v104[6]) & 0xffff) * _t321; } if((_v104[4]) != 0 && (_v80[4]) != 0) { __rsi = &(_v80[3]); __rdi = &(_v104[3]); r8d = _v72; _t317 = LMslt_Try_Offset(_v12, _v16, __rdi, __rsi); _t463 = _v104; _v48 = _v48 + ((_v80[6]) & 0xffff) * ((_v104[6]) & 0xffff) * _t317; } _v88 = &(_v88[1]); } r8d = _v48; DebugPrint(0, _t440, __rcx, _t463, __rdi, __rsi); if(_v48 >= _v64) { if(_v48 < _v56 && (_v20 - (_v96 & 65535)) % _v44 == 0) { _v60 = _v20; _v56 = _v48; } } else { _v64 = _v48; _v68 = _v20; if((_v20 - (_v96 & 65535)) % _v44 == 0) { _v60 = _v20; _v56 = _v48; } } if(_v92 != 1) { if(_v64 == 0) { goto L36; } goto L31; } else { if(_v64 != 0 || _v68 % _v44 != 0) { if(_v40 - 2 == _v52) { r8d = _v56; DebugPrint(0, _t440, __rcx, _t463, __rdi, __rsi); _v68 = _v60; _v64 = _v56; } L31: _v52 = _v52 + 2; continue; } else { L36: (_v104[2]) = _v68; return _v64; } } } goto L36; } } LMslt_Calc_TTLCM( _unknown_ __eax // r0 ) {// addr = 0x004858AC signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int** _v40; // _cfa_ffffffd8 signed int** _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _v48 = __rdi; _v40 = _v48; _v28 = *( *_v48); _v32 = 0; _v24 = _v32; _v20 = _v24; _v16 = _v20; _v12 = _v16; _v40 = &(_v40[1]); _v32 = _v28; while( *_v40 != 0) { _v12 = *( *_v40); _v16 = gcdEuclidIterative(); _v20 = _v12 / _v16 * _v28 / _v16 * _v16; _v24 = gcdEuclidIterative(); _v32 = _v12 / _v24 * _v32 / _v24 * _v24; _v40 = &(_v40[1]); } return _v32; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00485988 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004859C7 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LMssp_SSP_Enabled_On_Link( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004859F9 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; if(( *(_v16 + 65881) & 255) != 0) { if(( *(_v24 + 46) & 8) == 0 || ( *(_v24 + 46) & 0x10) == 0 || ( *(_v24 + 112) & 255) != 1) { goto L5; } else { return 1; } } L5: return 0; } LMssp_LM_Write_SSP_Debug_Mode( _unknown_ __rax // r53 ) {// addr = 0x00485A52 signed char _v9; // _cfa_fffffff7 signed int _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 char _t66; // _t66 signed int _t74; // _t74 signed int _t75; // _t75 signed int _t76; // _t76 signed int _t77; // _t77 _unknown_ _t81; // _t81 signed int _t86; // _t86 _v32 = _t86; _v36 = _t66; _t74 = _v32; if(( *(_t74 + 191084) & 255) != 0) { if(_v36 != 0) { } _t82 = _t74; DebugPrint(0, _t74, _t74, _t83, _t86, __rsi); if(_v36 != 0) { _t75 = _v32; *((char*)(_t75 + 65882)) = 1; _v9 = 0; while(_v9 <= 23) { _t76 = _v9 & 255; *(_v32 + _t76 + 66104) = *(_t75 + &DebugPublicKey_x) & 255; _t77 = _v9 & 255; *(_v32 + _t77 + 66128) = *(_t76 + &DebugPublicKey_y) & 255; _t83 = _v32; _t75 = _v9 & 255; *(_v32 + _t75 + 66152) = *(_t77 + &DebugSecretKey) & 255; _v9 = _v9 + 1; } DebugPrint(0, _t75, _t82, _t83, _t86, __rsi); goto L11; } else { RtbtLmSspGenerateNewPublicPrivateKeyPair(); *(_v32 + 65882) = 0; L11: return 0; } } DebugPrint(0, _v32, _t81, _t83, _t86, __rsi); return 0; } RtbtLmSspGenerateNewPublicPrivateKeyPair() {// addr = 0x00485B8D long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t15; // _t15 _v16 = _t15; do { BTRAND_Rand192Bit(_t7, _v16 + 66152); } while(LMecc_isValidSecretKey(_v16 + 66152) == 0); Reset_ECC_Variables(); r8d = 0; LMecc_Generate_ECC_Key(); return; } LMssp_LM_IO_Capability_Request_Reply() {// addr = 0x00485BEF signed char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t112; // _t112 signed char _t117; // _t117 long long _t132; // _t132 long long _t176; // _t176 long long _t185; // _t185 long long _t186; // _t186 _v32 = _t176; _v40 = _t185; _v64 = r9; _v44 = _t117; _v48 = _t112; _v52 = r8d; _t132 = _v40; _t186 = _t132; LM_Find_Link_Table_Entry(); _v24 = _t132; if(_v24 != 0) { if(( *(_v24 + 122) & 65535) != 21) { _v12 = 31; } else { if(( *(_v24 + 219) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 219) = 0; } *(_v32 + 66099) = _v44 & 255; *(_v32 + 66096) = _v48 & 255; *(_v32 + 66097) = _v52 & 255; *(_v24 + 220) = 0; *(_v24 + 221) = 0; *(_v24 + 229) = 0; *(_v24 + 230) = 0; if(( *(_v24 + 216) & 255) == 0) { if(( *(_v24 + 2) & 255) != 0) { *(_v24 + 217) = 0; } else { *(_v24 + 217) = 1; } *(_v24 + 14) = *(_v24 + 217) & 255; _t186 = _v24; _LMssp_Determine_Auth_Type(); r9d = _v48 & 255; r8d = _v44 & 255; *__rsp = _v52 & 255; LMP_Send_IO_Capacity_Res(); *(_v24 + 122) = 24; } else { *(_v24 + 217) = *(_v24 + 2) & 255; *(_v24 + 14) = *(_v24 + 217) & 255; r9d = _v48 & 255; r8d = _v44 & 255; *__rsp = _v52 & 255; LMP_Send_IO_Capacity_Req(); *(_v24 + 122) = 22; } _v12 = 0; write_du(6, _v24 + 424, _v64, _t186); } return; } return; } LMssp_LM_IO_Capability_Request_Negative_Reply( long long __rcx // r55 ) {// addr = 0x00485E58 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 intOrPtr _v92; // _cfa_ffffffa4 long long _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 intOrPtr _t53; // _t53 long long _t88; // _t88 long long _t97; // _t97 _v80 = _t88; _v88 = _t97; _v92 = _t53; _v104 = __rcx; LM_Find_Link_Table_Entry(); _v24 = _v88; if(_v24 != 0) { if(( *(_v24 + 122) & 65535) != 21) { return 12; } _v9 = 0; _v12 = 1076; write_du(1, &_v9, &_v72, &_v72 + 24); write_du(6, _v24 + 424, &_v72 + 24, &_v72 + 24); EG_Generate_Command_Complete_Event(); if(( *(_v24 + 219) & 255) != 0) { DM_Clear_Timer(); } if(( *(_v24 + 216) & 255) == 0) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v80 + 60216); } _LMssp_Send_Simple_Pairing_Complete_Event(5); write_du(6, _v24 + 424, _v104, _v24); return 0; } return 18; } _LMssp_Send_Simple_Pairing_Complete_Event( intOrPtr __edx // r3 ) {// addr = 0x00485FBC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 long long _t48; // _t48 __edx = __edx; _v16 = _t48; _v24 = __rsi; _v28 = __edx; EG_Event_Composer(0); if(_v28 != 0) { *(_v24 + 122) = 0; *(_v24 + 120) = 0; if(( *(_v24 + 216) & 255) == 1) { EG_Event_Composer(0); } *(_v24 + 216) = 0; return; } return; } LMssp_LM_User_Confirmation_Request_Reply() {// addr = 0x00486064 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t73; // _t73 long long _t96; // _t96 long long _t102; // _t102 long long _t109; // _t109 long long _t110; // _t110 _v32 = _t102; _v40 = _t109; _v48 = _t96; _t73 = _v40; _t110 = _t73; LM_Find_Link_Table_Entry(); _v16 = _t73; if(_v16 == 0) { return; } if(( *(_v16 + 122) & 65535) == 31) { if(( *(_v16 + 219) & 255) != 0) { DM_Clear_Timer(); *(_v16 + 219) = 0; } if(( *(_v16 + 216) & 255) == 0) { *(_v16 + 221) = 1; if(( *(_v16 + 220) & 255) == 0) { *(_v16 + 122) = 33; } else { if(( *(_v16 + 221) & 255) == 1) { r8d = 65; LMP_Send_Accepted(); _t110 = _v16; _LMssp_Send_LMP_DH_Key_Check(); } } } else { *(_v16 + 221) = 1; if(( *(_v16 + 225) & 255) != 0) { _t110 = _v16; _LMssp_Send_LMP_DH_Key_Check(); *(_v16 + 122) = 32; } } write_du(6, _v16 + 424, _v48, _t110); return; } else { return; } } LMssp_LM_User_Confirmation_Request_Negative_Reply() {// addr = 0x004861FB char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t110; // _t110 long long _t116; // _t116 long long _t126; // _t126 _v80 = _t116; _v88 = _t126; _v96 = _t110; LM_Find_Link_Table_Entry(); _v24 = _v88; _v9 = 0; if(_v24 != 0) { _v12 = 1069; write_du(1, &_v9, &_v72, &_v72 + 24); write_du(6, _v24 + 424, &_v72 + 24, &_v72 + 24); EG_Generate_Command_Complete_Event(); if(( *(_v24 + 122) & 65535) == 31) { if(( *(_v24 + 219) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 219) = 0; } if(( *(_v24 + 216) & 255) != 1) { if(( *(_v24 + 220) & 255) != 1) { *((char*)(_v24 + 221)) = 2; } else { r8d = 5; LMssp_Send_LMP_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } } else { LMP_Send_Numeric_Comparison_Failed(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } return 0; } return 12; } return 18; } LMssp_LM_User_Passkey_Request_Reply( long long __rcx // r55 ) {// addr = 0x004863C6 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed int _t81; // _t81 signed int _t88; // _t88 signed int _t90; // _t90 signed int _t96; // _t96 long long _t130; // _t130 signed int _t139; // _t139 signed int _t140; // _t140 _v64 = _t130; _v72 = _t139; _v76 = _t81; _v88 = __rcx; _v16 = *fs:0x28]; _t88 = _v72; _t140 = _t88; LM_Find_Link_Table_Entry(); _v56 = _t88; __eflags = _v56; if(__eflags != 0) { __eflags = ( *(_v56 + 122) & 65535) - 34; if(__eflags != 0) { _v44 = 31; } else { _t90 = _v56; _t68 = *(_t90 + 219) & 255; __eflags = *(_t90 + 219) & 255; if(( *(_t90 + 219) & 255) != 0) { _t68 = *(_v56 + 219) & 255; DM_Clear_Timer(); *(_v56 + 219) = 0; } *((char*)(_v56 + 221)) = 1; *(_v56 + 384) = _v76; BTRAND_Rand128Bit(_t68, _v56 + 232); *(_v56 + 222) = 0; __eflags = _v76 & 1; if((_v76 & 1) == 0) { Zero_Array = 128; } else { Zero_Array = 129; } _t96 = _v56; __eflags = *(_t96 + 216) & 255; if(( *(_t96 + 216) & 255) == 0) { __eflags = *(_v56 + 220) & 255; if(__eflags != 0) { r8 = &_v40; F1(); _t140 = _v56; LMssp_Send_LMP_Simple_Pairing_Confirm( &_v40); *(_v56 + 122) = 29; } } else { r8 = &_v40; F1(); _t140 = _v56; LMssp_Send_LMP_Simple_Pairing_Confirm( &_v40); *(_v56 + 122) = 28; } _v44 = 0; write_du(6, _v56 + 424, _v88, _t140); } } if(__eflags == 0) { return; } else { __stack_chk_fail(); return; } } LMssp_LM_User_Passkey_Request_Negative_Reply() {// addr = 0x004865D4 char _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t106; // _t106 long long _t112; // _t112 long long _t121; // _t121 _v80 = _t112; _v88 = _t121; _v96 = _t106; LM_Find_Link_Table_Entry(); _v24 = _v88; _v9 = 0; if(_v24 != 0) { _v12 = 1071; write_du(1, &_v9, &_v72, &_v72 + 24); write_du(6, _v24 + 424, &_v72 + 24, &_v72 + 24); EG_Generate_Command_Complete_Event(); if(( *(_v24 + 122) & 65535) != 34) { return 12; } if(( *(_v24 + 219) & 255) != 0) { DM_Clear_Timer(); *(_v24 + 219) = 0; } if(( *(_v24 + 220) & 255) != 0 && ( *(_v24 + 216) & 255) == 0) { r8d = 5; LMssp_Send_LMP_Not_Accepted(); } if(( *(_v24 + 216) & 255) != 0) { LMP_Send_Passkey_Entry_Failed(); } _LMssp_Send_Simple_Pairing_Complete_Event(5); return 0; } return 18; } LMssp_LM_Read_Local_OOB_Data() {// addr = 0x00486789 signed char _v57; // _cfa_ffffffc7 signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 signed int _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 signed int _v132; // _cfa_ffffff7c signed int _v136; // _cfa_ffffff78 signed int _v140; // _cfa_ffffff74 signed int _v144; // _cfa_ffffff70 signed int _v148; // _cfa_ffffff6c signed int _v152; // _cfa_ffffff68 signed int _v156; // _cfa_ffffff64 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 signed int _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 signed int _v248; // _cfa_ffffff08 signed int _v256; // _cfa_ffffff00 signed int _v264; // _cfa_fffffef8 signed int _v272; // _cfa_fffffef0 signed int _v280; // _cfa_fffffee8 signed int _v288; // _cfa_fffffee0 signed int _v296; // _cfa_fffffed8 signed int _v304; // _cfa_fffffed0 signed int _v312; // _cfa_fffffec8 signed int _v320; // _cfa_fffffec0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t267; // _t267 intOrPtr _t325; // _t325 _unknown_ _t327; // _t327 signed int _t447; // _t447 signed int _t448; // _t448 long long _t455; // _t455 long long _t460; // _t460 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 296; _v96 = _t455; _v104 = _t460; _t325 = _v96; _t175 = *(_t325 + 191038) & 8; if(( *(_t325 + 191038) & 8) != 0) { _t327 = _v96 + 66176; BTRAND_Rand128Bit(_t175, _t327); _v57 = 0; while(_v57 <= 15) { *(_t327 + &Zero_Array) = 0; _v57 = _v57 + 1; } __rcx = _v96 + 66192; _t453 = _v96 + 66176; _t461 = _v96 + 66104; r8 = __rcx; _t457 = _v96 + 66104; F1(); DebugPrint(0, _v96 + 66104, __rcx, _v96 + 66176, _v96 + 66104, _v96 + 66104); _v88 = _v96 + 66104; r11d = *(_v88 + 23) & 0xff; r13d = *(_v88 + 21) & 0xff; r14d = *(_v88 + 20) & 0xff; r15d = *(_v88 + 19) & 0xff; _v108 = *(_v88 + 18) & 0xff; _v112 = *(_v88 + 17) & 0xff; _v116 = *(_v88 + 16) & 0xff; _v120 = *(_v88 + 15) & 0xff; _v124 = *(_v88 + 14) & 0xff; _v128 = *(_v88 + 13) & 0xff; _v132 = *(_v88 + 12) & 0xff; _v136 = *(_v88 + 11) & 0xff; _v140 = *(_v88 + 10) & 0xff; _v144 = *(_v88 + 9) & 0xff; r12d = *(_v88 + 8) & 0xff; r10d = *(_v88 + 7) & 0xff; r9d = *(_v88 + 6) & 0xff; r8d = *(_v88 + 5) & 0xff; _v168 = r11d; _v176 = *(_v88 + 22) & 0xff; _v184 = r13d; _v192 = r14d; _v200 = r15d; _v208 = _v108; _v216 = _v112; _v224 = _v116; _v232 = _v120; _v240 = _v124; _v248 = _v128; _v256 = _v132; _v264 = _v136; _v272 = _v140; _v280 = _v144; _v288 = r12d; _v296 = r10d; _v304 = r9d; _v312 = r8d; _v320 = *(_v88 + 4) & 0xff; *__rsp = *(_v88 + 3) & 0xff; r9d = *(_v88 + 2) & 0xff; r8d = *(_v88 + 1) & 0xff; DebugPrint(0, _v88, __rcx, _v96 + 66176, _v96 + 66104, _v96 + 66104); _v80 = _v96 + 66176; _v148 = *(_v80 + 14) & 0xff; r15d = *(_v80 + 13) & 0xff; r14d = *(_v80 + 12) & 0xff; r13d = *(_v80 + 11) & 0xff; r12d = *(_v80 + 10) & 0xff; r11d = *(_v80 + 8) & 0xff; r10d = *(_v80 + 7) & 0xff; r9d = *(_v80 + 6) & 0xff; r8d = *(_v80 + 5) & 0xff; _v152 = *(_v80 + 2) & 0xff; _v232 = *(_v80 + 15) & 0xff; _v240 = _v148; _v248 = r15d; _v256 = r14d; _v264 = r13d; _v272 = r12d; _v280 = *(_v80 + 9) & 0xff; _v288 = r11d; _v296 = r10d; _v304 = r9d; _v312 = r8d; _v320 = *(_v80 + 4) & 0xff; *__rsp = *(_v80 + 3) & 0xff; r9d = _v152; r8d = *(_v80 + 1) & 0xff; DebugPrint(0, _v80, __rcx, _v96 + 66176, _v96 + 66104, _v96 + 66104); _v72 = _v96 + 66192; _v156 = *(_v72 + 14) & 0xff; r15d = *(_v72 + 13) & 0xff; r14d = *(_v72 + 12) & 0xff; r13d = *(_v72 + 11) & 0xff; r12d = *(_v72 + 10) & 0xff; r11d = *(_v72 + 8) & 0xff; r10d = *(_v72 + 7) & 0xff; r9d = *(_v72 + 6) & 0xff; r8d = *(_v72 + 5) & 0xff; _v160 = *(_v72 + 2) & 0xff; _t447 = _v72; _v232 = *(_v72 + 15) & 0xff; _v240 = _v156; _v248 = r15d; _v256 = r14d; _v264 = r13d; _v272 = r12d; _v280 = *(_v72 + 9) & 0xff; _v288 = r11d; _v296 = r10d; _v304 = r9d; _v312 = r8d; _v320 = *(_v72 + 4) & 0xff; *__rsp = *(_v72 + 3) & 0xff; r9d = _v160; r8d = *(_v72 + 1) & 0xff; DebugPrint(0, _t447, __rcx, _t453, _t457, _t461); _v57 = 0; while(_v57 <= 15) { _t448 = _v57 & 255; *(_t448 + &ReverseC.7860) = *(_v96 + _t447 + 66192) & 255; _t453 = _v96; _t447 = _v57 & 255; *(_t447 + &ReverseR.7859) = *(_v96 + _t448 + 66176) & 255; _v57 = _v57 + 1; } write_du(16, _t453, _v104, _v104 + 24); write_end_du(16, _v104 + 24, _v104 + 24); _t267 = 0; } else { _t267 = 17; } __rsp = &(__rsp[0x4a]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return _t267; } LMssp_LM_Remote_OOB_Data_Request_Reply() {// addr = 0x00486DF7 long long _v64; // _cfa_ffffffc0 char _v88; // _cfa_ffffffa8 intOrPtr _v92; // _cfa_ffffffa4 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 long long _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 long long _v176; // _cfa_ffffff50 signed int _v180; // _cfa_ffffff4c signed int _v184; // _cfa_ffffff48 signed int _v188; // _cfa_ffffff44 signed int _v192; // _cfa_ffffff40 signed int _v196; // _cfa_ffffff3c signed int _v200; // _cfa_ffffff38 signed int _v204; // _cfa_ffffff34 signed int _v208; // _cfa_ffffff30 signed int _v212; // _cfa_ffffff2c signed int _v216; // _cfa_ffffff28 signed int _v220; // _cfa_ffffff24 signed int _v224; // _cfa_ffffff20 signed int _v228; // _cfa_ffffff1c signed int _v232; // _cfa_ffffff18 signed int _v236; // _cfa_ffffff14 signed int _v240; // _cfa_ffffff10 signed int _v248; // _cfa_ffffff08 signed int _v256; // _cfa_ffffff00 signed int _v264; // _cfa_fffffef8 signed int _v272; // _cfa_fffffef0 signed int _v280; // _cfa_fffffee8 signed int _v288; // _cfa_fffffee0 signed int _v296; // _cfa_fffffed8 signed int _v304; // _cfa_fffffed0 signed int _v312; // _cfa_fffffec8 signed int _v320; // _cfa_fffffec0 signed int _v328; // _cfa_fffffeb8 signed int _v336; // _cfa_fffffeb0 signed int _v344; // _cfa_fffffea8 signed int _v352; // _cfa_fffffea0 signed int _v360; // _cfa_fffffe98 signed int _v368; // _cfa_fffffe90 signed int _v376; // _cfa_fffffe88 signed int _v384; // _cfa_fffffe80 signed int _v392; // _cfa_fffffe78 signed int _v400; // _cfa_fffffe70 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t265; // _t265 _unknown_ _t468; // _t468 long long _t474; // _t474 _unknown_ _t475; // _t475 intOrPtr _t630; // _t630 intOrPtr _t651; // _t651 _unknown_ _t653; // _t653 long long _t656; // _t656 long long _t660; // _t660 long long _t670; // _t670 long long _t682; // _t682 _push(r15); _push(r14); _push(r13); _push(r12); _push(_t653); __rsp = __rsp - 376; _v144 = _t670; _v152 = _t682; _v160 = _t660; _v168 = _t656; _v176 = r8; _v64 = *fs:0x28]; LM_Find_Link_Table_Entry(); _v136 = _v152; if(_v136 == 0 || ( *(_v136 + 122) & 65535) != 35 && ( *(_v136 + 122) & 65535) != 30) { _t265 = 18; goto L22; } else { _t474 = _v176; write_end_du(6, _t474, _v136 + 424); _v92 = 0; do { } while(_v92 <= 15); _t664 = _v136 + 368; _t685 = _v136 + 248; _t658 = ?_? ( &_v88); r8 = ?_? ( &_v88); _t673 = _v136 + 248; F1(); DebugPrint(0, _v136 + 248, ?_? ( &_v88), _v136 + 368, _v136 + 248, _v136 + 248); _v128 = _v136 + 248; r11d = *(_v128 + 23) & 0xff; r13d = *(_v128 + 21) & 0xff; r14d = *(_v128 + 20) & 0xff; r15d = *(_v128 + 19) & 0xff; _v180 = *(_v128 + 18) & 0xff; _v184 = *(_v128 + 17) & 0xff; _v188 = *(_v128 + 16) & 0xff; _v192 = *(_v128 + 15) & 0xff; _v196 = *(_v128 + 14) & 0xff; _v200 = *(_v128 + 13) & 0xff; _v204 = *(_v128 + 12) & 0xff; _v208 = *(_v128 + 11) & 0xff; _v212 = *(_v128 + 10) & 0xff; _v216 = *(_v128 + 9) & 0xff; r12d = *(_v128 + 8) & 0xff; r10d = *(_v128 + 7) & 0xff; r9d = *(_v128 + 6) & 0xff; r8d = *(_v128 + 5) & 0xff; _v248 = r11d; _v256 = *(_v128 + 22) & 0xff; _v264 = r13d; _v272 = r14d; _v280 = r15d; _v288 = _v180; _v296 = _v184; _v304 = _v188; _v312 = _v192; _v320 = _v196; _v328 = _v200; _v336 = _v204; _v344 = _v208; _v352 = _v212; _v360 = _v216; _v368 = r12d; _v376 = r10d; _v384 = r9d; _v392 = r8d; _v400 = *(_v128 + 4) & 0xff; *__rsp = *(_v128 + 3) & 0xff; r9d = *(_v128 + 2) & 0xff; r8d = *(_v128 + 1) & 0xff; DebugPrint(0, _v128, &_v88, _v136 + 368, _v136 + 248, _v136 + 248); _v120 = _v136 + 368; _v220 = *(_v120 + 14) & 0xff; r15d = *(_v120 + 13) & 0xff; r14d = *(_v120 + 12) & 0xff; r13d = *(_v120 + 11) & 0xff; r12d = *(_v120 + 10) & 0xff; r11d = *(_v120 + 8) & 0xff; r10d = *(_v120 + 7) & 0xff; r9d = *(_v120 + 6) & 0xff; r8d = *(_v120 + 5) & 0xff; _v224 = *(_v120 + 2) & 0xff; _v312 = *(_v120 + 15) & 0xff; _v320 = _v220; _v328 = r15d; _v336 = r14d; _v344 = r13d; _v352 = r12d; _v360 = *(_v120 + 9) & 0xff; _v368 = r11d; _v376 = r10d; _v384 = r9d; _v392 = r8d; _v400 = *(_v120 + 4) & 0xff; *__rsp = *(_v120 + 3) & 0xff; r9d = _v224; r8d = *(_v120 + 1) & 0xff; DebugPrint(0, _v120, _t658, _v136 + 368, _v136 + 248, _v136 + 248); _v112 = _v136 + 296; _v228 = *(_v112 + 14) & 0xff; r15d = *(_v112 + 13) & 0xff; r14d = *(_v112 + 12) & 0xff; r13d = *(_v112 + 11) & 0xff; r12d = *(_v112 + 10) & 0xff; r11d = *(_v112 + 8) & 0xff; r10d = *(_v112 + 7) & 0xff; r9d = *(_v112 + 6) & 0xff; r8d = *(_v112 + 5) & 0xff; _v232 = *(_v112 + 2) & 0xff; _v312 = *(_v112 + 15) & 0xff; _v320 = _v228; _v328 = r15d; _v336 = r14d; _v344 = r13d; _v352 = r12d; _v360 = *(_v112 + 9) & 0xff; _v368 = r11d; _v376 = r10d; _v384 = r9d; _v392 = r8d; _v400 = *(_v112 + 4) & 0xff; *__rsp = *(_v112 + 3) & 0xff; r9d = _v232; r8d = *(_v112 + 1) & 0xff; DebugPrint(0, _v112, _t658, _t664, _t673, _t685); _v104 = &_v88; _v236 = *(_v104 + 14) & 0xff; r15d = *(_v104 + 13) & 0xff; r14d = *(_v104 + 12) & 0xff; r13d = *(_v104 + 11) & 0xff; r12d = *(_v104 + 10) & 0xff; r11d = *(_v104 + 8) & 0xff; r10d = *(_v104 + 7) & 0xff; r9d = *(_v104 + 6) & 0xff; r8d = *(_v104 + 5) & 0xff; _v240 = *(_v104 + 2) & 0xff; _v312 = *(_v104 + 15) & 0xff; _v320 = _v236; _v328 = r15d; _v336 = r14d; _v344 = r13d; _v352 = r12d; _v360 = *(_v104 + 9) & 0xff; _v368 = r11d; _v376 = r10d; _v384 = r9d; _v392 = r8d; _v400 = *(_v104 + 4) & 0xff; *__rsp = *(_v104 + 3) & 0xff; r9d = _v240; r8d = *(_v104 + 1) & 0xff; DebugPrint(0, _v104, _t658, _t664, _t673, _t685); if(_Compare_16byte_Arrays( ?_? ( &_v88), &_v88, _v136 + 296) != 1) { *(_v136 + 229) = 2; L13: _t630 = _v136; _t383 = *(_t630 + 216) & 255; _t468 = ( *(_t630 + 216) & 255) - 1; if(_t468 != 0) { if(( *(_v136 + 230) & 255) != 0) { if(( *(_v136 + 229) & 255) != 1) { if(( *(_v136 + 229) & 255) == 2) { r8d = 5; LMssp_Send_LMP_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } } else { r8d = 64; LMP_Send_Accepted(); BTRAND_Rand128Bit( *( *((intOrPtr*)(_v136 + 432)) + 11) & 0xff, _v136 + 232); LMssp_Send_LMP_Simple_Pairing_Number(); *(_v136 + 122) = 30; } } } else { BTRAND_Rand128Bit(_t383, _v136 + 232); LMssp_Send_LMP_Simple_Pairing_Number(); *(_v136 + 122) = 30; } _t265 = 0; L22: if(_t468 != 0) { __stack_chk_fail(); } __rsp = &(__rsp[0x5e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return _t265; } *(_v136 + 229) = 1; _t651 = _v136; if(( *(_t651 + 226) & 255) != 0) { } else { _v92 = 0; do { } while(_v92 <= 15); } goto L13; } } LMssp_LMP_OOB_Failed( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004877C9 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; if(( *(_v24 + 218) & 255) != 1) { return 36; } __edx = 5; _LMssp_Send_Simple_Pairing_Complete_Event(5); return 0; } LMssp_Send_Keypress_Notification( signed char __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00487812 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; if(( *(_v16 + 191038) & 8) != 0 && ( *(_v16 + 65881) & 255) == 1 && ( *(_v16 + 66099) & 255) == 2) { r8d = _v28 & 255; LMP_Send_Keypress_Notification(); return 0; } return 12; } LMssp_LM_Remote_OOB_Data_Request_Negative_Reply( _unknown_ __rax // r53 ) {// addr = 0x004878B0 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t57; // _t57 long long _t60; // _t60 long long _t65; // _t65 _v32 = _t60; _v40 = _t65; _v48 = _t57; LM_Find_Link_Table_Entry(); _v16 = _v40; if(_v16 != 0 && ( *(_v16 + 122) & 65535) == 35 && ( *(_v16 + 216) & 255) == 1) { write_end_du(6, _v48, _v16 + 424); LMP_Send_OOB_Failed(); _LMssp_Send_Simple_Pairing_Complete_Event(5); return 0; } return 31; } LMssp_LMP_IO_Capability_Response() {// addr = 0x00487994 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t111; // _t111 long long _t115; // _t115 long long _t122; // _t122 _v32 = _t115; _v40 = _t122; _v48 = _t111; _v11 = *_v48 & 255; _v10 = (_v48[1]) & 255; _v9 = (_v48[2]) & 255; if(( *(_v40 + 216) & 255) == 0 || ( *(_v40 + 122) & 65535) != 22) { return 31; } if(_v11 > 3 || _v10 > 1 || _v9 > 5) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v32 + 60216); _LMssp_Send_Simple_Pairing_Complete_Event(5); } else { *(_v40 + 228) = _v11 & 255; *(_v40 + 226) = _v10 & 255; *(_v40 + 227) = _v9 & 255; _LMssp_Determine_Auth_Type(); r9 = _v40 + 227; r8 = _v40 + 226; EG_Event_Composer(0); *(_v40 + 122) = 26; *((char*)(_v32 + 66098)) = 48; *__rsp = 48; r9d = 1; r8d = 1; LMP_Send_Encap_Header(); } return 0; } LMssp_LMP_IO_Capability_Request( _unknown_ __eax, // r0 _unknown_ __edx // r3 ) {// addr = 0x00487B4A signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t194; // _t194 long long _t201; // _t201 long long _t210; // _t210 _v32 = _t201; _v40 = _t210; _v48 = _t194; _v11 = *_v48 & 255; _v10 = (_v48[1]) & 255; _v9 = (_v48[2]) & 255; *(_v40 + 225) = 0; if(( *(_v32 + 65881) & 255) == 0) { return 55; } if(( *(_v40 + 216) & 255) == 0) { *(_v40 + 216) = 0; *(_v40 + 217) = ( *(_v40 + 2) & 255) == 0; *(_v40 + 15) = *(_v40 + 217) & 255; *(_v40 + 14) = *(_v40 + 15) & 255; goto L7; } else { if(( *(_v40 + 2) & 255) != 0) { *(_v40 + 216) = 0; *(_v40 + 217) = 0; *(_v40 + 15) = *(_v40 + 217) & 255; *(_v40 + 14) = *(_v40 + 15) & 255; _LMssp_Determine_Auth_Type(); r9d = _v10 & 0xff; r8d = _v11 & 0xff; *__rsp = _v9 & 0xff; LMP_Send_IO_Capacity_Res(); *(_v40 + 122) = 24; L7: if((_v11 & 255) > 3 || (_v10 & 255) > 1 || (_v9 & 255) > 5) { LM_Encode_LMP_Not_Accepted_Ext_PDU(_v32 + 60216); _LMssp_Send_Simple_Pairing_Complete_Event(31); } else { *(_v40 + 228) = _v11 & 255; *(_v40 + 226) = _v10 & 255; *(_v40 + 227) = _v9 & 255; r9 = &_v9; r8 = &_v10; EG_Event_Composer(0); if(( *(_v40 + 122) & 65535) != 24) { EG_Event_Composer(0); *((char*)(_v40 + 219)) = DM_Set_Timer(); *(_v40 + 122) = 21; *((char*)(_v32 + 66098)) = 48; } } return 0; } return 35; } } LMssp_LMP_Encapsulated_Header( signed char* __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00487E05 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; if(( *(_v24 + 122) & 65535) != 24) { return 12; } if(( *_v32 & 255) == 1 && ((_v32[1]) & 255) == 1 && ((_v32[2]) & 255) == 48) { *((char*)(_v24 + 223)) = 48; r8d = 61; LMP_Send_Accepted(); *(_v24 + 122) = 25; return 0; } return 31; } LMssp_LMP_DHkey_Check( _unknown_ __rax // r53 ) {// addr = 0x00487EC9 long long _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 char _v88; // _cfa_ffffffa8 char _v104; // _cfa_ffffff98 unsigned int _v105; // _cfa_ffffff97 unsigned int _v106; // _cfa_ffffff96 unsigned int _v107; // _cfa_ffffff95 unsigned int _v108; // _cfa_ffffff94 char _v120; // _cfa_ffffff88 signed char _v121; // _cfa_ffffff87 signed char _v122; // _cfa_ffffff86 signed int _v134; // _cfa_ffffff7a signed int _v135; // _cfa_ffffff79 char _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 long long _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 long long _v176; // _cfa_ffffff50 long long _v192; // _cfa_ffffff40 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t218; // _t218 _unknown_ _t280; // _t280 _unknown_ _t299; // _t299 char* _t306; // _t306 _unknown_ _t307; // _t307 intOrPtr _t308; // _t308 intOrPtr _t364; // _t364 char* _t367; // _t367 long long _t389; // _t389 _unknown_ _t391; // _t391 long long _t412; // _t412 long long _t433; // _t433 _v160 = _t412; _v168 = _t433; _v176 = _t389; _v32 = *fs:0x28]; _v144 = _v160 + 191072; LMutils_Translate_Bd_Addr_to_Byte_Array( &_v56, _v144); _t391 = _v168 + 424; _t306 = &_v40; LMutils_Translate_Bd_Addr_to_Byte_Array(_t306, _t391); _v122 = 0; do { } while(_v122 <= 5); _t308 = _v168; if(( *(_t308 + 122) & 65535) == 33) { L5: _v122 = 0; do { } while(_v122 <= 15); _v134 = *(_v168 + 228) & 255; _v135 = *(_v168 + 226) & 255; _v136 = *(_v168 + 227) & 255; if(( *(_v168 + 218) & 255) == 1) { r9 = &_v72; r8 = &_v136; _v192 = _v168 + 352; *__rsp = &_v88; F3(); L20: if(( *(_v168 + 216) & 255) == 0) { if(( *(_v168 + 225) & 255) != 0) { if(( *(_v168 + 221) & 255) != 2 || ( *(_v168 + 218) & 255) != 2) { if(_Compare_16byte_Arrays( ?_? ( &_v104), &_v104, _v168 + 352) != 1) { r9d = 5; r8d = 65; LMP_Send_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } else { *((char*)(_v168 + 220)) = 1; if(( *(_v168 + 221) & 255) == 1 || ( *(_v168 + 218) & 255) == 1) { r8d = 65; LMP_Send_Accepted(); _LMssp_Send_LMP_DH_Key_Check(); } } } else { r9d = 5; r8d = 65; LMP_Send_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } } } else { _t299 = _Compare_16byte_Arrays( ?_? ( &_v104), &_v104, _v168 + 352) - 1; if(_t299 != 0) { r9d = 5; r8d = 65; LMP_Send_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } else { r8d = 65; LMP_Send_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(0); _LMssp_Calculate_Link_Key(_v168); _LMssp_Mutual_Authentication(_v160, _v168); *(_v168 + 216) = 0; } } _t218 = 0; L35: if(_t299 == 0) { return _t218; } __stack_chk_fail(); return _t218; } _t364 = _v168; if(( *(_t364 + 218) & 255) != 3) { r8 = &_v72; _v192 = _v168 + 352; _t367 = &_v88; *__rsp = _t367; r9 = r8; r8 = &_v136; F3(); L15: _v121 = 0; while(_v121 <= 15) { *(_t367 + &Zero_Array) = 0; _v121 = _v121 + 1; } goto L20; } else { _v121 = 0; goto L12; do { } while(); goto L15; L12: if(_v121 <= 15) { *(__rbp + _t364 - 112) = 0; _v121 = _v121 + 1; goto L12; } else { _v105 = *(_v168 + 384); _v106 = ( *(_v168 + 384) & 65280) >> 8; _v107 = ( *(_v168 + 384) & 16711680) >> 16; _v108 = *(_v168 + 384) >> 24; r10 = _v168 + 232; r8 = &_v72; _t367 = &_v120; _v192 = _v168 + 352; *__rsp = &_v88; r9 = r8; r8 = &_v136; F3(); } goto L15; } } _t308 = _v168; if(( *(_t308 + 122) & 65535) != 31) { _t218 = 12; goto L35; } goto L5; } LMssp_LMP_Encapsulated_Payload() {// addr = 0x004885A6 long long _v64; // _cfa_ffffffc0 char _v88; // _cfa_ffffffa8 char _v89; // _cfa_ffffffa7 signed int _v90; // _cfa_ffffffa6 signed int _v91; // _cfa_ffffffa5 signed char _v92; // _cfa_ffffffa4 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 signed int _v148; // _cfa_ffffff6c signed int _v152; // _cfa_ffffff68 signed int _v156; // _cfa_ffffff64 signed int _v160; // _cfa_ffffff60 signed int _v164; // _cfa_ffffff5c signed int _v168; // _cfa_ffffff58 signed int _v172; // _cfa_ffffff54 signed int _v176; // _cfa_ffffff50 signed int _v180; // _cfa_ffffff4c signed int _v184; // _cfa_ffffff48 signed int _v188; // _cfa_ffffff44 signed int _v192; // _cfa_ffffff40 signed int _v196; // _cfa_ffffff3c signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 signed int _v216; // _cfa_ffffff28 signed int _v224; // _cfa_ffffff20 signed int _v232; // _cfa_ffffff18 signed int _v240; // _cfa_ffffff10 signed int _v248; // _cfa_ffffff08 signed int _v256; // _cfa_ffffff00 signed int _v264; // _cfa_fffffef8 signed int _v272; // _cfa_fffffef0 signed int _v280; // _cfa_fffffee8 signed int _v288; // _cfa_fffffee0 signed int _v296; // _cfa_fffffed8 signed int _v304; // _cfa_fffffed0 signed int _v312; // _cfa_fffffec8 signed int _v320; // _cfa_fffffec0 signed int _v328; // _cfa_fffffeb8 signed int _v336; // _cfa_fffffeb0 signed int _v344; // _cfa_fffffea8 signed int _v352; // _cfa_fffffea0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t457; // _t457 signed int _t459; // _t459 signed int _t465; // _t465 signed int _t658; // _t658 signed int _t659; // _t659 signed int _t660; // _t660 _unknown_ _t661; // _t661 intOrPtr _t724; // _t724 intOrPtr _t727; // _t727 intOrPtr _t752; // _t752 intOrPtr _t755; // _t755 intOrPtr _t767; // _t767 intOrPtr _t777; // _t777 intOrPtr _t791; // _t791 intOrPtr _t798; // _t798 intOrPtr _t920; // _t920 intOrPtr _t921; // _t921 intOrPtr _t923; // _t923 _unknown_ _t956; // _t956 long long _t994; // _t994 long long _t1023; // _t1023 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 328; _v128 = _t994; _v136 = _t1023; _v144 = _t965; _v64 = *fs:0x28]; __eflags = ( *(_v136 + 122) & 65535) - 25; if(__eflags == 0) { _t724 = _v136; _v90 = 48 - ( *(_t724 + 223) & 255); _v89 = 3; __eflags = _v90; if(_v90 != 0) { __eflags = _v90 - 16; if(_v90 != 16) { __eflags = _v90 - 32; if(_v90 != 32) { goto L19; } _v92 = 0; while(1) { __eflags = _v92 - 15; if(_v92 > 15) { goto L19; } _t658 = *(_t724 + _v144) & 255; _t965 = _v136; _t724 = 15 - (_v92 & 255); *(_v136 + _t724 + 272) = _t658; _v92 = _v92 + 1; } goto L19; } _v92 = 0; while(1) { __eflags = _v92 - 7; if(_v92 > 7) { break; } _t659 = *(_t724 + _v144) & 255; _t965 = _v136; _t724 = 7 - (_v92 & 255); *(_v136 + _t724 + 248) = _t659; _v92 = _v92 + 1; } _v92 = 0; while(1) { __eflags = _v92 - 7; if(_v92 > 7) { break; } _t660 = *(_t724 + 8 + _v144) & 255; _t965 = _v136; _t724 = 23 - (_v92 & 255); *(_v136 + _t724 + 272) = _t660; _v92 = _v92 + 1; } goto L19; } else { _v92 = 0; do { __eflags = _v92 - 15; } while(_v92 <= 15); L19: *((char*)(_v136 + 223)) = _v136 - 16; _t727 = _v136; __eflags = *(_t727 + 223) & 255; if(__eflags == 0) { _v91 = 1; _v92 = 0; while(1) { __eflags = _v92 - 23; if(_v92 > 23) { break; } _t965 = _v136; __eflags = ( *(_t965 + _t727 + 248) & 255) - ( *(_t727 + &DebugPublicKey_x) & 255); if(( *(_t965 + _t727 + 248) & 255) != ( *(_t727 + &DebugPublicKey_x) & 255)) { L24: _v91 = 0; L25: _v92 = _v92 + 1; continue; } _t965 = _v136; __eflags = ( *(_t965 + _t727 + 272) & 255) - ( *(_t727 + &DebugPublicKey_y) & 255); if(( *(_t965 + _t727 + 272) & 255) == ( *(_t727 + &DebugPublicKey_y) & 255)) { goto L25; } goto L24; } __eflags = _v91 - 1; if(_v91 != 1) { *(_v136 + 113) = 0; } else { *(_v136 + 113) = 1; DebugPrint(0, _v136, _t956, _t965, _t994, _t1023); } __eflags = *(_v136 + 216) & 255; if(__eflags == 0) { _LMssp_Init_DHKey_Calculation(); r8d = 62; LMP_Send_Accepted(); *(_v136 + 122) = 26; *__rsp = 48; r9d = 1; r8d = 1; LMP_Send_Encap_Header(); goto L67; } else { _LMssp_Determine_Auth_Type(); _t459 = *(_v136 + 218) & 0xff; __eflags = _t459 - 2; if(__eflags == 0) { *(_v136 + 122) = 28; _LMssp_Init_DHKey_Calculation(); r8d = 62; LMP_Send_Accepted(); L67: _t457 = 0; goto L68; } __eflags = _t459 - 3; if(_t459 == 3) { _t752 = _v128; __eflags = *(_t752 + 66099) & 255; if(( *(_t752 + 66099) & 255) == 0) { L53: _t465 = *(_v136 + 228) & 255; __eflags = _t465 - 2; if(_t465 != 2) { L58: __eflags = ( *(_v128 + 66099) & 255) - 2; if(__eflags != 0) { L66: goto L67; } _t755 = _v136; __eflags = ( *(_t755 + 228) & 255) - 1; if(( *(_t755 + 228) & 255) == 1) { L62: EG_Event_Composer(0); *((char*)(_v136 + 219)) = DM_Set_Timer(); _LMssp_Init_DHKey_Calculation(); r8d = 62; LMP_Send_Accepted(); *(_v136 + 122) = 34; goto L66; } _t767 = _v136; __eflags = *(_t767 + 228) & 255; if(( *(_t767 + 228) & 255) == 0) { goto L62; } __eflags = ( *(_v136 + 228) & 255) - 2; if(__eflags != 0) { goto L66; } goto L62; } BTRAND_Rand(); *((intOrPtr*)(_v136 + 384)) = _t465 - (_t465 * 1125899907 >> 32 >> 18) * 1000000; *(_v136 + 222) = 0; *(_v136 + 221) = 1; BTRAND_Rand128Bit(EG_Event_Composer(0), _v136 + 232); _t777 = _v136; __eflags = *(_t777 + 384) & 1; if(( *(_t777 + 384) & 1) == 0) { Zero_Array = 128; } else { Zero_Array = 129; } r8 = &_v88; F1(); _LMssp_Init_DHKey_Calculation(); r8d = 62; LMP_Send_Accepted(); LMssp_Send_LMP_Simple_Pairing_Confirm( &_v88); *(_v136 + 122) = 28; goto L66; } _t791 = _v128; __eflags = ( *(_t791 + 66099) & 255) - 1; if(( *(_t791 + 66099) & 255) != 1) { goto L58; } goto L53; } __eflags = _t459 - 1; if(__eflags != 0) { goto L67; } _LMssp_Init_DHKey_Calculation(); r8d = 62; LMP_Send_Accepted(); _t798 = _v128; __eflags = ( *(_t798 + 66096) & 255) - 1; if(( *(_t798 + 66096) & 255) != 1) { _v92 = 0; while(1) { __eflags = _v92 - 15; if(_v92 > 15) { break; } *(_v136 + _t798 + 296) = 0; *(_v136 + _t798 + 368) = 0; *(_t798 + &Zero_Array) = 0; _v92 = _v92 + 1; } r8 = _v136 + 296; F1(); DebugPrint(0, _v136 + 248, _v136 + 296, _v136 + 368, _v136 + 248, _v136 + 248); _v120 = _v136 + 248; r11d = *(_v120 + 23) & 0xff; r13d = *(_v120 + 21) & 0xff; r14d = *(_v120 + 20) & 0xff; r15d = *(_v120 + 19) & 0xff; _v148 = *(_v120 + 18) & 0xff; _v152 = *(_v120 + 17) & 0xff; _v156 = *(_v120 + 16) & 0xff; _v160 = *(_v120 + 15) & 0xff; _v164 = *(_v120 + 14) & 0xff; _v168 = *(_v120 + 13) & 0xff; _v172 = *(_v120 + 12) & 0xff; _v176 = *(_v120 + 11) & 0xff; _v180 = *(_v120 + 10) & 0xff; _v184 = *(_v120 + 9) & 0xff; r12d = *(_v120 + 8) & 0xff; r10d = *(_v120 + 7) & 0xff; r9d = *(_v120 + 6) & 0xff; r8d = *(_v120 + 5) & 0xff; _v200 = r11d; _v208 = *(_v120 + 22) & 0xff; _v216 = r13d; _v224 = r14d; _v232 = r15d; _v240 = _v148; _v248 = _v152; _v256 = _v156; _v264 = _v160; _v272 = _v164; _v280 = _v168; _v288 = _v172; _v296 = _v176; _v304 = _v180; _v312 = _v184; _v320 = r12d; _v328 = r10d; _v336 = r9d; _v344 = r8d; _v352 = *(_v120 + 4) & 0xff; *__rsp = *(_v120 + 3) & 0xff; r9d = *(_v120 + 2) & 0xff; r8d = *(_v120 + 1) & 0xff; DebugPrint(0, _v120, _v136 + 296, _v136 + 368, _v136 + 248, _v136 + 248); _v112 = _v136 + 296; _v188 = *(_v112 + 14) & 0xff; r15d = *(_v112 + 13) & 0xff; r14d = *(_v112 + 12) & 0xff; r13d = *(_v112 + 11) & 0xff; r12d = *(_v112 + 10) & 0xff; r11d = *(_v112 + 8) & 0xff; r10d = *(_v112 + 7) & 0xff; r9d = *(_v112 + 6) & 0xff; r8d = *(_v112 + 5) & 0xff; _v192 = *(_v112 + 2) & 0xff; _v264 = *(_v112 + 15) & 0xff; _v272 = _v188; _v280 = r15d; _v288 = r14d; _v296 = r13d; _v304 = r12d; _v312 = *(_v112 + 9) & 0xff; _v320 = r11d; _v328 = r10d; _v336 = r9d; _v344 = r8d; _v352 = *(_v112 + 4) & 0xff; *__rsp = *(_v112 + 3) & 0xff; r9d = _v192; r8d = *(_v112 + 1) & 0xff; DebugPrint(0, _v112, _v136 + 296, _v136 + 368, _v136 + 248, _v136 + 248); _v104 = _v136 + 368; _v196 = *(_v104 + 14) & 0xff; r15d = *(_v104 + 13) & 0xff; r14d = *(_v104 + 12) & 0xff; r13d = *(_v104 + 11) & 0xff; r12d = *(_v104 + 10) & 0xff; r11d = *(_v104 + 8) & 0xff; r10d = *(_v104 + 7) & 0xff; r9d = *(_v104 + 6) & 0xff; r8d = *(_v104 + 5) & 0xff; _v200 = *(_v104 + 2) & 0xff; _v264 = *(_v104 + 15) & 0xff; _v272 = _v196; _v280 = r15d; _v288 = r14d; _v296 = r13d; _v304 = r12d; _v312 = *(_v104 + 9) & 0xff; _v320 = r11d; _v328 = r10d; _v336 = r9d; _v344 = r8d; _v352 = *(_v104 + 4) & 0xff; *__rsp = *(_v104 + 3) & 0xff; r9d = _v200; r8d = *(_v104 + 1) & 0xff; DebugPrint(0, _v104, _v136 + 296, _v136 + 368, _v136 + 248, _v136 + 248); *(_v136 + 229) = 1; _t920 = _v136; __eflags = *(_t920 + 226) & 255; if(( *(_t920 + 226) & 255) != 0) { L43: _t921 = _v136; _t589 = *(_t921 + 216) & 255; __eflags = ( *(_t921 + 216) & 255) - 1; if(( *(_t921 + 216) & 255) != 1) { __eflags = *(_v136 + 230) & 255; if(__eflags != 0) { _t923 = _v136; __eflags = ( *(_t923 + 229) & 255) - 1; if(( *(_t923 + 229) & 255) != 1) { __eflags = ( *(_v136 + 229) & 255) - 2; if(__eflags == 0) { r8d = 5; LMssp_Send_LMP_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } } else { r8d = 64; LMP_Send_Accepted(); BTRAND_Rand128Bit( *( *((intOrPtr*)(_v136 + 432)) + 11) & 0xff, _v136 + 232); LMssp_Send_LMP_Simple_Pairing_Number(); *(_v136 + 122) = 30; } } } else { BTRAND_Rand128Bit(_t589, _v136 + 232); LMssp_Send_LMP_Simple_Pairing_Number(); *(_v136 + 122) = 30; } L65: goto L67; } _v92 = 0; while(1) { __eflags = _v92 - 15; if(_v92 > 15) { goto L43; } *(_v128 + _t920 + 66176) = 0; _v92 = _v92 + 1; } goto L43; } EG_Event_Composer(0); *(_v136 + 122) = 35; goto L65; } } r8d = 62; LMP_Send_Accepted(); goto L67; } } else { _t457 = 12; L68: if(__eflags != 0) { __stack_chk_fail(); } __rsp = &(__rsp[0x52]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return _t457; } } LMspp_Send_LMP_Encapsulated_Payload() {// addr = 0x00489428 long long _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 char _v57; // _cfa_ffffffc7 signed char _v58; // _cfa_ffffffc6 signed int _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t113; // _t113 signed int _t115; // _t115 signed int _t117; // _t117 signed int _t119; // _t119 _unknown_ _t122; // _t122 signed int _t124; // _t124 signed int _t139; // _t139 long long _t141; // _t141 _v80 = _t139; _v88 = _t141; _v32 = *fs:0x28]; _t124 = _v80; _v57 = 48 - ( *(_t124 + 66098) & 255); if(_v57 != 0) { if(_v57 != 16) { if(_v57 != 32) { } else { _v58 = 0; while(_v58 <= 15) { _t113 = *(_v80 + _t124 + 66128) & 255; _t124 = _v58 & 255; *(__rbp + _t124 - 48) = _t113; _v58 = _v58 + 1; } } } else { _v58 = 0; while(_v58 <= 7) { _t115 = *(_v80 + _t124 + 66104) & 255; _t124 = _v58 & 255; *(__rbp + _t124 - 48) = _t115; _v58 = _v58 + 1; } _v58 = 0; while(_v58 <= 7) { _t117 = *(_v80 + _t124 + 66128) & 255; _t124 = _t124 + 8; *(__rbp + _t124 - 48) = _t117; _v58 = _v58 + 1; } } } else { _v58 = 0; while(_v58 <= 15) { _t119 = *(_v80 + _t124 + 66104) & 255; _t124 = _v58 & 255; *(__rbp + _t124 - 48) = _t119; _v58 = _v58 + 1; } } _t122 = _v57 - 48; if(_t122 != 0) { *((char*)(_v80 + 66098)) = _v80 - 16; r8 = &_v56; LMP_Send_Encap_Payload(); } if(_t122 != 0) { __stack_chk_fail(); return 0; } return 0; } LMssp_Send_LMP_Not_Accepted() {// addr = 0x004895E3 short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v31; // _cfa_ffffffe1 char _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 char _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 signed char _t32; // _t32 long long _t44; // _t44 _v48 = _t44; _v56 = __rsi; _v68 = r8d; _v60 = _t32; _v64 = __ecx; RtlFillMemory(24, 0, &_v40); _v31 = *(_v56 + 217) & 255; _v22 = 4; _v32 = _v68; _v24 = _v60 & 255; _v18 = 0; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } _LMssp_Init_DHKey_Calculation() {// addr = 0x00489676 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t15; // _t15 long long _t18; // _t18 _v16 = _t15; _v24 = _t18; r8 = _v24; LMecc_Generate_ECC_Key(); return 0; } LMssp_Send_LMP_Simple_Pairing_Number() {// addr = 0x004896C1 signed int _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 signed char _v57; // _cfa_ffffffc7 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t41; // _t41 signed int _t42; // _t42 long long _t52; // _t52 long long _t54; // _t54 _v80 = _t52; _v88 = _t54; _t42 = *fs:0x28]; _v32 = _t42; _v57 = 0; while(1) { __eflags = _v57 - 15; if(__eflags > 0) { break; } _t41 = *(_v88 + _t42 + 232) & 255; _t42 = _v57 & 255; *(__rbp + _t42 - 48) = _t41; _v57 = _v57 + 1; } r8 = &_v56; LMP_Send_Simple_Pairing_Number(); if(__eflags != 0) { __stack_chk_fail(); return 0; } return 0; } LMssp_Send_LMP_Simple_Pairing_Confirm( long long __rdx // r56 ) {// addr = 0x00489781 signed int _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 signed char _v57; // _cfa_ffffffc7 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t38; // _t38 signed int _t39; // _t39 long long _t51; // _t51 _v80 = _t51; _v88 = __rsi; _v96 = __rdx; _t39 = *fs:0x28]; _v32 = _t39; _v57 = 0; while(1) { __eflags = _v57 - 15; if(__eflags > 0) { break; } _t38 = *(_t39 + _v96) & 255; _t39 = _v57 & 255; *(__rbp + _t39 - 48) = _t38; _v57 = _v57 + 1; } r8 = &_v56; LMP_Send_Simple_Pairing_Confirm(); if(__eflags != 0) { __stack_chk_fail(); return 0; } return 0; } _LMssp_Send_LMP_DH_Key_Check() {// addr = 0x0048983A long long _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 char _v88; // _cfa_ffffffa8 char _v104; // _cfa_ffffff98 signed char _v105; // _cfa_ffffff97 signed int _v118; // _cfa_ffffff8a signed int _v119; // _cfa_ffffff89 char _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 long long _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t163; // _t163 _unknown_ _t167; // _t167 char* _t176; // _t176 _unknown_ _t177; // _t177 signed int _t180; // _t180 long long _t217; // _t217 signed int _t225; // _t225 _v144 = _t217; _v152 = _t225; _v32 = *fs:0x28]; _v128 = _v144 + 191072; _v118 = *(_v144 + 66099) & 255; _v119 = *(_v144 + 66096) & 255; _v120 = *(_v144 + 66097) & 255; LMutils_Translate_Bd_Addr_to_Byte_Array( &_v56, _v128); _t176 = &_v40; LMutils_Translate_Bd_Addr_to_Byte_Array(_t176, _v152 + 424); _v105 = 0; do { } while(_v105 <= 5); _v105 = 0; while(_v105 <= 15) { *(_t176 + &Zero_Array) = 0; _v105 = _v105 + 1; } if(( *(_v152 + 218) & 255) != 2) { if(( *(_v152 + 218) & 255) != 3) { _t180 = _v152; if(( *(_t180 + 218) & 255) == 1) { r9 = &_v88; r8 = &_v120; _v160 = _v152 + 352; _t180 = &_v72; *__rsp = _t180; F3(); } } else { *7348415 = *(_v152 + 384); *7348414 = ( *(_v152 + 384) & 65280) >> 8; *7348413 = ( *(_v152 + 384) & 16711680) >> 16; *7348412 = *(_v152 + 384) >> 24; r8 = &_v88; _v160 = _v152 + 352; _t180 = &_v72; *__rsp = _t180; r9 = r8; r8 = &_v120; F3(); } } else { r8 = &_v88; _v160 = _v152 + 352; _t180 = &_v72; *__rsp = _t180; r9 = r8; r8 = &_v120; F3(); } _v105 = 0; while(1) { _t167 = _v105 - 15; if(_t167 > 0) { break; } _t163 = *(_v152 + _t180 + 352) & 255; _t180 = _v105 & 255; *(__rbp + _t180 - 96) = _t163; _v105 = _v105 + 1; } *((short*)(_v152 + 122)) = 32; r8 = &_v104; LMP_Send_DHkey_Check(); if(_t167 == 0) { return 0; } __stack_chk_fail(); return 0; } LMssp_LMP_Simple_Pairing_Confirm( signed int __rdx, // r56 long long __rdi, // r57 signed int __rsi // r58 ) {// addr = 0x00489BBC long long _v32; // _cfa_ffffffe0 char _v56; // _cfa_ffffffc8 signed char _v57; // _cfa_ffffffc7 long long _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char _t79; // _t79 signed int _t99; // _t99 signed int _t102; // _t102 signed int _t103; // _t103 _unknown_ _t114; // _t114 signed int _t118; // _t118 signed int _t119; // _t119 signed int _t122; // _t122 signed int _t139; // _t139 signed int _t154; // _t154 _t154 = __rdx; _v80 = __rdi; _v88 = __rsi; _v96 = __rdx; _v32 = *fs:0x28]; if(( *(_v88 + 218) & 255) != 2) { if(( *(_v88 + 218) & 255) != 3) { L19: _t79 = 0; L20: if(_t114 == 0) { return _t79; } __stack_chk_fail(); return _t79; } _t118 = _v88; if(( *(_t118 + 216) & 255) == 0) { _t119 = _v88; *((char*)(_t119 + 220)) = 1; _v57 = 0; while(_v57 <= 15) { _t99 = *(_t154 - _t119 + _v96) & 255; _t154 = _v88; _t119 = _v57 & 255; *(_t154 + _t119 + 296) = _t99; _v57 = _v57 + 1; } _t122 = _v88; _t82 = *(_t122 + 221) & 255; if(( *(_t122 + 221) & 255) == 1) { BTRAND_Rand128Bit(_t82, _v88 + 232); Zero_Array = ( *(_v88 + 384) >> ( *(_v88 + 222) & 0xff) & 1) + -128; r8 = &_v56; F1(); LMssp_Send_LMP_Simple_Pairing_Confirm( &_v56); *((short*)(_v88 + 122)) = 29; } goto L19; } _v57 = 0; while(_v57 <= 15) { _t102 = *(_t154 - _t118 + _v96) & 255; _t154 = _v88; _t118 = _v57 & 255; *(_t154 + _t118 + 296) = _t102; _v57 = _v57 + 1; } *((short*)(_v88 + 122)) = 30; LMssp_Send_LMP_Simple_Pairing_Number(); goto L19; } if(( *(_v88 + 216) & 255) == 0) { L7: _t79 = 12; goto L20; } _t139 = _v88; _t94 = *(_t139 + 122) & 65535; if(( *(_t139 + 122) & 65535) != 28) { goto L7; } _v57 = 0; while(1) { _t114 = _v57 - 15; if(_t114 > 0) { break; } _t94 = _v57 & 255; _t103 = *(_t154 - _t139 + _v96) & 255; _t154 = _v88; _t139 = _v57 & 255; *(_t154 + _t139 + 296) = _t103; _v57 = _v57 + 1; } *((short*)(_v88 + 122)) = 30; BTRAND_Rand128Bit(_t94, _v88 + 232); LMssp_Send_LMP_Simple_Pairing_Number(); goto L19; } LMssp_LMP_Simple_Pairing_Number( long long __rdx // r56 ) {// addr = 0x00489E1B long long _v32; // _cfa_ffffffe0 signed char _v37; // _cfa_ffffffdb signed char _v38; // _cfa_ffffffda signed char _v39; // _cfa_ffffffd9 signed char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 char _v73; // _cfa_ffffffb7 signed int _v80; // _cfa_ffffffb0 char _v84; // _cfa_ffffffac long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t351; // _t351 _unknown_ _t408; // _t408 long long _t409; // _t409 intOrPtr _t464; // _t464 long long _t544; // _t544 long long _t569; // _t569 long long _t601; // _t601 _t544 = __rdx; _v96 = _t569; _v104 = _t601; _v112 = __rdx; _t409 = *fs:0x28]; _v32 = _t409; _v84 = 0; _v73 = 0; do { } while(_v73 <= 15); if(( *(_v104 + 218) & 255) == 1) { if(( *(_v104 + 216) & 255) != 1) { *((char*)(_v104 + 230)) = 1; if(( *(_v104 + 229) & 255) != 1) { if(( *(_v104 + 229) & 255) == 2) { r8d = 5; LMssp_Send_LMP_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } } else { r8d = 64; LMP_Send_Accepted(); BTRAND_Rand128Bit( *( *((intOrPtr*)(_v104 + 432)) + 11) & 0xff, _v104 + 232); LMssp_Send_LMP_Simple_Pairing_Number(); *(_v104 + 122) = 30; } } else { if(( *(_v104 + 229) & 255) == 1 || ( *(_v96 + 66096) & 255) == 0) { r8d = 64; LMP_Send_Accepted(); if(( *(_v104 + 225) & 255) != 0) { _LMssp_Send_LMP_DH_Key_Check(); *(_v104 + 122) = 32; } } else { if(( *(_v104 + 229) & 255) == 2) { r8d = 5; LMssp_Send_LMP_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } } } L42: if(_t408 == 0) { return 0; } __stack_chk_fail(); return 0; } if(( *(_v104 + 216) & 255) != 0 || ( *(_v104 + 122) & 65535) != 29) { if(( *(_v104 + 122) & 65535) == 29) { if(( *(_v104 + 218) & 255) != 2) { if(( *(_v104 + 218) & 255) == 3) { Zero_Array = ( *(_v104 + 384) >> ( *(_v104 + 222) & 0xff) & 1) + -128; r8 = &_v72; F1(); } } else { Zero_Array = 0; r8 = &_v72; F1(); } if(_Compare_16byte_Arrays( ?_? ( &_v72), &_v72, _v104 + 296) != 1) { r9d = 5; r8d = 64; LMP_Send_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } else { LMP_Send_Accepted_Tag_Log_Opcode( *(_v104 + 217) & 0xff, 64, _v96, _v104); if(( *(_v104 + 218) & 255) != 2) { if(( *(_v104 + 218) & 255) == 3 && ( *(_v104 + 216) & 255) != 0) { *(_v104 + 222) = _v104 + 1; Zero_Array = ( *(_v104 + 384) >> ( *(_v104 + 222) & 0xff) & 1) + -128; _t464 = _v104; _t289 = *(_t464 + 222) & 255; if(( *(_t464 + 222) & 255) == 20) { *((char*)(_v104 + 221)) = 1; if(( *(_v104 + 225) & 255) != 0) { _LMssp_Send_LMP_DH_Key_Check(); *(_v104 + 122) = 32; } } else { BTRAND_Rand128Bit(_t289, _v104 + 232); if(( *(_v104 + 216) & 255) != 0) { r8 = &_v56; F1(); LMssp_Send_LMP_Simple_Pairing_Confirm( &_v56); *(_v104 + 122) = 28; } } } } else { r8 = &_v40; G(); _v80 = (_v37 & 0xff) + ((_v38 & 0xff) + ((_v39 & 0xff) + ((_v40 & 0xff) << 8) << 8) << 8); _v84 = _v80 - (_v80 * 1125899907 >> 32 >> 18) * 1000000; EG_Event_Composer(0); *((char*)(_v104 + 219)) = DM_Set_Timer(); *(_v104 + 122) = 31; } } } } else { _t408 = ( *(_v104 + 218) & 255) - 2; if(_t408 != 0) { if(( *(_v104 + 218) & 255) == 3) { Zero_Array = ( *(_v104 + 384) >> ( *(_v104 + 222) & 0xff) & 1) + -128; r8 = &_v72; F1(); if(_Compare_16byte_Arrays( ?_? ( &_v72), &_v72, _v104 + 296) != 1) { r9d = 5; r8d = 64; LMP_Send_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } else { r8d = 64; LMP_Send_Accepted(); *(_v104 + 122) = 30; LMssp_Send_LMP_Simple_Pairing_Number(); } } } else { r8d = 64; LMP_Send_Accepted(); *(_v104 + 122) = 30; LMssp_Send_LMP_Simple_Pairing_Number(); } } } LMssp_LMP_Numeric_Comparison_Failure() {// addr = 0x0048A670 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t6; // _t6 long long _t8; // _t8 _v16 = _t6; _v24 = _t8; _v32 = __rdx; __edx = 5; _LMssp_Send_Simple_Pairing_Complete_Event(5); return 0; } LMssp_LMP_Passkey_Entry_Failed() {// addr = 0x0048A6A3 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t6; // _t6 long long _t8; // _t8 _v16 = _t6; _v24 = _t8; _v32 = __rdx; __edx = 5; _LMssp_Send_Simple_Pairing_Complete_Event(5); return 0; } LMssp_LMP_KeyPress_Notification( signed char* __rdx // r56 ) {// addr = 0x0048A6D6 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t41; // _t41 _v32 = _t41; _v40 = __rsi; _v48 = __rdx; _v9 = *_v48 & 255; if((_v9 & 255) <= 4) { if(( *(_v32 + 191038) & 8) != 0 && ( *(_v32 + 65881) & 255) == 1 && ( *(_v40 + 228) & 255) == 2) { EG_Event_Composer(0); } } return 0; } LMssp_LMP_Accepted( _unknown_ __eax // r0 ) {// addr = 0x0048A762 long long _v32; // _cfa_ffffffe0 signed char _v53; // _cfa_ffffffcb signed char _v54; // _cfa_ffffffca signed char _v55; // _cfa_ffffffc9 char _v56; // _cfa_ffffffc8 signed int _v57; // _cfa_ffffffc7 signed int _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc signed char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed char* _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t247; // _t247 signed int _t325; // _t325 _unknown_ _t390; // _t390 intOrPtr _t437; // _t437 intOrPtr _t440; // _t440 intOrPtr _t441; // _t441 intOrPtr _t447; // _t447 intOrPtr _t448; // _t448 signed char* _t514; // _t514 long long _t539; // _t539 _unknown_ _t548; // _t548 long long _t565; // _t565 _unknown_ _t571; // _t571 _v80 = _t539; _v88 = _t565; _v96 = _t514; _v32 = *fs:0x28]; _v57 = *_v96 & 255; _t247 = _v57 & 255; if(_t247 == 64) { if(( *(_v88 + 122) & 65535) == 30) { if(( *(_v88 + 216) & 255) == 0) { if(( *(_v88 + 218) & 255) != 2) { if(( *(_v88 + 218) & 255) != 3) { if(( *(_v88 + 218) & 255) == 1) { *(_v88 + 122) = 33; } } else { *(_v88 + 222) = _v88 + 1; Zero_Array = ( *(_v88 + 384) >> ( *(_v88 + 222) & 0xff) & 1) + -128; if(( *(_v88 + 222) & 255) == 20) { *(_v88 + 122) = 33; } else { if(( *(_v88 + 216) & 255) != 0) { *(_v88 + 122) = 28; } } } } else { _v72 = 0; r8 = &_v56; G(); _v64 = (_v53 & 0xff) + ((_v54 & 0xff) + ((_v55 & 0xff) + ((_v56 & 0xff) << 8) << 8) << 8); _v72 = _v64 - (_v64 * 1125899907 >> 32 >> 18) * 1000000; EG_Event_Composer(0); *((char*)(_v88 + 219)) = DM_Set_Timer(); *(_v88 + 122) = 31; } } else { *(_v88 + 122) = 29; } } L69: if(_t390 == 0) { return 0; } __stack_chk_fail(); return 0; } if(_t247 > 64) { if(_t247 == 65) { if(( *(_v88 + 122) & 65535) != 32) { L68: goto L69; } if(( *(_v88 + 216) & 255) == 0) { if(( *(_v88 + 220) & 255) != 1 || ( *(_v88 + 221) & 255) == 0) { if(( *(_v88 + 218) & 255) != 1) { goto L68; } goto L64; } else { L64: _LMssp_Send_Simple_Pairing_Complete_Event(0); _LMssp_Calculate_Link_Key(_v88); _LMssp_Mutual_Authentication(_v80, _v88); *(_v88 + 216) = 0; goto L68; } } if(( *(_v88 + 220) & 255) == 0) { *(_v88 + 122) = 33; } goto L68; } else { goto L69; } } if(_t247 == 61) { if(( *(_v88 + 122) & 65535) == 26) { *(_v88 + 122) = 27; LMspp_Send_LMP_Encapsulated_Payload(); } goto L69; } _t390 = _t247 - 62; if(_t390 == 0) { if(( *(_v88 + 122) & 65535) != 27) { L66: goto L69; } if(( *(_v80 + 66098) & 255) == 0) { if(( *(_v88 + 216) & 255) == 0) { _t437 = _v88; _t294 = *(_t437 + 218) & 255; if(( *(_t437 + 218) & 255) != 2) { if(( *(_v88 + 218) & 255) != 3) { if(( *(_v88 + 218) & 255) != 1) { goto L66; } _t440 = _v80; if(( *(_t440 + 66096) & 255) != 1) { _v68 = 0; do { } while(_v68 <= 15); _t441 = _v88; _t508 = _t441 + 296; _t526 = _v88 + 368; _t571 = _v88 + 248; r8 = _t441 + 296; _t548 = _v88 + 248; F1(); *(_v88 + 229) = 1; _t447 = _v88; if(( *(_t447 + 226) & 255) != 0) { L36: _t448 = _v88; _t306 = *(_t448 + 216) & 255; if(( *(_t448 + 216) & 255) != 1) { _t449 = _v88; if(( *(_v88 + 230) & 255) == 0) { DebugPrint(0, _t449, _t508, _t526, _t548, _t571); } else { if(( *(_v88 + 229) & 255) != 1) { if(( *(_v88 + 229) & 255) == 2) { r8d = 5; LMssp_Send_LMP_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); } } else { r8d = 64; LMP_Send_Accepted(); BTRAND_Rand128Bit( *( *((intOrPtr*)(_v88 + 432)) + 11) & 0xff, _v88 + 232); LMssp_Send_LMP_Simple_Pairing_Number(); *(_v88 + 122) = 30; } } } else { BTRAND_Rand128Bit(_t306, _v88 + 232); LMssp_Send_LMP_Simple_Pairing_Number(); *(_v88 + 122) = 30; } goto L66; } else { _v68 = 0; do { } while(_v68 <= 15); goto L36; } } else { EG_Event_Composer(0); *(_v88 + 122) = 35; goto L66; } } if(( *(_v80 + 66099) & 255) == 0 || ( *(_v80 + 66099) & 255) == 1) { _t325 = *(_v88 + 228) & 255; if(_t325 != 2) { goto L21; } else { BTRAND_Rand(); *(_v88 + 384) = _t325 - (_t325 * 1125899907 >> 32 >> 18) * 1000000; *(_v88 + 222) = 0; *(_v88 + 221) = 1; BTRAND_Rand128Bit(EG_Event_Composer(0), _v88 + 232); goto L66; } } else { L21: if(( *(_v80 + 66099) & 255) == 2 && (( *(_v88 + 228) & 255) == 1 || ( *(_v88 + 228) & 255) == 2 || ( *(_v88 + 228) & 255) == 0)) { EG_Event_Composer(0); *((char*)(_v88 + 219)) = DM_Set_Timer(); *(_v88 + 122) = 34; } goto L66; } } else { BTRAND_Rand128Bit(_t294, _v88 + 232); r8 = &_v56; F1(); LMssp_Send_LMP_Simple_Pairing_Confirm( &_v56); *(_v88 + 122) = 29; goto L66; } } else { *(_v88 + 122) = 24; goto L66; } } else { LMspp_Send_LMP_Encapsulated_Payload(); goto L66; } } else { goto L69; } } LMssp_LMP_Not_Accepted() {// addr = 0x0048AF9A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 signed short _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t19; // _t19 signed short _t23; // _t23 long long _t36; // _t36 long long _t39; // _t39 _v16 = _t36; _v24 = _t39; _v32 = __ecx; _v28 = _t23; _t19 = _v28 & 65535; if(_t19 == 32537) { if(_v32 != 35 || ( *(_v24 + 2) & 255) != 1) { _LMssp_Send_Simple_Pairing_Complete_Event(5); } else { *((char*)(_v24 + 216)) = 0; *((char*)(_v24 + 217)) = 0; } L11: return 0; } if(_t19 > 32537) { if(_t19 != 32538) { goto L11; } L5: _LMssp_Send_Simple_Pairing_Complete_Event(_v32); goto L11; } if(_t19 - 61 > 4) { goto L11; } goto L5; } _Compare_16byte_Arrays( signed char* __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0048B038 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char* _t18; // _t18 __rsi = __rsi; __rdi = __rdi; _t18 = __rax; _v32 = __rdi; _v40 = __rsi; _v12 = 0; while(1) { _t18 = &( &(_t18[_v32])[_v40]); if(__dl != ( *_t18 & 255)) { break; } _v12 = _v12 + 1; if(_v12 <= 15) { continue; } return 1; } return 0; } _LMssp_Mutual_Authentication( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0048B07F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; if(( *(_v24 + 216) & 255) == 0) { *(_v24 + 120) = 6; *(_v24 + 120) = *(_v24 + 120) & 3 | 4; *(_v24 + 120) = *(_v24 + 120) & 3 | 16; *((short*)(_v24 + 122)) = 18; *((char*)(_v24 + 114)) = 1; return; } *(_v24 + 120) = *(_v24 + 120) & 3 | 4; *(_v24 + 120) = *(_v24 + 120) & 3 | 8; *((short*)(_v24 + 122)) = 0; *((char*)(_v24 + 114)) = 1; LMsec_core_Auth_Challenge(); return; } ConvertAuthTypeToStr( signed char __edi // r4 ) {// addr = 0x0048B14E signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "OUT_OF_BAND"; } if(_t4 > 1) { if(_t4 == 2) { return "NUMERIC_COMPARISON"; } if(_t4 == 3) { return "PASSKEY_ENTRY"; } L11: return "Not Supported AuthType"; } if(_t4 == 0) { return "NA"; } goto L11; } _LMssp_Determine_Auth_Type() {// addr = 0x0048B19A long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t68; // _t68 _v32 = __rdi; _v40 = __rsi; if(( *(_v32 + 5880) & 255) != 0 || ( *(_v40 + 226) & 255) != 0) { *(_v40 + 218) = 1; L15: _t68 = _v40; ConvertAuthTypeToStr( *(_t68 + 218) & 0xff); r8d = *(_v40 + 218) & 0xff; __rcx = _t68; DebugPrint(0, _t68, _t68, __rdx, __rdi, __rsi); return; } else { if(( *(_v32 + 5881) & 1) != 0) { L6: if(( *(_v32 + 5881) & 1) != 0 || ( *(_v40 + 227) & 1) != 0) { if(( *(_v32 + 5883) & 255) != 2 || ( *(_v40 + 228) & 255) == 3) { if(( *(_v32 + 5883) & 255) == 3 || ( *(_v40 + 228) & 255) != 2) { *(_v40 + 218) = 2; goto L15; } else { goto L12; } } else { L12: *(_v40 + 218) = 3; goto L15; } } else { *(_v40 + 218) = 2; goto L15; } } if(( *(_v40 + 227) & 1) != 0) { goto L6; } else { *(_v40 + 218) = 2; goto L15; } } } _LMssp_Calculate_Link_Key( _unknown_ __rax // r53 ) {// addr = 0x0048B2E7 long long _v32; // _cfa_ffffffe0 char _v37; // _cfa_ffffffdb char _v38; // _cfa_ffffffda char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 char _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 char _v88; // _cfa_ffffffa8 char _v104; // _cfa_ffffff98 char _v120; // _cfa_ffffff88 signed char _v121; // _cfa_ffffff87 long long _v136; // _cfa_ffffff78 long long _v144; // _cfa_ffffff70 long long _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _unknown_ _t146; // _t146 signed int _t163; // _t163 signed int _t169; // _t169 signed int _t170; // _t170 char* _t175; // _t175 char* _t202; // _t202 long long _t204; // _t204 long long _t210; // _t210 _unknown_ _t213; // _t213 long long _t214; // _t214 _unknown_ _t217; // _t217 _v144 = _t210; _v152 = _t214; _v160 = _t204; _v32 = *fs:0x28]; _v40 = 98; _v39 = 116; _v38 = 108; _v37 = 107; _v136 = _v160; LMutils_Translate_Bd_Addr_to_Byte_Array( &_v72, _v136); _t169 = &_v56; LMutils_Translate_Bd_Addr_to_Byte_Array(_t169, _v152 + 424); _v121 = 0; goto L2; do { } while(); do { goto L8; } while(_v121 <= 15); *((char*)(_v152 + 114)) = 1; if(( *(_v144 + 5666) & 255) != 0) { L11: *(_v152 + 146) = 3; L24: *__rsp = *(_v144 + 5883) & 0xff; r9d = *(_v152 + 228) & 0xff; r8d = *(_v152 + 146) & 0xff; DebugPrint(0, _v152, _t202, _t208, _t213, _t217); if(_t163 == 0) { return 0; } __stack_chk_fail(); return 0; } _t163 = *(_v152 + 113) & 255; if(_t163 == 0) { if(( *(_v152 + 218) & 255) != 1) { if(( *(_v152 + 228) & 255) == 3 || ( *(_v144 + 5883) & 255) == 3 || ( *(_v152 + 228) & 255) == 0 && ( *(_v152 + 218) & 255) != 3 && ( *(_v152 + 218) & 255) != 1 || ( *(_v144 + 5883) & 255) == 0 && ( *(_v152 + 218) & 255) != 3 && ( *(_v152 + 218) & 255) != 1) { *(_v152 + 146) = 4; } else { *(_v152 + 146) = 5; } } else { *(_v152 + 146) = 5; } goto L24; } goto L11; L2: if(_v121 <= 5) { _t170 = _v121 & 255; *(__rbp + _t170 - 96) = *(__rbp + _t169 - 48) & 255; _t169 = _v121 & 255; *(__rbp + _t169 - 80) = *(__rbp + _t170 - 64) & 255; _v121 = _v121 + 1; goto L2; } else { if(( *(_v152 + 2) & 255) != 0) { r10 = _v152 + 232; _t217 = _v152 + 312; _t213 = _v152 + 328; r8 = &_v88; _t175 = &_v40; *__rsp = &_v120; r9 = r8; r8 = &_v104; _t202 = _t175; _t208 = r10; F2(); } else { r10 = _v152 + 312; _t217 = _v152 + 232; _t213 = _v152 + 328; r8 = &_v104; _t175 = &_v40; *__rsp = &_v120; r9 = r8; r8 = &_v88; _t202 = _t175; _t208 = r10; F2(); } _v121 = 0; } L8: } LMssp_HCI_Timeout() {// addr = 0x0048B63B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t55; // _t55 _unknown_ _t104; // _t104 _unknown_ _t131; // _t131 _unknown_ _t135; // _t135 long long _t137; // _t137 intOrPtr _t138; // _t138 long long _t144; // _t144 _v16 = _t137; _v24 = _t144; if(_v24 == 0) { DebugPrint(0, _t104, _t131, _t135, _t137, _t144); return; } if(( *(_v24 + 1) & 255) == 0) { DebugPrint(0, _v24, _t131, _t135, _t137, _t144); return; } if( *((intOrPtr*)(_v24 + 432)) == 0) { DebugPrint(0, _v24, _t131, _t135, _t137, _t144); return; } _t138 = _v24; ShowSecurityStatus(); if(( *(_v24 + 219) & 255) != 0) { _t138 = _v16; DM_Clear_Timer(); *(_v24 + 219) = 0; } _t55 = *(_v24 + 122) & 0xffff; if(_t55 == 31) { if(( *(_v24 + 216) & 255) != 1) { if(( *(_v24 + 220) & 255) != 1) { *((char*)(_v24 + 221)) = 2; return; } r8d = 5; LMssp_Send_LMP_Not_Accepted(); _LMssp_Send_Simple_Pairing_Complete_Event(5); return; } if(( *(_v24 + 218) & 255) != 2) { _t63 = DebugPrint(0, _v24, _t131, _t135, _t138, _t144); } else { LMP_Send_Numeric_Comparison_Failed(); } _LMssp_Send_Simple_Pairing_Complete_Event(5); return; } if(_t55 > 31) { if(_t55 <= 1) { goto L22; } } else { if(_t55 == 21) { L22: _LMssp_Send_Simple_Pairing_Complete_Event(5); return; } } return; } Test_SPP_Functions() {// addr = 0x0048B884 _unknown_ __rbp; // r59 return 0; } F1_Invert( long long __rdx // r56 ) {// addr = 0x0048B88F signed char* _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 _unknown_ _v56; // _cfa_ffffffc8 _unknown_ _v88; // _cfa_ffffffa8 char _v120; // _cfa_ffffff88 intOrPtr _v124; // _cfa_ffffff84 long long _v144; // _cfa_ffffff70 long long _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 char* _v176; // _cfa_ffffff50 _unknown_ __rbp; // r59 signed int* _t61; // _t61 _unknown_ _t71; // _t71 signed char* _t72; // _t72 signed char* _t73; // _t73 signed int* _t74; // _t74 long long _t77; // _t77 long long _t82; // _t82 long long _t85; // _t85 _v144 = _t82; _v152 = _t85; _v160 = __rdx; _v168 = _t77; _v176 = r8; _t72 = *fs:0x28]; _v16 = _t72; _v124 = 0; while(_v124 <= 23) { _t73 = &(_t72[_v144]); *(__rbp + _t73 - 112) = *_t73 & 255; _t72 = &(_t73[_v152]); *(__rbp + _t72 - 80) = *_t72 & 255; _v124 = _v124 + 1; } _v124 = 0; while(_v124 <= 15) { _t72 = &(_t72[_v160]); *(__rbp + _t72 - 48) = *_t72 & 255; _v124 = _v124 + 1; } _t74 = &_v120; r8 = &_v40; _t61 = F1(); _v124 = 0; while(1) { _t71 = _v124 - 15; if(_t71 > 0) { break; } _t61 = _t74; _t74 = _t74 + _v176; *_t74 = *(__rbp + 15 - _v124 - 32) & 255; _v124 = _v124 + 1; } if(_t71 != 0) { __stack_chk_fail(); return _t61; } return _t61; } F1() {// addr = 0x0048B9B2 long long _v16; // _cfa_fffffff0 char _v72; // _cfa_ffffffb8 char _v136; // _cfa_ffffff78 intOrPtr _v140; // _cfa_ffffff74 signed int* _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 signed int* _v176; // _cfa_ffffff50 long long _v184; // _cfa_ffffff48 char* _v192; // _cfa_ffffff40 _unknown_ __rbp; // r59 signed int* _t28; // _t28 signed int* _t41; // _t41 long long _t44; // _t44 signed int* _t47; // _t47 long long _t53; // _t53 _v160 = _t53; _v168 = __rsi; _v176 = _t47; _v184 = _t44; _v192 = r8; _v16 = *fs:0x28]; r8 = &_v72; hashConcat(192, 192, _v168, _v160); r8 = &_v136; hashConcat(8, 384, _v184, &_v72); _t41 = _v176; _t28 = HMAC(); _v152 = _t41; _v140 = 0; while(1) { __eflags = _v140 - 15; if(__eflags > 0) { break; } _t28 = _t41; _t41 = _t41 + _v192; *_t41 = *(_v140 + _v152) & 255; _v140 = _v140 + 1; } if(__eflags != 0) { __stack_chk_fail(); return _t28; } return _t28; } G() {// addr = 0x0048BAB4 long long _v16; // _cfa_fffffff0 signed char _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 _unknown_ _v28; // _cfa_ffffffe4 char _v56; // _cfa_ffffffc8 char _v104; // _cfa_ffffff98 char _v168; // _cfa_ffffff58 char _v248; // _cfa_ffffff08 char _v252; // _cfa_ffffff04 long long _v272; // _cfa_fffffef0 long long _v280; // _cfa_fffffee8 long long _v288; // _cfa_fffffee0 long long _v296; // _cfa_fffffed8 intOrPtr* _v304; // _cfa_fffffed0 _unknown_ __rbp; // r59 _unknown_ _t84; // _t84 long long _t85; // _t85 long long _t96; // _t96 long long _t100; // _t100 long long _t108; // _t108 _v272 = _t108; _v280 = __rsi; _v288 = _t100; _v296 = _t96; _v304 = r8; _t85 = *fs:0x28]; _v16 = _t85; _v252 = 0; while(_v252 <= 47) { *((char*)(__rbp + _t85 - 96)) = 0; _v252 = _v252 + 1; } _v252 = 0; while(_v252 <= 63) { *((char*)(__rbp + _t85 - 160)) = 0; _v252 = _v252 + 1; } _v252 = 0; while(_v252 <= 79) { *((char*)(__rbp + _t85 - 240)) = 0; _v252 = _v252 + 1; } _v252 = 0; while(1) { _t84 = _v252 - 31; if(_t84 > 0) { break; } *((char*)(__rbp + _t85 - 48)) = 0; _v252 = _v252 + 1; } r8 = &_v104; hashConcat(192, 192, _v280, _v272); r8 = &_v168; hashConcat(128, 384, _v288, &_v104); r8 = &_v248; hashConcat(128, 512, _v296, &_v168); SHA_256(640, &_v56, &_v248); *_v304 = __dl; *(_v304 + 1) = _v27 & 255; *(_v304 + 2) = _v26 & 255; *(_v304 + 3) = _v25 & 255; if(_t84 != 0) { __stack_chk_fail(); return; } return; } F2( long long _a8 // _cfa_8 ) {// addr = 0x0048BC81 long long _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 char _v104; // _cfa_ffffff98 char _v152; // _cfa_ffffff68 char _v200; // _cfa_ffffff38 intOrPtr _v204; // _cfa_ffffff34 signed int* _v216; // _cfa_ffffff28 signed int* _v224; // _cfa_ffffff20 long long _v232; // _cfa_ffffff18 long long _v240; // _cfa_ffffff10 long long _v248; // _cfa_ffffff08 char* _v256; // _cfa_ffffff00 intOrPtr _v264; // _cfa_fffffef8 long long _v272; // _cfa_fffffef0 _unknown_ __rbp; // r59 signed int* _t39; // _t39 signed int* _t59; // _t59 long long _t62; // _t62 long long _t67; // _t67 signed int* _t75; // _t75 _v224 = _t75; _v232 = __rsi; _v240 = _t67; _v248 = _t62; _v256 = r8; _v264 = r9; _v272 = _a8; _v16 = *fs:0x28]; r8 = &_v56; hashConcat(128, 128, _v240, _v232); r8 = &_v104; hashConcat(32, 256, _v248, &_v56); r8 = &_v152; hashConcat(48, 288, _v256, &_v104); r8 = &_v200; hashConcat(48, 336, _v264, &_v152); _t59 = _v224; _t39 = HMAC(); _v216 = _t59; _v204 = 0; while(1) { __eflags = _v204 - 15; if(__eflags > 0) { break; } _t39 = _t59; _t59 = _t59 + _v272; *_t59 = *(_v204 + _v216) & 255; _v204 = _v204 + 1; } if(__eflags != 0) { __stack_chk_fail(); return _t39; } return _t39; } F3( long long _a8, // _cfa_8 long long _a16 // _cfa_10 ) {// addr = 0x0048BDE9 long long _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 char _v104; // _cfa_ffffff98 char _v168; // _cfa_ffffff58 char _v232; // _cfa_ffffff18 char _v296; // _cfa_fffffed8 intOrPtr _v300; // _cfa_fffffed4 signed int* _v312; // _cfa_fffffec8 signed int* _v320; // _cfa_fffffec0 long long _v328; // _cfa_fffffeb8 long long _v336; // _cfa_fffffeb0 long long _v344; // _cfa_fffffea8 char* _v352; // _cfa_fffffea0 intOrPtr _v360; // _cfa_fffffe98 long long _v368; // _cfa_fffffe90 long long _v376; // _cfa_fffffe88 _unknown_ __rbp; // r59 signed int* _t45; // _t45 signed int* _t69; // _t69 long long _t72; // _t72 long long _t78; // _t78 signed int* _t87; // _t87 _v320 = _t87; _v328 = __rsi; _v336 = _t78; _v344 = _t72; _v352 = r8; _v360 = r9; _v368 = _a8; _v376 = _a16; _v16 = *fs:0x28]; r8 = &_v56; hashConcat(128, 128, _v336, _v328); r8 = &_v104; hashConcat(128, 256, _v344, &_v56); r8 = &_v168; hashConcat(24, 384, _v352, &_v104); r8 = &_v232; hashConcat(48, 408, _v360, &_v168); r8 = &_v296; hashConcat(48, 456, _v368, &_v232); _t69 = _v320; _t45 = HMAC(); _v312 = _t69; _v300 = 0; while(1) { __eflags = _v300 - 15; if(__eflags > 0) { break; } _t45 = _t69; _t69 = _t69 + _v376; *_t69 = *(_v300 + _v312) & 255; _v300 = _v300 + 1; } if(__eflags != 0) { __stack_chk_fail(); return _t45; } return _t45; } HMAC() {// addr = 0x0048BF86 signed long long _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 char _v88; // _cfa_ffffffa8 char _v152; // _cfa_ffffff68 char _v216; // _cfa_ffffff28 char _v344; // _cfa_fffffea8 char _v472; // _cfa_fffffe28 intOrPtr _v476; // _cfa_fffffe24 intOrPtr _v480; // _cfa_fffffe20 intOrPtr _v484; // _cfa_fffffe1c intOrPtr _v488; // _cfa_fffffe18 intOrPtr _v492; // _cfa_fffffe14 intOrPtr _v496; // _cfa_fffffe10 long long _v512; // _cfa_fffffe00 intOrPtr _v516; // _cfa_fffffdfc intOrPtr _v520; // _cfa_fffffdf8 long long _v528; // _cfa_fffffdf0 _unknown_ __rbp; // r59 intOrPtr _t79; // _t79 intOrPtr _t107; // _t107 intOrPtr _t118; // _t118 _unknown_ _t126; // _t126 signed long long _t127; // _t127 signed char* _t128; // _t128 char* _t132; // _t132 long long _t133; // _t133 long long _t140; // _t140 _v512 = _t140; _v516 = _t118; _v528 = _t133; _v520 = _t107; _t127 = *fs:0x28]; _v16 = _t127; _v496 = 0; while(_v496 <= 63) { *(__rbp + _t127 - 208) = 92; *(__rbp + _t127 - 144) = 54; _v496 = _v496 + 1; } _v492 = 64; _v488 = 64; _v496 = 0; while(1) { _t79 = _v516; _t80 = _t79 >= 0 ? _t127 + 7 : _t79; _t81 = (_t79 >= 0 ? _t127 + 7 : _t79) >> 3; _t125 = (_t79 >= 0 ? _t127 + 7 : _t79) >> 3 - _v496; if((_t79 >= 0 ? _t127 + 7 : _t79) >> 3 <= _v496) { break; } _t128 = _t127 + _v512; *(__rbp + _t128 - 144) = *(__rbp + _t127 - 144) & 255 ^ *_t128 & 255; _t127 = &(_t128[_v512]); *(__rbp + _t127 - 208) = *(__rbp + _t128 - 208) & 255 ^ *_t127 & 255; _v496 = _v496 + 1; } r8 = &_v472; _v484 = hashConcat(_v520, 0 + _t127 * 8, _v528, &_v152); _t130 = ?_? ( &_v472); _v480 = SHA_256(_v484, &_v88, &_v472); r8 = &_v344; _v476 = hashConcat(_v480, 0 + _t130 * 8, &_v88, &_v216); _t132 = &_v344; SHA_256(_v476, &_v56, _t132); _v496 = 0; while(1) { _t126 = _v496 - 31; if(_t126 > 0) { break; } *(_t132 + &GenericHashOutput) = *(__rbp + _t132 - 48) & 255; _v496 = _v496 + 1; } if(_t126 != 0) { __stack_chk_fail(); return ?_? ( &GenericHashOutput); } return &GenericHashOutput; } hashConcat( unsigned int __ecx, // r2 unsigned int __esi, // r5 signed char* __rdx, // r56 long long __rdi // r57 ) {// addr = 0x0048C19D intOrPtr _v12; // _cfa_fffffff4 signed int* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 unsigned int _v36; // _cfa_ffffffdc unsigned int _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed int* _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; __esi = __esi; __ecx = __ecx; _v32 = __rdi; _v36 = __esi; _v48 = __rdx; _v40 = __ecx; _v56 = r8; __rax = _v56; _v24 = __rax; _v12 = 0; while(_v36 >> 3 > _v12) { __rax = __rax + _v56; __rdx = &(__rdx[_v32]); *__rax = *__rdx & 255; _v12 = _v12 + 1; } _v12 = 0; while(_v40 >> 3 > _v12) { __rax = __rax + _v56; __rdx = &(__rdx[_v48]); *__rax = *__rdx & 255; _v12 = _v12 + 1; } return _v40 + _v36; } SHA_256( signed int __esi, // r5 unsigned int* __rdx, // r56 long long __rdi // r57 ) {// addr = 0x0048C223 long long _v16; // _cfa_fffffff0 signed int _v25; // _cfa_ffffffe7 unsigned int _v26; // _cfa_ffffffe6 unsigned int _v27; // _cfa_ffffffe5 unsigned int _v28; // _cfa_ffffffe4 char _v88; // _cfa_ffffffa8 unsigned int _v89; // _cfa_ffffffa7 signed int _v96; // _cfa_ffffffa0 intOrPtr _v100; // _cfa_ffffff9c intOrPtr _v104; // _cfa_ffffff98 unsigned int _v108; // _cfa_ffffff94 unsigned int _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v120; // _cfa_ffffff88 signed int _v124; // _cfa_ffffff84 signed int _v128; // _cfa_ffffff80 signed int _v132; // _cfa_ffffff7c signed int _v136; // _cfa_ffffff78 signed int _v140; // _cfa_ffffff74 signed int _v144; // _cfa_ffffff70 signed int _v148; // _cfa_ffffff6c unsigned int _v152; // _cfa_ffffff68 signed long long _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 signed int _v172; // _cfa_ffffff54 signed int _v176; // _cfa_ffffff50 signed int _v180; // _cfa_ffffff4c signed int _v184; // _cfa_ffffff48 signed int _v188; // _cfa_ffffff44 signed int _v192; // _cfa_ffffff40 signed int _v196; // _cfa_ffffff3c signed int _v200; // _cfa_ffffff38 long long _v464; // _cfa_fffffe30 signed int _v468; // _cfa_fffffe2c unsigned int* _v480; // _cfa_fffffe20 _unknown_ __rbp; // r59 signed int _t610; // _t610 signed long long _t613; // _t613 __rdi = __rdi; _v464 = __rdi; _v468 = __esi; _v480 = __rdx; _v16 = *fs:0x28]; _v148 = 1779033703; _v144 = 3144134277; _v140 = 1013904242; _v136 = 2773480762; _v132 = 1359893119; _v128 = 2600822924; _v124 = 528734635; _v120 = 1541459225; _v168 = _v464; _v116 = _v468 >> 9; _v112 = _v468 - (_v116 << 9); if(_v112 > 447) { _v116 = _v116 + 2; _v89 = 1; } else { _v116 = _v116 + 1; _v89 = 0; } _t613 = &_v88; _v160 = _t613; _v108 = 0; _v112 = _v468; while(1) { _t610 = _v116; if(_t610 == 0) { break; } if(_v116 != 2 || _v89 != 1) { if(_v116 != 1 || _v89 != 0) { if(_v116 != 1 || _v89 != 1) { _v152 = 0; while(_v152 <= 63) { _t613 = _t613 + _v168; *(__rbp + _t613 - 80) = *_t613 & 255; _v152 = _v152 + 1; } _v112 = _v112 - 512; } else { _v152 = 0; while(_v152 <= 63) { *(__rbp + _t613 - 80) = 0; _v152 = _v152 + 1; } _v28 = _v468 >> 24; _v27 = (_v468 & 16711680) >> 16; _v26 = (_v468 & 65280) >> 8; _v25 = _v468; } goto L28; } else { goto L8; } } else { L8: _v152 = 0; do { } while(_v112 >> 3 > _v152); *(__rbp + _t613 - 80) = 128; _v152 = (_v112 >> 3) + 1; while(_v152 <= 63) { *(__rbp + _t613 - 80) = 0; _v152 = _v152 + 1; } _v112 = 0; if(_v116 == 1 && _v89 == 0) { _v28 = _v468 >> 24; _v27 = (_v468 & 16711680) >> 16; _v26 = (_v468 & 65280) >> 8; _v25 = _v468; } L28: _v108 = _v108 + 1; _v116 = _v116 - 1; _v152 = 0; while(_v152 <= 15) { *(__rbp + _t613 * 4 - 448) = (( *(__rbp + _t613 - 80) & 0xff) << 24) + (( *(__rbp + _t613 - 80) & 0xff) << 16 & 16711680) + (( *(__rbp + _t613 - 80) & 0xff) << 8 & 65535) + ( *(__rbp + _t613 - 80) & 0xff); _v152 = _v152 + 1; } _v152 = 16; while(_v152 <= 63) { asm("rol edx, 0xf"); asm("rol eax, 0xd"); asm("rol ecx, 0x19"); asm("rol eax, 0xe"); *(__rbp + _t613 * 4 - 448) = ( *(__rbp + _t613 * 4 - 448) ^ *(__rbp + _t613 * 4 - 448) ^ *(__rbp + _t613 * 4 - 448) >> 10) + *(__rbp + _t613 * 4 - 448) + ( *(__rbp + _t613 * 4 - 448) >> 3 ^ *(__rbp + _t613 * 4 - 448) ^ *(__rbp + _t613 * 4 - 448)) + *(__rbp + _t613 * 4 - 448); _v152 = _v152 + 1; } _v200 = _v148; _v196 = _v144; _v192 = _v140; _v188 = _v136; _v184 = _v132; _v180 = _v128; _v176 = _v124; _v172 = _v120; _v152 = 0; while(_v152 <= 63) { asm("rol ecx, 0x1a"); asm("rol edx, 0x15"); asm("rol edx, 0x7"); _v104 = *(__rbp + _t613 * 4 - 448) + __rdi + _t613 + *((intOrPtr*)(_t613 * 4 + &K)); asm("rol edx, 0x1e"); asm("rol eax, 0x13"); asm("rol eax, 0xa"); _v100 = (_v196 & _v200 | (_v200 | _v196) & _v192) + (_v200 ^ _v200 ^ _v200); _v188 = _v188 + _v104; _v172 = _v100 + _v104; _v96 = _v172; _v172 = _v176; _v176 = _v180; _v180 = _v184; _v184 = _v188; _v188 = _v192; _v192 = _v196; _v196 = _v200; _v200 = _v96; _v152 = _v152 + 1; } _v148 = _v148 + _v200; _v144 = _v144 + _v196; _v140 = _v140 + _v192; _v136 = _v136 + _v188; _v132 = _v132 + _v184; _v128 = _v128 + _v180; _v124 = _v124 + _v176; _v120 = _v120 + _v172; continue; } } (_v480[0]) = _v148; (_v480[0]) = (_v148 & 65280) >> 8; (_v480[0]) = (_v148 & 16711680) >> 16; *_v480 = _v148 >> 24; (_v480[1]) = _v144; (_v480[1]) = (_v144 & 65280) >> 8; (_v480[1]) = (_v144 & 16711680) >> 16; (_v480[1]) = _v144 >> 24; (_v480[2]) = _v140; (_v480[2]) = (_v140 & 65280) >> 8; (_v480[2]) = (_v140 & 16711680) >> 16; (_v480[2]) = _v140 >> 24; (_v480[3]) = _v136; (_v480[3]) = (_v136 & 65280) >> 8; (_v480[3]) = (_v136 & 16711680) >> 16; (_v480[3]) = _v136 >> 24; (_v480[4]) = _v132; (_v480[4]) = (_v132 & 65280) >> 8; (_v480[4]) = (_v132 & 16711680) >> 16; (_v480[4]) = _v132 >> 24; (_v480[5]) = _v128; (_v480[5]) = (_v128 & 65280) >> 8; (_v480[5]) = (_v128 & 16711680) >> 16; (_v480[5]) = _v128 >> 24; (_v480[6]) = _v124; (_v480[6]) = (_v124 & 65280) >> 8; (_v480[6]) = (_v124 & 16711680) >> 16; (_v480[6]) = _v124 >> 24; (_v480[7]) = _v120; (_v480[7]) = (_v120 & 65280) >> 8; (_v480[7]) = (_v120 & 16711680) >> 16; (_v480[7]) = _v120 >> 24; if(_t610 == 0) { return 256; } __stack_chk_fail(); return 256; } Test_HMAC_SHA_256( _unknown_ __eflags // r9 ) {// addr = 0x0048CB10 long long _v16; // _cfa_fffffff0 char _v25; // _cfa_ffffffe7 char _v26; // _cfa_ffffffe6 char _v27; // _cfa_ffffffe5 char _v28; // _cfa_ffffffe4 char _v29; // _cfa_ffffffe3 char _v30; // _cfa_ffffffe2 char _v31; // _cfa_ffffffe1 char _v32; // _cfa_ffffffe0 char _v33; // _cfa_ffffffdf char _v34; // _cfa_ffffffde char _v35; // _cfa_ffffffdd char _v36; // _cfa_ffffffdc char _v37; // _cfa_ffffffdb char _v38; // _cfa_ffffffda char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 char _v42; // _cfa_ffffffd6 char _v43; // _cfa_ffffffd5 char _v44; // _cfa_ffffffd4 char _v45; // _cfa_ffffffd3 char _v46; // _cfa_ffffffd2 char _v47; // _cfa_ffffffd1 char _v48; // _cfa_ffffffd0 char _v49; // _cfa_ffffffcf char _v50; // _cfa_ffffffce char _v51; // _cfa_ffffffcd char _v52; // _cfa_ffffffcc char _v53; // _cfa_ffffffcb char _v54; // _cfa_ffffffca char _v55; // _cfa_ffffffc9 char _v56; // _cfa_ffffffc8 char _v71; // _cfa_ffffffb9 char _v72; // _cfa_ffffffb8 char _v73; // _cfa_ffffffb7 char _v74; // _cfa_ffffffb6 char _v75; // _cfa_ffffffb5 char _v76; // _cfa_ffffffb4 char _v77; // _cfa_ffffffb3 char _v78; // _cfa_ffffffb2 char _v79; // _cfa_ffffffb1 char _v80; // _cfa_ffffffb0 char _v81; // _cfa_ffffffaf char _v82; // _cfa_ffffffae char _v83; // _cfa_ffffffad char _v84; // _cfa_ffffffac char _v85; // _cfa_ffffffab char _v86; // _cfa_ffffffaa char _v87; // _cfa_ffffffa9 char _v88; // _cfa_ffffffa8 char _v89; // _cfa_ffffffa7 char _v90; // _cfa_ffffffa6 char _v91; // _cfa_ffffffa5 char _v92; // _cfa_ffffffa4 char _v93; // _cfa_ffffffa3 char _v94; // _cfa_ffffffa2 char _v95; // _cfa_ffffffa1 char _v96; // _cfa_ffffffa0 char _v97; // _cfa_ffffff9f char _v98; // _cfa_ffffff9e char _v99; // _cfa_ffffff9d char _v100; // _cfa_ffffff9c char _v101; // _cfa_ffffff9b char _v102; // _cfa_ffffff9a char _v103; // _cfa_ffffff99 char _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 __eflags = __eflags; _v16 = *fs:0x28]; _v56 = 0; _v55 = 1; _v54 = 2; _v53 = 3; _v52 = 4; _v51 = 5; _v50 = 6; _v49 = 7; _v48 = 8; _v47 = 9; _v46 = 10; _v45 = 11; _v44 = 12; _v43 = 13; _v42 = 14; _v41 = 15; _v40 = 16; _v39 = 17; _v38 = 18; _v37 = 19; _v36 = 20; _v35 = 21; _v34 = 22; _v33 = 23; _v32 = 24; _v31 = 25; _v30 = 26; _v29 = 27; _v28 = 28; _v27 = 29; _v26 = 30; _v25 = 31; _v104 = 83; _v103 = 97; _v102 = 109; _v101 = 112; _v100 = 108; _v99 = 101; _v98 = 32; _v97 = 109; _v96 = 101; _v95 = 115; _v94 = 115; _v93 = 97; _v92 = 103; _v91 = 101; _v90 = 32; _v89 = 102; _v88 = 111; _v87 = 114; _v86 = 32; _v85 = 107; _v84 = 101; _v83 = 121; _v82 = 108; _v81 = 101; _v80 = 110; _v79 = 60; _v78 = 98; _v77 = 108; _v76 = 111; _v75 = 99; _v74 = 107; _v73 = 108; _v72 = 101; _v71 = 110; HMAC(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LMconfig_LM_Clear_Sctnet_Slv_State() {// addr = 0x0048CC60 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; BTSTS_ClearDeviceState(); BTSTS_ClearDeviceState(); return; } LMconfig_LM_Check_Sctnet_Slv_State( _unknown_ __eax // r0 ) {// addr = 0x0048CC90 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t14; // _t14 _v16 = _t14; if(BTSTS_CheckDeviceState(65536, _v16) == 0) { if(BTSTS_CheckDeviceState(131072, _v16) == 0) { return 0; } return 2; } return 1; } LMconfig_LM_Sctnet_State_Add_S() {// addr = 0x0048CCDB intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 long long _t48; // _t48 _v32 = _t48; _v12 = LMconfig_LM_Check_Sctnet_Slv_State(_t11); _t44 = _v32; _t50 = _v32; LMconfig_LM_Clear_Sctnet_Slv_State(); DebugPrint(0, _v32, __rcx, __rdx, _v32, __rsi); if(_v12 != 0) { if(_v12 != 1) { DebugPrint(0, _t44, __rcx, __rdx, _t50, __rsi); BTSTS_SetDeviceState(); return 2; } DebugPrint(0, _t44, __rcx, __rdx, _t50, __rsi); BTSTS_SetDeviceState(); return 2; } DebugPrint(0, _t44, __rcx, __rdx, _t50, __rsi); BTSTS_SetDeviceState(); return 1; } LMconfig_LM_Sctnet_State_Remove_S() {// addr = 0x0048CDC9 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t13; // _t13 long long _t61; // _t61 _v32 = _t61; _v12 = LMconfig_LM_Check_Sctnet_Slv_State(_t13); _t55 = _v32; _t63 = _v32; LMconfig_LM_Clear_Sctnet_Slv_State(); DebugPrint(0, _v32, __rcx, __rdx, _v32, __rsi); if(_v12 != 2) { if(_v12 != 1) { DebugPrint(0, _t55, __rcx, __rdx, _t63, __rsi); return 0; } DebugPrint(0, _t55, __rcx, __rdx, _t63, __rsi); return 0; } DebugPrint(0, _t55, __rcx, __rdx, _t63, __rsi); BTSTS_SetDeviceState(); _t65 = _v32; if(BTSTS_CheckDeviceState(32, _v32) != 0) { _v24 = _v32 - 191308; DebugPrint(0, _v32 - 191308, __rcx, __rdx, _t65, __rsi); LCCMD_PageScanRequest(); } return 1; } dump_list() {// addr = 0x0048CEE8 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0048CFB0 signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LMTask_Initialise() {// addr = 0x0048D391 signed char _v9; // _cfa_fffffff7 signed long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed long long _t117; // _t117 signed long long _t120; // _t120 signed long long _t124; // _t124 signed long long _t127; // _t127 signed long long _t130; // _t130 long long _t165; // _t165 _v48 = _t165; _v32 = _v48 + 60216; RtlFillMemory(224, 0, _v32 + 10032); *(_v32 + 10264) = _v32 + 10256; *(_v32 + 10256) = *(_v32 + 10264); check_list_constant(); *((long long*)(_v32 + 10280)) = _v32 + 10272; *(_v32 + 10272) = *((intOrPtr*)(_v32 + 10280)); _t117 = _v32 + 10272; check_list_constant(); _v9 = 0; while(_v9 <= 3) { _t117 = _v32 + 0 + (_t117 << 3) * 8 - (_t117 << 3); *(_t117 + 0x2731) = _v9 & 255; _v9 = _v9 + 1; } _v9 = 0; while(_v9 <= 3) { _t120 = *(_v32 + 10264); _v24 = _t120; _t124 = _v24; *_t124 = 0 + (_t120 << 3) * 8 - (_t120 << 3) + 10064 + _v32 + 8; _t127 = _v32 + 0 + (_t124 << 3) * 8 - (_t124 << 3) + 10072; *_t127 = _v32 + 10256; _t130 = _v24; *(_v32 + 0 + (_t127 << 3) * 8 - (_t127 << 3) + 10080) = _t130; *(_v32 + 10264) = 0 + (_t130 << 3) * 8 - (_t130 << 3) + 10064 + _v32 + 8; check_list_constant(); _v9 = _v9 + 1; } return; } LMTask_DeInitialise() {// addr = 0x0048D5BA _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t42; // _t42 long long _t72; // _t72 _v48 = _t72; _v32 = _v48 + 60216; while( *((intOrPtr*)(_v32 + 10272)) != _v32 + 10272 || *((intOrPtr*)(_v32 + 10280)) != _v32 + 10272) { _t42 = *((intOrPtr*)(_v32 + 10272)); if(_t42 != _v32 + 10272) { _t42 = *((intOrPtr*)(_v32 + 10272)); } _v24 = _t42; _v16 = *((intOrPtr*)(_v32 + 10272)); if(_v32 + 10272 != _v16) { *((long long*)(_v32 + 10272)) = *_v16; if( *_v16 != _v32 + 10272) { *((long long*)( *_v16 + 8)) = _v32 + 10272; } else { *((long long*)(_v32 + 10280)) = _v32 + 10272; } } check_list_constant(); if(_v24 == 0) { return; } else { continue; } } return; } LMTask_New() {// addr = 0x0048D6EB signed int _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed char _t85; // _t85 long long _t107; // _t107 long long _t147; // _t147 long long _t165; // _t165 _v64 = _t165; _v80 = _t147; _v68 = sil; _v72 = _t85; _v9 = 255; _v56 = _v64 + 60216; if( *((intOrPtr*)(_v56 + 10256)) != _v56 + 10256 || *((intOrPtr*)(_v56 + 10264)) != _v56 + 10256) { _t107 = *((intOrPtr*)(_v56 + 10256)); if(_t107 != _v56 + 10256) { _t107 = *((intOrPtr*)(_v56 + 10256)); } _v48 = _t107; _v40 = *((intOrPtr*)(_v56 + 10256)); if(_v56 + 10256 != _v40) { *((long long*)(_v56 + 10256)) = *_v40; if( *_v40 != _v56 + 10256) { *((long long*)( *_v40 + 8)) = _v56 + 10256; } else { *((long long*)(_v56 + 10264)) = _v56 + 10256; } } check_list_constant(); if(_v48 != 0) { _v32 = _v48 - 40; *_v32 = 1; *(_v32 + 2) = _v68 & 255; if(_v72 > 32) { RtlCopyMemory(32, _v32 + 4, _v80); *(_v32 + 3) = 32; } else { RtlCopyMemory(_v72 & 255, _v32 + 4, _v80); *(_v32 + 3) = _v72 & 255; } _v9 = *(_v32 + 1) & 255; _v24 = *((intOrPtr*)(_v56 + 10280)); *_v24 = _v48; *_v48 = _v56 + 10272; *((long long*)(_v48 + 8)) = _v24; *((long long*)(_v56 + 10280)) = _v48; check_list_constant(); } goto L14; } else { L14: return _v9 & 255; } } LMTask_Delete() {// addr = 0x0048D90C signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 char _v84; // _cfa_ffffffac _unknown_ __rbp; // r59 char _t63; // _t63 long long _t106; // _t106 _v80 = _t106; _v84 = _t63; _v9 = 0; _v64 = _v80 + 60216; if(_v84 > 3) { return 0; } _v56 = _v64 + 10272; _v72 = *_v56; while(_v72 != _v56) { _v48 = _v72 - 40; if(( *(_v48 + 1) & 255) != _v84) { _v72 = *_v72; continue; } if(_v72 != 0 && *_v72 != _v72 && *((intOrPtr*)(_v72 + 8)) != _v72) { _v40 = *((intOrPtr*)(_v72 + 8)); _v32 = *_v72; *_v40 = _v32; *((long long*)(_v32 + 8)) = _v40; check_list_constant(); } _v24 = *((intOrPtr*)(_v64 + 10264)); *_v24 = _v72; *_v72 = _v64 + 10256; *((long long*)(_v72 + 8)) = _v24; *((long long*)(_v64 + 10264)) = _v72; check_list_constant(); _v9 = 1; break; } return _v9 & 255; } LMTask_GetContext( signed int* __rcx // r55 ) {// addr = 0x0048DA71 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc long long _v80; // _cfa_ffffffb0 signed int* _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 long long _t75; // _t75 _v64 = _t75; _v80 = __rdx; _v88 = __rcx; _v68 = __esi; _v9 = 0; _v40 = _v64 + 60216; _v32 = _v40 + 10272; _v48 = *_v32; while(_v48 != _v32) { _v24 = _v48 - 40; if(( *(_v24 + 1) & 255) != _v68) { _v48 = *_v48; continue; } else { if(( *_v88 & 255) < ( *(_v24 + 3) & 255)) { RtlCopyMemory( *_v88 & 0xff, _v80, _v24 + 4); } else { RtlCopyMemory( *(_v24 + 3) & 0xff, _v80, _v24 + 4); *_v88 = *(_v24 + 3) & 255; } _v9 = 1; } break; } return; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x0048DB60 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } LLINK_Suspend( long long __rdi // r57 ) {// addr = 0x0048DBB6 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 1; return; } LLINK_Resume( long long __rdi // r57 ) {// addr = 0x0048DBC8 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *((char*)(_v16 + 2)) = 0; return; } LmTask_GeneratetLSTOEvent() {// addr = 0x0048DBDA signed char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed int _v36; // _cfa_ffffffdc char _v38; // _cfa_ffffffda char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t27; // _t27 long long _t35; // _t35 _v48 = _t35; _v52 = _t27; _v9 = 0; RtlFillMemory(12, 0, &_v40); _v38 = 5; _v36 = _v52 & 255; LCEQ_EnqueueRequest(); _v24 = _v48; if(_v24 != 0) { *(_v24 + 6) = _v52 & 255; LCEQ_EnqueueCommit(); SetPollMode(); _v9 = 1; } return _v9 & 255; } LMTask_DiconnCompleteCB() {// addr = 0x0048DC6A signed int _v57; // _cfa_ffffffc7 signed int _v58; // _cfa_ffffffc6 signed int _v59; // _cfa_ffffffc5 signed int _v60; // _cfa_ffffffc4 char _v61; // _cfa_ffffffc3 signed int _v68; // _cfa_ffffffbc signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed char _v107; // _cfa_ffffff95 signed char _v108; // _cfa_ffffff94 signed char _v109; // _cfa_ffffff93 signed char _v110; // _cfa_ffffff92 signed char _v111; // _cfa_ffffff91 signed char _v112; // _cfa_ffffff90 intOrPtr _v116; // _cfa_ffffff8c signed int _v117; // _cfa_ffffff8b signed char _v118; // _cfa_ffffff8a signed char _v119; // _cfa_ffffff89 char _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t158; // _t158 signed int _t164; // _t164 _unknown_ _t183; // _t183 signed char _t188; // _t188 _unknown_ _t216; // _t216 signed int _t289; // _t289 signed int _t293; // _t293 signed int _t298; // _t298 signed int _t299; // _t299 signed int _t339; // _t339 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 184; _v128 = _t339; _v136 = _t349; _v60 = 0; if(_v136 != 0) { if( *((intOrPtr*)(_v136 + 40)) != 0) { _v104 = _v136 + 2; _v59 = *_v104 & 255; _t158 = *( *((intOrPtr*)(_v136 + 40)) + 2) & 255; _v58 = _t158; _v61 = 16; __rcx = &_v61; _t331 = &_v120; _t281 = _v128; _t340 = _v128; LMTask_GetContext(__rcx); _v57 = _t158; if(_v57 == 0) { L25: if(_v60 == 0) { DebugPrint(0, _t281, __rcx, _t331, _t340, _t349); } else { DebugPrint(0, _t281, __rcx, _t331, _t340, _t349); } goto L29; } _t164 = *_v104 & 255; if((_v120 & 255) != _t164) { L24: r13d = *(_v104 + 8) & 0xff; r12d = *(_v104 + 9) & 0xff; r11d = *(_v104 + 11) & 0xff; r10d = *(_v104 + 12) & 0xff; r9d = *(_v104 + 13) & 0xff; r8d = _v112 & 0xff; r15d = _v107 & 0xff; _t281 = _v104; r14d = *_v104 & 0xff; _v136 = r13d; _v144 = r12d; _v152 = *(_v104 + 10) & 0xff; _v160 = r11d; _v168 = r10d; _v176 = r9d; _v184 = r8d; _v192 = _v111 & 0xff; _v200 = _v110 & 0xff; _v208 = _v109 & 0xff; *__rsp = _v108 & 0xff; r9d = r15d; r8d = r14d; DebugPrint(0, _v104, __rcx, _t331, _t340, _t349); goto L25; } _t289 = _v104; __rcx = _t289 + 8; _t349 = _t289 + 8; _t340 = &((char*)( &_v120)[8]); RtlCompareMemory(6, &((char*)( &_v120)[8]), _t289 + 8); if(_t164 != 0) { goto L24; } LMTask_Delete(); _v58 = 255; _t293 = _v104; _t331 = _t293 + 8; _t281 = _v128 + 60216; _t349 = _t293 + 8; _t340 = _t281; _t183 = LM_Find_Link_Table_Entry(); _v96 = _t281; if(_v96 != 0) { DebugPrint(0, _t281, __rcx, _t331, _t340, _t349); L23: _v60 = 1; goto L25; } BTCoex_EventCallback(); _t340 = _v128 + 191308; if(LMconfig_LM_Check_Sctnet_Slv_State(_t183) != 2) { _t298 = _v128; _t349 = _v104 + 8; r8d = LM_Connection_Event_Handler; LM_Add_Link_Table_Entry( *(_t298 + 190530) & 0xffff, _t298); _v96 = _t298; LLINK_SearchUsedLinkByLLIndx(_v118 & 0xff, _t298, _v128 + 30560); _v88 = _t298; _t331 = _v128 + 30560; _t340 = _v128 + 30560; LLINK_SearchUsedLinkByLLIndx(_v117 & 0xff, _t298, _v128 + 30560); _v80 = _t298; if(_v96 == 0 || _v88 == 0 || _v80 == 0) { if(_v96 == 0) { DebugPrint(0, _t298, __rcx, _t331, _t340, _t349); } else { r8d = _v117 & 0xff; DebugPrint(0, _t298, __rcx, _t331, _t340, _t349); _t299 = _v96; _t331 = _t299 + 424; _t349 = _t299 + 424; _t340 = _v128 + 60216; LM_Delete_Link_Table_Entry(_v128 + 60216); _v96 = 0; } _v68 = 9; } else { *(_v96 + 2) = 1; *((short*)(_v96 + 10)) = 51; *((short*)(_v96 + 4)) = 1024; *(_v96 + 36) = 0; *(_v96 + 432) = _v88; *((intOrPtr*)(_v96 + 440)) = _v116; *(_v96 + 16) = _v119 & 255; _t338 = _v80; *(_v96 + 768) = _v80; *((short*)(_v96 + 644)) = 65310; *((short*)(_v96 + 646)) = 65310; *((char*)(_v128 + 60220)) = _v128 + 1; *((char*)(_v128 + 60222)) = _v128 + 1; LLINK_Resume( *(_v96 + 432)); _t346 = *(_v96 + 768); LLINK_Resume( *(_v96 + 768)); if(( *(_v128 + 191082) & 255) == 0) { _t338 = *( *(_v96 + 432) + 48); __rcx = _v128; _t346 = __rcx + 60216; r8d = 0; LMP_Send_L2Cap_Flow(); } r8d = *((signed char*)(_v104 + 8)) & 0xff; DebugPrint(0, _v104, __rcx, _t338, _t346, _t349); LMch_Disable_L2CAP_Traffic(); _t216 = LMconfig_LM_Sctnet_State_Add_S(); _t331 = _v96; _t349 = _v96; _t340 = _v128; LMlpctrl_Start_Monitor(_t216, _v128); _v68 = 0; } } _t281 = _v128; if(( *(_v128 + 191059) & 255) == 0) { _t281 = _v128; _t340 = _v128; _t188 = DM_Set_Timer(); _t331 = _v128; *(_v128 + 191059) = _t188; } else { DebugPrint(0, _t281, __rcx, _t331, _t340, _t349); } goto L23; } else { goto L29; } } else { L29: __rsp = &(__rsp[0x2e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } } LMTask_NewReconnection() {// addr = 0x0048E1EB char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v36; // _cfa_ffffffdc signed int _v37; // _cfa_ffffffdb signed int _v38; // _cfa_ffffffda signed int _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t62; // _t62 signed char* _t115; // _t115 long long _t135; // _t135 long long _t137; // _t137 char* _t139; // _t139 long long _t140; // _t140 intOrPtr _t143; // _t143 signed char* _t150; // _t150 _v48 = _t140; _v56 = _t150; _v64 = _t137; _v72 = _t135; _v40 = *_v56 & 255; _t62 = casting_uint32(_v72 + 4); _t138 = _v56; (_v56[0x1b8]) = _t62; _v36 = (_v56[0x1b8]); (_v56[0x10]) = *(_v72 + 3) & 255; _v39 = (_v56[0x10]) & 255; _v38 = *(_v64 + 11) & 255; _v37 = *( *((intOrPtr*)(_v64 + 88)) + 11) & 255; _t115 = _v56; _t136 = &(_t115[0x1a8]); _t151 = &(_t115[0x1a8]); _t142 = &( &_v40[8]); RtlCopyMemory(6, &( &_v40[8]), &(_t115[0x1a8])); _t118 = _v56; if(((_v56[4]) & 65535) == 32) { DebugPrint(0, _t118, _t136, _t138, _t142, _t151); LCCMD_PageCancelRequest(); } _t139 = &_v40; _t119 = _v48; _t143 = _v48; _v10 = LMTask_New(); if((_v10 & 255) != 255) { _v9 = LmTask_GeneratetLSTOEvent(); if(_v9 == 0) { _t119 = _v48; _t143 = _v48; LMTask_Delete(); _v10 = 255; } else { LLINK_Suspend(_v56[0x1b0]); if((_v56[0x300]) != 0) { LLINK_Suspend(_v56[0x300]); } LLINK_Suspend(_v64); if( *((intOrPtr*)(_v64 + 88)) != 0) { LLINK_Suspend( *((intOrPtr*)(_v64 + 88))); } _t139 = &_v10; _t119 = _v48; r8d = LMTask_DiconnCompleteCB; _t143 = _v48; LMEvt_RegisterEvent(); } } if((_v10 & 255) == 255) { DebugPrint(0, _t119, _t136, _t139, _t143, _t151); } return; } LMTask_HostSwitchToMasterCB() {// addr = 0x0048E3D8 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 char _v13; // _cfa_fffffff3 char _v20; // _cfa_ffffffec short _v24; // _cfa_ffffffe8 signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed int _t69; // _t69 signed int _t81; // _t81 signed char* _t133; // _t133 _v64 = _t133; _v72 = __rsi; _v13 = 7; _v12 = 0; if(_v72 == 0) { return; } if((_v72[0x28]) != 0) { _v11 = (_v72[2]) & 255; _t69 = *((_v72[0x28]) + 2) & 255; _v10 = _t69; _t124 = ?_? ( &_v13); _t128 = &_v40; _t109 = _v64; _t134 = _t109; LMTask_GetContext( &_v13); _v9 = _t69; if(_v9 == 0) { L15: if(_v12 == 0) { DebugPrint(0, _t109, _t124, _t128, _t134, __rsi); } else { DebugPrint(0, _t109, _t124, _t128, _t134, __rsi); } return; } _t128 = &(_v64[0xeb38]); _t134 = &(_v64[0xeb38]); LM_GetLmLinkByLinkId(_v40 & 0xff, _t109, &(_v64[0xeb38])); _v48 = _t109; if(_v48 == 0) { goto L15; } _t109 = _v48; if(( *_v48 & 255) != _v11) { goto L15; } _t109 = _v72; if(( *_v72 & 255) != 8) { goto L15; } LMTask_Delete(); _v24 = 2059; _t81 = (_v48[2]) & 255; if(_t81 == 0) { _v20 = 0; _t134 = &(_v64[0x2e6d8]); _t109 = &_v20; r8 = &(_v48[2]); _t124 = &(_v48[0x1a8]); _t128 = &_v20; EG_Event_Composer(0); } else { if((_v48[0x48]) == 0) { _v20 = 53; _t134 = &(_v64[0x2e6d8]); _t109 = &_v20; r8 = &(_v48[2]); _t124 = &(_v48[0x1a8]); _t128 = &_v20; EG_Event_Composer(0); } else { r8 = (_v48[0x48]); __rsi = _v48; _t109 = _v64; _t134 = _v64; r8(); _v12 = _t81; if(_v12 == 0) { _v20 = 53; _t134 = &(_v64[0x2e6d8]); _t109 = &_v20; r8 = &(_v48[2]); _t124 = &(_v48[0x1a8]); _t128 = &_v20; EG_Event_Composer(0); } } } _v12 = 1; goto L15; } else { return; } } LMTask_HostSwitchToSlaveCB() {// addr = 0x0048E611 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 char _v13; // _cfa_fffffff3 char _v20; // _cfa_ffffffec short _v24; // _cfa_ffffffe8 signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed int _t69; // _t69 signed int _t81; // _t81 signed char* _t133; // _t133 _v64 = _t133; _v72 = __rsi; _v13 = 7; _v12 = 0; if(_v72 == 0) { return; } if((_v72[0x28]) != 0) { _v11 = (_v72[2]) & 255; _t69 = *((_v72[0x28]) + 2) & 255; _v10 = _t69; _t124 = ?_? ( &_v13); _t128 = &_v40; _t109 = _v64; _t134 = _t109; LMTask_GetContext( &_v13); _v9 = _t69; if(_v9 == 0) { L15: if(_v12 == 0) { DebugPrint(0, _t109, _t124, _t128, _t134, __rsi); } else { DebugPrint(0, _t109, _t124, _t128, _t134, __rsi); } return; } _t128 = &(_v64[0xeb38]); _t134 = &(_v64[0xeb38]); LM_GetLmLinkByLinkId(_v40 & 0xff, _t109, &(_v64[0xeb38])); _v48 = _t109; if(_v48 == 0) { goto L15; } _t109 = _v48; if(( *_v48 & 255) != _v11) { goto L15; } _t109 = _v72; if(( *_v72 & 255) != 8) { goto L15; } LMTask_Delete(); _v24 = 2059; _t81 = (_v48[2]) & 255; if(_t81 == 1) { _v20 = 0; _t134 = &(_v64[0x2e6d8]); _t109 = &_v20; r8 = &(_v48[2]); _t124 = &(_v48[0x1a8]); _t128 = &_v20; EG_Event_Composer(0); } else { if((_v48[0x48]) == 0) { _v20 = 53; _t134 = &(_v64[0x2e6d8]); _t109 = &_v20; r8 = &(_v48[2]); _t124 = &(_v48[0x1a8]); _t128 = &_v20; EG_Event_Composer(0); } else { r8 = (_v48[0x48]); __rsi = _v48; _t109 = _v64; _t134 = _v64; r8(); _v12 = _t81; if(_v12 == 0) { _v20 = 53; _t134 = &(_v64[0x2e6d8]); _t109 = &_v20; r8 = &(_v48[2]); _t124 = &(_v48[0x1a8]); _t128 = &_v20; EG_Event_Composer(0); } } } _v12 = 1; goto L15; } else { return; } } LMTask_NewHostSwitchToMaster() {// addr = 0x0048E84A signed int _v9; // _cfa_fffffff7 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t25; // _t25 long long _t31; // _t31 long long _t35; // _t35 _v32 = _t35; _v48 = _t31; _v36 = _t25; _v24 = _v36 & 255; __edx = 6; __rsi = _v48; RtlCopyMemory(6, &((char*)( &_v24)[0]), _v48); _v9 = LMTask_New(); if((_v9 & 255) != 255) { r8d = LMTask_HostSwitchToMasterCB; LMEvt_RegisterEvent(); } return _v9 & 255; } LMTask_NewHostSwitchToSlave() {// addr = 0x0048E8CD signed int _v9; // _cfa_fffffff7 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t25; // _t25 long long _t31; // _t31 long long _t35; // _t35 _v32 = _t35; _v48 = _t31; _v36 = _t25; _v24 = _v36 & 255; __edx = 6; __rsi = _v48; RtlCopyMemory(6, &((char*)( &_v24)[0]), _v48); _v9 = LMTask_New(); if((_v9 & 255) != 255) { r8d = LMTask_HostSwitchToSlaveCB; LMEvt_RegisterEvent(); } return _v9 & 255; } LMtst_Initialise() {// addr = 0x0048E950 _unknown_ __rbp; // r59 dut_test_mode = 0; __edx = 12; __esi = 0; RtlFillMemory(12, 0, __rdi); return; } LMtst_Convert_LC_Tx_Patter_Option( signed char __edi // r4 ) {// addr = 0x0048E971 signed char _v9; // _cfa_fffffff7 signed char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 _unknown_ _t10; // _t10 __edi = __edi; _v28 = __edi; if((_v28 & 255) <= 9) { goto __rax; } _v9 = 0; return _v9 & 255; } LMtst_Get_DUT_Mode() {// addr = 0x0048E9B8 _unknown_ __rbp; // r59 return dut_test_mode & 255; } LMtst_Set_DUT_Mode( signed char __edi // r4 ) {// addr = 0x0048E9C5 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; dut_test_mode = _v12 & 255; return; } LMtst_Enable_Device_Under_Test_Mode() {// addr = 0x0048E9DA _unknown_ __rbp; // r59 __edi = 1; LMtst_Set_DUT_Mode(1); return; } LMtst_LMP_Test_Activate( long long __rsi // r58 ) {// addr = 0x0048E9EA long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t66; // _t66 long long _t74; // _t74 long long _t76; // _t76 _v16 = _t76; _v24 = __rsi; _v32 = _t74; if(LMtst_Get_DUT_Mode() != 1 || ( *(_v24 + 2) & 255) != 1) { return 36; } else { LMtst_Set_DUT_Mode(2); RtlFillMemory(12, 0, _t76); r8d = 56; LMP_Send_Accepted(); _t66 = _v16; _t37 = *(_t66 + 190504) & 1; if(( *(_t66 + 190504) & 1) != 0) { LCCMD_InquiryScanCancelRequest(_t37); } if(( *(_v16 + 190504) & 2) != 0) { if(( *(_v16 + 191059) & 255) == 0) { LCCMD_PageScanCancelRequest(); } else { DM_Clear_Timer(); *(_v16 + 191059) = 0; } } return 0; } } LMtst_LMP_Test_Control( _unknown_ __rax, // r53 signed char* __rsi // r58 ) {// addr = 0x0048EB11 long long _v16; // _cfa_fffffff0 signed char _v32; // _cfa_ffffffe0 signed char _v33; // _cfa_ffffffdf signed char _v34; // _cfa_ffffffde signed char _v35; // _cfa_ffffffdd signed char _v36; // _cfa_ffffffdc signed char _v37; // _cfa_ffffffdb signed char _v38; // _cfa_ffffffda signed char _v39; // _cfa_ffffffd9 signed char _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 intOrPtr _t38; // _t38 _unknown_ _t75; // _t75 signed char* _t78; // _t78 long long _t84; // _t84 long long _t88; // _t88 _v64 = _t88; _v72 = __rsi; _v80 = _t84; _v16 = *fs:0x28]; if(LMtst_Get_DUT_Mode() <= 1) { L10: _t38 = 36; L11: if(_t75 == 0) { return _t38; } __stack_chk_fail(); return _t38; } _t78 = _v72; if(((_t78[2]) & 255) != 1) { goto L10; } _v44 = 0; while(_v44 <= 8) { _t78 = &(_t78[_v80]); *(__rbp + _t78 - 32) = *_t78 & 255 ^ 85; _v44 = _v44 + 1; } testmode_ctrl = _v40 & 255; if((testmode_ctrl & 255) != 0) { _t75 = (testmode_ctrl & 255) - 255; if(_t75 != 0) { *7348449 = _v39 & 255; *7348450 = _v38 & 255; *7348451 = _v37 & 255; *7348452 = _v36 & 255; *7348453 = _v35 & 255; *7348454 = _v34 & 255; *7348456 = (_v33 & 0xff) + ((_v32 & 0xff) << 8); } else { RtlFillMemory(12, 0, _t88); testmode_ctrl = 255; LMtst_Set_DUT_Mode(2); } } *__rsp = LMtst_Testmode_Accept_BB_Ack; r9d = 16; r8d = 57; LMP_Send_Accepted_Tag(_v72[0x1b0]); _t38 = 0; goto L11; } LMtst_Testmode_Accept_BB_Ack() {// addr = 0x0048EC93 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed char _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed int _v29; // _cfa_ffffffe3 signed char _v30; // _cfa_ffffffe2 signed int _v31; // _cfa_ffffffe1 signed char _v32; // _cfa_ffffffe0 signed int _v34; // _cfa_ffffffde long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t51; // _t51 long long _t66; // _t66 long long _t68; // _t68 _v48 = _t66; _v56 = _t68; _v32 = 0; _v29 = *7348454 & 255; _v28 = testmode_ctrl & 255; _v31 = 0; _v30 = *7348455 & 255; _v27 = ( *7348449 & 255) == 0; _v26 = *7348450 & 255; _v25 = *7348451 & 255; _v34 = *7348456 & 65535; _t51 = testmode_ctrl & 0xff; if(_t51 == 6) { _v32 = 1; _v30 = 1; L18: *7348455 = _v30 & 255; r10d = _v25 & 255; r9d = _v26 & 255; r8d = _v27 & 255; r11d = _v34 & 65535; _v64 = r10d; _v72 = r9d; _v80 = r8d; *__rsp = _v30 & 255; r9d = _v31 & 255; r8d = r11d; LCCMD_SetTestModeRequest(); return; } if(_t51 > 6) { if(_t51 == 8) { _v32 = 1; _v30 = 0; goto L18; } if(_t51 < 8) { _v32 = 1; _v30 = 0; goto L18; } if(_t51 == 9) { L12: _v32 = 2; _v31 = LMtst_Convert_LC_Tx_Patter_Option(_v28 & 255); _v30 = 0; goto L18; } if(_t51 == 255) { _v32 = 0; _v30 = 1; } goto L18; } if(_t51 > 4) { _v32 = 1; _v30 = 1; goto L18; } if(_t51 >= 1) { goto L12; } else { if(_t51 == 0) { _v32 = 3; } goto L18; } } LMtst_Enter_Local_Loopback( long long __rdi // r57 ) {// addr = 0x0048EDE7 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } LMtst_Testmode_Exit() {// addr = 0x0048EDF1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v32; // _cfa_ffffffe0 intOrPtr _v40; // _cfa_ffffffd8 intOrPtr _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t37; // _t37 long long _t40; // _t40 long long _t45; // _t45 _v16 = _t40; _v24 = _t45; if(LMtst_Get_DUT_Mode() <= 1) { } else { _v32 = 0; _v40 = 0; _v48 = 0; *__rsp = 0; r9d = 0; r8d = 0; LCCMD_SetTestModeRequest(); BTCFG_WriteLoopbackMode(0, _v16 + 190504); __edi = 1; LMtst_Set_DUT_Mode(1); if(( *(_v16 + 190504) & 1) != 0) { LCCMD_InquiryScanRequest(); } _t37 = _v16; _t16 = *(_t37 + 190504) & 2; if(( *(_t37 + 190504) & 2) != 0) { LCCMD_PageScanRequest(); return; } } return; } LMtst_Power_Control_Allowed( _unknown_ __eax // r0 ) {// addr = 0x0048EEC9 _unknown_ __rbp; // r59 if(LMtst_Get_DUT_Mode() == 0 || ( *7348452 & 255) != 0) { return 1; } else { return 0; } } dump_list() {// addr = 0x0048EEF0 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0048EFB8 signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LMTrx_Initialise() {// addr = 0x0048F399 signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t157; // _t157 _v48 = _t157; _v32 = _v48 + 60216; RtlFillMemory(2432, 0, _v32 + 10288); *((long long*)(_v32 + 12728)) = _v32 + 12720; *((long long*)(_v32 + 12720)) = *((intOrPtr*)(_v32 + 12728)); check_list_constant(); _v9 = 0; while(_v9 <= 7) { *((((_v9 & 255) << 3) + (_v9 & 255) + ((_v9 & 255) << 3) + (_v9 & 255) + (_v9 & 255) << 4) + _v32 + 10288) = _v9 & 255; _v24 = *((intOrPtr*)(_v32 + 12728)); *_v24 = (((_v9 & 255) << 3) + (_v9 & 255) + ((_v9 & 255) << 3) + (_v9 & 255) + (_v9 & 255) << 4) + 10576 + _v32; __rsi = _v32; *((intOrPtr*)((((_v9 & 255) << 3) + (_v9 & 255) + ((_v9 & 255) << 3) + (_v9 & 255) + (_v9 & 255) << 4) + __rsi + 10576)) = _v32 + 12720; *((intOrPtr*)((((_v9 & 255) << 3) + (_v9 & 255) + ((_v9 & 255) << 3) + (_v9 & 255) + (_v9 & 255) << 4) + _v32 + 10584)) = _v24; *((long long*)(_v32 + 12728)) = (((_v9 & 255) << 3) + (_v9 & 255) + ((_v9 & 255) << 3) + (_v9 & 255) + (_v9 & 255) << 4) + 10576 + _v32; check_list_constant(); r8 = (((_v9 & 255) << 3) + (_v9 & 255) + ((_v9 & 255) << 3) + (_v9 & 255) + _t154 << 4) + 10576 + _v32; DebugPrint(0, (((_v9 & 255) << 3) + (_v9 & 255) + ((_v9 & 255) << 3) + (_v9 & 255) + _t154 << 4) + 10576, _v32, (((_v9 & 255) << 3) + (_v9 & 255) + ((_v9 & 255) << 3) + (_v9 & 255) + _t154 << 4) + 10576 + _v32, _v32 + 12720, __rsi); _v9 = _v9 + 1; } return; } LMTrx_New() {// addr = 0x0048F5C7 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 char _t68; // _t68 long long _t77; // _t77 long long _t121; // _t121 _v48 = _t121; _v52 = _t68; _v32 = _v48 + 60216; _v40 = 0; if(_v52 > 252) { return; } if( *((intOrPtr*)(_v32 + 12720)) != _v32 + 12720 || *((intOrPtr*)(_v32 + 12728)) != _v32 + 12720) { _t77 = *((intOrPtr*)(_v32 + 12720)); if(_t77 != _v32 + 12720) { _t77 = *((intOrPtr*)(_v32 + 12720)); } _v24 = _t77; _v16 = *((intOrPtr*)(_v32 + 12720)); if(_v32 + 12720 != _v16) { *((long long*)(_v32 + 12720)) = *_v16; if( *_v16 != _v32 + 12720) { *((long long*)( *_v16 + 8)) = _v32 + 12720; } else { *((long long*)(_v32 + 12728)) = _v32 + 12720; } } check_list_constant(); if(_v24 != 0) { _v40 = _v24 - 288; *((char*)(_v40 + 1)) = 0; *((char*)(_v40 + 4)) = 0; *((char*)(_v40 + 2)) = 0; *((char*)(_v40 + 3)) = 31; *((char*)(_v40 + 5)) = 0; RtlFillMemory(252, 0, _v40 + 6); *((long long*)(_v40 + 272)) = 0; *((long long*)(_v40 + 280)) = 0; r8 = _v24; DebugPrint(0, _v40, __rcx, _v24, _v40 + 6, __rsi); } } return; } LMTrx_Delete() {// addr = 0x0048F7AB signed char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t66; // _t66 _v48 = _t66; _v56 = __rsi; _v9 = 0; _v32 = _v48 + 60216; if(_v48 == 0 || _v56 == 0) { return 0; } else { _v24 = *((intOrPtr*)(_v32 + 12728)); *_v24 = _v56 + 288; *((long long*)(_v56 + 288)) = _v32 + 12720; *((long long*)(_v56 + 296)) = _v24; *((long long*)(_v32 + 12728)) = _v56 + 288; check_list_constant(); r8 = _v56 + 288; DebugPrint(0, _v56, __rcx, _v56 + 288, _v32 + 12720, __rsi); return _v9 & 255; } } dump_list() {// addr = 0x0048F8A4 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0048F96C signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LMTrxFtr_LMP_Response_Time( _unknown_ __rax, // r53 long long __rsi // r58 ) {// addr = 0x0048FD4D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t34; // _t34 _v32 = _t34; _v40 = __rsi; _v24 = _v40; if(_v24 == 0) { L4: return; } _t26 = _v24; __esi = *(_t26 + 1) & 0xff; LM_GetLmLinkByLinkId( *(_t26 + 1) & 0xff, _t26, _v32 + 60216); _v16 = _t26; if(_v16 == 0 || *((intOrPtr*)(_v24 + 272)) == 0) { goto L4; } else { r10 = *((intOrPtr*)(_v24 + 272)); r9d = 0; r8d = 0; r10(); return; } } LMTrxFtr_Exit() {// addr = 0x0048FDD7 signed int _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t81; // _t81 long long _t83; // _t83 long long _t94; // _t94 long long _t98; // _t98 _v48 = _t94; _v56 = _t98; _v64 = _t83; _v9 = 3; r8 = _v64 + 288; DebugPrint(0, _v64, _t81, _v64 + 288, _t94, _t98); if(_v64 + 288 != 0 && *((intOrPtr*)(_v64 + 288)) != _v64 + 288 && *((intOrPtr*)(_v64 + 296)) != _v64 + 288) { _v32 = *((intOrPtr*)(_v64 + 296)); _v24 = *((intOrPtr*)(_v64 + 288)); *_v32 = _v24; *((long long*)(_v24 + 8)) = _v32; check_list_constant(); } if( *((intOrPtr*)(_v64 + 280)) != 0) { r8 = *((intOrPtr*)(_v64 + 280)); r8(); } *(_v64 + 2) = _v9 & 255; LMTrx_Delete(); _v64 = 0; return _v9 & 255; } LMTrxFtr_Lmp_Handler() {// addr = 0x0048FF1D unsigned char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t69; // _t69 signed char _t71; // _t71 _unknown_ _t89; // _t89 long long _t107; // _t107 long long _t110; // _t110 long long _t115; // _t115 _v32 = _t110; _v40 = _t115; _v48 = _t107; _v56 = __rcx; _v60 = r8d; _v11 = 0; DebugPrint(0, _t89, __rcx, _t107, _t110, _t115); if(_v48 == 0) { return 0; } if( *((intOrPtr*)(_v48 + 264)) == 0) { return 0; } if(_v56 == 0) { return 0; } _v10 = *_v56 & 1; if(( *(_v40 + 2) & 255) == _v10) { _v9 = ( *_v56 & 255) >> 1; r8d = _v60 & 255; DebugPrint(0, _v56, __rcx, _t107, _t110, _t115); if(_v9 != 40 || _v60 != 9) { if(_v9 == 127 && _v60 == 12) { _v14 = (_v56[1]) & 0xff | (_v9 & 255) << 8; if(_v14 == 32516 && *((intOrPtr*)(_v48 + 272)) != 0) { r10 = *((intOrPtr*)(_v48 + 272)); _t69 = (_v60 & 255) - 2; r9d = _t69 & 255; r8 = &(_v56[2]); r10(); _v11 = _t69; } } } else { if( *((intOrPtr*)(_v48 + 272)) != 0) { r10 = *((intOrPtr*)(_v48 + 272)); _t71 = (_v60 & 255) - 1; r9d = _t71 & 255; r8 = &(_v56[1]); r10(); _v11 = _t71; } } return _v11 & 255; } else { return 0; } } LMTrxFtr_Event_Callback( _unknown_ __rax // r53 ) {// addr = 0x004900CD signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t37; // _t37 signed char _t47; // _t47 _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; _v64 = r8; _v52 = _t47; _v56 = r9d; _v11 = 0; _v24 = _v48 + 6; _t70 = _v48; _v10 = *(_t70 + 2) & 255; _v9 = _v10 & 255; _t37 = _v9 & 255; if(_t37 == 1) { if((_v52 & 255) <= 7) { _t70 = *(5056736 + _t70 * 8); goto __rax; } } else { if(_t37 == 2) { if((_v52 & 255) <= 7) { _t70 = *(5056800 + _t70 * 8); goto __rax; } } else { } } if(_v48 != 0) { _t70 = _v48; *(_v48 + 2) = _v10 & 255; } if(_v11 == 0) { r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _t70, __rcx, __rdx, __rdi, __rsi); } else { r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _t70, __rcx, __rdx, __rdi, __rsi); } return _v11 & 255; } LMTrx_NewFeature( _unknown_ __rax // r53 ) {// addr = 0x00490796 long long _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t101; // _t101 long long _t111; // _t111 signed char* _t116; // _t116 _v48 = _t111; _v56 = _t116; _v64 = _t101; LMTrx_New(); _v32 = _v48; if(_v32 != 0) { _v24 = (_v56[0x320]); *_v24 = _v32 + 288; *(_v32 + 288) = &(_v56[0x318]); *(_v32 + 296) = _v24; (_v56[0x320]) = _v32 + 288; check_list_constant(); *(_v32 + 1) = *_v56 & 255; *((long long*)(_v32 + 264)) = LMTrxFtr_Lmp_Handler; *((long long*)(_v32 + 272)) = LMTrxFtr_Event_Callback; *((long long*)(_v32 + 280)) = _v64; _v16 = _v32 + 6; *((char*)(_v32 + 4)) = DM_Set_Timer(); r8 = _v48 + 191032; LMP_Send_Features_Req(); *((char*)(_v32 + 2)) = 1; } return; } LMTrx_NewExtFeature( _unknown_ __rax // r53 ) {// addr = 0x0049090F long long _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 signed char _t68; // _t68 long long _t107; // _t107 long long _t118; // _t118 _v48 = _t118; _v56 = __rsi; _v72 = _t107; _v60 = _t68; LMTrx_New(); _v32 = _v48; if(_v32 != 0) { _v24 = (_v56[0x320]); *_v24 = _v32 + 288; *(_v32 + 288) = &(_v56[0x318]); *(_v32 + 296) = _v24; (_v56[0x320]) = _v32 + 288; check_list_constant(); *(_v32 + 1) = *_v56 & 255; *((long long*)(_v32 + 264)) = LMTrxFtr_Lmp_Handler; *((long long*)(_v32 + 272)) = LMTrxFtr_Event_Callback; *((long long*)(_v32 + 280)) = _v72; _v16 = _v32 + 6; *((char*)(_v32 + 4)) = DM_Set_Timer(); r8 = _v48 + 191040; r9 = _v48 + 191032; *__rsp = r8; r8d = _v60 & 255; LMP_Send_Features_Req_Ext(); *((char*)(_v32 + 2)) = 2; } return; } dump_list() {// addr = 0x00490AA4 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x00490B6C signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LMTrxRnr_LMP_Response_Time( _unknown_ __rax, // r53 long long __rsi // r58 ) {// addr = 0x00490F4D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t34; // _t34 _v32 = _t34; _v40 = __rsi; _v24 = _v40; if(_v24 == 0) { L4: return; } _t26 = _v24; __esi = *(_t26 + 1) & 0xff; LM_GetLmLinkByLinkId( *(_t26 + 1) & 0xff, _t26, _v32 + 60216); _v16 = _t26; if(_v16 == 0 || *((intOrPtr*)(_v24 + 272)) == 0) { goto L4; } else { r10 = *((intOrPtr*)(_v24 + 272)); r9d = 0; r8d = 0; r10(); return; } } LMTrxRnr_Exit() {// addr = 0x00490FD7 signed int _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t81; // _t81 long long _t83; // _t83 long long _t94; // _t94 long long _t98; // _t98 _v48 = _t94; _v56 = _t98; _v64 = _t83; _v9 = 2; r8 = _v64 + 288; DebugPrint(0, _v64, _t81, _v64 + 288, _t94, _t98); if(_v64 + 288 != 0 && *((intOrPtr*)(_v64 + 288)) != _v64 + 288 && *((intOrPtr*)(_v64 + 296)) != _v64 + 288) { _v32 = *((intOrPtr*)(_v64 + 296)); _v24 = *((intOrPtr*)(_v64 + 288)); *_v32 = _v24; *((long long*)(_v24 + 8)) = _v32; check_list_constant(); } if( *((intOrPtr*)(_v64 + 280)) != 0) { r8 = *((intOrPtr*)(_v64 + 280)); r8(); } *(_v64 + 2) = _v9 & 255; LMTrx_Delete(); _v64 = 0; return _v9 & 255; } LMTrxRnr_Lmp_Handler() {// addr = 0x0049111D unsigned char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t46; // _t46 _unknown_ _t61; // _t61 long long _t72; // _t72 long long _t74; // _t74 long long _t77; // _t77 _v32 = _t74; _v40 = _t77; _v48 = _t72; _v56 = __rcx; _v60 = r8d; _v11 = 0; DebugPrint(0, _t61, __rcx, _t72, _t74, _t77); if(_v48 != 0) { if( *((intOrPtr*)(_v48 + 264)) != 0) { if(_v56 != 0) { _v10 = *_v56 & 1; if(( *(_v40 + 2) & 255) == _v10) { _v9 = ( *_v56 & 255) >> 1; r8d = _v60 & 255; DebugPrint(0, _v56, __rcx, _t72, _t74, _t77); if(_v9 == 2 && *((intOrPtr*)(_v48 + 272)) != 0) { r10 = *((intOrPtr*)(_v48 + 272)); _t46 = (_v60 & 255) - 1; r9d = _t46 & 255; r8 = &(_v56[1]); r10(); _v11 = _t46; } return _v11 & 255; } return 0; } return 0; } return 0; } return 0; } LMTrxRnr_Event_Callback() {// addr = 0x00491243 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 char _v15; // _cfa_fffffff1 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t43; // _t43 _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; _v64 = r8; _v52 = _t43; _v56 = r9d; _v15 = 0; _v24 = _v48 + 6; _t64 = _v48; _v13 = *(_t64 + 2) & 255; _v12 = _v13 & 255; if((_v12 & 255) == 1) { if((_v52 & 255) <= 7) { _t64 = *(5058144 + _t64 * 8); goto __rax; } } if(_v48 != 0) { _t64 = _v48; *(_v48 + 2) = _v13 & 255; } if(_v15 == 0) { r9d = _v13 & 255; r8d = _v12 & 255; DebugPrint(0, _t64, __rcx, __rdx, __rdi, __rsi); } else { r9d = _v13 & 255; r8d = _v12 & 255; DebugPrint(0, _t64, __rcx, __rdx, __rdi, __rsi); } return; } LMTrx_NewName( _unknown_ __rax // r53 ) {// addr = 0x004918D8 signed char* _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t103; // _t103 long long _t113; // _t113 _v48 = _t113; _v56 = __rsi; _v64 = _t103; LMTrx_New(); _v32 = _v48; if(_v32 != 0) { _v24 = (_v56[0x320]); *_v24 = _v32 + 288; *(_v32 + 288) = &(_v56[0x318]); *(_v32 + 296) = _v24; (_v56[0x320]) = _v32 + 288; check_list_constant(); *(_v32 + 1) = *_v56 & 255; *((long long*)(_v32 + 264)) = LMTrxRnr_Lmp_Handler; *((long long*)(_v32 + 272)) = LMTrxRnr_Event_Callback; *((long long*)(_v32 + 280)) = _v64; _v16 = _v32 + 6; *_v16 = 0; *((char*)(_v32 + 4)) = DM_Set_Timer(); r8d = *_v16 & 0xff; LMP_Send_Name_Req(); *((char*)(_v32 + 2)) = 1; } return; } dump_list() {// addr = 0x00491A5C _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x00491B24 signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LMTrxVrs_LMP_Response_Time( _unknown_ __rax, // r53 long long __rsi // r58 ) {// addr = 0x00491F05 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t26; // _t26 long long _t34; // _t34 _v32 = _t34; _v40 = __rsi; _v24 = _v40; if(_v24 == 0) { L4: return; } _t26 = _v24; __esi = *(_t26 + 1) & 0xff; LM_GetLmLinkByLinkId( *(_t26 + 1) & 0xff, _t26, _v32 + 60216); _v16 = _t26; if(_v16 == 0 || *((intOrPtr*)(_v24 + 272)) == 0) { goto L4; } else { r10 = *((intOrPtr*)(_v24 + 272)); r9d = 0; r8d = 0; r10(); return; } } LMTrxVrs_Exit() {// addr = 0x00491F8F signed int _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _unknown_ _t81; // _t81 long long _t83; // _t83 long long _t94; // _t94 long long _t98; // _t98 _v48 = _t94; _v56 = _t98; _v64 = _t83; _v9 = 2; r8 = _v64 + 288; DebugPrint(0, _v64, _t81, _v64 + 288, _t94, _t98); if(_v64 + 288 != 0 && *((intOrPtr*)(_v64 + 288)) != _v64 + 288 && *((intOrPtr*)(_v64 + 296)) != _v64 + 288) { _v32 = *((intOrPtr*)(_v64 + 296)); _v24 = *((intOrPtr*)(_v64 + 288)); *_v32 = _v24; *((long long*)(_v24 + 8)) = _v32; check_list_constant(); } if( *((intOrPtr*)(_v64 + 280)) != 0) { r8 = *((intOrPtr*)(_v64 + 280)); r8(); } *(_v64 + 2) = _v9 & 255; LMTrx_Delete(); _v64 = 0; return _v9 & 255; } LMTrxVrs_Lmp_Handler() {// addr = 0x004920D5 unsigned char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t47; // _t47 _unknown_ _t62; // _t62 long long _t73; // _t73 long long _t75; // _t75 long long _t78; // _t78 _v32 = _t75; _v40 = _t78; _v48 = _t73; _v56 = __rcx; _v60 = r8d; _v11 = 0; DebugPrint(0, _t62, __rcx, _t73, _t75, _t78); if(_v48 == 0) { return 0; } if( *((intOrPtr*)(_v48 + 264)) != 0) { if(_v56 != 0) { _v10 = *_v56 & 1; if(( *(_v40 + 2) & 255) == _v10) { _v9 = ( *_v56 & 255) >> 1; r8d = _v60 & 255; DebugPrint(0, _v56, __rcx, _t73, _t75, _t78); if(_v9 == 38 && _v60 == 6 && *((intOrPtr*)(_v48 + 272)) != 0) { r10 = *((intOrPtr*)(_v48 + 272)); _t47 = (_v60 & 255) - 1; r9d = _t47 & 255; r8 = &(_v56[1]); r10(); _v11 = _t47; } return _v11 & 255; } return 0; } return 0; } else { return 0; } } LMTrxVrs_Event_Callback() {// addr = 0x00492201 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t43; // _t43 _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; _v64 = r8; _v52 = _t43; _v56 = r9d; _v11 = 0; _v24 = _v48 + 6; _t64 = _v48; _v10 = *(_t64 + 2) & 255; _v9 = _v10 & 255; if((_v9 & 255) != 1) { } else { if((_v52 & 255) <= 7) { _t64 = *(_t64 * 8 + "2%I"); goto __rax; } } if(_v48 != 0) { _t64 = _v48; *(_v48 + 2) = _v10 & 255; } if(_v11 == 0) { r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _t64, __rcx, __rdx, __rdi, __rsi); } else { r9d = _v10 & 255; r8d = _v9 & 255; DebugPrint(0, _t64, __rcx, __rdx, __rdi, __rsi); } return; } LMTrx_NewVersion( _unknown_ __rax // r53 ) {// addr = 0x004925AE long long _v16; // _cfa_fffffff0 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t106; // _t106 long long _t116; // _t116 _v48 = _t116; _v56 = __rsi; _v64 = _t106; LMTrx_New(); _v32 = _v48; if(_v32 != 0) { _v24 = (_v56[0x320]); *_v24 = _v32 + 288; *(_v32 + 288) = &(_v56[0x318]); *(_v32 + 296) = _v24; (_v56[0x320]) = _v32 + 288; check_list_constant(); *(_v32 + 1) = *_v56 & 255; *((long long*)(_v32 + 264)) = LMTrxVrs_Lmp_Handler; *((long long*)(_v32 + 272)) = LMTrxVrs_Event_Callback; *((long long*)(_v32 + 280)) = _v64; _v16 = _v32 + 6; *((char*)(_v32 + 4)) = DM_Set_Timer(); r8d = *(_v48 + 191090) & 0xffff; *__rsp = 6; r9d = r8d; r8d = *(_v48 + 191094) & 0xff; LMP_Send_Version_Req(); *((char*)(_v32 + 2)) = 1; } return; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00492748 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } LMTrxVrs_Version_ExitCB( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00492777 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t27; // _t27 _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; if(_v32 == 0 || _v40 == 0 || _v48 == 0) { return; } else { if(( *(_v40 + 1) & 255) == 0) { return; } _v16 = _v48 + 6; *(_v40 + 444) = *(_v16 + 1) & 0xff | ( *(_v16 + 2) & 0xff) << 8; r8 = _v16 + 1; *__rsp = _v16 + 3; r9 = r8; r8 = _v16; EG_Event_Composer(0); return; } } LMTrxVrs_Version_ExitCB_No_HCI_Reply( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00492847 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 _unknown_ _t17; // _t17 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; if(_v32 == 0 || _v40 == 0 || _v48 == 0) { return; } else { if(( *(_v40 + 1) & 255) == 0) { return; } _v16 = _v48 + 6; *(_v40 + 444) = *(_v16 + 1) & 0xff | ( *(_v16 + 2) & 0xff) << 8; return; } } LM_Read_Remote_Version() {// addr = 0x004928B6 intOrPtr _v12; // _cfa_fffffff4 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed short _t26; // _t26 long long _t30; // _t30 long long _t33; // _t33 long long _t43; // _t43 _v48 = _t43; _v52 = _t26; _v24 = 1053; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t30, _v48 + 60216); _v40 = _t30; if(_v40 == 0) { _v12 = 0; EG_Generate_Command_Status_Event(); return; } _t33 = _v48; LMTrx_NewVersion(_t33); _v32 = _t33; if(_v32 == 0) { _v12 = 7; } else { _v12 = 0; } EG_Generate_Command_Status_Event(); return; } LMconfig_LMP_Version_Req() {// addr = 0x0049296C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t59; // _t59 long long _t62; // _t62 _v32 = _t62; _v40 = __rsi; _v48 = _t59; if( *((intOrPtr*)(_v40 + 768)) != 0) { _v16 = *((intOrPtr*)( *((intOrPtr*)(_v40 + 768)) + 72)); *((short*)(_v16 + 18)) = casting_uint16(_v48 + 1); } *(_v40 + 14) = *(_v40 + 2) & 255 ^ 1; r8d = *(_v32 + 191090) & 0xffff; *__rsp = 6; r9d = r8d; r8d = *(_v32 + 191094) & 0xff; LMP_Send_Version_Res(); return 0; } LMconfig_LMP_Version_Res() {// addr = 0x00492A3E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; DebugPrint(0, *((intOrPtr*)(_v24 + 432)), __rcx, __rdx, __rdi, __rsi); return 0; } LMPtrx_Init_Config() {// addr = 0x00492A88 signed char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v24 = __rsi; _v12 = __al; __esi = 0; __rdi = _v24; RtlFillMemory(40, 0, _v24); *(_v24 + 6) = _v12 & 255; return; } LMPtrxsco_Create_LocalInitTransaction( _unknown_ __eax // r0 ) {// addr = 0x00492ABC intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 short _v68; // _cfa_ffffffbc signed int _v70; // _cfa_ffffffba _unknown_ _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed char _v84; // _cfa_ffffffac _unknown_ __rbp; // r59 long long _t20; // _t20 _v80 = _t20; _v84 = __esi; _v12 = 0; LMPtrx_Init_Config(); _v70 = _v84 & 255; _v68 = 43; _v12 = LMPtrx_Create_Transaction(_v80); return _v12; } LMPtrxsco_Create_PeerInitTransaction( long long __rdi // r57 ) {// addr = 0x00492B11 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v12 = 0; return _v12; } dump_list() {// addr = 0x00492B28 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x00492BF0 signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LMPtrx_Create_Transaction( _unknown_ __rax // r53 ) {// addr = 0x00492FD1 intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t52; // _t52 long long _t71; // _t71 long long _t81; // _t81 long long _t85; // _t85 _v48 = _t81; _v56 = _t85; _v64 = _t71; _v12 = 0; _t52 = _v56; RTBT_Alloc(_t52); _v32 = _t52; if(_v32 == 0) { _v12 = 7; } else { _v24 = *((intOrPtr*)(_v48 + 8)); *_v24 = _v32 + 8; *((long long*)(_v32 + 8)) = _v48; *((long long*)(_v32 + 16)) = _v24; *((long long*)(_v48 + 8)) = _v32 + 8; check_list_constant(); *((long long*)(_v32 + 32)) = _v32 + 24; *((long long*)(_v32 + 24)) = *((intOrPtr*)(_v32 + 32)); check_list_constant(); LMPtrxst_Init(); *_v64 = _v32; } return _v12; } LMPtrx_Create_ChildTransaction( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004930D9 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v32 = __rdi; _v40 = __rsi; _v48 = __rdx; _v12 = 0; return _v12; } _LInit_Enter_State( intOrPtr __eax, // r0 long long __rdi // r57 ) {// addr = 0x004930F8 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v32 = __rdi; *((char*)(_v32 + 1)) = 0; if( *((intOrPtr*)(_v32 + 48)) == 0) { _v12 = 31; } else { *((long long*)( *((intOrPtr*)(_v32 + 48))))(); _v12 = __eax; } return; } _LInit_Exit_State( intOrPtr __eax, // r0 long long __rdi // r57 ) {// addr = 0x0049313B intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v32 = __rdi; if( *((intOrPtr*)(_v32 + 64)) == 0) { _v12 = 31; } else { *((long long*)( *((intOrPtr*)(_v32 + 64))))(); _v12 = __eax; } return; } _LInit_Handle_LMPPend_State( char __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00493176 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; __esi = __esi; _v32 = __rdi; _v48 = __rdx; _v36 = __esi; _v12 = 0; return _v12; } _LInit_Handle_Abort_State( char __esi, // r5 long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x00493193 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rdi = __rdi; __rdx = __rdx; __esi = __esi; _v32 = __rdi; _v48 = __rdx; _v36 = __esi; _v12 = 0; return _v12; } LMPtrxst_Initialize_LocalInit_FuntionTable( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004931B0 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v16 = _v32; *((long long*)(_v16 + 88)) = _LInit_Handle_LMPPend_State; *((long long*)(_v16 + 96)) = _LInit_Handle_Abort_State; *((long long*)(_v32 + 40)) = _LInit_Enter_State; *((long long*)(_v32 + 56)) = _LInit_Exit_State; *((long long*)(_v32 + 48)) = *((intOrPtr*)(_v40 + 16)); *((long long*)(_v32 + 64)) = *((intOrPtr*)(_v40 + 24)); *((long long*)(_v32 + 80)) = _v16 + 88; return; } LMPtrxst_Init() {// addr = 0x00493228 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t15; // _t15 long long _t27; // _t27 long long _t30; // _t30 _v32 = _t27; _v40 = _t30; _v12 = 0; _t15 = *(_v40 + 6) & 255; if(_t15 == 0) { LMPtrxst_Initialize_LocalInit_FuntionTable(_v32, _v40); } if( *((intOrPtr*)(_v32 + 40)) != 0) { *((long long*)( *((intOrPtr*)(_v32 + 40))))(); _v12 = _t15; } return; } dump_list() {// addr = 0x00493284 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t47; // _t47 _unknown_ _t52; // _t52 _v32 = __rdi; if(_v32 == 0) { L3: _t19 = DebugPrint(0, _t34, _t47, _t52, __rdi, __rsi); } else { _t34 = *_v32; if( *_v32 == 0) { goto L3; } else { r9 = *((intOrPtr*)(_v32 + 8)); r8 = *_v32; DebugPrint(0, _v32, _v32, *_v32, __rdi, __rsi); } } _v16 = *_v32; while(_v16 != _v32) { r9 = *((intOrPtr*)(_v16 + 8)); r8 = *_v16; _t19 = DebugPrint(0, _v16, _v16, *_v16, __rdi, __rsi); _v16 = *_v16; } return; } check_list_constant() {// addr = 0x0049334C signed long long _v12; // _cfa_fffffff4 signed long long _v16; // _cfa_fffffff0 signed long long _v20; // _cfa_ffffffec signed long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed long long _v88; // _cfa_ffffffa8 signed long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 intOrPtr _t167; // _t167 signed long long _t186; // _t186 signed long long _t191; // _t191 signed long long _t196; // _t196 signed long long _t204; // _t204 signed long long _t209; // _t209 signed long long _t217; // _t217 _v48 = _t228; _v52 = _t167; _v64 = _t224; _v72 = _t216; _v16 = 0; _v12 = 0; _t186 = *_v48; if(_t186 == _v48) { L2: if(_v52 == 1 || _v52 == 2) { _t224 = *(_t186 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t186 * 8 + &list_op_str); _t216 = _v72; DebugPrint(0, _v72, _v72, *(_t186 * 8 + &list_op_str), _t228, __rsi); _v16 = 1; L28: if(_v16 == 0) { return; } DebugPrint(0, _t187, _t216, _t224, _t228, __rsi); dump_list(); return; } else { L5: _v32 = *_v48; _v20 = 0; _v24 = _v20; if(_v52 != 1) { while(1) { L13: _t191 = _v32; if(_t191 == _v48 || _v12 > 199) { break; } if(_v52 != 4) { L12: _v12 = _v12 + 1; _v24 = _v24 + 1; _v32 = *_v32; continue; } _t204 = _v32; if(_t204 != _v64) { goto L12; } else { r8 = *(_t204 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t204 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; _t228 = *_v48; r8 = _v64; _t187 = _v48; __rsi = _v32; _v88 = __rsi; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = r8; r8 = *_v48; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, *_v48, __rsi); _v16 = 1; goto L28; } } if(_v12 <= 199) { _v12 = 0; _v32 = *(_v48 + 8); if(_v52 != 2) { while(1) { L22: _t187 = _v32; if(_t187 == _v48 || _v12 > 199) { break; } _v12 = _v12 + 1; _v20 = _v20 + 1; _v32 = *(_v32 + 8); } _t122 = _v20; if(_v20 != _v24) { _t217 = *(_t187 * 8 + &list_op_str); _t187 = _v72; *__rsp = _v20; r9d = _v24; r8 = _t217; _t216 = _t187; _t122 = DebugPrint(0, _t187, _t187, _t224, _t228, __rsi); _v16 = 1; } if(_v12 > 199) { _t224 = *(_t187 * 8 + &list_op_str); _t187 = _v72; r8 = _t224; _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, _t224, _t228, __rsi); } goto L28; } _t196 = _v32; if(_t196 != _v64) { L20: r8 = *(_t196 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t196 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t196 = *_v64; if(_t196 == _v48) { goto L22; } goto L20; } else { _t224 = *(_t191 * 8 + &list_op_str); _t187 = _v72; r8 = *(_t191 * 8 + &list_op_str); _t216 = _v72; _t122 = DebugPrint(0, _v72, _v72, *(_t191 * 8 + &list_op_str), _t228, __rsi); goto L28; } } _t209 = _v32; if(_t209 != _v64) { L8: r8 = *(_t209 * 8 + &list_op_str); DebugPrint(0, _v72, _v72, *(_t209 * 8 + &list_op_str), _t228, __rsi); _t224 = *_v64; __rsi = *_v48; _t228 = _v64; _t187 = _v48; _v96 = *(_v64 + 8); *__rsp = *_v64; r9 = _v64; r8 = __rsi; _t216 = _v48; _t122 = DebugPrint(0, _v48, _v48, *_v64, _v64, __rsi); _v16 = 1; goto L28; } _t209 = *(_v64 + 8); if(_t209 == _v48) { goto L13; } goto L8; } } _t186 = *(_v48 + 8); if(_t186 != _v48) { goto L5; } goto L2; } LMPtrxtsk_Initialise( long long __rax // r53 ) {// addr = 0x0049372D intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t14; // _t14 long long _t21; // _t21 _t14 = __rax; _v32 = _t21; _v12 = 0; RTBT_Alloc(__rax); _v24 = _t14; if(_v24 == 0) { _v12 = 7; } else { *((long long*)(_v24 + 8)) = _v24; *_v24 = *((intOrPtr*)(_v24 + 8)); check_list_constant(); } return _v12; } LMPtrxtsk_Main( long long __rdi // r57 ) {// addr = 0x00493799 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } LMdisp_LMP_Command_Dispatcher( _unknown_ __eax // r0 ) {// addr = 0x004937A4 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 char _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 signed long long _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 signed long long _v80; // _cfa_ffffffb0 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed short _t138; // _t138 char _t143; // _t143 signed long long _t179; // _t179 signed long long _t182; // _t182 signed long long _t186; // _t186 signed int _t197; // _t197 signed long long _t198; // _t198 signed long long _t226; // _t226 signed long long _t237; // _t237 signed int _t252; // _t252 signed int _t264; // _t264 _v96 = _t252; _v20 = 31; _v11 = 0; while(_v11 <= 6) { _t179 = _v96; if(( *(_t179 + 190499) & 255) != 0) { return 31; } _t182 = _t179 * 808 + _v96 + 60208; if(( *(_t182 + 17) & 255) == 0) { goto L34; } else { _t186 = *(_t182 * 808 + _v96 + 60656); if(_t186 == 0) { L34: _v11 = _v11 + 1; continue; } if(( *( *((intOrPtr*)(_t186 * 808 + _v96 + 60656)) + 2) & 255) != 0) { goto L34; } _v64 = _v96 * 808 + _v96 + 60224; _v56 = *((intOrPtr*)(_v64 + 432)); _t197 = *(_v56 + 32); QUEUE_DequeueRequest(_t197); _v48 = _t197; if(_v48 == 0) { goto L34; } _t198 = _v48; QUEUE_GetDataBuf(_t198); _v80 = _t198; _v10 = QUEUE_GetBufLength(_v48); _v9 = *_v80 & 1; *(_v64 + 13) = _v9 & 255; EG_Generate_LMP_Event(); _t257 = _v48; _t138 = QUEUE_GetBufLength(_v48); _t237 = _v80; r8d = _t138 & 65535; _t264 = _v96; LMP_TRACE(); _v12 = 0; if( *((intOrPtr*)(_v64 + 792)) != _v64 + 792 || *((intOrPtr*)(_v64 + 800)) != _v64 + 792) { _v40 = _v64 + 792; _v72 = *_v40; while(_v72 != _v40) { _v32 = _v72 - 288; r8 = _v72; _t143 = DebugPrint(0, _v32, _t237, _v72, _t257, _t264); if( *((intOrPtr*)(_v32 + 264)) == 0) { L12: _v72 = *_v72; continue; } r9 = *((intOrPtr*)(_v32 + 264)); _t237 = _v80; _t264 = _v64; r8d = _v10 & 255; _t257 = _v96; r9(); _v12 = _t143; if(_v12 != 0) { goto L16; } goto L12; } goto L16; } else { L16: if(_v12 == 0) { _t226 = _v80; _v14 = ( *_t226 & 255) >> 1 & 255; _v80 = _v80 + 1; if(_v14 > 123) { _t226 = _v80; _v14 = ( *_t226 & 0xff) + ((_v14 & 65535) << 8); _v80 = _v80 + 1; } if(_v14 <= 65 || _v14 > 126) { if(_v14 > 123) { _v20 = _LMdisp_Dispatch_Extended_Opcode(); } else { if(_v14 > 66) { _v20 = 26; } else { r8 = *((intOrPtr*)(_t226 * 8 + &lmp_command_table)); r8(); _v20 = _t226; } if(_v20 != 0) { *(_v64 + 14) = *(_v64 + 13) & 255; LM_Encode_LMP_Not_Accepted_PDU(_v96 + 60216); } } } else { LM_Encode_LMP_Not_Accepted_PDU(_v96 + 60216); } } QUEUE_DequeueCommit( *((intOrPtr*)( *((intOrPtr*)(_v64 + 432)) + 32))); goto L34; } } } return 0; } LMdisp_LMP_Accepted() {// addr = 0x00493B62 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 long long _t9; // _t9 long long _t11; // _t11 _v16 = _t9; _v24 = _t11; _v32 = _t7; LMdisp_LMP_Accepted_Common(); return; } LMdisp_LMP_Accepted_Ext() {// addr = 0x00493B91 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t7; // _t7 long long _t9; // _t9 long long _t11; // _t11 _v16 = _t9; _v24 = _t11; _v32 = _t7; LMdisp_LMP_Accepted_Common(); return; } LMdisp_LMP_Accepted_Common() {// addr = 0x00493BC0 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed int _t38; // _t38 signed char* _t78; // _t78 long long _t83; // _t83 long long _t91; // _t91 _v32 = _t83; _v40 = _t91; _v48 = _t78; _v52 = __ecx; _v10 = *_v48 & 0xff; if(_v52 != 0) { _v10 = _v10 << 8; _v10 = _v10 | (_v48[1]) & 0xff; } _t38 = _v10 & 65535; if(_t38 > 44) { if(_t38 > 54) { if(_t38 == 32523) { LMqos_LMP_Accepted_Ext(_v10 & 65535, _v32, _v40); goto L40; } if(_t38 > 32523) { if(_t38 > 32525) { goto L38; } goto L32; } _t41 = _t38 - 61; if(_t38 - 61 > 4) { goto L38; } LMssp_LMP_Accepted(_t41); goto L40; } if(_t38 >= 53) { goto L40; } if(_t38 == 50) { goto L33; } if(_t38 == 51) { LMconnection_LMP_Accepted(); goto L40; } if(_t38 == 46) { goto L35; } goto L38; } else { if(_t38 >= 43) { L32: LMsco_LMP_Accepted(_v32); L40: return; } if(_t38 == 21) { L34: LMpolicy_LMP_Accepted(_v48, _v32, _v40); goto L40; } if(_t38 > 21) { if(_t38 > 30) { if(_t38 == 42) { L35: LMqos_LMP_Accepted(); goto L40; } L38: goto L40; } if(_t38 >= 29) { goto L34; } if(_t38 - 23 > 2) { goto L38; } goto L34; } if(_t38 > 18) { if(_t38 == 19) { goto L34; } goto L38; } if(_t38 >= 15 || _t38 == 8 || _t38 == 11) { L33: LMsec_peer_LMP_Accepted(_v48, _v32, _v40); goto L40; } else { goto L38; } } } LMdisp_LMP_Not_Accepted( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00493D9A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t7; // _t7 long long _t9; // _t9 _v16 = __rdi; _v24 = __rsi; _v32 = _t9; LMdisp_LMP_Not_Accepted_Common(_t7); return; } LMdisp_LMP_Not_Accepted_Ext( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00493DC9 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t7; // _t7 long long _t9; // _t9 _v16 = __rdi; _v24 = __rsi; _v32 = _t9; LMdisp_LMP_Not_Accepted_Common(_t7); return; } LMdisp_LMP_Not_Accepted_Common( _unknown_ __eax // r0 ) {// addr = 0x00493DF8 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed int _t68; // _t68 char _t79; // _t79 signed char* _t119; // _t119 long long _t121; // _t121 long long _t131; // _t131 _v32 = _t121; _v40 = _t131; _v48 = _t119; _v52 = _t79; _v10 = *_v48 & 0xff; _v48 = &(_v48[1]); if(_v52 != 0) { _v10 = _v10 << 8; _v10 = _v10 | *_v48 & 0xff; _v48 = &(_v48[1]); } _v16 = *_v48 & 0xff; _v24 = _v10 & 65535; _v22 = _v16; _t68 = _v10 & 65535; if(_t68 > 44) { if(_t68 > 65) { if(_t68 > 32525) { if(_t68 < 32535) { goto L58; } if(_t68 <= 32536) { goto L52; } if(_t68 > 32538) { goto L58; } L57: LMssp_LMP_Not_Accepted(); goto L58; } if(_t68 >= 32524) { goto L50; } if(_t68 == 32515) { goto L49; } if(_t68 == 32523) { goto L54; } goto L58; } if(_t68 >= 61) { goto L57; } if(_t68 > 54) { if(_t68 < 56) { goto L58; } if(_t68 <= 57) { goto L60; } if(_t68 == 58) { goto L51; } goto L58; } if(_t68 >= 53 || _t68 == 47) { goto L55; } else { if(_t68 > 47) { if(_t68 == 50) { goto L51; } if(_t68 == 51) { goto L49; } goto L58; } if(_t68 == 46) { goto L54; } goto L58; } } else { if(_t68 >= 43) { L50: LMsco_LMP_Not_Accepted(_v32); L60: return 0; } if(_t68 > 25) { if(_t68 > 32) { if(_t68 == 39) { L49: LMconnection_LMP_Not_Accepted(); goto L60; } if(_t68 == 42) { L54: LMqos_LMP_Not_Accepted(_v16); goto L60; } if(_t68 == 37) { LMconfig_LMP_Not_Accepted( *(_v40 + 626) & 65535, _v10 & 65535); goto L60; } L58: goto L60; } if(_t68 >= 31) { L55: LMlc_LMP_Not_Accepted(_v16, _v10 & 65535, _v32, _v40); goto L60; } if(_t68 < 29) { goto L58; } L53: LMpolicy_LMP_Not_Accepted(); goto L60; } if(_t68 >= 23) { goto L53; } if(_t68 > 11) { if(_t68 == 19) { goto L53; } if(_t68 > 19) { if(_t68 == 21) { goto L53; } goto L58; } if(_t68 < 15) { goto L58; } L52: LMsec_Fsm_Event_Callback(); goto L60; } if(_t68 >= 8) { L51: LMsec_peer_LMP_Not_Accepted(); goto L60; } if(_t68 == 1) { goto L49; } if(_t68 == 5) { goto L55; } goto L58; } } LMdisp_LMP_Unsupported_Command( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004940C5 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; return 26; } _LMdisp_Dispatch_Extended_Opcode() {// addr = 0x004940DC signed int _v9; // _cfa_fffffff7 signed long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed long long _t40; // _t40 long long _t46; // _t46 long long _t48; // _t48 long long _t50; // _t50 _v32 = _t50; _v48 = _t48; _v56 = _t46; _v36 = __esi; _v9 = _v36 & 65535; if((_v36 & 65535) >> 8 == 127) { if(_v9 <= 32) { r8 = *((intOrPtr*)(_t40 * 8 + &lmp_command_table_escape_opcode_4)); r8(); _v16 = _t40; } else { _v16 = 26; } } else { _v16 = 26; } if(_v16 != 0) { *(_v56 + 14) = *(_v56 + 13) & 255; LM_Encode_LMP_Not_Accepted_Ext_PDU(_v32 + 60216); } return _v16; } LMutils_Set_Uint16( signed short __esi, // r5 long long __rdi // r57 ) {// addr = 0x00494184 _unknown_ _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *_v16 = __dl; *(_v16 + 1) = (_v20 & 65535) >> 8; return; } LMutils_Set_Uint32( unsigned int __esi, // r5 long long __rdi // r57 ) {// addr = 0x004941B2 _unknown_ _v16; // _cfa_fffffff0 unsigned int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *_v16 = __dl; *(_v16 + 1) = _v20 >> 8; *(_v16 + 2) = _v20 >> 16; *(_v16 + 3) = _v20 >> 24; return; } LMPbback_Initialise() {// addr = 0x004941FA _unknown_ __rbp; // r59 __edx = 160; __esi = 0; RtlFillMemory(160, 0, __rdi); return; } _LMPbback_NewTransaction() {// addr = 0x00494214 signed long long _v12; // _cfa_fffffff4 signed long long _v24; // _cfa_ffffffe8 signed char _v28; // _cfa_ffffffe4 signed char _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char _t64; // _t64 signed char _t67; // _t67 signed long long _t73; // _t73 signed long long _t77; // _t77 _v40 = __rdx; _v28 = _t64; _v32 = _t67; _v24 = 0; _v12 = 0; while(_v12 <= 9) { _t73 = (_t73 << 4) + &gLmpBBAckTranscationTable; if(( *_t73 & 255) != 0) { _v12 = _v12 + 1; continue; } else { _v24 = (_t73 << 4) + &gLmpBBAckTranscationTable; *_v24 = 1; *(_v24 + 1) = _v28 & 255; *(_v24 + 2) = _v32 & 255; __rdx = _v40; *((long long*)(_v24 + 8)) = __rdx; _t73 = _v24; r8d = *(_v24 + 1) & 0xff; DebugPrint(0, _t73, __rcx, __rdx, __rdi, __rsi); } break; } if(_v24 != 0) { } else { _v12 = 0; while(_v12 <= 9) { _t77 = (_t73 << 4) + &gLmpBBAckTranscationTable; _t73 = (_t77 << 4) + &gLmpBBAckTranscationTable; r9d = *(_t77 + 1) & 0xff; r8d = *(_t73 + 2) & 0xff; _t37 = DebugPrint(0, _t73, __rcx, __rdx, __rdi, __rsi); _v12 = _v12 + 1; } } return; } LMPbback_DelTransactionByTId( signed long long __rax // r53 ) {// addr = 0x00494344 char _v12; // _cfa_fffffff4 char _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t20; // _t20 char _t43; // _t43 signed int _t45; // _t45 signed long long _t47; // _t47 signed long long _t52; // _t52 signed long long _t54; // _t54 _t47 = __rax; _t20 = _t45; _v28 = _t43; _v32 = _t20; _v12 = 0; while(_v12 <= 9) { _t47 = (_t47 << 4) + &gLmpBBAckTranscationTable; _t20 = *_t47 & 255; if(_t20 != 1) { } else { _t47 = (_t47 << 4) + &gLmpBBAckTranscationTable; _t20 = *(_t47 + 1) & 255; if(_t20 != _v32) { } else { _t47 = (_t47 << 4) + &gLmpBBAckTranscationTable; _t20 = *(_t47 + 2) & 255; if(_t20 == _v28) { _t52 = (_t47 << 4) + &gLmpBBAckTranscationTable; _t54 = (_t52 << 4) + &gLmpBBAckTranscationTable; r9d = *(_t52 + 1) & 0xff; r8d = *(_t54 + 2) & 0xff; DebugPrint(0, _t54, __rcx, __rdx, __rdi, __rsi); *((char*)((_t54 << 4) + &gLmpBBAckTranscationTable)) = 0; return _t54; } } } _v12 = _v12 + 1; } return _t20; } LMPbback_DelTransactionByLinkIndex( signed long long __rax // r53 ) {// addr = 0x00494420 signed char _v12; // _cfa_fffffff4 signed long long _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed long long _t16; // _t16 signed long long _t35; // _t35 signed long long _t37; // _t37 signed long long _t41; // _t41 signed long long _t43; // _t43 _t37 = __rax; _t16 = _t35; _v28 = _t16; _v12 = 0; while(_v12 <= 9) { _t37 = (_t37 << 4) + &gLmpBBAckTranscationTable; _t16 = *_t37 & 255; if(_t16 == 1) { _t37 = (_t37 << 4) + &gLmpBBAckTranscationTable; _t16 = *(_t37 + 2) & 255; if(_t16 == _v28) { _t41 = (_t37 << 4) + &gLmpBBAckTranscationTable; _t43 = (_t41 << 4) + &gLmpBBAckTranscationTable; r9d = *(_t41 + 1) & 0xff; r8d = *(_t43 + 2) & 0xff; DebugPrint(0, _t43, __rcx, __rdx, __rdi, __rsi); _t16 = _t43; _t37 = (_t43 << 4) + &gLmpBBAckTranscationTable; *_t37 = 0; } } _v12 = _v12 + 1; } return _t16; } LMPbback_SearchByTransactionID( _unknown_ __edi, // r4 signed long long __esi // r5 ) {// addr = 0x004944D9 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 signed long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed long long _t18; // _t18 signed long long _t26; // _t26 __esi = __esi; __edi = __edi; _t18 = __esi; _v28 = __dl; _v32 = __esi; _v24 = 0; _v12 = 0; while(_v12 <= 9) { _t26 = (_t26 << 4) + &gLmpBBAckTranscationTable; _t18 = *_t26 & 255; if(_t18 != 1) { L5: _v12 = _v12 + 1; continue; } else { _t26 = (_t26 << 4) + &gLmpBBAckTranscationTable; _t18 = *(_t26 + 1) & 255; if(_t18 != _v32) { goto L5; } else { _t26 = (_t26 << 4) + &gLmpBBAckTranscationTable; _t18 = *(_t26 + 2) & 255; if(_t18 != _v28) { goto L5; } else { _t18 = _t26; _v24 = (_t26 << 4) + &gLmpBBAckTranscationTable; } } } break; } return _t18; } _LM_Encode_Set_Name_Fragment( long long __rdi, // r57 signed int* __rsi // r58 ) {// addr = 0x00494563 signed int _v12; // _cfa_fffffff4 signed int* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed int* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int* _t21; // _t21 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v12 = 0; while(_v12 <= 13) { __rax = _v40; if(((__rax[2]) & 0xff) > _v12) { __rax = __rax + _v32; *__rax = *(_v12 + *_v40) & 255; _v12 = _v12 + 1; continue; } break; } _t21 = _v12; _v16 = _t21; while(_v16 <= 13) { _t21 = __rax; __rax = __rax + _v32; *__rax = 0; _v16 = &(_v16[0]); } return _t21; } LM_Encode_LMP_Accepted_PDU( long long __rdi // r57 ) {// addr = 0x004945D0 signed int _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 signed short _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v48 = __rdi; _v56 = __rsi; _v60 = __dl; _v64 = __ecx; _v31 = *(_v56 + 13) & 255; _v22 = 3; _v24 = _v60 & 255; _v18 = _v64 & 65535; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; __rcx = ?_? ( &_v40); LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 255, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LM_Encode_LMP_Accepted_Ext_PDU( long long __rdi // r57 ) {// addr = 0x0049463D short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 _v48 = __rdi; _v56 = __rsi; _v60 = __edx; _v31 = *(_v56 + 13) & 255; _v22 = 32513; _v24 = _v60 & 65535; _v18 = 0; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; __rcx = ?_? ( &_v40); LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 255, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LM_Encode_LMP_Not_Accepted_PDU( long long __rdi // r57 ) {// addr = 0x004946A5 short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v31; // _cfa_ffffffe1 char _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 char _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v48 = __rdi; _v56 = __rsi; _v64 = __ecx; _v60 = __edx; _v31 = *(_v56 + 2) & 255 ^ 1; _v22 = 4; _v24 = _v60 & 255; _v32 = _v64; _v18 = 0; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; __rcx = ?_? ( &_v40); LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 255, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LM_Encode_LMP_Not_Accepted_Ext_PDU( long long __rdi // r57 ) {// addr = 0x00494718 short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v31; // _cfa_ffffffe1 char _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 char _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v48 = __rdi; _v56 = __rsi; _v64 = __ecx; _v60 = __edx; _v31 = *(_v56 + 2) & 255 ^ 1; _v22 = 32514; _v24 = _v60 & 65535; _v32 = _v64; _v18 = 0; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; __rcx = ?_? ( &_v40); LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 255, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } LM_Encode_LMP_PDU( _unknown_ __eax, // r0 char __esi, // r5 long long __rcx // r55 ) {// addr = 0x0049478C signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v14; // _cfa_fffffff2 long long _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 intOrPtr _t111; // _t111 long long _t122; // _t122 long long _t127; // _t127 long long _t129; // _t129 _v64 = _t129; _v80 = _t127; _v88 = __rcx; _v68 = __esi; _v20 = 0; _v56 = 0; _v40 = _v64 - 60216; _t111 = _v88; _v14 = *(_t111 + 18) & 65535; if(_v14 > 255) { _v9 = _v14 & 65535; if((_v14 & 65535) >> 8 != 127 || _v9 > 24) { return 30; } else { _v10 = *(_t111 + _t111 + 5062657) & 255; _v11 = *(_t111 + _t111 + &_LM_Encode_lmp_command_escape_opcode_4) & 255; _v48 = _LM_Encode_Extended_PDU; L8: QUEUE_EnqueueRequest(); _v32 = _v80; if(_v32 != 0) { _t122 = _v32; QUEUE_GetDataBuf(_t122); _v56 = _t122; } if(_v32 != 0) { if(_v56 != 0) { if((_v10 & 0x10) == 0) { r8 = _v48; r8(); } else { LMutils_Array_Copy(_v11 & 255, _v88, *_v88, _v56); } QUEUE_GetBufLength(_v32); EG_Generate_LMP_Event(); r8d = QUEUE_GetBufLength(_v32) & 65535; LMP_TRACE(); QUEUE_EnqueueCommit(); return _v20; } return 31; } else { return 7; } } } if(_v14 <= 63) { _v10 = *(_t111 + _t111 + 5062529) & 255; _v11 = *(_t111 + _t111 + &_LM_Encode_lmp_command) & 255; _v48 = _LM_Encode_Normal_PDU; goto L8; } return 30; } LM_Encode_LMP_PDU_Fully_Encoded( long long __rdi // r57 ) {// addr = 0x0049496B short _v18; // _cfa_ffffffee signed int _v22; // _cfa_ffffffea char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 char _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 long long _t20; // _t20 _v48 = __rdi; _v64 = _t20; _v72 = r8; _v52 = sil; _v56 = __ecx; _v22 = _v56 & 65535; _v40 = _v72; _v18 = 0; __esi = _v52 & 255; __rcx = ?_? ( &_v40); LM_Encode_LMP_PDU(_v56 & 65535, _v52 & 255, &_v40); return; } _LM_Encode_Normal_PDU( char __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004949B9 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 intOrPtr _t28; // _t28 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v44 = __edx; _t28 = _v40; _v9 = *(_t28 + 18) & 65535; *_v32 = _t28 + _t28 + (( *(_v40 + 9) & 255) != 0); _v32 = _v32 + 1; if((_v9 & 255) <= 59) { goto __rax; } return; } _LM_Encode_Extended_PDU( signed char __edx // r3 ) {// addr = 0x00494B2E signed int _v26; // _cfa_ffffffe6 signed char* _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t100; // _t100 signed long long _t132; // _t132 long long _t143; // _t143 _v48 = __rdi; _v56 = _t143; _v60 = __edx; _v26 = *(_v56 + 18) & 65535; if((_v26 & 65535) - 32513 > 21) { } else { _t100 = _t132 << __cl; if(_t100 != 0) { __edi = _v60 & 255; LMutils_Array_Copy(_v60 & 255, _v56, *_v56, _v48); return; } if(_t100 != 0) { *_v48 = ( *(_v56 + 18) & 65535) >> 8; (_v48[1]) = *(_v56 + 18) & 65535; (_v48[2]) = ( *(_v56 + 16) & 65535) >> 8; (_v48[3]) = *(_v56 + 16) & 65535; (_v48[4]) = *(_v56 + 8) & 255; *_v48 = &(_v48[_v48]); *_v48 = *_v48 & 255 | *(_v56 + 9) & 255; return; } if(_t100 != 0) { *_v48 = ( *(_v56 + 18) & 65535) >> 8; (_v48[1]) = *(_v56 + 18) & 65535; (_v48[2]) = ( *(_v56 + 16) & 65535) >> 8; (_v48[3]) = *(_v56 + 16) & 65535; *_v48 = &(_v48[_v48]); *_v48 = *_v48 & 255 | *(_v56 + 9) & 255; return; } } return; } LMP_Malloc_PDU( _unknown_ __rax // r53 ) {// addr = 0x00494CC8 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc short _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 short _t24; // _t24 signed char _t28; // _t28 long long _t33; // _t33 long long _t37; // _t37 _v32 = _t37; _v36 = _t28; _v40 = _t24; _v24 = 0; _v16 = 0; QUEUE_EnqueueRequest(); _v24 = _v32; if(_v24 != 0) { _t33 = _v24; QUEUE_GetDataBuf(_t33); _v16 = _t33; if(_v16 != 0) { RtlFillMemory(_v36 & 255, 0, _v16); return; } QUEUE_EnqueueCancel(); return; } return; } LMP_Send_Free_PDU() {// addr = 0x00494D61 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 _unknown_ _t20; // _t20 long long _t28; // _t28 long long _t30; // _t30 _v32 = _t30; _v48 = __rdx; _v56 = _t28; _v36 = __al; _v40 = r8d; _v16 = _v32 - 60216; EG_Generate_LMP_Event(); r8d = _v40 & 255; LMP_TRACE(); QUEUE_EnqueueCommit(); return; } LMP_Free_PDU() {// addr = 0x00494DDC long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; QUEUE_EnqueueCancel(); return; } LMP_Send_Accepted() {// addr = 0x00494DF6 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 char _t13; // _t13 long long _t15; // _t15 long long _t17; // _t17 _v16 = _t17; _v32 = _t15; _v20 = sil; _v24 = _t13; _v36 = __dl; __rax = _v16; *__rsp = 0; r9d = 0; r8d = _v36 & 255; LMP_Send_Accepted_Tag(_v16); return; } LMP_Send_Accepted_Tag( long long __rax, // r53 _unknown_ _a8 // _cfa_8 ) {// addr = 0x00494E44 _unknown_ _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t46; // _t46 signed char* _t74; // _t74 signed char* _t80; // _t80 signed char* _t82; // _t82 long long _t85; // _t85 _v32 = _t85; _v48 = _t82; _v36 = sil; _v40 = _t46; _v52 = r8d; _v56 = r9d; if(_v56 == 0) { _t74 = _v48; LMP_Malloc_PDU(_t74); _v24 = _t74; if(_v24 != 0) { L7: *_v24 = *_v24 & 0xfe | _v40 & 1; *_v24 = *_v24 & 1 | 6; (_v24[1]) = _v52 & 255; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } _LMPbback_NewTransaction(); _v16 = __rax; if(_v16 != 0) { _t80 = _v48; LMP_Malloc_PDU(_t80); _v24 = _t80; if(_v24 != 0) { goto L7; } LMPbback_DelTransactionByTId(_v16); return 7; } return 7; } LMP_Send_Accepted_Tag_Log_Opcode( signed char __ecx, // r2 signed char __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00494F64 short _v18; // _cfa_ffffffee short _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed int _v31; // _cfa_ffffffe1 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed char _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 __rsi = __rsi; __ecx = __ecx; _v48 = __rdi; _v56 = __rsi; _v60 = __edx; _v64 = __ecx; if(_v56 == 0) { return; } if( *((intOrPtr*)(_v56 + 432)) != 0) { _v31 = _v64 & 255; _v22 = 3; _v18 = 24; _v24 = _v60 & 255; *(_v56 + 82) = _v60 & 255; __esi = *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff; LM_Encode_LMP_PDU( *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, *( *((intOrPtr*)(_v56 + 432)) + 11) & 0xff, &_v40); return; } return; } LMP_Send_Not_Accepted() {// addr = 0x00494FF9 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t27; // _t27 signed char* _t45; // _t45 signed char* _t51; // _t51 long long _t53; // _t53 _v32 = _t53; _v48 = _t51; _v36 = sil; _v40 = _t27; _v52 = r8d; _v56 = r9d; _t45 = _v48; LMP_Malloc_PDU(_t45); _v16 = _t45; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 8; (_v16[1]) = _v52 & 255; (_v16[2]) = _v56 & 255; r8d = 3; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Max_Slot_Req() {// addr = 0x004950AC signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t23; // _t23 signed char* _t39; // _t39 signed char* _t44; // _t44 long long _t46; // _t46 _v32 = _t46; _v48 = _t44; _v36 = sil; _v40 = _t23; _v52 = r8d; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 92; (_v16[1]) = _v52 & 255; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Max_Slot() {// addr = 0x0049514E signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t23; // _t23 signed char* _t39; // _t39 signed char* _t44; // _t44 long long _t46; // _t46 _v32 = _t46; _v48 = _t44; _v36 = sil; _v40 = _t23; _v52 = r8d; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 90; (_v16[1]) = _v52 & 255; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Version_Req( signed short _a8 // _cfa_8 ) {// addr = 0x004951F0 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t44; // _t44 signed char* _t65; // _t65 signed char* _t74; // _t74 long long _t76; // _t76 _v32 = _t76; _v48 = _t74; _v36 = sil; _v40 = _t44; _v52 = dil; _v56 = r9d; _v60 = _a8; _t65 = _v48; LMP_Malloc_PDU(_t65); _v16 = _t65; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 74; (_v16[1]) = _v52 & 255; (_v16[2]) = _v56 & 65535; (_v16[3]) = (_v56 & 65535) >> 8; (_v16[4]) = _v60 & 65535; (_v16[5]) = (_v60 & 65535) >> 8; r8d = 6; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Version_Res( signed short _a8 // _cfa_8 ) {// addr = 0x004952E0 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t44; // _t44 signed char* _t65; // _t65 signed char* _t74; // _t74 long long _t76; // _t76 _v32 = _t76; _v48 = _t74; _v36 = sil; _v40 = _t44; _v52 = dil; _v56 = r9d; _v60 = _a8; _t65 = _v48; LMP_Malloc_PDU(_t65); _v16 = _t65; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 76; (_v16[1]) = _v52 & 255; (_v16[2]) = _v56 & 65535; (_v16[3]) = (_v56 & 65535) >> 8; (_v16[4]) = _v60 & 65535; (_v16[5]) = (_v60 & 65535) >> 8; r8d = 6; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Features_Req() {// addr = 0x004953D0 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 intOrPtr _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t23; // _t23 signed char* _t37; // _t37 signed char* _t45; // _t45 long long _t48; // _t48 _v32 = _t48; _v48 = _t45; _v56 = r8; _v36 = sil; _v40 = _t23; _t37 = _v48; LMP_Malloc_PDU(_t37); _v16 = _t37; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 78; __rsi = &(_v16[1]); __edi = 8; LMutils_Array_Copy(8, _v56, _v56, &(_v16[1])); r8d = 9; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Features_Res() {// addr = 0x00495481 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 intOrPtr _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t23; // _t23 signed char* _t37; // _t37 signed char* _t45; // _t45 long long _t48; // _t48 _v32 = _t48; _v48 = _t45; _v56 = r8; _v36 = sil; _v40 = _t23; _t37 = _v48; LMP_Malloc_PDU(_t37); _v16 = _t37; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 80; __rsi = &(_v16[1]); __edi = 8; LMutils_Array_Copy(8, _v56, _v56, &(_v16[1])); r8d = 9; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Setup_Complete() {// addr = 0x00495532 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t19; // _t19 signed char* _t33; // _t33 signed char* _t37; // _t37 long long _t39; // _t39 _v32 = _t39; _v48 = _t37; _v36 = sil; _v40 = _t19; _t33 = _v48; LMP_Malloc_PDU(_t33); _v16 = _t33; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 98; r8d = 1; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Host_Connection_Req() {// addr = 0x004955C3 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t19; // _t19 signed char* _t33; // _t33 signed char* _t37; // _t37 long long _t39; // _t39 _v32 = _t39; _v48 = _t37; _v36 = sil; _v40 = _t19; _t33 = _v48; LMP_Malloc_PDU(_t33); _v16 = _t33; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 102; r8d = 1; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Name_Req() {// addr = 0x00495654 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t23; // _t23 signed char* _t39; // _t39 signed char* _t44; // _t44 long long _t46; // _t46 _v32 = _t46; _v48 = _t44; _v36 = sil; _v40 = _t23; _v52 = r8d; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 2; (_v16[1]) = _v52 & 255; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Features_Req_Ext( signed char _a8 // _cfa_8 ) {// addr = 0x004956F6 signed char _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc signed char _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed char _t51; // _t51 signed char* _t68; // _t68 signed char* _t84; // _t84 long long _t89; // _t89 _v48 = _t89; _v64 = _t84; _v80 = r9; _v52 = sil; _v56 = _t51; _v68 = r8d; _v32 = 0; _t68 = _v64; LMP_Malloc_PDU(_t68); _v24 = _t68; if(_v24 != 0) { if(_v68 != 0) { if(_v68 > 1) { _v9 = 0; while(_v9 <= 7) { (_v24[ &(_t68[4])]) = 0; _v9 = _v9 + 1; } L9: *_v24 = *_v24 & 0xfe | _v56 & 1; *_v24 = *_v24 & 255 | 254; (_v24[1]) = 3; (_v24[2]) = _v68 & 255; (_v24[3]) = 0; r8d = 12; LMP_Send_Free_PDU(); return 0; } _v32 = _a8; LMutils_Array_Copy(8, _v32, _v32, &(_v24[4])); goto L9; } _v32 = _v80; LMutils_Array_Copy(8, _v32, _v32, &(_v24[4])); goto L9; } return 7; } LMP_Send_Features_Res_Ext() {// addr = 0x0049582B signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t31; // _t31 signed char* _t46; // _t46 signed char* _t57; // _t57 long long _t60; // _t60 _v32 = _t60; _v48 = _t57; _v64 = r9; _v36 = sil; _v40 = _t31; _v52 = r8d; _t46 = _v48; LMP_Malloc_PDU(_t46); _v16 = _t46; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 4; (_v16[2]) = _v52 & 255; (_v16[3]) = 0; __rsi = &(_v16[4]); __edi = 8; LMutils_Array_Copy(8, _v64, _v64, &(_v16[4])); r8d = 12; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_ClockOffset_Req() {// addr = 0x004958FD signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t19; // _t19 signed char* _t33; // _t33 signed char* _t37; // _t37 long long _t39; // _t39 _v32 = _t39; _v48 = _t37; _v36 = sil; _v40 = _t19; _t33 = _v48; LMP_Malloc_PDU(_t33); _v16 = _t33; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 10; r8d = 1; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_ClockOffset_Res() {// addr = 0x0049598E signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t23; // _t23 signed char* _t39; // _t39 signed char* _t44; // _t44 long long _t46; // _t46 _v32 = _t46; _v48 = _t44; _v36 = sil; _v40 = _t23; _v52 = r8d; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 12; (_v16[1]) = _v52 & 65535; r8d = 3; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Detach() {// addr = 0x00495A32 signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t39; // _t39 long long _t60; // _t60 signed char* _t62; // _t62 signed char* _t68; // _t68 long long _t71; // _t71 _v32 = _t71; _v48 = _t68; _v64 = r9; _v36 = sil; _v40 = _t39; _v52 = r8d; _LMPbback_NewTransaction(); _v24 = _t60; if(_v24 != 0) { _t62 = _v48; LMP_Malloc_PDU(_t62); _v16 = _t62; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 14; (_v16[1]) = _v52 & 255; r8d = 2; LMP_Send_Free_PDU(); return 0; } LMPbback_DelTransactionByTId(_v24); return 7; } return 7; } LMP_Send_Timing_Accuracy_Req() {// addr = 0x00495B1F signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t19; // _t19 signed char* _t33; // _t33 signed char* _t37; // _t37 long long _t39; // _t39 _v32 = _t39; _v48 = _t37; _v36 = sil; _v40 = _t19; _t33 = _v48; LMP_Malloc_PDU(_t33); _v16 = _t33; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 94; r8d = 1; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Timing_Accuracy_Res() {// addr = 0x00495BB0 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t27; // _t27 signed char* _t45; // _t45 signed char* _t51; // _t51 long long _t53; // _t53 _v32 = _t53; _v48 = _t51; _v36 = sil; _v40 = _t27; _v52 = r8d; _v56 = r9d; _t45 = _v48; LMP_Malloc_PDU(_t45); _v16 = _t45; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 96; (_v16[1]) = _v52 & 255; (_v16[2]) = _v56 & 255; r8d = 3; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Incr_Power_Req() {// addr = 0x00495C63 signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t37; // _t37 long long _t58; // _t58 signed char* _t60; // _t60 signed char* _t65; // _t65 long long _t68; // _t68 _v32 = _t68; _v48 = _t65; _v64 = r9; _v36 = sil; _v40 = _t37; _v52 = r8d; _LMPbback_NewTransaction(); _v24 = _t58; if(_v24 != 0) { _t60 = _v48; LMP_Malloc_PDU(_t60); _v16 = _t60; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 62; r8d = 2; LMP_Send_Free_PDU(); return 0; } LMPbback_DelTransactionByTId(_v24); return 7; } return 7; } LMP_Send_Decr_Power_Req() {// addr = 0x00495D46 signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t37; // _t37 long long _t58; // _t58 signed char* _t60; // _t60 signed char* _t65; // _t65 long long _t68; // _t68 _v32 = _t68; _v48 = _t65; _v64 = r9; _v36 = sil; _v40 = _t37; _v52 = r8d; _LMPbback_NewTransaction(); _v24 = _t58; if(_v24 != 0) { _t60 = _v48; LMP_Malloc_PDU(_t60); _v16 = _t60; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 64; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMPbback_DelTransactionByTId(_v24); return 7; } LMP_Send_SCO_Link_Req() {// addr = 0x00495E26 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 intOrPtr _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t47; // _t47 signed char* _t67; // _t67 signed char* _t83; // _t83 long long _t85; // _t85 _v32 = _t85; _v48 = _t83; _v56 = r8; _v36 = sil; _v40 = _t47; _t67 = _v48; LMP_Malloc_PDU(_t67); _v16 = _t67; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 86; (_v16[1]) = *(_v56 + 15) & 255; (_v16[2]) = _v56 + _v56; (_v16[3]) = *(_v56 + 13) & 255; (_v16[4]) = *(_v56 + 14) & 255; (_v16[5]) = *(_v56 + 16) & 255; (_v16[6]) = *(_v56 + 17) & 255; r8d = 7; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Remove_SCO_Link_Req() {// addr = 0x00495F1E signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t27; // _t27 signed char* _t45; // _t45 signed char* _t51; // _t51 long long _t53; // _t53 _v32 = _t53; _v48 = _t51; _v36 = sil; _v40 = _t27; _v52 = r8d; _v56 = r9d; _t45 = _v48; LMP_Malloc_PDU(_t45); _v16 = _t45; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 88; (_v16[1]) = _v52 & 255; (_v16[2]) = _v56 & 255; r8d = 3; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_eSCO_Link_Req( _unknown_ __eax // r0 ) {// addr = 0x00495FD1 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v52; // _cfa_ffffffcc signed char* _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t99; // _t99 signed char* _t127; // _t127 signed char* _t155; // _t155 long long _t162; // _t162 _v32 = _t162; _v48 = _t155; _v64 = r9; _v36 = sil; _v40 = _t99; _v52 = r8d; _t127 = _v48; LMP_Malloc_PDU(_t127); _v16 = _t127; __eflags = _v16; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 12; (_v16[2]) = (_v64[6]) & 255; (_v16[3]) = (_v64[7]) & 255; (_v16[4]) = &(_v64[_v64]); (_v16[5]) = (_v64[2]) & 255; (_v16[6]) = *_v64 & 255; (_v16[7]) = (_v64[1]) & 255; __eflags = _v52; if(_v52 != 0) { (_v16[8]) = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet((_v64[5]) & 0xff); (_v16[9]) = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet((_v64[4]) & 0xff); } else { (_v16[8]) = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet((_v64[4]) & 0xff); (_v16[9]) = LMscoctr_Get_eSCO_LMP_Type_From_BB_Packet((_v64[5]) & 0xff); } (_v16[0xa]) = (_v64[8]) & 65535; (_v16[0xc]) = (_v64[0xa]) & 65535; (_v16[0xe]) = LMscoctr_Map_AirMode_HCI2LMP((_v64[0xc]) & 3, __eflags); (_v16[0xf]) = (_v64[0xe]) & 255; r8d = 16; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Remove_eSCO_Link_Req( _unknown_ _a8 // _cfa_8 ) {// addr = 0x0049618A signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t44; // _t44 long long _t66; // _t66 signed char* _t68; // _t68 signed char* _t76; // _t76 long long _t79; // _t79 _v32 = _t79; _v48 = _t76; _v36 = sil; _v40 = _t44; _v52 = r8d; _v56 = r9d; _LMPbback_NewTransaction(); _v24 = _t66; if(_v24 != 0) { _t68 = _v48; LMP_Malloc_PDU(_t68); _v16 = _t68; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 13; (_v16[2]) = _v52 & 255; (_v16[3]) = _v56 & 255; r8d = 4; LMP_Send_Free_PDU(); return 0; } LMPbback_DelTransactionByTId(_v24); return 7; } return 7; } LMP_Send_Set_AFH() {// addr = 0x00496289 signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 intOrPtr _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t40; // _t40 long long _t60; // _t60 signed char* _t62; // _t62 signed char* _t71; // _t71 long long _t74; // _t74 _v32 = _t74; _v48 = _t71; _v56 = r8; _v64 = r9; _v36 = sil; _v40 = _t40; _LMPbback_NewTransaction(); _v24 = _t60; if(_v24 != 0) { _t62 = _v48; LMP_Malloc_PDU(_t62); _v16 = _t62; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 120; __rsi = _v56; RtlCopyMemory(15, &(_v16[1]), _v56); r8d = 16; LMP_Send_Free_PDU(); return 0; } LMPbback_DelTransactionByTId(_v24); return 7; } return 7; } LMP_Send_Slot_Offset() {// addr = 0x00496385 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t28; // _t28 signed char* _t45; // _t45 signed char* _t54; // _t54 long long _t56; // _t56 _v32 = _t56; _v48 = _t54; _v64 = r9; _v36 = sil; _v40 = _t28; _v52 = r8d; _t45 = _v48; LMP_Malloc_PDU(_t45); _v16 = _t45; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 104; (_v16[1]) = _v52 & 65535; __rsi = _v64; RtlCopyMemory(6, &(_v16[3]), _v64); r8d = 9; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Switch_Req() {// addr = 0x00496449 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t23; // _t23 signed char* _t38; // _t38 signed char* _t43; // _t43 long long _t45; // _t45 _v32 = _t45; _v48 = _t43; _v52 = r8d; _v36 = sil; _v40 = _t23; _t38 = _v48; LMP_Malloc_PDU(_t38); _v16 = _t38; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 38; (_v16[1]) = _v52; r8d = 5; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Hold() {// addr = 0x004964E8 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t27; // _t27 signed char* _t44; // _t44 signed char* _t50; // _t50 long long _t52; // _t52 _v32 = _t52; _v48 = _t50; _v56 = r9d; _v36 = sil; _v40 = _t27; _v52 = r8d; _t44 = _v48; LMP_Malloc_PDU(_t44); _v16 = _t44; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 40; (_v16[1]) = _v52 & 65535; (_v16[3]) = _v56; r8d = 7; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Hold_Req() {// addr = 0x0049659A signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t27; // _t27 signed char* _t44; // _t44 signed char* _t50; // _t50 long long _t52; // _t52 _v32 = _t52; _v48 = _t50; _v56 = r9d; _v36 = sil; _v40 = _t27; _v52 = r8d; _t44 = _v48; LMP_Malloc_PDU(_t44); _v16 = _t44; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 42; (_v16[1]) = _v52 & 65535; (_v16[3]) = _v56; r8d = 7; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Supervision_Timeout() {// addr = 0x0049664C signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t39; // _t39 long long _t60; // _t60 signed char* _t62; // _t62 signed char* _t68; // _t68 long long _t71; // _t71 _v32 = _t71; _v48 = _t68; _v64 = r9; _v36 = sil; _v40 = _t39; _v52 = r8d; _LMPbback_NewTransaction(); _v24 = _t60; if(_v24 != 0) { _t62 = _v48; LMP_Malloc_PDU(_t62); _v16 = _t62; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 110; (_v16[1]) = _v52 & 65535; r8d = 3; LMP_Send_Free_PDU(); return 0; } LMPbback_DelTransactionByTId(_v24); return 7; } return 7; } LMP_Send_Quality_Of_Service_Req() {// addr = 0x0049673B signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t27; // _t27 signed char* _t45; // _t45 signed char* _t51; // _t51 long long _t53; // _t53 _v32 = _t53; _v48 = _t51; _v36 = sil; _v40 = _t27; _v52 = r8d; _v56 = r9d; _t45 = _v48; LMP_Malloc_PDU(_t45); _v16 = _t45; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 84; (_v16[1]) = _v52 & 65535; (_v16[3]) = _v56 & 255; r8d = 4; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Sniff_Req( _unknown_ _a8, // _cfa_8 signed short _a16, // _cfa_10 signed short _a24 // _cfa_18 ) {// addr = 0x004967F0 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc signed short _v56; // _cfa_ffffffc8 signed short _v60; // _cfa_ffffffc4 signed short _v64; // _cfa_ffffffc0 signed short _v68; // _cfa_ffffffbc _unknown_ __rbp; // r59 signed char _t45; // _t45 signed char* _t66; // _t66 signed char* _t68; // _t68 signed char* _t71; // _t71 long long _t81; // _t81 _v32 = _t81; _v48 = _t71; r10d = r8d; r8d = r9d; _v36 = sil; _v40 = _t45; _v52 = r10b; _v56 = r8w; _v60 = __di; _v64 = _a16; _v68 = _a24; _t66 = _v48; LMP_Malloc_PDU(_t66); _v16 = _t66; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; _t68 = _v16; *_t68 = *_t68 & 1 | 46; (_v16[1]) = &(_t68[_t68]); LMutils_Set_Uint16(_v56 & 65535, &(_v16[2])); LMutils_Set_Uint16(_v60 & 65535, &(_v16[4])); LMutils_Set_Uint16(_v64 & 65535, &(_v16[6])); LMutils_Set_Uint16(_v68 & 65535, &(_v16[8])); r8d = 10; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_UnSniff_Req() {// addr = 0x00496911 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t19; // _t19 signed char* _t33; // _t33 signed char* _t37; // _t37 long long _t39; // _t39 _v32 = _t39; _v48 = _t37; _v36 = sil; _v40 = _t19; _t33 = _v48; LMP_Malloc_PDU(_t33); _v16 = _t33; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 48; r8d = 1; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Sniff_Subrating_Req( unsigned int _a8 // _cfa_8 ) {// addr = 0x004969A2 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed short _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t31; // _t31 signed char* _t49; // _t49 signed char* _t57; // _t57 long long _t61; // _t61 _v32 = _t61; _v48 = _t57; _v36 = sil; _v40 = _t31; _v52 = r8d; _v56 = r9d; _t49 = _v48; LMP_Malloc_PDU(_t49); _v16 = _t49; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 21; (_v16[2]) = _v52 & 255; LMutils_Set_Uint16(_v56 & 65535, &(_v16[3])); LMutils_Set_Uint32(_a8, &(_v16[5])); r8d = 9; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Sniff_Subrating_Res( unsigned int _a8, // _cfa_8 _unknown_ _a16 // _cfa_10 ) {// addr = 0x00496A7C signed char* _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed short _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t46; // _t46 long long _t69; // _t69 signed char* _t71; // _t71 signed char* _t80; // _t80 long long _t85; // _t85 _v32 = _t85; _v48 = _t80; _v36 = sil; _v40 = _t46; _v52 = r8d; _v56 = r9d; _LMPbback_NewTransaction(); _v24 = _t69; if(_v24 != 0) { _t71 = _v48; LMP_Malloc_PDU(_t71); _v16 = _t71; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 22; (_v16[2]) = _v52 & 255; LMutils_Set_Uint16(_v56 & 65535, &(_v16[3])); LMutils_Set_Uint32(_a8, &(_v16[5])); r8d = 9; LMP_Send_Free_PDU(); return 0; } LMPbback_DelTransactionByTId(_v24); return 7; } return 7; } LMP_Send_Park_Req() {// addr = 0x00496B9D signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 short _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t28; // _t28 signed char* _t44; // _t44 signed char* _t45; // _t45 signed char* _t52; // _t52 signed char* _t53; // _t53 long long _t55; // _t55 _v32 = _t55; _v48 = _t52; _v56 = r8; _v36 = sil; _v40 = _t28; _v60 = r9d; _t44 = _v48; LMP_Malloc_PDU(_t44); _v16 = _t44; if(_v16 != 0) { _t45 = _v16; _t53 = _v56; *_t45 = *_t53; (_t45[8]) = (_t53[8]); (_t45[0x10]) = (_t53[0x10]) & 255; *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 50; r8d = 17; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Unpark_PM_Addr_Req( short _a8 // _cfa_8 ) {// addr = 0x00496C55 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc short _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t37; // _t37 signed char* _t62; // _t62 signed char* _t71; // _t71 long long _t73; // _t73 _v32 = _t73; _v48 = _t71; _v64 = r9; _v36 = sil; _v40 = _t37; _v52 = r8d; _v56 = _a8; _t62 = _v48; LMP_Malloc_PDU(_t62); _v16 = _t62; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 60; (_v16[1]) = *(_v64 + 17) & 255; (_v16[2]) = (_v16[2]) & 0xf0 | _v52 & 0xf; (_v16[3]) = *(_v64 + 13) & 255; r8d = 4; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Unpark_BD_Addr_Req( intOrPtr _a8, // _cfa_8 short _a16 // _cfa_10 ) {// addr = 0x00496D35 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc short _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed char _t40; // _t40 signed char* _t65; // _t65 signed char* _t76; // _t76 long long _t78; // _t78 _v32 = _t78; _v48 = _t76; _v64 = r9; _v36 = sil; _v40 = _t40; _v52 = r8d; _v56 = _a16; _t65 = _v48; LMP_Malloc_PDU(_t65); _v16 = _t65; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 58; (_v16[1]) = _a8 + _a8; (_v16[2]) = (_v16[2]) & 0xf0 | _v52 & 0xf; __rsi = _v64; RtlCopyMemory(6, &(_v16[3]), _v64); r8d = 9; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Packet_Type_Table_Req() {// addr = 0x00496E28 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t25; // _t25 signed char* _t40; // _t40 signed char* _t46; // _t46 long long _t48; // _t48 _v32 = _t48; _v48 = _t46; _v36 = sil; _v40 = _t25; _v52 = r8d; _t40 = _v48; LMP_Malloc_PDU(_t40); _v16 = _t40; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 11; (_v16[2]) = _v52 & 255; r8d = 3; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Auto_Rate() {// addr = 0x00496ECF signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t19; // _t19 signed char* _t33; // _t33 signed char* _t37; // _t37 long long _t39; // _t39 _v32 = _t39; _v48 = _t37; _v36 = sil; _v40 = _t19; _t33 = _v48; LMP_Malloc_PDU(_t33); _v16 = _t33; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 70; r8d = 1; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Preferred_Rate() {// addr = 0x00496F60 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t23; // _t23 signed char* _t39; // _t39 signed char* _t44; // _t44 long long _t46; // _t46 _v32 = _t46; _v48 = _t44; _v36 = sil; _v40 = _t23; _v52 = r8d; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 72; (_v16[1]) = _v52 & 255; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Accepted_Ext() {// addr = 0x00497002 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 char _t13; // _t13 long long _t15; // _t15 long long _t17; // _t17 _v16 = _t17; _v32 = _t15; _v20 = sil; _v24 = _t13; _v36 = __dx; __rax = _v16; *__rsp = 0; r9d = 0; r8d = _v36 & 65535; LMP_Send_Accepted_Ext_Tag(_v16); return; } LMP_Send_Accepted_Ext_Tag( long long __rax, // r53 _unknown_ _a8 // _cfa_8 ) {// addr = 0x00497051 _unknown_ _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t54; // _t54 signed char* _t82; // _t82 signed char* _t90; // _t90 signed char* _t92; // _t92 long long _t95; // _t95 _v32 = _t95; _v48 = _t92; _v36 = sil; _v40 = _t54; _v52 = r8d; _v56 = r9d; if(_v56 == 0) { _t82 = _v48; LMP_Malloc_PDU(_t82); _v24 = _t82; if(_v24 != 0) { L7: *_v24 = *_v24 & 0xfe | _v40 & 1; *_v24 = *_v24 & 255 | 254; (_v24[1]) = 1; (_v24[2]) = (_v52 & 65535) >> 8; (_v24[3]) = _v52 & 65535; r8d = 4; LMP_Send_Free_PDU(); return 0; } return 7; } _LMPbback_NewTransaction(); _v16 = __rax; if(_v16 != 0) { _t90 = _v48; LMP_Malloc_PDU(_t90); _v24 = _t90; if(_v24 != 0) { goto L7; } LMPbback_DelTransactionByTId(_v16); return 7; } return 7; } LMP_Send_Not_Accepted_Ext() {// addr = 0x0049718A long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char _t15; // _t15 long long _t18; // _t18 long long _t20; // _t20 _v16 = _t20; _v32 = _t18; _v20 = sil; _v24 = _t15; _v36 = r8d; _v40 = __dl; r8d = _v40 & 255; *__rsp = 0; r9d = r8d; r8d = _v36 & 65535; LMP_Send_Not_Accepted_Ext_Tag(); return; } LMP_Send_Not_Accepted_Ext_Tag( short _a8 // _cfa_8 ) {// addr = 0x004971E0 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 short _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t38; // _t38 signed char* _t56; // _t56 signed char* _t64; // _t64 long long _t66; // _t66 _v32 = _t66; _v48 = _t64; _v36 = sil; _v40 = _t38; _v52 = __di; _v56 = r9d; _v60 = _a8; _t56 = _v48; LMP_Malloc_PDU(_t56); _v16 = _t56; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 2; (_v16[2]) = (_v52 & 65535) >> 8; (_v16[3]) = _v52 & 65535; (_v16[4]) = _v56 & 255; r8d = 5; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_IO_Capacity_Req( signed char _a8 // _cfa_8 ) {// addr = 0x004972B2 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t34; // _t34 signed char* _t52; // _t52 signed char* _t60; // _t60 long long _t62; // _t62 _v32 = _t62; _v48 = _t60; _v36 = sil; _v40 = _t34; _v52 = dil; _v56 = r9d; _v60 = _a8; _t52 = _v48; LMP_Malloc_PDU(_t52); _v16 = _t52; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 25; (_v16[2]) = _v52 & 255; (_v16[3]) = _v56 & 255; (_v16[4]) = _v60 & 255; r8d = 5; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_IO_Capacity_Res( signed char _a8 // _cfa_8 ) {// addr = 0x0049737C signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t34; // _t34 signed char* _t52; // _t52 signed char* _t60; // _t60 long long _t62; // _t62 _v32 = _t62; _v48 = _t60; _v36 = sil; _v40 = _t34; _v52 = dil; _v56 = r9d; _v60 = _a8; _t52 = _v48; LMP_Malloc_PDU(_t52); _v16 = _t52; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 26; (_v16[2]) = _v52 & 255; (_v16[3]) = _v56 & 255; (_v16[4]) = _v60 & 255; r8d = 5; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Encap_Header( signed char _a8 // _cfa_8 ) {// addr = 0x00497446 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t32; // _t32 signed char* _t51; // _t51 signed char* _t58; // _t58 long long _t60; // _t60 _v32 = _t60; _v48 = _t58; _v36 = sil; _v40 = _t32; _v52 = dil; _v56 = r9d; _v60 = _a8; _t51 = _v48; LMP_Malloc_PDU(_t51); _v16 = _t51; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 122; (_v16[1]) = _v52 & 255; (_v16[2]) = _v56 & 255; (_v16[3]) = _v60 & 255; r8d = 4; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Encap_Payload() {// addr = 0x0049750B signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t25; // _t25 signed char* _t39; // _t39 signed char* _t47; // _t47 long long _t50; // _t50 _v32 = _t50; _v48 = _t47; _v56 = r8; _v36 = sil; _v40 = _t25; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { if(_v56 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 124; __rsi = &(_v16[1]); __edi = 16; LMutils_Array_Copy(16, _v56, _v56, &(_v16[1])); r8d = 17; LMP_Send_Free_PDU(); return 0; } return 3; } return 7; } LMP_Send_Simple_Pairing_Number() {// addr = 0x004975CA signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t25; // _t25 signed char* _t39; // _t39 signed char* _t47; // _t47 long long _t50; // _t50 _v32 = _t50; _v48 = _t47; _v56 = r8; _v36 = sil; _v40 = _t25; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { if(_v56 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 128; __rsi = &(_v16[1]); __edi = 16; LMutils_Array_Copy(16, _v56, _v56, &(_v16[1])); r8d = 17; LMP_Send_Free_PDU(); return 0; } return 3; } return 7; } LMP_Send_Simple_Pairing_Confirm() {// addr = 0x00497689 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t25; // _t25 signed char* _t39; // _t39 signed char* _t47; // _t47 long long _t50; // _t50 _v32 = _t50; _v48 = _t47; _v56 = r8; _v36 = sil; _v40 = _t25; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { if(_v56 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 126; __rsi = &(_v16[1]); __edi = 16; LMutils_Array_Copy(16, _v56, _v56, &(_v16[1])); r8d = 17; LMP_Send_Free_PDU(); return 0; } return 3; } return 7; } LMP_Send_DHkey_Check() {// addr = 0x00497748 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t25; // _t25 signed char* _t39; // _t39 signed char* _t47; // _t47 long long _t50; // _t50 _v32 = _t50; _v48 = _t47; _v56 = r8; _v36 = sil; _v40 = _t25; _t39 = _v48; LMP_Malloc_PDU(_t39); _v16 = _t39; if(_v16 != 0) { if(_v56 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 130; __rsi = &(_v16[1]); __edi = 16; LMutils_Array_Copy(16, _v56, _v56, &(_v16[1])); r8d = 17; LMP_Send_Free_PDU(); return 0; } return 3; } return 7; } LMP_Send_Pause_Encryption_Req() {// addr = 0x00497807 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t21; // _t21 signed char* _t34; // _t34 signed char* _t39; // _t39 long long _t41; // _t41 _v32 = _t41; _v48 = _t39; _v36 = sil; _v40 = _t21; _t34 = _v48; LMP_Malloc_PDU(_t34); _v16 = _t34; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 23; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Resume_Encryption_Req() {// addr = 0x0049789D signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t21; // _t21 signed char* _t34; // _t34 signed char* _t39; // _t39 long long _t41; // _t41 _v32 = _t41; _v48 = _t39; _v36 = sil; _v40 = _t21; _t34 = _v48; LMP_Malloc_PDU(_t34); _v16 = _t34; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 24; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Stop_Encryption_Req() {// addr = 0x00497933 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t19; // _t19 signed char* _t33; // _t33 signed char* _t37; // _t37 long long _t39; // _t39 _v32 = _t39; _v48 = _t37; _v36 = sil; _v40 = _t19; _t33 = _v48; LMP_Malloc_PDU(_t33); _v16 = _t33; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 36; r8d = 1; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Numeric_Comparison_Failed() {// addr = 0x004979C4 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t21; // _t21 signed char* _t34; // _t34 signed char* _t39; // _t39 long long _t41; // _t41 _v32 = _t41; _v48 = _t39; _v36 = sil; _v40 = _t21; _t34 = _v48; LMP_Malloc_PDU(_t34); _v16 = _t34; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 27; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Passkey_Entry_Failed() {// addr = 0x00497A5A signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t21; // _t21 signed char* _t34; // _t34 signed char* _t39; // _t39 long long _t41; // _t41 _v32 = _t41; _v48 = _t39; _v36 = sil; _v40 = _t21; _t34 = _v48; LMP_Malloc_PDU(_t34); _v16 = _t34; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 28; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_OOB_Failed() {// addr = 0x00497AF0 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char _t21; // _t21 signed char* _t34; // _t34 signed char* _t39; // _t39 long long _t41; // _t41 _v32 = _t41; _v48 = _t39; _v36 = sil; _v40 = _t21; _t34 = _v48; LMP_Malloc_PDU(_t34); _v16 = _t34; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 29; r8d = 2; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Keypress_Notification() {// addr = 0x00497B86 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed char _t25; // _t25 signed char* _t40; // _t40 signed char* _t46; // _t46 long long _t48; // _t48 _v32 = _t48; _v48 = _t46; _v36 = sil; _v40 = _t25; _v52 = r8d; _t40 = _v48; LMP_Malloc_PDU(_t40); _v16 = _t40; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 255 | 254; (_v16[1]) = 30; (_v16[2]) = _v52 & 255; r8d = 3; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_Page_Scan_Mode_Req() {// addr = 0x00497C2D signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed char _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t27; // _t27 signed char* _t45; // _t45 signed char* _t51; // _t51 long long _t53; // _t53 _v32 = _t53; _v48 = _t51; _v36 = sil; _v40 = _t27; _v52 = r8d; _v56 = r9d; _t45 = _v48; LMP_Malloc_PDU(_t45); _v16 = _t45; if(_v16 != 0) { *_v16 = *_v16 & 0xfe | _v40 & 1; *_v16 = *_v16 & 1 | 108; (_v16[1]) = _v52 & 255; (_v16[2]) = _v56 & 255; r8d = 3; LMP_Send_Free_PDU(); return 0; } return 7; } LMP_Send_L2Cap_Flow() {// addr = 0x00497CE0 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 short _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 char _t29; // _t29 _unknown_ _t49; // _t49 long long _t51; // _t51 _unknown_ _t55; // _t55 _v32 = _t51; _v48 = __rdx; _v36 = sil; _v40 = _t29; _v52 = r8d; _v24 = _v32 - 60216; DebugPrint(0, _v32 - 60216, _t49, __rdx, _t51, _t55); QUEUE_EnqueueRequest(); _v16 = _v48; if(_v16 != 0) { EG_Generate_LMP_Event(); r8d = 0; LMP_TRACE(); QUEUE_EnqueueCommit(); return 0; } return 7; } LMP_Transmit_Remaining_ACLU_Tx() {// addr = 0x00497DB1 signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 intOrPtr _v72; // _cfa_ffffffb8 intOrPtr _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 intOrPtr _v96; // _cfa_ffffffa0 intOrPtr _v104; // _cfa_ffffff98 char* _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 _unknown_ _t118; // _t118 long long _t120; // _t120 intOrPtr _t121; // _t121 long long _t122; // _t122 long long _t127; // _t127 _v32 = _t122; _v40 = _t127; _v48 = _t120; if(_v40 != 0) { _v24 = *((intOrPtr*)(_v40 + 768)); if(_v24 != 0) { if(( *( *((intOrPtr*)(_v40 + 768)) + 10) & 255) <= 1 || ( *(_v40 + 32) & 255) == 0) { _t121 = _v48; _LMPbback_NewTransaction(); if( *((intOrPtr*)(_v40 + 432)) != 0) { _v10 = *(_v24 + 129) & 0x1f; _t123 = _v32; _v16 = PDMA_Get_Txring_Freeno(_v10 & 0xff, _v32); if(_v16 == 0) { r8d = _v10 & 0xff; DebugPrint(0, _v24, _t118, _t121, _t123, _t127); return 0; } _v9 = QUEUE_IncreasePktSeq( *((intOrPtr*)(_v24 + 48))); _v72 = 0; _v80 = 0; _v88 = _v9 & 255; _v96 = 0; _v104 = 1; _v112 = &_v10; *__rsp = 34; r9d = 1; r8d = 2; PDMA_Transmit_TxRing(); LCCMD_LinkFlowControlRequest(); return 1; } return 0; } else { r8d = *( *((intOrPtr*)(_v40 + 768)) + 10) & 0xff; DebugPrint(0, _v40, _t118, _t120, _t122, _t127); return 0; } } return 0; } return 0; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x00497F98 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x00497FC7 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } GetTraceRemoteInfoByACLCLLIdx( signed long long __rcx // r55 ) {// addr = 0x0049801D signed int _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc signed int* _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 char _t60; // _t60 signed long long _t65; // _t65 signed long long _t73; // _t73 signed int* _t95; // _t95 signed int _t99; // _t99 _v48 = _t99; _v64 = _t95; _v72 = __rcx; _v52 = _t60; _v12 = 31; if(_v52 <= 14 || _v52 > 26) { return 31; } if(_v72 == 0 || _v64 == 0) { return 31; } *_v64 = 0; _t65 = _v72; RtlFillMemory(6, 0, _t65); if(_v52 > 14) { if(_v52 <= 26 && ( *(_t65 * 184 + _v48 + 0x8408) & 255) != 0) { _v32 = _v48 * 184 + _v48 + 33800; _t73 = *(_v32 + 96); if(_t73 != 0 && ( *( *(_t73 * 184 + _v48 + 33896)) & 255) != 0 && *(_v32 + 104) != 0 && ( *( *(_v32 + 104)) & 255) != 0) { *_v64 = ( *(_v32 + 104)[2]) & 255; if(( *(_v32 + 104)[0x18]) != 0) { _v24 = ( *(_v32 + 104)[0x18]) + 4; __rsi = _v24; RtlCopyMemory(6, _v72, _v24); _v12 = 0; } } } } return _v12; } CovertOpCodeToStr( signed short __edi // r4 ) {// addr = 0x0049818B signed short _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 65535; if(_t4 == 43) { return "SCO_link_req"; } if(_t4 > 43) { if(_t4 == 64) { return "simple_pairing_number"; } if(_t4 > 64) { if(_t4 == 2303) { return "channel_classification"; } if(_t4 > 2303) { if(_t4 == 3327) { return "IO_capability_req"; } if(_t4 > 3327) { if(_t4 == 3711) { return "passkey_failed"; } if(_t4 > 3711) { if(_t4 == 3839) { return "oob_failed"; } if(_t4 == 3967) { return "keypress_notification"; } L211: return "unknown"; } if(_t4 == 3455) { return "IO_capability_res"; } if(_t4 == 3583) { return "numeric_comparison_failed"; } goto L211; } if(_t4 == 2943) { return "sniff_subrating_res"; } if(_t4 > 2943) { if(_t4 == 3071) { return "pause_encryption_req"; } if(_t4 == 3199) { return "resume_encryption_req"; } goto L211; } if(_t4 == 2815) { return "sniff_subrating_req"; } goto L211; } if(_t4 == 639) { return "features_res_ext"; } if(_t4 > 639) { if(_t4 == 1663) { return "eSCO_link_req"; } if(_t4 > 1663) { if(_t4 == 1791) { return "remove_eSCO_link_req"; } if(_t4 == 2175) { return "channel_classification_req"; } goto L211; } if(_t4 == 1535) { return "packet_type_table_req"; } goto L211; } if(_t4 == 255) { return "accepted_ext"; } if(_t4 > 255) { if(_t4 == 383) { return "not_accepted_ext"; } if(_t4 == 511) { return "features_req_ext"; } goto L211; } if(_t4 == 65) { return "DHkey_check"; } goto L211; } if(_t4 == 53) { return "page_mode_req"; } if(_t4 > 53) { if(_t4 == 58) { return "encryption_key_size_mask_req"; } if(_t4 > 58) { if(_t4 == 61) { return "encapsulated_header"; } if(_t4 > 61) { if(_t4 == 62) { return "encapsulated_payload"; } if(_t4 == 63) { return "simple_pairing_confirm"; } goto L211; } if(_t4 == 59) { return "encryption_key_size_mask_res"; } if(_t4 == 60) { return "set_AFH"; } goto L211; } if(_t4 == 55) { return "supervision_timeout"; } if(_t4 < 55) { return "page_scan_mode_req"; } if(_t4 == 56) { return "test_activate"; } if(_t4 == 57) { return "test_control"; } goto L211; } if(_t4 == 48) { return "timing_accuracy_res"; } if(_t4 > 48) { if(_t4 == 50) { return "use_semi_permanent_key"; } if(_t4 < 50) { return "setup_complete"; } if(_t4 == 51) { return "host_connection_req"; } if(_t4 == 52) { return "slot_offset"; } goto L211; } if(_t4 == 45) { return "max_slot"; } if(_t4 < 45) { return "remove_SCO_link_req"; } if(_t4 == 46) { return "max_slot_req"; } if(_t4 == 47) { return "timing_accuracy_req"; } goto L211; } if(_t4 == 20) { return "hold"; } if(_t4 > 20) { if(_t4 == 32) { return "decr_power_req"; } if(_t4 > 32) { if(_t4 == 37) { return "version_req"; } if(_t4 > 37) { if(_t4 == 40) { return "feature_res"; } if(_t4 > 40) { if(_t4 == 41) { return "quality_of_service"; } if(_t4 == 42) { return "quality_of_service_req"; } goto L211; } if(_t4 == 38) { return "version_res"; } if(_t4 == 39) { return "feature_req"; } goto L211; } if(_t4 == 34) { return "min_power"; } if(_t4 < 34) { return "max_power"; } if(_t4 == 35) { return "auto_rate"; } if(_t4 == 36) { return "preferred_rate"; } goto L211; } if(_t4 == 27) { return "set_broadcast_scan_window"; } if(_t4 > 27) { if(_t4 == 29) { return "unpark_BD_ADDR_req"; } if(_t4 < 29) { return "modify_beacon"; } if(_t4 == 30) { return "unpark_PM_ADDR_req"; } if(_t4 == 31) { return "incr_power_req"; } goto L211; } if(_t4 == 23) { return "sniff_req"; } if(_t4 > 23) { if(_t4 == 24) { return "unsniff_req"; } if(_t4 == 25) { return "park_req"; } goto L211; } if(_t4 == 21) { return "hold_req"; } goto L211; } if(_t4 == 10) { return "unit_key"; } if(_t4 > 10) { if(_t4 == 15) { return "encryption_mode_req"; } if(_t4 > 15) { if(_t4 == 17) { return "start_encryption_req"; } if(_t4 < 17) { return "encryption_key_size_req"; } if(_t4 == 18) { return "stop_encryption_req"; } if(_t4 == 19) { return "switch_req"; } goto L211; } if(_t4 == 12) { return "sres"; } if(_t4 < 12) { return "au_rand"; } if(_t4 == 13) { return "temp_rand"; } if(_t4 == 14) { return "temp_key"; } goto L211; } if(_t4 == 5) { return "clkoffset_req"; } if(_t4 > 5) { if(_t4 == 7) { return "detach"; } if(_t4 < 7) { return "clkoffset_res"; } if(_t4 == 8) { return "in_rand"; } if(_t4 == 9) { return "comb_key"; } goto L211; } if(_t4 == 2) { return "name_res"; } if(_t4 > 2) { if(_t4 == 3) { return "accepted"; } if(_t4 == 4) { return "not_accepted"; } goto L211; } if(_t4 == 1) { return "name_req"; } goto L211; } CovertSCOPacketTypeToStr( signed char __edi // r4 ) {// addr = 0x004988AF signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "HV2"; } if(_t4 == 2) { return "HV3"; } if(_t4 != 0) { return "reserved"; } return "HV1"; } CovertESCOPacketTypeToStr( signed char __edi // r4 ) {// addr = 0x004988E6 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 61) { goto __rax; } return "reserved"; } LMPTraceUnsupportedCommand( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00498943 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceNameReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00498951 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceNameRes( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049895F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceAccepted() {// addr = 0x0049896D signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char* _t15; // _t15 _v32 = __rdi; _v40 = __rsi; _t15 = _v40; _v9 = *_t15 & 255; CovertOpCodeToStr(_v9 & 255); __rdx = _t15; r9 = __rdx; r8d = _v9 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LMPTraceNotAccepted() {// addr = 0x004989C1 signed int _v25; // _cfa_ffffffe7 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t19; // _t19 _v48 = __rdi; _v56 = __rsi; _v25 = *_v56 & 255; _t19 = &(_v56[1]); CovertOpCodeToStr(_v25 & 255); __rdx = _t19; *__rsp = *_t19 & 0xff; r9 = __rdx; r8d = _v25 & 255; __rcx = _v48; DebugPrint(0, _v48, _v48, __rdx, __rdi, __rsi); return; } LMPTraceClockOffsetReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00498A2C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceClockOffsetRes() {// addr = 0x00498A3A signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v10 = casting_uint16(_v40); r8d = _v10 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } LMPTraceDetach() {// addr = 0x00498A83 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; r8d = *_v24 & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } LMPTraceDumpSecurityArray() {// addr = 0x00498AC2 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed char* _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 signed int _v184; // _cfa_ffffff48 signed int _v192; // _cfa_ffffff40 signed int _v200; // _cfa_ffffff38 signed int _v208; // _cfa_ffffff30 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t106; // _t106 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 184; _v64 = __rdi; _v72 = __rsi; _v80 = _t106; r8d = (_v80[0xe]) & 0xff; r9d = (_v80[0xd]) & 0xff; _v84 = (_v80[0xc]) & 0xff; _v88 = (_v80[0xb]) & 0xff; _v92 = (_v80[0xa]) & 0xff; _v96 = (_v80[9]) & 0xff; r15d = (_v80[8]) & 0xff; r14d = (_v80[7]) & 0xff; r13d = (_v80[6]) & 0xff; r12d = (_v80[5]) & 0xff; r11d = (_v80[3]) & 0xff; r10d = (_v80[2]) & 0xff; _v104 = (_v80[0xf]) & 0xff; _v112 = r8d; _v120 = r9d; _v128 = _v84; _v136 = _v88; _v144 = _v92; _v152 = _v96; _v160 = r15d; _v168 = r14d; _v176 = r13d; _v184 = r12d; _v192 = (_v80[4]) & 0xff; _v200 = r11d; _v208 = r10d; *__rsp = (_v80[1]) & 0xff; r9d = *_v80 & 0xff; r8 = _v72; __rcx = _v64; DebugPrint(0, _v64, _v64, _v72, __rdi, __rsi); __rsp = &(__rsp[0x2e]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } LMPTraceInRand() {// addr = 0x00498C5D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceCombKey() {// addr = 0x00498C84 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceUnitKey() {// addr = 0x00498CAB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceAuRand() {// addr = 0x00498CD2 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceSres() {// addr = 0x00498CF9 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceTempRand() {// addr = 0x00498D20 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceTempKey() {// addr = 0x00498D47 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceEncryptionModeReq() {// addr = 0x00498D6E signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; __rax = _v40; _v9 = *__rax & 255; if(_v9 != 0) { } __rdx = _v32; r8 = __rax; __rcx = __rdx; DebugPrint(0, __rax, __rdx, __rdx, __rdi, __rsi); return; } LMPTraceEncryptionKeySizeReq() {// addr = 0x00498DBF signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; r8d = _v9 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LMPTraceStartEncryptionReq() {// addr = 0x00498E02 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceStopEncryptionReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00498E29 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceSwitchReq() {// addr = 0x00498E37 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v12 = casting_uint32(_v40); r8d = _v12; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } LMPTraceHold() {// addr = 0x00498E7E signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t32; // _t32 _v32 = _t32; _v40 = __rsi; _v10 = casting_uint16(_v40); _v16 = casting_uint32(_v40 + 2); r8d = _v10 & 65535; DebugPrint(0, _v32, _v32, __rdx, _v40 + 2, __rsi); r8d = _v16; DebugPrint(0, _v32, _v32, __rdx, _v40 + 2, __rsi); return; } LMPTraceSniffReq() {// addr = 0x00498F00 signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t68; // _t68 _v32 = _t68; _v40 = __rsi; _v9 = *_v40 & 255; _v18 = casting_uint16( &(_v40[1])); _v16 = casting_uint16( &(_v40[3])); _v14 = casting_uint16( &(_v40[5])); _t72 = &(_v40[7]); _v12 = casting_uint16( &(_v40[7])); r8d = _v9 & 255; DebugPrint(0, _v32, _v32, __rdx, &(_v40[7]), __rsi); r9d = _v16 & 65535; r8d = _v18 & 65535; DebugPrint(0, _v32, _v32, __rdx, &(_v40[7]), __rsi); r8d = _v14 & 65535; DebugPrint(0, _v32, _v32, __rdx, _t72, __rsi); r8d = _v12 & 65535; DebugPrint(0, _v32, _v32, __rdx, _t72, __rsi); return; } LMPTraceUnsniffReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049900F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceParkReq() {// addr = 0x0049901D signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed int _v16; // _cfa_fffffff0 signed int _v17; // _cfa_ffffffef signed int _v18; // _cfa_ffffffee signed int _v19; // _cfa_ffffffed signed int _v20; // _cfa_ffffffec signed short _v22; // _cfa_ffffffea signed short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t171; // _t171 _v32 = _t171; _v40 = __rsi; _v20 = *_v40 & 255; _v24 = casting_uint16( &(_v40[1])); _t173 = &(_v40[3]); _v22 = casting_uint16( &(_v40[3])); _v19 = (_v40[5]) & 255; _v18 = (_v40[6]) & 255; _v17 = (_v40[7]) & 255; _v16 = (_v40[8]) & 255; _v15 = (_v40[9]) & 255; _v14 = (_v40[0xa]) & 255; _v13 = (_v40[0xb]) & 255; _v12 = (_v40[0xc]) & 255; _v11 = (_v40[0xd]) & 255; _v10 = (_v40[0xe]) & 255; _v9 = (_v40[0xf]) & 255; r8d = _v20 & 255; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); _v48 = _v18 & 255; *__rsp = _v19 & 255; r9d = _v22 & 65535; r8d = _v24 & 65535; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); r9d = _v16 & 255; r8d = _v17 & 255; DebugPrint(0, _v32, _v32, __rdx, _t173, __rsi); r9d = _v14 & 255; r8d = _v15 & 255; DebugPrint(0, _v32, _v32, __rdx, _t173, __rsi); r9d = _v12 & 255; r8d = _v13 & 255; DebugPrint(0, _v32, _v32, __rdx, _t173, __rsi); r9d = _v10 & 255; r8d = _v11 & 255; DebugPrint(0, _v32, _v32, __rdx, _t173, __rsi); r8d = _v9 & 0xf; DebugPrint(0, _v32, _v32, __rdx, _t173, __rsi); r8d = (_v9 & 255) >> 4 & 255; DebugPrint(0, _v32, _v32, __rdx, _t173, __rsi); return; } LMPTraceSetBroadcastScanWindow( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049924F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceModifyBeacon() {// addr = 0x0049925D signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed int _v16; // _cfa_fffffff0 signed short _v18; // _cfa_ffffffee signed short _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t127; // _t127 _v32 = _t127; _v40 = __rsi; _v16 = *_v40 & 255; _v20 = casting_uint16( &(_v40[1])); _t129 = &(_v40[3]); _v18 = casting_uint16( &(_v40[3])); _v15 = (_v40[5]) & 255; _v14 = (_v40[6]) & 255; _v13 = (_v40[7]) & 255; _v12 = (_v40[8]) & 255; _v11 = (_v40[9]) & 255; _v10 = (_v40[0xa]) & 255; _v9 = (_v40[0xb]) & 255; r8d = _v16 & 255; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); _v48 = _v14 & 255; *__rsp = _v15 & 255; r9d = _v18 & 65535; r8d = _v20 & 65535; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); r9d = _v12 & 255; r8d = _v13 & 255; DebugPrint(0, _v32, _v32, __rdx, _t129, __rsi); r9d = _v10 & 255; r8d = _v11 & 255; DebugPrint(0, _v32, _v32, __rdx, _t129, __rsi); r8d = _v9 & 0xf; DebugPrint(0, _v32, _v32, __rdx, _t129, __rsi); r8d = (_v9 & 255) >> 4 & 255; DebugPrint(0, _v32, _v32, __rdx, _t129, __rsi); return; } LMPTraceUnparkBdAddrReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499407 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceUnparkPmAddrReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499415 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceIncrPowerReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499423 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceDecrPowerReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499431 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceMaxPower( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049943F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceMinPower( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049944D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceAutoRate( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049945B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTracePreferredRate( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499469 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceVersion() {// addr = 0x00499477 signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t38; // _t38 _v32 = _t38; _v40 = __rsi; _v9 = *_v40 & 255; _v14 = casting_uint16( &(_v40[1])); _v12 = casting_uint16( &(_v40[3])); r9d = _v12 & 65535; r8d = _v9 & 255; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); r8d = _v14 & 65535; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); return; } LMPTraceFeatures() {// addr = 0x00499510 signed char* _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v16 = _v40; r9d = (_v16[7]) & 0xff; r8d = (_v16[6]) & 0xff; r11d = (_v16[1]) & 0xff; r10d = *_v16 & 0xff; _v48 = r9d; _v56 = r8d; _v64 = (_v16[5]) & 0xff; _v72 = (_v16[4]) & 0xff; _v80 = (_v16[3]) & 0xff; *__rsp = (_v16[2]) & 0xff; r9d = r11d; r8d = r10d; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LMPTraceQualityofService() {// addr = 0x004995D9 signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t21; // _t21 _v32 = _t21; _v40 = __rsi; _v12 = casting_uint16(_v40); _v10 = *(_v40 + 2) & 0xff; r9d = _v10 & 65535; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } LMPTraceQualityofServiceReq() {// addr = 0x0049963B signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t21; // _t21 _v32 = _t21; _v40 = __rsi; _v12 = casting_uint16(_v40); _v10 = *(_v40 + 2) & 0xff; r9d = _v10 & 65535; r8d = _v12 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } LMPTraceSCOLinkReq() {// addr = 0x0049969D signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed int _v29; // _cfa_ffffffe3 signed int _v30; // _cfa_ffffffe2 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t78; // _t78 _unknown_ _t86; // _t86 _v48 = __rdi; _v56 = __rsi; _v30 = *_v56 & 255; _v29 = (_v56[1]) & 255; _v28 = (_v56[2]) & 255; _v27 = (_v56[3]) & 255; _v26 = (_v56[4]) & 255; _v25 = (_v56[5]) & 255; r8d = _v30 & 255; DebugPrint(0, _v48, _v48, _t86, __rdi, __rsi); r8d = _v29 & 255; DebugPrint(0, _v48, _v48, _t86, __rdi, __rsi); _t78 = _v48; r9d = _v27 & 255; r8d = _v28 & 255; DebugPrint(0, _t78, _t78, _t86, __rdi, __rsi); CovertSCOPacketTypeToStr(_v26 & 255); r9d = _v26 & 255; r8 = _t78; DebugPrint(0, _v48, _v48, _t78, __rdi, __rsi); r8d = _v25 & 255; DebugPrint(0, _v48, _v48, _t78, __rdi, __rsi); return; } LMPTraceRemoveSCOLinkReq() {// addr = 0x004997D1 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v10 = *_v40 & 255; _v9 = (_v40[1]) & 255; r9d = _v9 & 255; r8d = _v10 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LMPTraceMaxSlot() {// addr = 0x00499826 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; r8d = *_v24 & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } LMPTraceTimingAccuracyReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499865 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceTimingAccuracyRes( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499873 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceSetupComplete( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499881 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceUseSemiPermanentKey( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049988F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceHostConnectionReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049989D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceSlotOffset() {// addr = 0x004998AB signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 long long _t55; // _t55 _v32 = _t55; _v40 = __rsi; _v10 = casting_uint16(_v40); r8d = _v10 & 65535; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); r9d = *(_v40 + 6) & 0xff; r8d = *(_v40 + 7) & 0xff; _v48 = *(_v40 + 2) & 0xff; _v56 = *(_v40 + 3) & 0xff; _v64 = *(_v40 + 4) & 0xff; *__rsp = *(_v40 + 5) & 0xff; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } LMPTracePageScanModeReq() {// addr = 0x00499979 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v10 = *_v40 & 255; _v9 = (_v40[1]) & 255; r9d = _v9 & 255; r8d = _v10 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LMPTraceSupervisionTimeout( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004999CE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceTestActivate( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004999DC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceTestControl() {// addr = 0x004999EA signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed short _v18; // _cfa_ffffffee long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v15 = *_v40 & 255 ^ 85; _v14 = (_v40[1]) & 255 ^ 85; _v13 = (_v40[2]) & 255 ^ 85; _v12 = (_v40[3]) & 255 ^ 85; _v11 = (_v40[4]) & 255 ^ 85; _v10 = (_v40[5]) & 255 ^ 85; _v9 = (_v40[6]) & 255 ^ 85; _v18 = ((_v40[7]) & 0xff | ((_v40[8]) & 0xff) << 8) ^ 21845; r8d = _v15 & 255; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); r8d = _v14 & 255; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); r8d = _v13 & 255; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); r8d = _v12 & 255; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); r8d = _v11 & 255; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); r8d = _v10 & 255; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); r8d = _v9 & 255; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); r8d = _v18 & 65535; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LMPTraceEncryptionKeySizeMaskReq( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x00499BD2 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } LMPTraceEncryptionKeySizeMaskRes() {// addr = 0x00499BE0 signed short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t14; // _t14 _v32 = _t14; _v40 = __rsi; _v10 = casting_uint16(_v40); r8d = _v10 & 65535; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, _v40, __rsi); return; } LMPTraceSetAFH() {// addr = 0x00499C29 signed int _v25; // _cfa_ffffffe7 signed int _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 signed int _v60; // _cfa_ffffffc4 signed int _v68; // _cfa_ffffffbc signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 signed int _v100; // _cfa_ffffff9c signed int _v108; // _cfa_ffffff94 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t48; // _t48 intOrPtr _t61; // _t61 long long _t85; // _t85 _push(r12); _push(__rbx); __rsp = __rsp - 96; _v48 = _t85; _v56 = __rsi; _t86 = _v56; _v32 = casting_uint32(_v56); _t61 = _v56; _v25 = *(_t61 + 4) & 255; _t48 = _v25 & 255; if(_v25 != 1) { } __rdx = _v48; *__rsp = _t48; r9 = _t61; r8d = _v32; DebugPrint(0, _t61, __rdx, __rdx, _t86, __rsi); r11d = *(_v56 + 5) & 0xff; r10d = *(_v56 + 6) & 0xff; r9d = *(_v56 + 7) & 0xff; r8d = *(_v56 + 8) & 0xff; r12d = *(_v56 + 13) & 0xff; _v60 = r11d; _v68 = r10d; _v76 = r9d; _v84 = r8d; _v92 = *(_v56 + 9) & 0xff; _v100 = *(_v56 + 10) & 0xff; _v108 = *(_v56 + 11) & 0xff; *__rsp = *(_v56 + 12) & 0xff; r9d = r12d; r8d = *(_v56 + 14) & 0xff; DebugPrint(0, _v48, _v48, __rdx, _t86, __rsi); __rsp = &(__rsp[0x18]); _pop(__rbx); _pop(r12); return; } LMPTraceEncapsulatedHeader() {// addr = 0x00499D7B long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; *__rsp = (_v24[2]) & 0xff; r9d = (_v24[1]) & 0xff; r8d = *_v24 & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } LMPTraceEncapsulatedPayload() {// addr = 0x00499DDC long long _v64; // _cfa_ffffffc0 signed char* _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed int _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r15); _push(r14); _push(r13); _push(r12); _push(__rbx); __rsp = __rsp - 152; _v64 = __rdi; _v72 = __rsi; _v76 = (_v72[0xd]) & 0xff; _v80 = (_v72[0xc]) & 0xff; _v84 = (_v72[0xb]) & 0xff; r15d = (_v72[0xa]) & 0xff; r14d = (_v72[9]) & 0xff; r13d = (_v72[8]) & 0xff; r12d = (_v72[7]) & 0xff; r11d = (_v72[5]) & 0xff; r10d = (_v72[4]) & 0xff; r9d = (_v72[3]) & 0xff; r8d = (_v72[2]) & 0xff; _v80 = (_v72[0xf]) & 0xff; _v88 = (_v72[0xe]) & 0xff; _v96 = _v76; _v104 = _v80; _v112 = _v84; _v120 = r15d; _v128 = r14d; _v136 = r13d; _v144 = r12d; _v152 = (_v72[6]) & 0xff; _v160 = r11d; _v168 = r10d; _v176 = r9d; *__rsp = r8d; r9d = (_v72[1]) & 0xff; r8d = *_v72 & 0xff; __rcx = _v64; DebugPrint(0, _v64, _v64, __rdx, __rdi, __rsi); __rsp = &(__rsp[0x26]); _pop(__rbx); _pop(r12); _pop(r13); _pop(r14); _pop(r15); return; } LMPTraceSimplePairingConfirm() {// addr = 0x00499F65 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceSimplePairingNumber() {// addr = 0x00499F8C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceDHkeyCheck() {// addr = 0x00499FB3 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 _v16 = _t5; _v24 = __rsi; LMPTraceDumpSecurityArray(); return; } LMPTraceAcceptedExt() {// addr = 0x00499FDA signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; __rax = _v40; _v10 = ( *__rax & 0xff) + (((_v40[1]) & 0xff) << 7); CovertOpCodeToStr(_v10 & 65535); *__rsp = __rax; r9d = (_v10 & 65535) >> 7 & 65535; r8d = _v10 & 0x7f; __rcx = _v32; DebugPrint(0, __rax, _v32, _v32, __rdi, __rsi); return; } LMPTraceNotAcceptedExt() {// addr = 0x0049A056 signed int _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char* _t42; // _t42 _v32 = __rdi; _v40 = __rsi; _v12 = ( *_v40 & 0xff) + (((_v40[1]) & 0xff) << 7); _t42 = _v40; _v9 = (_t42[2]) & 255; CovertOpCodeToStr(_v12 & 65535); *__rsp = _t42; r9d = (_v12 & 65535) >> 7 & 65535; r8d = _v12 & 0x7f; DebugPrint(0, _t42, _v32, _v32, __rdi, __rsi); r8d = _v9 & 255; DebugPrint(0, _v32, _v32, _v32, __rdi, __rsi); return; } LMPTraceFeaturesExt() {// addr = 0x0049A104 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v10 = *_v40 & 255; _v9 = (_v40[1]) & 255; _v24 = &(_v40[2]); r9d = _v9 & 255; r8d = _v10 & 255; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); r9d = (_v24[7]) & 0xff; r8d = (_v24[6]) & 0xff; r11d = (_v24[1]) & 0xff; r10d = *_v24 & 0xff; _v48 = r9d; _v56 = r8d; _v64 = (_v24[5]) & 0xff; _v72 = (_v24[4]) & 0xff; _v80 = (_v24[3]) & 0xff; *__rsp = (_v24[2]) & 0xff; r9d = r11d; r8d = r10d; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LMPTracePacketTypeTableReq() {// addr = 0x0049A214 signed int _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _v32 = __rdi; _v40 = __rsi; _v9 = *_v40 & 255; r8d = _v9 & 255; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); return; } LMPTraceESCOLinkReq() {// addr = 0x0049A257 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed int _v29; // _cfa_ffffffe3 signed int _v30; // _cfa_ffffffe2 signed int _v31; // _cfa_ffffffe1 signed int _v32; // _cfa_ffffffe0 signed int _v33; // _cfa_ffffffdf signed int _v34; // _cfa_ffffffde signed short _v36; // _cfa_ffffffdc signed short _v38; // _cfa_ffffffda long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 intOrPtr _t142; // _t142 intOrPtr _t143; // _t143 _unknown_ _t155; // _t155 long long _t158; // _t158 _push(r12); _push(__rbx); __rsp = __rsp - 48; _v48 = _t158; _v56 = __rsi; _v34 = *_v56 & 255; _v33 = (_v56[1]) & 255; _v32 = (_v56[2]) & 255; _v31 = (_v56[3]) & 255; _v30 = (_v56[4]) & 255; _v29 = (_v56[5]) & 255; _v28 = (_v56[6]) & 255; _v27 = (_v56[7]) & 255; _v38 = casting_uint16( &(_v56[8])); _t160 = &(_v56[0xa]); _v36 = casting_uint16( &(_v56[0xa])); _v26 = (_v56[0xc]) & 255; _v25 = (_v56[0xd]) & 255; r8d = _v34 & 255; DebugPrint(0, _v48, _v48, _t155, &(_v56[0xa]), __rsi); r8d = _v33 & 255; DebugPrint(0, _v48, _v48, _t155, &(_v56[0xa]), __rsi); r8d = _v32 & 255; DebugPrint(0, _v48, _v48, _t155, _t160, __rsi); _t142 = _v48; *__rsp = _v29 & 255; r9d = _v30 & 255; r8d = _v31 & 255; DebugPrint(0, _t142, _t142, _t155, _t160, __rsi); r12d = _v28 & 255; CovertESCOPacketTypeToStr(_v28 & 255); _t143 = _v48; *__rsp = _v38 & 65535; r9d = r12d; r8 = _t142; DebugPrint(0, _t143, _t143, _t142, _t160, __rsi); r12d = _v27 & 255; CovertESCOPacketTypeToStr(_v27 & 255); _t157 = _t143; *__rsp = _v36 & 65535; r9d = r12d; r8 = _t143; DebugPrint(0, _v48, _v48, _t143, _t160, __rsi); r8d = _v26 & 255; DebugPrint(0, _v48, _v48, _t143, _t160, __rsi); r8d = _v25 & 255; DebugPrint(0, _v48, _v48, _t157, _t160, __rsi); __rsp = &(__rsp[0xc]); _pop(__rbx); _pop(r12); return; } LMPTraceRemoveESCOLinkReq() {// addr = 0x0049A480 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _v16 = __rdi; _v24 = __rsi; r9d = (_v24[1]) & 0xff; r8d = *_v24 & 0xff; __rcx = _v16; DebugPrint(0, _v16, _v16, __rdx, __rdi, __rsi); return; } LMPTraceChannelClassificationReq() {// addr = 0x0049A4D0 signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed char* _t42; // _t42 long long _t48; // _t48 _v32 = _t48; _v40 = __rsi; _v9 = *_v40 & 255; _v14 = casting_uint16( &(_v40[1])); _t42 = &(_v40[3]); _t50 = _t42; _v12 = casting_uint16(_t42); __ecx = _v9 & 255; if(_v9 == 0) { } __rdx = _v32; r9d = __ecx; r8 = _t42; DebugPrint(0, _t42, __rdx, __rdx, _t50, __rsi); r8d = _v14 & 65535; DebugPrint(0, _v32, _v32, __rdx, _t50, __rsi); r8d = _v12 & 65535; DebugPrint(0, _v32, _v32, __rdx, _t50, __rsi); return; } LMPTraceChannelClassification() {// addr = 0x0049A59E long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 signed int _v52; // _cfa_ffffffcc signed int _v60; // _cfa_ffffffc4 signed int _v68; // _cfa_ffffffbc signed int _v76; // _cfa_ffffffb4 signed int _v84; // _cfa_ffffffac signed int _v92; // _cfa_ffffffa4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 _push(r12); _push(__rbx); __rsp = __rsp - 80; _v32 = __rdi; _v40 = __rsi; r11d = *_v40 & 0xff; r10d = (_v40[1]) & 0xff; r9d = (_v40[2]) & 0xff; r8d = (_v40[3]) & 0xff; r12d = (_v40[8]) & 0xff; _v44 = r11d; _v52 = r10d; _v60 = r9d; _v68 = r8d; _v76 = (_v40[4]) & 0xff; _v84 = (_v40[5]) & 0xff; _v92 = (_v40[6]) & 0xff; *__rsp = (_v40[7]) & 0xff; r9d = r12d; r8d = (_v40[9]) & 0xff; __rcx = _v32; DebugPrint(0, _v32, _v32, __rdx, __rdi, __rsi); __rsp = &(__rsp[0x14]); _pop(__rbx); _pop(r12); return; } LMPTraceSniffSubRating() {// addr = 0x0049A690 signed int _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t47; // _t47 _v32 = _t47; _v40 = __rsi; _v9 = *_v40 & 255; _v12 = casting_uint16( &(_v40[1])); _t49 = &(_v40[3]); _v16 = casting_uint32( &(_v40[3])); r8d = _v9 & 255; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); r8d = _v12 & 65535; DebugPrint(0, _v32, _v32, __rdx, &(_v40[3]), __rsi); r8d = _v16; DebugPrint(0, _v32, _v32, __rdx, _t49, __rsi); return; } ConvertIoCapaToStr( signed char __edi // r4 ) {// addr = 0x0049A747 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 1) { return "DisplayYesNo"; } if(_t4 > 1) { if(_t4 == 2) { return "KeyboardOnly"; } if(_t4 == 3) { return "NoInputNoOutput"; } L11: return "Reserved for future use"; } if(_t4 == 0) { return "DisplayOnly"; } goto L11; } ConvertOobDataPresentToStr( signed char __edi // r4 ) {// addr = 0x0049A793 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed int _t4; // _t4 __edi = __edi; _v12 = __edi; _t4 = _v12 & 255; if(_t4 == 0) { return "OOB authentication data not present"; } if(_t4 == 1) { return "OOB authentication data from remote device present"; } return "Reserved for future use"; } ConvertAuthRequirementToStr( signed char __edi // r4 ) {// addr = 0x0049A7C0 signed char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 __edi = __edi; _v12 = __edi; if((_v12 & 255) <= 5) { goto __rax; } return "Reserved for future use"; } LMPTraceSIoCapabilityReqRes() {// addr = 0x0049A80F signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed char* _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed char* _t52; // _t52 signed char* _t53; // _t53 signed char* _t54; // _t54 _v48 = __rdi; _v56 = __rsi; _v27 = *_v56 & 255; _v26 = (_v56[1]) & 255; _t52 = _v56; _v25 = (_t52[2]) & 255; ConvertIoCapaToStr(_v27 & 255); _t53 = _v48; r9d = _v27 & 255; r8 = _t52; DebugPrint(0, _t53, _t53, _t52, __rdi, __rsi); ConvertOobDataPresentToStr(_v26 & 255); _t54 = _v48; r9d = _v26 & 255; r8 = _t53; DebugPrint(0, _t54, _t54, _t53, __rdi, __rsi); ConvertAuthRequirementToStr(_v25 & 255); r9d = _v25 & 255; r8 = _t54; DebugPrint(0, _v48, _v48, _t54, __rdi, __rsi); return; } LMP_TRACE() {// addr = 0x0049A8EF long long _v32; // _cfa_ffffffe0 _unknown_ _v35; // _cfa_ffffffdd signed char _v36; // _cfa_ffffffdc signed char _v37; // _cfa_ffffffdb signed char _v38; // _cfa_ffffffda signed char _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 char _v72; // _cfa_ffffffb8 signed int _v73; // _cfa_ffffffb7 signed int _v74; // _cfa_ffffffb6 signed long long _v75; // _cfa_ffffffb5 signed int _v78; // _cfa_ffffffb2 intOrPtr _v92; // _cfa_ffffffa4 signed int _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 signed int _v116; // _cfa_ffffff8c signed int _v124; // _cfa_ffffff84 signed int _v132; // _cfa_ffffff7c signed int _v140; // _cfa_ffffff74 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t114; // _t114 signed int _t123; // _t123 signed int _t127; // _t127 signed int _t135; // _t135 signed int _t143; // _t143 signed int _t147; // _t147 signed int _t148; // _t148 signed int _t149; // _t149 signed int _t150; // _t150 signed char _t153; // _t153 signed int _t161; // _t161 signed int _t165; // _t165 signed int _t169; // _t169 signed int _t173; // _t173 intOrPtr _t177; // _t177 _unknown_ _t215; // _t215 signed int _t224; // _t224 signed long long _t225; // _t225 signed int _t228; // _t228 signed long long _t229; // _t229 signed int _t232; // _t232 signed int _t236; // _t236 signed int _t240; // _t240 signed int _t243; // _t243 signed int _t247; // _t247 char* _t250; // _t250 long long _t257; // _t257 _push(r12); _push(__rbx); __rsp = &(__rsp[0xffffffffffffffe0]); _v92 = _t177; _v104 = _t257; _v112 = _t232; _v116 = r8d; _v96 = _t153; _v32 = *fs:0x28]; _v75 = 0; _t250 = &_v75; GetTraceRemoteInfoByACLCLLIdx( &_v40); r8d = _v75 & 0xff; r9d = _v37 & 0xff; r10d = _v36 & 0xff; _v124 = r8d; _v132 = _v40 & 0xff; _v140 = _v39 & 0xff; *__rsp = _v38 & 0xff; r8d = r10d; _t254 = ?_? ( &_v72); RtlStringCchPrintfA(0, 31, &_v40, _t250, &_v72); if(_v116 == 0) { _t219 = _v112; if(( *_v112 & 255) == 0) { } if(_v92 != 0) { _t114 = 60; } else { _t114 = 62; } r9 = _t250; r8d = _t114; DebugPrint(0, _t219, &_v72, _t250, _t254, _t257); r8d = _v96 & 255; _t116 = 0; DebugPrint(0, ?_? ( &_v72), &_v72, _t250, _t254, _t257); } else { _v74 = *_v112 & 1; _t224 = _v112; _v78 = ( *_t224 & 255) >> 1 & 255; if(_v78 <= 123) { if(_v78 == 60) { _t147 = _v78 & 65535; CovertOpCodeToStr(_v78 & 65535); _t236 = _t224; if(_v74 == 0) { _t161 = 109; } else { _t161 = 115; } if(_v92 != 0) { _t123 = 60; } else { _t123 = 62; } _v132 = _v116; _v140 = _t147; *__rsp = _t236; r9d = _t161; r8d = _t123; DebugPrint(0, _t224, ?_? ( &_v72), _t250, _t254, ?_? ( &_v72)); _t225 = &_v72; r8d = _v96 & 255; _t116 = 0; DebugPrint(0, _t225, _t225, _t250, _t254, &_v72); } else { _t148 = _v78 & 65535; CovertOpCodeToStr(_v78 & 65535); _t240 = _t224; if(_v74 == 0) { _t165 = 109; } else { _t165 = 115; } if(_v92 != 0) { _t127 = 60; } else { _t127 = 62; } _v132 = _v116; _v140 = _t148; *__rsp = _t240; r9d = _t165; r8d = _t127; DebugPrint(0, _t224, ?_? ( &_v72), _t250, _t254, ?_? ( &_v72)); _t225 = &_v72; r8d = _v96 & 255; _t116 = 0; DebugPrint(0, _t225, _t225, _t250, _t254, &_v72); } if(_v78 <= 65) { _t116 = _t225; *((long long*)( *((intOrPtr*)(_t225 * 8 + &LMPTraceTable))))(); } } else { _t228 = _v112; _v73 = *(_t228 + 1) & 255; _v78 = _v78 + ((_v73 & 255) << 7); if(_v78 == 2303) { _t149 = _v73 & 255; r12d = _v78 & 65535; r12d = r12d & 127; CovertOpCodeToStr(_v78 & 65535); _t243 = _t228; if(_v74 == 0) { _t169 = 109; } else { _t169 = 115; } if(_v92 != 0) { _t135 = 60; } else { _t135 = 62; } _v124 = _v116; _v132 = _t149; _v140 = r12d; *__rsp = _t243; r9d = _t169; r8d = _t135; DebugPrint(0, _t228, ?_? ( &_v72), _t250, _t254, ?_? ( &_v72)); _t229 = &_v72; r8d = _v96 & 255; _t116 = DebugPrint(0, _t229, _t229, _t250, _t254, &_v72); } else { _t150 = _v73 & 255; r12d = _v78 & 65535; r12d = r12d & 127; CovertOpCodeToStr(_v78 & 65535); _t247 = _t228; if(_v74 == 0) { _t173 = 109; } else { _t173 = 115; } if(_v92 != 0) { _t143 = 60; } else { _t143 = 62; } _v124 = _v116; _v132 = _t150; _v140 = r12d; *__rsp = _t247; r9d = _t173; r8d = _t143; DebugPrint(0, _t228, ?_? ( &_v72), _t250, _t254, ?_? ( &_v72)); _t229 = &_v72; r8d = _v96 & 255; DebugPrint(0, _t229, _t229, _t250, _t254, &_v72); } _t215 = _v73 - 32; if(_t215 <= 0) { _t116 = _t229; *((long long*)( *((intOrPtr*)(_t229 * 8 + &LMPTraceExtendedTable))))(); } } } if(_t215 != 0) { __stack_chk_fail(); } __rsp = __rsp - 128; _pop(__rbx); _pop(r12); return; } LMutils_Array_Copy( signed char __edi, // r4 signed int* __rax, // r53 long long __rdx, // r56 long long __rsi // r58 ) {// addr = 0x0049AD60 intOrPtr _v12; // _cfa_fffffff4 signed char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rsi = __rsi; __rax = __rax; __edi = __edi; _v40 = __rsi; _v48 = __rdx; _v28 = __edi; _v12 = 0; do { __rax = __rax + _v40; *__rax = *(_v12 + _v48) & 255; _v12 = _v12 + 1; } while((_v28 & 255) > _v12); return; } EG_Generate_LMP_Event() {// addr = 0x0049AD9F long long _v16; // _cfa_fffffff0 signed int _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 signed int _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 signed char _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed char _t45; // _t45 signed char _t47; // _t47 signed int _t48; // _t48 _unknown_ _t52; // _t52 long long _t53; // _t53 long long _t58; // _t58 long long _t60; // _t60 _v64 = _t58; _v72 = _t60; _v76 = _t47; _v80 = _t45; _t53 = *fs:0x28]; _v16 = _t53; _v41 = 19; _v40 = 34; _v39 = _v80 & 255; if(_v76 > 17) { _v76 = 17; } _v48 = 0; while((_v76 & 255) > _v48) { _t48 = *(_t53 + _v72) & 255; _t53 = _t53 + 2; *(__rbp + _t53 - 32) = _t48; _v48 = _v48 + 1; } _v48 = _v76 & 255; while(1) { _t52 = _v48 - 16; if(_t52 > 0) { break; } *(__rbp + _t53 - 32) = 0; _v48 = _v48 + 1; } EG_Generate_Vendor_Specific_Event(); if(_t52 != 0) { __stack_chk_fail(); return; } return; } LM_Send_LMP_TCI_Command( char __edx, // r3 _unknown_ __esi, // r5 long long __rcx, // r55 long long __rdi // r57 ) {// addr = 0x0049AE5B long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rdi = __rdi; __rcx = __rcx; __esi = __esi; __edx = __edx; _v16 = __rdi; _v32 = __rcx; _v40 = r8; _v20 = __si; _v24 = __edx; return 1; } LMutils_Translate_Bd_Addr_to_Byte_Array( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049AE7B _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = __dl; *(_v16 + 1) = *(_v24 + 1) & 255; *(_v16 + 2) = *(_v24 + 2) & 255; *(_v16 + 3) = *(_v24 + 3) & 255; *(_v16 + 4) = *(_v24 + 4) & 255; *(_v16 + 5) = *(_v24 + 5) & 255; return; } LMutils_Translate_Byte_Array_to_Bd_Addr( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x0049AEF0 signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; if(_v16 != 0 && _v24 != 0) { *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } return; } LMutils_Alloc_UINT8_ID( signed long long __rax, // r53 signed long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x0049AF67 signed char _v17; // _cfa_ffffffef signed char _v18; // _cfa_ffffffee signed int _v24; // _cfa_ffffffe8 long long _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t41; // _t41 signed long long _t45; // _t45 __rdi = __rdi; _t45 = __rdx; _t41 = __rax; _v40 = __rdi; _v17 = 0; while(_v17 <= 7) { _v18 = 0; while(_v18 <= 31) { _v24 = 1 << (_v18 & 255); _t41 = (_t41 << 2) + _v40; if(( *_t41 & _v24) == 0) { _v18 = _v18 + 1; continue; } *((_t41 << 2) + _v40) = *((_t45 << 2) + _v40) & !_v24; return ((_v17 & 255) << 5) + _v18; } _v17 = _v17 + 1; } return 0; } LMutils_Free_UINT8_ID( signed char __esi, // r5 signed int __rax, // r53 signed int __rdx, // r56 long long __rdi // r57 ) {// addr = 0x0049AFF0 char _v17; // _cfa_ffffffef signed int _v18; // _cfa_ffffffee signed int _v24; // _cfa_ffffffe8 long long _v40; // _cfa_ffffffd8 signed int _v44; // _cfa_ffffffd4 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v40 = __rdi; _v44 = __esi; _v18 = (_v44 & 255) >> 5; _v17 = (0 - (_v18 & 255) << 5) + _v44; _v24 = 1 << __cl; *((__rax << 2) + _v40) = *((__rdx << 2) + _v40) | _v24; return _v18 & 255; } UDM_FlushFirstHCIDataPacket( _unknown_ __eax // r0 ) {// addr = 0x0049B054 intOrPtr _v12; // _cfa_fffffff4 signed int _v23; // _cfa_ffffffe9 intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t54; // _t54 long long _t58; // _t58 long long _t64; // _t64 _v48 = _t64; _v40 = *((intOrPtr*)(_v48 + 48)); _v32 = 0; if(( *(_v48 + 1) & 255) == 8) { _t54 = _v40; QUEUE_DequeueRequest(_t54); _v32 = _t54; if(_v32 != 0) { _v24 = QUEUE_GetPktHdr(_v32); if((_v23 & 0x30) != 0) { QUEUE_GetBufLength(_v32); QUEUE_DequeueCommit(_v40); _v12 = 0; while(1) { _t58 = _v40; QUEUE_DequeueRequest(_t58); _v32 = _t58; if(_v32 == 0) { break; } _v24 = QUEUE_GetPktHdr(_v32); if((_v23 & 0x30) != 16) { QUEUE_SetFlushContinuing(0, _v40); L12: return 1; } QUEUE_GetBufLength(_v32); QUEUE_DequeueCommit(_v40); _v12 = _v12 + 1; } QUEUE_SetFlushContinuing(1, _v40); goto L12; } return 0; } return 0; } return 0; } _UDM_FlushOneHCIDataPacket( _unknown_ __eax // r0 ) {// addr = 0x0049B17D intOrPtr _v12; // _cfa_fffffff4 signed char _v23; // _cfa_ffffffe9 intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t37; // _t37 long long _t42; // _t42 _v48 = _t42; _v40 = *((intOrPtr*)(_v48 + 48)); _v32 = 0; if(( *(_v48 + 1) & 255) == 8) { _v12 = 0; while(1) { _t37 = _v40; QUEUE_DequeueRequest(_t37); _v32 = _t37; if(_v32 == 0) { break; } _v24 = QUEUE_GetPktHdr(_v32); if(_v12 <= 0 || (_v23 & 0x30) == 16) { QUEUE_GetBufLength(_v32); QUEUE_DequeueCommit(_v40); _v12 = _v12 + 1; continue; } else { return 1; } } QUEUE_SetFlushContinuing(1, _v40); return _v12 != 0; } return 0; } UDM_FlushAllHCIDataPacket() {// addr = 0x0049B23C short _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 long long _t24; // _t24 long long _t28; // _t28 _v32 = _t24; _v40 = _t28; while(_UDM_FlushOneHCIDataPacket(_t11) != 0) { _v10 = LM_SearchConnectionHandleByACL( *((intOrPtr*)(_v40 + 80)), _v32 + 60216, *((intOrPtr*)(_v40 + 80))); _t11 = EG_Event_Composer(0); } return; } UDM_FlushOnlyFlushableHCIDataPacket( _unknown_ __eax // r0 ) {// addr = 0x0049B2AB short _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t44; // _t44 long long _t47; // _t47 long long _t62; // _t62 long long _t71; // _t71 _v32 = _t62; _v40 = _t71; _v24 = 0; _t44 = *((intOrPtr*)(_v40 + 48)); QUEUE_DequeueRequest(_t44); _v24 = _t44; if(_v24 == 0) { return 0; } if(QUEUE_GetAutoFlushable(_v24) != 0) { _t33 = UDM_FlushFirstHCIDataPacket(_t33); } while(1) { _t47 = *((intOrPtr*)(_v40 + 48)); QUEUE_DequeueRequest(_t47); _v24 = _t47; if(_v24 == 0) { break; } if(QUEUE_GetAutoFlushable(_v24) == 0) { if( *((intOrPtr*)(_v24 + 40)) == 0) { L11: do { } while(_t33 != 0); _v10 = LM_SearchConnectionHandleByACL( *((intOrPtr*)(_v40 + 80)), _v32 + 60216, *((intOrPtr*)(_v40 + 80))); *((char*)(_v40 + 17)) = __dl; return 1; } _v24 = *((intOrPtr*)(_v24 + 40)); continue; } _t33 = _UDM_FlushOneHCIDataPacket(_t33); } goto L11; } UDM_Generate_Flush_Event() {// addr = 0x0049B3B4 long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 short _t8; // _t8 long long _t10; // _t10 _v16 = _t10; _v20 = _t8; EG_Event_Composer(0); return; } UDM_Generate_Enhanced_Flush_Complete_Event() {// addr = 0x0049B3E2 long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 short _t8; // _t8 long long _t10; // _t10 _v16 = _t10; _v20 = _t8; EG_Event_Composer(0); return; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049B410 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } DM_Flush_Command() {// addr = 0x0049B44F signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 short _v24; // _cfa_ffffffe8 signed char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed short _v52; // _cfa_ffffffcc long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed short _t35; // _t35 signed char _t40; // _t40 long long _t50; // _t50 long long _t54; // _t54 long long _t59; // _t59 _v48 = _t54; _v64 = _t50; _v52 = _t35; _v32 = 0; _v10 = 0; _v9 = 0; _v24 = 3080; LM_Find_Link_Table_Entry_By_Connection_Handle(_v52 & 65535, _t40, _v48 + 60216); _v32 = _t40; if(_v32 == 0) { _v10 = 2; } else { if( *((intOrPtr*)(_v32 + 768)) != 0) { write_du(2, _v32 + 626, _v64, _t59); _v9 = QUEUE_GetPktSeq( *((intOrPtr*)( *((intOrPtr*)(_v32 + 768)) + 48))); LCCMD_FlushRequest(); } } return _v10 & 255; } DM_EnHanced_Flush_Command( signed char __rax // r53 ) {// addr = 0x0049B516 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed short _t28; // _t28 signed char _t32; // _t32 long long _t42; // _t42 _t32 = __rax; _v32 = _t42; _v36 = _t28; _v24 = 0; _v10 = 0; _v9 = 0; LM_Find_Link_Table_Entry_By_Connection_Handle(_v36 & 65535, __rax, _v32 + 60216); _v24 = _t32; if(_v24 == 0) { _v10 = 2; } else { if( *((intOrPtr*)(_v24 + 768)) != 0) { _v9 = QUEUE_GetPktSeq( *((intOrPtr*)( *((intOrPtr*)(_v24 + 768)) + 48))); LCCMD_FlushRequest(); } } return _v10 & 255; } DMTCI_WriteLocalRadioRegisterCommand( _unknown_ __edi, // r4 char __esi // r5 ) {// addr = 0x0049B5B4 char _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; _v12 = __dl; _v16 = __esi; return 0; } DMTCI_ReadLocalRadioRegisterCommand( char __edi, // r4 long long __rsi // r58 ) {// addr = 0x0049B5C9 char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __edi = __edi; _v24 = __rsi; _v12 = __edi; return 0; } DM_Init_Timer( signed long long __rax // r53 ) {// addr = 0x0049B5E0 char _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 signed long long _t13; // _t13 signed long long _t23; // _t23 signed long long _t25; // _t25 signed long long _t27; // _t27 signed long long _t29; // _t29 signed long long _t31; // _t31 _t23 = __rax; _v12 = 0; while(_v12 <= 19) { _t25 = (_t23 << 5) + &dm_timers; *_t25 = 0; _t27 = (_t25 << 5) + &dm_timers; *((long long*)(_t27 + 8)) = 0; _t29 = (_t27 << 5) + 7348656; *_t29 = 0; _t31 = (_t29 << 5) + 7348656; *((intOrPtr*)(_t31 + 8)) = 0; _t13 = _t31; _t23 = (_t31 << 5) + &dm_timers; *((char*)(_t23 + 1)) = 0; _v12 = _v12 + 1; } dm_timer_head = 0; return _t13; } DM_Set_Timer() {// addr = 0x0049B668 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 intOrPtr _t46; // _t46 signed int _t71; // _t71 signed long long _t80; // _t80 signed long long _t90; // _t90 _unknown_ _t92; // _t92 long long _t96; // _t96 long long _t100; // _t100 _v32 = _t100; _v36 = _t71; _v48 = _t96; _v56 = __rcx; _v10 = 1; _v9 = 0; while(_v10 <= 19 && _v9 == 0) { _t80 = (_t80 << 5) + &dm_timers; if(( *_t80 & 255) == 0) { _t80 = (_t80 << 5) + &dm_timers; *_t80 = 5; _v9 = 1; } if(_v9 == 0) { _v10 = _v10 + 1; } } if(_v9 == 0) { _v10 = 0; } else { _v24 = (_t80 << 5) + &dm_timers; *((long long*)(_v24 + 8)) = _v48; *((long long*)(_v24 + 16)) = _v56; _t101 = _v32; _t46 = BTtimer_Set_BtClk(_v32); _t99 = _v24; *((intOrPtr*)(_v24 + 24)) = _t46; if(_v36 != 0) { _t90 = _v24; *_t90 = *_v24 & 255 | 2; _t92 = (_t90 << 5) + 7348656; *__rsp = *((intOrPtr*)(_t92 + 8)); r9d = _v36 * 625; r8d = _t92 + _t92; DM_Enlist_Timer(DebugPrint(0, _t92, __rcx, _t99, _t101, __rsi), _v32); } *_v24 = *_v24 & 0xfb; RtbtPostCoreEvent(); } return _v10 & 255; } DM_Enlist_Timer( _unknown_ __eax, // r0 signed long long __rax // r53 ) {// addr = 0x0049B7B7 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed char _t61; // _t61 signed long long _t68; // _t68 signed long long _t70; // _t70 long long _t87; // _t87 _t68 = __rax; _v32 = _t87; _v36 = _t61; _v9 = 0; _v10 = dm_timer_head & 255; while(_v10 != 0) { _t77 = (_t68 << 5) + 7348656; _t68 = ((_t68 << 5) + 7348656 << 5) + 7348656; __edi = *((intOrPtr*)(_t68 + 8)); if(BTtimer_Is_Expired_For_Time( *((intOrPtr*)(_t68 + 8)), *((intOrPtr*)(_t77 + 8))) != 0) { _v9 = _v10 & 255; _t68 = (_t68 << 5) + &dm_timers; _v10 = *(_t68 + 1) & 255; continue; } break; } if(_v10 != (dm_timer_head & 255)) { _t70 = (_t68 << 5) + &dm_timers; *(((_v36 & 255) << 5) + &dm_timers + 1) = *(_t70 + 1) & 255; *((_t70 << 5) + &dm_timers + 1) = _v36 & 255; return; } *(((_v36 & 255) << 5) + &dm_timers + 1) = dm_timer_head & 255; dm_timer_head = _v36 & 255; if(( *(_v32 + 191598) & 255) != 0) { Tmr_Start_Timer(); return; } return; } DM_Delist_Timer( char __esi, // r5 signed int __rax, // r53 signed long long __rdi // r57 ) {// addr = 0x0049B8D6 signed int _v9; // _cfa_fffffff7 signed long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed long long _t53; // _t53 signed long long _t59; // _t59 _t51 = __rax; _v32 = __rdi; _v36 = __esi; if(_v36 != (dm_timer_head & 255)) { if(_v36 == 0) { } else { _v9 = dm_timer_head & 255; while(_v9 != 0) { _t53 = (_t51 << 5) + &dm_timers; if(( *(_t53 + 1) & 255) == _v36) { *(((_v9 & 255) << 5) + &dm_timers + 1) = *((_t53 << 5) + &dm_timers + 1) & 255; return; } _t51 = (_t53 << 5) + &dm_timers; _v9 = *(_t51 + 1) & 255; } } } else { dm_timer_head = *((__rax << 5) + &dm_timers + 1) & 255; _t59 = _v32; if(( *(_t59 + 191598) & 255) != 0) { if(( *((_t59 << 5) + &dm_timers) & 255) == 0) { Tmr_Stop_Timer(); return; } Tmr_Start_Timer(); return; } } return; } DM_Timer_Expired( _unknown_ __eax // r0 ) {// addr = 0x0049B9F0 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t14; // _t14 long long _t18; // _t18 _v16 = _t18; if((dm_timer_head & 255) == 0 || BTtimer_Is_Expired(_v16) == 0) { return 0; } else { return 1; } } DM_Handle_Expired_Timers( _unknown_ __rax // r53 ) {// addr = 0x0049BA40 signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 char* _v32; // _cfa_ffffffe0 char* _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 signed long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t40; // _t40 signed int _t41; // _t41 signed long long _t81; // _t81 signed long long _t83; // _t83 signed long long _t96; // _t96 signed long long _t102; // _t102 signed long long _t103; // _t103 _v64 = _t102; _t40 = dm_timer_head & 255; _v9 = _t40; while(1) { _t103 = _v64; DM_Timer_Expired(_t40); if(_t40 == 0) { break; } _t41 = *(_v64 + 190499) & 255; if(_t41 != 0) { L13: return; } _v24 = 0; _v16 = 0; _t81 = *(_v64 + 191488); if((_t41 & 1) == 0) { _v16 = 4294967295; _v24 = _v16; } else { _t81 = *_v64 + 1568; __rcx = &_v16; __rsi = __rcx; _t103 = _t81; RT_PCI_IO_READ32(); _v24 = _v16; } _t83 = (_t81 << 5) + 7348656; r9d = *((intOrPtr*)(_t83 + 8)); r8d = _v24 & 268435455; DebugPrint(0, _t83, __rcx, __rdx, _t103, __rsi); _v48 = (_t83 << 5) + &dm_timers; _t40 = (_v48[0]) & 255; dm_timer_head = _t40; _v40 = (_v48[2]); _v32 = (_v48[4]); *_v48 = 0; if(_v40 != 0) { __rdx = _v32; __rcx = _v40; __rsi = __rdx; *__rcx(); } } _t96 = _v64; if(( *(_t96 + 191598) & 255) == 0 || ( *((_t96 << 5) + &dm_timers) & 255) == 0 || _v9 == (dm_timer_head & 255)) { goto L13; } else { Tmr_Start_Timer(); return; } } DM_Clear_Timer() {// addr = 0x0049BBF4 signed long long _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed char _t38; // _t38 signed long long _t43; // _t43 signed long long _t48; // _t48 long long _t57; // _t57 _v32 = _t57; _v36 = _t38; if(_v36 == 0) { } else { _v16 = (_t43 << 5) + &dm_timers; if(( *_v16 & 4) == 0) { _t48 = _v16; *_t48 = *_v16 & 255 | 4; r8d = *((intOrPtr*)((_t48 << 5) + 0x7021b8)); DebugPrint(0, (_t48 << 5) + 7348656, __rcx, __rdx, _t57, __rsi); DM_Delist_Timer(_v36 & 255, _v32, _v32); *(_v16 + 8) = 0; *(_v16 + 16) = 0; *(_v16 + 24) = 0; *(_v16 + 1) = 0; *_v16 = 0; return; } } return; } DM_Min_Expried_Time() {// addr = 0x0049BCC3 char _v9; // _cfa_fffffff7 intOrPtr _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t41; // _t41 signed long long _t85; // _t85 signed long long _t89; // _t89 _v48 = __rdi; _t41 = *((_t85 << 5) + &dm_timers) & 255; if(_t41 != 0) { _v40 = 0; _v28 = 0; _t89 = *(_v48 + 191488); if((_t41 & 1) == 0) { _v28 = 4294967295; _v40 = _v28; } else { _t89 = *_v48 + 1568; __rcx = &_v28; __rsi = __rcx; __rdi = _t89; RT_PCI_IO_READ32(); _v40 = _v28; } _v20 = _v40 & 268435455; _t91 = (_t89 << 5) + 7348656; _v16 = *((intOrPtr*)((_t89 << 5) + 0x7021b8)); _v9 = BTtimer_Is_Expired_For_Time(_v16, _v20); if(_v9 != 0) { _v24 = 0; } else { if(_v16 < _v20) { _v24 = _v16 - _v20 + 268435456; } else { _v24 = _v16 - _v20; } } _v24 = _v24 * 625 >> 1; r9d = _v24; r8d = _v16; DebugPrint(0, _t91, __rcx, __rdx, __rdi, __rsi); return _v24; } return 4294967295; } DM_Handle_Timer_Interrupt() {// addr = 0x0049BE08 signed int _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 signed int _v37; // _cfa_ffffffdb signed int _v40; // _cfa_ffffffd8 char* _v48; // _cfa_ffffffd0 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t54; // _t54 signed int _t81; // _t81 long long _t134; // _t134 intOrPtr _t137; // _t137 _v64 = _t134; _v9 = 0; _t54 = *(_v64 + 191598) & 255; if(_t54 == 0) { L17: return; } _v40 = 0; ral_spin_lock(_v64 + 30520, &_v48); _v16 = 0; if((_t54 & 1) == 0) { _v16 = 4294967295; _v40 = _v16; } else { __rcx = &_v16; RT_PCI_IO_READ32(); _v40 = _v16; } if((_v37 & 0x40) != 0) { if((_v37 & 0x20) == 0) { _t81 = _v37 & 0xdf; _v37 = _t81; if((_t81 & 1) != 0) { RT_PCI_IO_WRITE32(); } } _v9 = 1; } _t133 = _v64 + 30520; _t141 = _v48; ral_spin_unlock(_v64 + 30520, _v48); if(_v9 == 0) { goto L17; } else { _t137 = _v64; SetPollMode(); _v24 = 0; _v16 = 0; _t117 = *((intOrPtr*)(_v64 + 191488)); if(0 == 0) { _v16 = 4294967295; _v24 = _v16; } else { _t117 = *_v64 + 1568; __rcx = &_v16; _t141 = __rcx; _t137 = *_v64 + 1568; RT_PCI_IO_READ32(); _v24 = _v16; } if((_v37 & 0x20) == 0) { r8d = _v40 & 67108863; DebugPrint(0, _t117, __rcx, _t133, _t137, _t141); return; } else { r8d = _v40 & 67108863; DebugPrint(0, _t117, __rcx, _t133, _t137, _t141); return; } } } QUEUE_Initialise() {// addr = 0x0049C00C long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 _unknown_ _t55; // _t55 _unknown_ _t80; // _t80 long long _t98; // _t98 long long _t116; // _t116 _v16 = _t98; _v24 = _t116; DebugPrint(0, _t55, __rcx, _t80, _t98, _t116); *((long long*)(_v16 + 1472)) = _v16; *((long long*)(_v16 + 1480)) = _v16 + 32; *((long long*)(_v16 + 1488)) = _v16 + 64; *((long long*)(_v16 + 1496)) = _v16 + 1280; _QUEUE_HCICommandQueueInitialise(); _QUEUE_HCIEventQueueInitialise(); _QUEUE_HCIAutoEventQueueInitialise(); _QUEUE_LMPInQueueInitialise(); _QUEUE_LMPOutQueueInitialise(); _QUEUE_L2CAPInQueueInitialise(); _QUEUE_L2CAPOutQueueInitialise(); _QUEUE_SyncInQueueInitialise(); _QUEUE_SyncOutQueueInitialise(); _QUEUE_RxEIRQueueInitialise(); _QUEUE_LEScanInQueueInitialise(); _QUEUE_LEACLInQueueInitialise(); _QUEUE_LEACLOutQueueInitialise(); QUEUE_New(0, _v16, _v16); QUEUE_New(1, _v16, _v16); QUEUE_New(2, _v16, _v16); QUEUE_ENTIRYMASS_TRACE(_v16); return; } QUEUE_Reset() {// addr = 0x0049C1BD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t57; // _t57 long long _t72; // _t72 _v16 = _t57; _v24 = _t72; _QUEUE_HCIEventQueueInitialise(); _QUEUE_HCIAutoEventQueueInitialise(); _QUEUE_LMPInQueueInitialise(); _QUEUE_LMPOutQueueInitialise(); _QUEUE_L2CAPInQueueInitialise(); _QUEUE_L2CAPOutQueueInitialise(); _QUEUE_SyncInQueueInitialise(); _QUEUE_SyncOutQueueInitialise(); _QUEUE_RxEIRQueueInitialise(); _QUEUE_LEScanInQueueInitialise(); _QUEUE_LEACLInQueueInitialise(); _QUEUE_LEACLOutQueueInitialise(); QUEUE_New(1, _v16, _v16); QUEUE_New(2, _v16, _v16); return; } QUEUE_New( intOrPtr __esi, // r5 _unknown_ __rax, // r53 long long __rdi // r57 ) {// addr = 0x0049C2D5 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v24 = 0; if(_v36 > 44) { return; } goto __rax; } QUEUE_Delete() {// addr = 0x0049C46C long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t55; // _t55 long long _t56; // _t56 _unknown_ _t71; // _t71 long long _t74; // _t74 intOrPtr _t77; // _t77 _unknown_ _t79; // _t79 _v32 = _t74; _v16 = 0; _v24 = 0; if(_v32 == 0) { DebugPrint(0, _t55, __rcx, _t71, _t74, _t79); return; } _t56 = _v32; QUEUE_GetQueueSpinLock(_t56); _v16 = _t56; if(_v16 != 0) { _t72 = ?_? ( &_v24); _t80 = ?_? ( &_v24); ral_spin_lock(_v16, &_v24); } while( *((intOrPtr*)(_v32 + 8)) != 0) { if(( *( *((intOrPtr*)(_v32 + 8)) + 5) & 255) != 0) { _t77 = _v32; _QUEUE_EnqueueCancel(); } else { _t77 = _v32; _QUEUE_DequeueCommit(); } } DebugPrint(0, _v32, __rcx, _t72, _t77, _t80); *_v32 = 0; if(_v16 == 0) { return; } ral_spin_unlock(_v16, _v24); return; } QUEUE_EnqueueRequest() {// addr = 0x0049C581 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc intOrPtr _v56; // _cfa_ffffffc8 short _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 short _t60; // _t60 intOrPtr _t65; // _t65 intOrPtr _t72; // _t72 long long _t84; // _t84 long long _t87; // _t87 long long _t88; // _t88 _unknown_ _t98; // _t98 long long _t105; // _t105 long long _t109; // _t109 _v48 = _t105; _v52 = _t72; _v56 = _t65; _v60 = _t60; _v32 = 0; _v24 = 0; _v40 = 0; _t84 = _v48; QUEUE_GetQueueSpinLock(_t84); _v24 = _t84; if(_v24 != 0) { _t111 = ?_? ( &_v40); ral_spin_lock(_v24, &_v40); } if(_v48 == 0) { L12: if(_v24 != 0) { ral_spin_unlock(_v24, _v40); } return; } _t87 = _v48; _t108 = _t87; _QUEUE_TouchLastEntity(_t87); _v16 = _t87; if(_v16 != 0 && (_v16 == 0 || ( *(_v16 + 5) & 255) != 0)) { r9d = *(_v16 + 5) & 0xff; r8 = _v16; _t51 = DebugPrint(0, _v48, _t98, _v16, _t108, _t111); } else { _t88 = _v48; _t109 = _t88; _QUEUE_AllocateEntity(); _v32 = _t88; if(_v32 != 0) { if(_v16 != 0) { *((long long*)(_v16 + 40)) = _v32; _t102 = _v16; *((long long*)(_v32 + 48)) = _v16; } else { _t102 = _v32; *((long long*)(_v48 + 8)) = _v32; } *__rsp = _v52; r9 = _v32; r8 = *((intOrPtr*)(_v48 + 8)); DebugPrint(0, _v48, *((intOrPtr*)(_v48 + 8)), _t102, _t109, _v32); } } goto L12; } QUEUE_EnqueueCommit() {// addr = 0x0049C708 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t50; // _t50 long long _t66; // _t66 _v48 = _t66; _v16 = 0; _v32 = 0; _t50 = _v48; _t67 = _t50; QUEUE_GetQueueSpinLock(_t50); _v16 = _t50; if(_v16 != 0) { _t63 = ?_? ( &_v32); _t70 = ?_? ( &_v32); _t67 = _v16; ral_spin_lock(_v16, &_v32); } if(_v48 == 0) { } else { _v24 = *((intOrPtr*)(_v48 + 8)); if(_v24 == 0) { _t30 = DebugPrint(0, _v48, __rcx, _t63, _t67, _t70); } else { while( *((intOrPtr*)(_v24 + 40)) != 0) { _v24 = *((intOrPtr*)(_v24 + 40)); } *((char*)(_v24 + 5)) = 0; r8 = _v24; DebugPrint(0, _v48, __rcx, _v24, _t67, _t70); } } if(_v16 != 0) { ral_spin_unlock(_v16, _v32); } _QUEUE_EnqueueKick(_v48); return; } _QUEUE_EnqueueCancel() {// addr = 0x0049C80C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t28; // _t28 _v32 = __rdi; if(_v32 == 0) { return; } _v16 = *((intOrPtr*)(_v32 + 8)); if(_v16 == 0) { L10: DebugPrint(0, _v32, __rcx, __rdx, __rdi, __rsi); return; } else { do { } while( *((intOrPtr*)(_v16 + 40)) != 0); if(( *(_v16 + 5) & 255) != 0) { __rdx = _v16; __rsi = __rdx; __rdi = _v32; if(_QUEUE_DeallocateEntity() != 0) { if( *((intOrPtr*)(_v32 + 8)) != _v16) { _v16 = *((intOrPtr*)(_v16 + 48)); *((long long*)(_v16 + 40)) = 0; } else { *((long long*)(_v32 + 8)) = 0; } } } goto L10; } } QUEUE_EnqueueCancel() {// addr = 0x0049C8D0 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t15; // _t15 long long _t21; // _t21 _v32 = _t21; _v16 = 0; _v24 = 0; _t15 = _v32; QUEUE_GetQueueSpinLock(_t15); _v16 = _t15; if(_v16 != 0) { ral_spin_lock(_v16, &_v24); } _QUEUE_EnqueueCancel(); if(_v16 != 0) { ral_spin_unlock(_v16, _v24); return; } return; } QUEUE_DequeueRequestNonLocked( intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x0049C93E char _v9; // _cfa_fffffff7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v24 = 0; _v9 = 0; if(_v32 == 0) { return; } _v24 = *((intOrPtr*)(_v32 + 8)); if(_v24 == 0) { L14: return; } else { _v16 = 0; while(_v24 != 0) { if( *_v24 == 0 || ( *(_v24 + 5) & 255) != 0) { L11: _v24 = 0; } else { _v16 = _v16 + ( *(_v24 + 24) & 0xffff) - ( *(_v24 + 6) & 0xffff); if(_v16 < _v36) { _v24 = *((intOrPtr*)(_v24 + 40)); if(_v24 == 0 || *_v24 == 0 || ( *(_v24 + 5) & 255) != 0) { goto L11; } else { continue; } } _v24 = *((intOrPtr*)(_v32 + 8)); _v9 = 1; } goto L14; } goto L14; } } QUEUE_DequeueRequest( _unknown_ __rax // r53 ) {// addr = 0x0049CA1D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 intOrPtr _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 _unknown_ _t19; // _t19 intOrPtr _t21; // _t21 long long _t24; // _t24 long long _t25; // _t25 long long _t31; // _t31 _v48 = _t31; _v52 = _t21; _v24 = 0; _v16 = 0; _v32 = 0; if(_v48 != 0) { _t24 = _v48; QUEUE_GetQueueSpinLock(_t24); _v16 = _t24; if(_v16 != 0) { ral_spin_lock(_v16, &_v32); } _t25 = _v48; QUEUE_DequeueRequestNonLocked(_v52, _t25); _v24 = _t25; if(_v16 != 0) { ral_spin_unlock(_v16, _v32); } return; } return; } _QUEUE_DequeueCommit() {// addr = 0x0049CAB1 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed short _t116; // _t116 _v32 = __rdi; _v36 = _t116; if(_v32 == 0) { L18: return; } else { while(1) { _v16 = *((intOrPtr*)(_v32 + 8)); if(_v16 == 0) { break; } if( *_v16 == 0 || ( *(_v16 + 5) & 255) != 0) { r9d = *(_v16 + 5) & 0xff; r8d = *_v16; __rcx = _v16; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); goto L16; } else { if(( *(_v16 + 6) & 0xffff) + (_v36 & 65535) < ( *(_v16 + 24) & 0xffff)) { *(_v16 + 6) = ( *(_v16 + 6) & 65535) + _v36; _v36 = 0; *((char*)(_v16 + 9)) = _v16 + 1; L16: _t130 = _v32; DebugPrint(0, _v32, __rcx, __rdx, __rdi, __rsi); if(_v36 == 0) { goto L18; } DebugPrint(0, _t130, __rcx, __rdx, __rdi, __rsi); return; } _v36 = _v36 + ( *(_v16 + 6) & 65535) - ( *(_v16 + 24) & 65535); *(_v16 + 6) = *(_v16 + 24) & 65535; *((char*)(_v16 + 9)) = _v16 + 1; __rdx = _v16; _t144 = _v32; __rsi = __rdx; __rdi = _v32; if(_QUEUE_DeallocateEntity() == 0) { DebugPrint(0, _t144, __rcx, __rdx, __rdi, __rsi); } else { *((short*)(_v32 + 24)) = _v32 + 1; __rdx = *((intOrPtr*)(_v16 + 40)); *((long long*)(_v32 + 8)) = __rdx; _v16 = *((intOrPtr*)(_v32 + 8)); if(_v16 != 0) { *(_v16 + 48) = 0; } } if(_v36 == 0) { goto L16; } else { continue; } } } goto L16; } } QUEUE_DequeueCommitNonLocked() {// addr = 0x0049CCA4 long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 _unknown_ _t6; // _t6 long long _t10; // _t10 _v16 = _t10; _v20 = __ax; _QUEUE_DequeueCommit(); _QUEUE_Kick(_v16); return; } QUEUE_DequeueCommit( _unknown_ __rax // r53 ) {// addr = 0x0049CCD6 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 long long _t21; // _t21 long long _t28; // _t28 _v32 = _t28; _v36 = __ax; _v16 = 0; _v24 = 0; _t21 = _v32; QUEUE_GetQueueSpinLock(_t21); _v16 = _t21; if(_v16 != 0) { ral_spin_lock(_v16, &_v24); } _QUEUE_DequeueCommit(); if(_v16 != 0) { ral_spin_unlock(_v16, _v24); } _QUEUE_Kick(_v32); return; } QUEUE_IsEmpty( _unknown_ __rax // r53 ) {// addr = 0x0049CD5C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 intOrPtr _t9; // _t9 intOrPtr _t14; // _t14 signed long long _t15; // _t15 long long _t17; // _t17 _v32 = _t17; _v36 = _t9; _v16 = _v32 + (_t15 << 5); _t14 = _v16; QUEUE_DequeueRequest(_t14); if(_t14 != 0) { return 0; } return 1; } QUEUE_IsFull() {// addr = 0x0049CDA1 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char* _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 intOrPtr _v84; // _cfa_ffffffac _unknown_ __rbp; // r59 signed char _t65; // _t65 signed long long _t80; // _t80 long long _t84; // _t84 _v80 = _t84; _v84 = __esi; _v56 = _v80 + (_t80 << 5); _v48 = 0; _v64 = 0; _v10 = 0; _t65 = _v56; QUEUE_GetQueueSpinLock(_t65); _v48 = _t65; if(_v48 != 0) { ral_spin_lock(_v48, &_v64); } if(_v56 == 0) { L11: if(_v48 != 0) { ral_spin_unlock(_v48, _v64); } return _v10 & 255; } _v40 = *(_v56 + 16); _v9 = *_v40 & 255; if(_v9 != 0) { _v24 = _v40; if(((_v24[0xe]) & 255) == ((_v24[1]) & 255)) { _v10 = 1; } goto L11; } _v32 = _v40; if(((_v32[9]) & 255) == ((_v32[8]) & 255)) { _v10 = 1; } if(((_v32[4]) & 65535) == ((_v32[6]) & 65535) && ((_v32[9]) & 255) != 0) { _v10 = 1; } goto L11; } QUEUE_DeleteBuf() {// addr = 0x0049CEAE char _v25; // _cfa_ffffffe7 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long __rbx; // r54 _unknown_ __rbp; // r59 long long _t27; // _t27 long long _t29; // _t29 long long _t30; // _t30 long long _t31; // _t31 intOrPtr _t32; // _t32 _push(r12); _push(__rbx); __rsp = __rsp - 32; _v48 = _t29; _v56 = _t31; _v25 = 0; if(_v48 != 0) { r12 = *((intOrPtr*)(_v56 + 48)); __rbx = *((intOrPtr*)(_v56 + 40)); __rdx = _v56; _t27 = _v48; _t32 = __rdx; _t30 = _t27; if(_QUEUE_DeallocateEntity() == 0) { __rcx = _v56; DebugPrint(0, _v56, _v56, __rdx, _t30, _t32); } else { if(r12 != 0) { _t27 = __rbx; } *r12+0x28] = _t27; if(__rbx != 0) { _t27 = r12; } *((long long*)(__rbx + 48)) = _t27; _v25 = 1; } } __rsp = __rsp + 32; _pop(__rbx); _pop(r12); return; } QUEUE_GetDataBuf( long long __rdi // r57 ) {// addr = 0x0049CF4D long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 6) & 0xffff; } QUEUE_GetBufLength( long long __rdi // r57 ) {// addr = 0x0049CF6D long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return ( *(_v16 + 24) & 65535) - ( *(_v16 + 6) & 65535); } QUEUE_GetPktHdr( long long __rdi // r57 ) {// addr = 0x0049CF8E long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *((intOrPtr*)(_v16 + 28)); } QUEUE_GetDequeueTimes( long long __rdi // r57 ) {// addr = 0x0049CF9F long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 9) & 0xff; } QUEUE_GetPktTag( long long __rdi // r57 ) {// addr = 0x0049CFB4 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 10) & 65535; } QUEUE_GetCheckInInstant( long long __rdi // r57 ) {// addr = 0x0049CFC6 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *((intOrPtr*)(_v16 + 12)); } QUEUE_GetNumCompletedPkt( long long __rdi // r57 ) {// addr = 0x0049CFD7 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 24) & 65535; } _QUEUE_ResetManager( signed char __esi, // r5 long long __rdi // r57 ) {// addr = 0x0049CFE9 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v24 = _v32 + 116488; if((_v36 & 255) <= 44) { goto __rax; } return; } _QUEUE_ResetQueue( intOrPtr __edx, // r3 intOrPtr __esi, // r5 long long __rcx, // r55 signed long long __rdx, // r56 long long __rdi // r57 ) {// addr = 0x0049DCC4 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed long long _t55; // _t55 signed long long _t56; // _t56 signed long long _t57; // _t57 signed long long _t58; // _t58 signed long long _t59; // _t59 signed long long _t61; // _t61 __rdi = __rdi; _t55 = __rdx; __rcx = __rcx; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v40 = __edx; _v48 = __rcx; _v12 = _v36; while(_v40 + _v36 > _v12) { _t56 = _t55 << 5; *((char*)(_v32 + _t56)) = 0; _t57 = _t56 << 5; *((long long*)(_v32 + _t57 + 8)) = 0; _t58 = _t57 << 5; *((char*)(_v32 + _t58 + 2)) = 0; _t59 = _t58 << 5; *((char*)(_v32 + _t59 + 3)) = 0; _t61 = _v32 + (_t59 << 5) + 16; *_t61 = _v48; _t55 = _t61 << 5; *((short*)(_v32 + _t55 + 0x18)) = 0; _v12 = _v12 + 1; } return; } _QUEUE_HCICommandQueueInitialise() {// addr = 0x0049DD77 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(0, _v16); __rcx = _v16 + 116488; __edx = 1; _QUEUE_ResetQueue(1, 0, _v16 + 116488, _v16 + 116488, _v16); *((long long*)(_v16 + 116528)) = _v24; return; } _QUEUE_HCIEventQueueInitialise() {// addr = 0x0049DDCD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(1, _v16); __rcx = _v16 + 116544; __edx = 1; _QUEUE_ResetQueue(1, 1, _v16 + 116544, _v16 + 116544, _v16); *((long long*)(_v16 + 116584)) = _v24; return; } _QUEUE_HCIAutoEventQueueInitialise() {// addr = 0x0049DE23 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(2, _v16); __rcx = _v16 + 116600; __edx = 1; _QUEUE_ResetQueue(1, 2, _v16 + 116600, _v16 + 116600, _v16); *((long long*)(_v16 + 116640)) = _v24; return; } _QUEUE_LMPInQueueInitialise() {// addr = 0x0049DE79 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(3, _v16); __rcx = _v16 + 116656; __edx = 7; _QUEUE_ResetQueue(7, 3, _v16 + 116656, _v16 + 116656, _v16); *((long long*)(_v16 + 116696)) = _v24; return; } _QUEUE_LMPOutQueueInitialise() {// addr = 0x0049DECF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(10, _v16); __rcx = _v16 + 116712; __edx = 8; _QUEUE_ResetQueue(8, 10, _v16 + 116712, _v16 + 116712, _v16); *((long long*)(_v16 + 116752)) = _v24; return; } _QUEUE_L2CAPInQueueInitialise() {// addr = 0x0049DF25 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(18, _v16); __rcx = _v16 + 116768; __edx = 7; _QUEUE_ResetQueue(7, 18, _v16 + 116768, _v16 + 116768, _v16); *((long long*)(_v16 + 116808)) = _v24; return; } _QUEUE_L2CAPOutQueueInitialise() {// addr = 0x0049DF7B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(25, _v16); __rcx = _v16 + 116824; __edx = 9; _QUEUE_ResetQueue(9, 25, _v16 + 116824, _v16 + 116824, _v16); *((long long*)(_v16 + 116864)) = _v24; return; } _QUEUE_SyncInQueueInitialise() {// addr = 0x0049DFD1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(34, _v16); __rcx = _v16 + 116880; __edx = 3; _QUEUE_ResetQueue(3, 34, _v16 + 116880, _v16 + 116880, _v16); *((long long*)(_v16 + 116920)) = _v24; return; } _QUEUE_SyncOutQueueInitialise() {// addr = 0x0049E027 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(37, _v16); __rcx = _v16 + 116936; __edx = 3; _QUEUE_ResetQueue(3, 37, _v16 + 116936, _v16 + 116936, _v16); *((long long*)(_v16 + 116976)) = _v24; return; } _QUEUE_RxEIRQueueInitialise() {// addr = 0x0049E07D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(40, _v16); __rcx = _v16 + 116992; __edx = 1; _QUEUE_ResetQueue(1, 40, _v16 + 116992, _v16 + 116992, _v16); *((long long*)(_v16 + 117032)) = _v24; return; } _QUEUE_LEScanInQueueInitialise() {// addr = 0x0049E0D3 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(41, _v16); __rcx = _v16 + 117048; __edx = 1; _QUEUE_ResetQueue(1, 41, _v16 + 117048, _v16 + 117048, _v16); *((long long*)(_v16 + 117088)) = _v24; return; } _QUEUE_LEACLInQueueInitialise() {// addr = 0x0049E129 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(42, _v16); __rcx = _v16 + 117104; __edx = 2; _QUEUE_ResetQueue(2, 42, _v16 + 117104, _v16 + 117104, _v16); *((long long*)(_v16 + 117144)) = _v24; return; } _QUEUE_LEACLOutQueueInitialise() {// addr = 0x0049E17F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t18; // _t18 _v16 = _t18; _v24 = __rsi; _QUEUE_ResetManager(44, _v16); __rcx = _v16 + 117160; __edx = 2; _QUEUE_ResetQueue(2, 44, _v16 + 117160, _v16 + 117160, _v16); *((long long*)(_v16 + 117200)) = _v24; return; } _QUEUE_AllocateEntity() {// addr = 0x0049E1D5 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 signed int _v18; // _cfa_ffffffee signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed short _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 signed short _v80; // _cfa_ffffffb0 long long _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c intOrPtr _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 intOrPtr _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 _unknown_ __rbp; // r59 _unknown_ _t265; // _t265 signed short _t320; // _t320 intOrPtr _t327; // _t327 signed short _t368; // _t368 signed char* _t387; // _t387 signed long long _t392; // _t392 signed long long _t416; // _t416 signed int _t417; // _t417 signed int _t432; // _t432 signed int _t463; // _t463 _v96 = __rdi; _v104 = _t327; _v100 = _t368; _v108 = _t320; _v72 = *(_v96 + 16); _t387 = _v72; _v11 = *_t387 & 255; _t265 = (_v100 & 65535) + 3; _t266 = _t265 >= 0 ? &(_t387[3]) : _t265; _t267 = (_t265 >= 0 ? &(_t387[3]) : _t265) >> 2; _t268 = (_t265 >= 0 ? &(_t387[3]) : _t265) >> 2 << 2; _v20 = (_t265 >= 0 ? &(_t387[3]) : _t265) >> 2 << 2; _v80 = 0; if(_v11 != 0) { _v40 = _v72; _v32 = *((intOrPtr*)(_v40 + 24)); _v10 = *(_v40 + 1) & 255; _t392 = _v40; _v12 = (( *(_t392 + 15) & 0xff) + 1) % (_v10 & 255); _v9 = _v12 & 255; while(1) { _t392 = (_t392 << 6) + _v32; if( *_t392 == 0) { break; } _v12 = ((_v12 & 255) + 1) % (_v10 & 255); _t282 = _v12 & 255; if((_v12 & 255) != _v9) { continue; } L21: if(_v80 != 0) { *_v80 = 1; *((char*)(_v80 + 5)) = 1; *(_v80 + 6) = 0; *(_v80 + 40) = 0; *(_v80 + 48) = 0; *(_v80 + 24) = _v100 & 65535; *(_v80 + 8) = 0; *(_v80 + 9) = 0; *(_v80 + 10) = _v108 & 65535; *((intOrPtr*)(_v80 + 28)) = _v104; *(_v80 + 12) = 0; *(_v40 + 14) = _v40 + 1; r8d = *(_v40 + 32); r9 = *((intOrPtr*)(_v80 + 16)); r10 = _v80; _v144 = r8d; _v152 = *(_v40 + 14) & 0xff; _v160 = *(_v40 + 15) & 0xff; _v168 = *((intOrPtr*)(_v40 + 16)); _v176 = _v40; *__rsp = _v100 & 65535; r8 = r10; _t282 = DebugPrint(0, _v96, _v40, _t478, __rdi, __rsi); } L23: return; } _v80 = (_t392 << 6) + _v32; _t416 = _v40; _t417 = _v40; _t282 = _t417; _t478 = *((intOrPtr*)(_t416 + 16)) + _t417; *((long long*)(_v80 + 16)) = *((intOrPtr*)(_t416 + 16)) + _t417; *(_v40 + 15) = _v12 & 255; goto L21; } _v64 = _v72; if(( *(_v64 + 9) & 255) == ( *(_v64 + 8) & 255)) { goto L23; } _v56 = *((intOrPtr*)(_v64 + 24)); _v18 = *(_v64 + 4) & 65535; _v16 = *(_v64 + 6) & 65535; _v14 = *(_v64 + 2) & 65535; _v48 = (_v64 << 6) + _v56; if((_v18 & 65535) > _v16 || (_v18 & 65535) == _v16) { if((_v18 & 65535) + (_v20 & 65535) >= (_v14 & 65535)) { if((_v16 & 65535) <= _v20) { if((_v18 & 65535) == _v16 && (_v20 & 65535) < _v14) { _v80 = _v48; _t432 = _v64; _t478 = *((intOrPtr*)(_t432 + 16)); *((long long*)(_v80 + 16)) = *((intOrPtr*)(_t432 + 16)); *(_v64 + 6) = 0; *(_v64 + 4) = _v20 & 65535; } } else { _v80 = _v48; *((long long*)(_v80 + 16)) = *((intOrPtr*)(_v64 + 16)); *(_v64 + 4) = _v20 & 65535; } } else { _v80 = _v48; *((long long*)(_v80 + 16)) = *((intOrPtr*)(_v64 + 16)) + _v64; *(_v64 + 4) = (_v18 & 65535) + (_v20 & 65535); } goto L15; } else { if((_v18 & 65535) < _v16 && (_v18 & 65535) + (_v20 & 65535) < (_v16 & 65535)) { _v80 = _v48; _t463 = _v64; _t478 = *((intOrPtr*)(_t463 + 16)) + _t463; *((long long*)(_v80 + 16)) = *((intOrPtr*)(_t463 + 16)) + _t463; *(_v64 + 4) = (_v18 & 65535) + (_v20 & 65535); } L15: if(_v80 != 0) { *_v80 = 1; *((char*)(_v80 + 5)) = 1; *(_v80 + 6) = 0; *(_v80 + 40) = 0; *(_v80 + 48) = 0; *(_v80 + 24) = _v100 & 65535; *(_v80 + 26) = _v20 & 65535; *(_v80 + 8) = 0; *(_v80 + 9) = 0; *(_v80 + 10) = _v108 & 65535; *((intOrPtr*)(_v80 + 28)) = _v104; *(_v80 + 12) = 0; *(_v64 + 9) = _v64 + 1; *(_v64 + 11) = _v64 + 1; *(_v64 + 11) = ( *(_v64 + 11) & 0xff) / ( *(_v64 + 8) & 255) & 255; r9d = *((intOrPtr*)(_v64 + 32)); r8d = *(_v64 + 9) & 0xff; r11 = *((intOrPtr*)(_v80 + 16)); r10 = _v80; _v136 = r9d; _v144 = r8d; _v152 = *(_v64 + 11) & 0xff; _v160 = *(_v64 + 4) & 0xffff; _v168 = *((intOrPtr*)(_v64 + 16)); _v176 = _v64; *__rsp = _v100 & 65535; r9 = r11; r8 = r10; DebugPrint(0, _v96, _v64, _t478, __rdi, __rsi); } goto L23; } } _QUEUE_DeallocateEntity() {// addr = 0x0049E6F2 signed int _v9; // _cfa_fffffff7 signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed short _t141; // _t141 _unknown_ _t265; // _t265 long long _t268; // _t268 _v48 = __rdi; _v56 = _t268; _v40 = *(_v48 + 16); _v9 = *_v40 & 255; if(_v9 != 0) { _v24 = _v40; if(( *(_v56 + 5) & 255) == 0) { if( *((intOrPtr*)(_v56 + 48)) == 0) { *_v56 = 0; L12: *(_v24 + 14) = _v24 - 1; *((intOrPtr*)(_v24 + 32)) = _v24 + 1; r8d = *((intOrPtr*)(_v24 + 32)); r9 = *((intOrPtr*)(_v56 + 16)); r10 = _v56; _v64 = r8d; _v72 = *(_v24 + 14) & 0xff; _v80 = *(_v24 + 15) & 0xff; _v88 = *((intOrPtr*)(_v24 + 16)); _v96 = _v24; *__rsp = *(_v56 + 24) & 0xffff; r8 = r10; DebugPrint(0, _v48, _v24, _t265, __rdi, _t268); return 1; } return 0; } *_v56 = 0; goto L12; } _v32 = _v40; _t141 = *(_v56 + 5) & 255; if(_t141 == 0) { if( *((intOrPtr*)(_v56 + 48)) == 0) { *_v56 = 0; _t261 = *((intOrPtr*)(_v56 + 16)) - *((intOrPtr*)(_v32 + 16)); *(_v32 + 6) = ((_t141 & 65535) + ( *(_v56 + 26) & 0xffff)) % ( *(_v32 + 2) & 0xffff); *(_v32 + 10) = _v32 + 1; *(_v32 + 10) = ( *(_v32 + 10) & 0xff) / ( *(_v32 + 8) & 255) & 255; L6: *(_v32 + 9) = _v32 - 1; *((intOrPtr*)(_v32 + 32)) = _v32 + 1; _v88 = *((intOrPtr*)(_v32 + 32)); _v96 = *(_v32 + 9) & 0xff; *__rsp = _v32; r9d = *(_v56 + 24) & 0xffff; r8 = _v56; DebugPrint(0, _v48, _t261, _v32, __rdi, _v56); return 1; } return 0; } *_v56 = 0; *(_v32 + 4) = ( *(_v32 + 4) & 65535) - ( *(_v56 + 26) & 65535); *(_v32 + 11) = _v32 - 1; *(_v32 + 11) = ( *(_v32 + 11) & 0xff) / ( *(_v32 + 8) & 255) & 255; goto L6; } _QUEUE_TouchLastEntity( long long __rdi // r57 ) {// addr = 0x0049E9AC long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = 0; if(_v32 == 0) { } else { _v16 = *((intOrPtr*)(_v32 + 8)); if(_v16 == 0) { } else { while( *((intOrPtr*)(_v16 + 40)) != 0) { _v16 = *((intOrPtr*)(_v16 + 40)); } } } return; } QUEUE_GetAutoFlushMode( long long __rdi // r57 ) {// addr = 0x0049E9F7 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 3) & 255; } QUEUE_SetAutoFlushMode( _unknown_ __esi, // r5 long long __rdi // r57 ) {// addr = 0x0049EA09 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __al; *((char*)(_v16 + 3)) = __dl; return; } QUEUE_GetAutoFlushable( long long __rdi // r57 ) {// addr = 0x0049EA23 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 4) & 255; } QUEUE_SetAutoFlushable( _unknown_ __esi, // r5 long long __rdi // r57 ) {// addr = 0x0049EA35 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __al; *((char*)(_v16 + 4)) = __dl; return; } QUEUE_GetFlushContinuing( long long __rdi // r57 ) {// addr = 0x0049EA4F signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rdi = __rdi; _v48 = __rdi; _v32 = *(_v48 + 16); _v9 = *_v32 & 255; if(_v9 != 0) { _v24 = _v32; return (_v24[9]) & 255; } return 0; } QUEUE_SetFlushContinuing( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x0049EA8C signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v48 = __rdi; _v52 = __esi; _v32 = *(_v48 + 16); _v9 = *_v32 & 255; if(_v9 != 0) { _v24 = _v32; (_v24[9]) = __dl; return; } return; } QUEUE_GetQueueSpinLock( long long __rdi // r57 ) {// addr = 0x0049EACA char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 __rdi = __rdi; _v64 = __rdi; _v48 = 0; if(_v64 != 0) { _v40 = *((intOrPtr*)(_v64 + 16)); _v9 = __al; if(_v9 != 0) { _v24 = _v40; _v48 = *((intOrPtr*)(_v24 + 40)); } else { _v32 = _v40; _v48 = *((intOrPtr*)(_v32 + 40)); } } return; } QUEUE_GetPktSeq( long long __rdi // r57 ) {// addr = 0x0049EB2D long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return *(_v16 + 2) & 255; } QUEUE_IncreasePktSeq( long long __rdi // r57 ) {// addr = 0x0049EB3F long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *(_v16 + 2) = __dl; if(( *(_v16 + 2) & 255) < 0) { *(_v16 + 2) = 0; } return *(_v16 + 2) & 255; } _QUEUE_Kick( long long __rdi // r57 ) {// addr = 0x0049EB77 signed int _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v64 = __rdi; if(_v64 != 0) { _v48 = *(_v64 + 16); _v9 = *_v48 & 255; if(_v9 != 0) { _v32 = _v48; _v56 = (_v32[0x30]); } else { _v40 = _v48; _v56 = (_v40[0x30]); } _v24 = _v56 - 72952; SetPollMode(); return; } return; } _QUEUE_EnqueueKick( long long __rdi // r57 ) {// addr = 0x0049EBF4 signed int _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 signed char* _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 _v64 = __rdi; if(_v64 != 0) { _v48 = *(_v64 + 16); _v9 = *_v48 & 255; if(_v9 != 0) { _v32 = _v48; _v56 = (_v32[0x30]); } else { _v40 = _v48; _v56 = (_v40[0x30]); } _v24 = _v56 - 72952; SetPollMode(); return; } return; } Quque_DumpBuffer() {// addr = 0x0049EC74 long long _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 intOrPtr _t13; // _t13 long long _t17; // _t17 long long _t19; // _t19 long long _t21; // _t21 _v28 = _t13; _v40 = _t21; _v48 = _t19; _v56 = _t17; _v16 = _v56; *__rsp = _v48; r9 = _v40; r8d = _v28; DebugPrint(0, _v16, _v16, _v48, __rdi, _v40); return; } QUEUE_ENTITY_TRACE() {// addr = 0x0049ECCA long long _v16; // _cfa_fffffff0 signed int* _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 char _t81; // _t81 signed int* _t118; // _t118 _v32 = _t118; _v36 = _t81; _v16 = "[QM]"; r9d = (_v32[2]) & 0xffff; r8d = (_v32[2]) & 0xff; r11d = (_v32[1]) & 0xff; r10d = *_v32; _v56 = r9d; _v64 = r8d; _v72 = (_v32[2]) & 0xff; _v80 = (_v32[1]) & 0xffff; *__rsp = (_v32[1]) & 0xff; r9d = r11d; r8d = r10d; DebugPrint(0, _v32, _v32, _v32, _v32, __rsi); r9d = (_v32[6]) & 0xffff; r8 = (_v32[4]); _v72 = (_v32[8]); _v80 = (_v32[7]); *__rsp = (_v32[6]) & 0xffff; DebugPrint(0, _v32, _v32, _v32, _v32, __rsi); r8 = (_v32[0xc]); DebugPrint(0, _v32, _v32[0xa], _v32[0xa], _v32, __rsi); if( *_v32 == 0 || (_v32[4]) == 0) { return; } else { r8d = Quque_DumpBuffer; Bth_Dbg_DumpBuffer(_v16, _v16, _v32[4], __rsi); return; } } QUEUE_TRACE() {// addr = 0x0049EE3F signed int _v9; // _cfa_fffffff7 signed char* _v24; // _cfa_ffffffe8 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc signed char _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 char _t80; // _t80 long long _t109; // _t109 _v64 = _t109; _v68 = _t80; if(_v64 != 0) { _v40 = *(_v64 + 16); _v9 = *_v40 & 255; if(_v9 != 0) { _v24 = _v40; r9 = (_v24[0x10]); r8 = _v24; _v88 = (_v24[0x20]); _v96 = (_v24[0xe]) & 0xff; *__rsp = (_v24[0xf]) & 0xff; DebugPrint(0, _v64, __rcx, __rdx, _v64, __rsi); _v48 = *((intOrPtr*)(_v64 + 8)); while(_v48 != 0) { QUEUE_ENTITY_TRACE(); _v48 = *((intOrPtr*)(_v48 + 40)); } return; } _v32 = _v40; r9 = (_v32[0x10]); r8 = _v32; _v80 = (_v32[0x20]); _v88 = (_v32[9]) & 0xff; _v96 = (_v32[0xb]) & 0xff; *__rsp = (_v32[4]) & 0xffff; DebugPrint(0, _v64, __rcx, __rdx, _t109, __rsi); return; } return; } QUEUE_ENTIRYMASS_TRACE( _unknown_ __rax // r53 ) {// addr = 0x0049EF89 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc intOrPtr _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 char _t186; // _t186 signed long long _t209; // _t209 signed long long _t212; // _t212 _unknown_ _t244; // _t244 long long _t247; // _t247 _unknown_ _t260; // _t260 _v64 = _t247; _v68 = _t186; _v48 = _v64 + 96392; _v40 = _v64 + 116488; _t209 = _v48 + 6272; _v32 = _t209; _v9 = 64; DebugPrint(0, _t209, _t244, __rdx, _t209, _t260); _v10 = 0; while((_v10 & 255) < _v9) { DebugPrint(0, _t209, _t244, __rdx, _t209, _t260); _t209 = (_t209 << 6) + _v32; QUEUE_ENTITY_TRACE(); _v10 = _v10 + 1; } _t212 = _v48 + 10368; _v32 = _t212; _v9 = 8; DebugPrint(0, _t212, _t244, __rdx, _t212, _t260); _v10 = 0; while((_v10 & 255) < _v9) { DebugPrint(0, _t212, _t244, __rdx, _t212, _t260); _t212 = (_t212 << 6) + _v32; QUEUE_ENTITY_TRACE(); _v10 = _v10 + 1; } _v24 = _v40 + 280; DebugPrint(0, _v40 + 280, _t244, __rdx, _v40 + 280, _t260); r9d = *(_v24 + 4); r8d = *(_v24 + 1) & 0xff; _v88 = *(_v24 + 10) & 0xff; _v96 = *(_v24 + 9) & 0xff; *__rsp = *(_v24 + 8) & 0xff; DebugPrint(0, _v24, _t244, __rdx, _v24, _t260); r8 = *((intOrPtr*)(_v24 + 40)); r9d = *(_v24 + 15) & 0xff; r10d = *(_v24 + 14) & 0xff; _v80 = r8; _v88 = *(_v24 + 32); _v96 = *(_v24 + 24); *__rsp = *(_v24 + 16); r8d = r10d; DebugPrint(0, _v24, *(_v24 + 16), __rdx, _v24, *(_v24 + 24)); _v24 = _v40 + 336; DebugPrint(0, _v40 + 336, *(_v24 + 16), __rdx, _v40 + 336, *(_v24 + 24)); r9d = *(_v24 + 4); r8d = *(_v24 + 1) & 0xff; _v88 = *(_v24 + 10) & 0xff; _v96 = *(_v24 + 9) & 0xff; *__rsp = *(_v24 + 8) & 0xff; DebugPrint(0, _v24, *(_v24 + 16), __rdx, _v24, *(_v24 + 24)); r8 = *((intOrPtr*)(_v24 + 40)); r9d = *(_v24 + 15) & 0xff; r10d = *(_v24 + 14) & 0xff; _v80 = r8; _v88 = *(_v24 + 32); _v96 = *(_v24 + 24); *__rsp = *(_v24 + 16); r8d = r10d; DebugPrint(0, _v24, *(_v24 + 16), __rdx, _v24, *(_v24 + 24)); return; } copy_block16( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x0049F2B8 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24; *((intOrPtr*)(_v16 + 8)) = *((intOrPtr*)(_v24 + 8)); *((intOrPtr*)(_v16 + 16)) = *((intOrPtr*)(_v24 + 16)); *((intOrPtr*)(_v16 + 24)) = *((intOrPtr*)(_v24 + 24)); return; } copy_block( char __edx, // r3 signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x0049F30D signed char* _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 signed int* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v44 = __edx; _v24 = _v32; _v16 = _v40; while(1) { _v44 = _v44 - 1; if(_v44 == 0) { break; } *_v24 = *_v16 & 255; _v24 = &(_v24[0]); _v16 = &(_v16[1]); } return; } xor_block( signed int* __rdi, // r57 signed int* __rsi // r58 ) {// addr = 0x0049F358 signed int* _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v16 ^ *_v24; (_v16[2]) = (_v24[2]) ^ (_v16[2]); (_v16[4]) = (_v24[4]) ^ (_v16[4]); (_v16[6]) = (_v24[6]) ^ (_v16[6]); return; } copy_and_key( signed int* __rdx, // r56 signed long long* __rdi, // r57 signed int* __rsi // r58 ) {// addr = 0x0049F3EA signed long long* _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 signed int* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v16 = *_v24 ^ *_v32; (_v16[1]) = (_v32[2]) ^ (_v24[2]); (_v16[2]) = (_v32[4]) ^ (_v24[4]); (_v16[3]) = (_v32[6]) ^ (_v24[6]); return; } add_round_key() {// addr = 0x0049F480 _unknown_ _v16; // _cfa_fffffff0 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 long long _t7; // _t7 _v16 = _t5; _v24 = _t7; xor_block(_v16, _v24); return; } shift_sub_rows( long long __rdi // r57 ) {// addr = 0x0049F4A5 signed int _v9; // _cfa_fffffff7 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; *_v32 = __dl; *(_v32 + 4) = *(_v32 + 4 + &s_box) & 255; *(_v32 + 8) = *(_v32 + 8 + &s_box) & 255; *(_v32 + 12) = *(_v32 + 12 + &s_box) & 255; _v9 = *(_v32 + 1) & 255; *(_v32 + 1) = *(_v32 + 5 + &s_box) & 255; *(_v32 + 5) = *(_v32 + 9 + &s_box) & 255; *(_v32 + 9) = *(_v32 + 13 + &s_box) & 255; *(_v32 + 13) = *(_v32 + &s_box) & 255; _v9 = *(_v32 + 2) & 255; *(_v32 + 2) = *(_v32 + 10 + &s_box) & 255; *(_v32 + 10) = *(_v32 + &s_box) & 255; _v9 = *(_v32 + 6) & 255; *(_v32 + 6) = *(_v32 + 14 + &s_box) & 255; *(_v32 + 14) = *(_v32 + &s_box) & 255; _v9 = *(_v32 + 15) & 255; *(_v32 + 15) = *(_v32 + 11 + &s_box) & 255; *(_v32 + 11) = *(_v32 + 7 + &s_box) & 255; *(_v32 + 7) = *(_v32 + 3 + &s_box) & 255; *(_v32 + 3) = *(_v32 + &s_box) & 255; return; } inv_shift_sub_rows( long long __rdi // r57 ) {// addr = 0x0049F6BB signed int _v9; // _cfa_fffffff7 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; *_v32 = __dl; *(_v32 + 4) = *(_v32 + 4 + &inv_s_box) & 255; *(_v32 + 8) = *(_v32 + 8 + &inv_s_box) & 255; *(_v32 + 12) = *(_v32 + 12 + &inv_s_box) & 255; _v9 = *(_v32 + 13) & 255; *(_v32 + 13) = *(_v32 + 9 + &inv_s_box) & 255; *(_v32 + 9) = *(_v32 + 5 + &inv_s_box) & 255; *(_v32 + 5) = *(_v32 + 1 + &inv_s_box) & 255; *(_v32 + 1) = *(_v32 + &inv_s_box) & 255; _v9 = *(_v32 + 2) & 255; *(_v32 + 2) = *(_v32 + 10 + &inv_s_box) & 255; *(_v32 + 10) = *(_v32 + &inv_s_box) & 255; _v9 = *(_v32 + 6) & 255; *(_v32 + 6) = *(_v32 + 14 + &inv_s_box) & 255; *(_v32 + 14) = *(_v32 + &inv_s_box) & 255; _v9 = *(_v32 + 3) & 255; *(_v32 + 3) = *(_v32 + 7 + &inv_s_box) & 255; *(_v32 + 7) = *(_v32 + 11 + &inv_s_box) & 255; *(_v32 + 11) = *(_v32 + 15 + &inv_s_box) & 255; *(_v32 + 15) = *(_v32 + &inv_s_box) & 255; return; } mix_sub_columns( _unknown_ __eflags // r9 ) {// addr = 0x0049F8D1 long long _v16; // _cfa_fffffff0 _unknown_ _v25; // _cfa_ffffffe7 _unknown_ _v26; // _cfa_ffffffe6 _unknown_ _v27; // _cfa_ffffffe5 _unknown_ _v28; // _cfa_ffffffe4 _unknown_ _v29; // _cfa_ffffffe3 _unknown_ _v30; // _cfa_ffffffe2 _unknown_ _v31; // _cfa_ffffffe1 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ _v33; // _cfa_ffffffdf _unknown_ _v34; // _cfa_ffffffde _unknown_ _v35; // _cfa_ffffffdd _unknown_ _v36; // _cfa_ffffffdc _unknown_ _v37; // _cfa_ffffffdb _unknown_ _v38; // _cfa_ffffffda _unknown_ _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t471; // _t471 signed int* _t506; // _t506 __eflags = __eflags; _v48 = _t506; _v16 = *fs:0x28]; _t471 = &_v40; __rsi = _v48; copy_block16(_t471, _v48); *_v48 = *(_t471 + &gfm2_s_box) & 255 ^ *(_t471 + &gfm3_s_box) & 255 ^ *(_t471 + &s_box) & 255 ^ *(_t471 + &s_box) & 255; (_v48[0]) = *(_v48 + &s_box) & 255 ^ *(_t473 + &s_box) & 255 ^ *(_t473 + &gfm2_s_box) & 255 ^ *(_t473 + &gfm3_s_box) & 255; (_v48[0]) = *(_v48 + &gfm3_s_box) & 255 ^ *(_t474 + &s_box) & 255 ^ *(_t474 + &s_box) & 255 ^ *(_t474 + &gfm2_s_box) & 255; (_v48[0]) = *(_v48 + &gfm2_s_box) & 255 ^ *(_t475 + &gfm3_s_box) & 255 ^ *(_t475 + &s_box) & 255 ^ *(_t475 + &s_box) & 255; (_v48[1]) = *(_v48 + &s_box) & 255 ^ *(_t476 + &gfm2_s_box) & 255 ^ *(_t476 + &gfm3_s_box) & 255 ^ *(_t476 + &s_box) & 255; (_v48[1]) = *(_v48 + &s_box) & 255 ^ *(_t477 + &s_box) & 255 ^ *(_t477 + &gfm2_s_box) & 255 ^ *(_t477 + &gfm3_s_box) & 255; (_v48[1]) = *(_v48 + &gfm3_s_box) & 255 ^ *(_t478 + &s_box) & 255 ^ *(_t478 + &s_box) & 255 ^ *(_t478 + &gfm2_s_box) & 255; (_v48[1]) = *(_v48 + &gfm2_s_box) & 255 ^ *(_t479 + &gfm3_s_box) & 255 ^ *(_t479 + &s_box) & 255 ^ *(_t479 + &s_box) & 255; (_v48[2]) = *(_v48 + &s_box) & 255 ^ *(_t480 + &gfm2_s_box) & 255 ^ *(_t480 + &gfm3_s_box) & 255 ^ *(_t480 + &s_box) & 255; (_v48[2]) = *(_v48 + &s_box) & 255 ^ *(_t481 + &s_box) & 255 ^ *(_t481 + &gfm2_s_box) & 255 ^ *(_t481 + &gfm3_s_box) & 255; (_v48[2]) = *(_v48 + &gfm3_s_box) & 255 ^ *(_t482 + &s_box) & 255 ^ *(_t482 + &s_box) & 255 ^ *(_t482 + &gfm2_s_box) & 255; (_v48[2]) = *(_v48 + &gfm2_s_box) & 255 ^ *(_t483 + &gfm3_s_box) & 255 ^ *(_t483 + &s_box) & 255 ^ *(_t483 + &s_box) & 255; (_v48[3]) = *(_v48 + &s_box) & 255 ^ *(_t484 + &gfm2_s_box) & 255 ^ *(_t484 + &gfm3_s_box) & 255 ^ *(_t484 + &s_box) & 255; (_v48[3]) = *(_v48 + &s_box) & 255 ^ *(_t485 + &s_box) & 255 ^ *(_t485 + &gfm2_s_box) & 255 ^ *(_t485 + &gfm3_s_box) & 255; (_v48[3]) = *(_v48 + &gfm3_s_box) & 255 ^ *(_t486 + &s_box) & 255 ^ *(_t486 + &s_box) & 255 ^ *(_t486 + &gfm2_s_box) & 255; (_v48[3]) = *(_v48 + &gfm2_s_box) & 255 ^ *(_t487 + &gfm3_s_box) & 255 ^ *(_t487 + &s_box) & 255 ^ *(_t487 + &s_box) & 255; if(__eflags != 0) { __stack_chk_fail(); return; } return; } inv_mix_sub_columns( _unknown_ __eflags // r9 ) {// addr = 0x0049FE11 long long _v16; // _cfa_fffffff0 _unknown_ _v25; // _cfa_ffffffe7 _unknown_ _v26; // _cfa_ffffffe6 _unknown_ _v27; // _cfa_ffffffe5 _unknown_ _v28; // _cfa_ffffffe4 _unknown_ _v29; // _cfa_ffffffe3 _unknown_ _v30; // _cfa_ffffffe2 _unknown_ _v31; // _cfa_ffffffe1 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ _v33; // _cfa_ffffffdf _unknown_ _v34; // _cfa_ffffffde _unknown_ _v35; // _cfa_ffffffdd _unknown_ _v36; // _cfa_ffffffdc _unknown_ _v37; // _cfa_ffffffdb _unknown_ _v38; // _cfa_ffffffda _unknown_ _v39; // _cfa_ffffffd9 char _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t535; // _t535 signed int* _t570; // _t570 __eflags = __eflags; _v48 = _t570; _v16 = *fs:0x28]; _t535 = &_v40; __rsi = _v48; copy_block16(_t535, _v48); *_v48 = *(_t535 + &inv_s_box) & 255; (_v48[1]) = *(_v48 + &inv_s_box) & 255; (_v48[2]) = *(_v48 + &inv_s_box) & 255; (_v48[3]) = *(_v48 + &inv_s_box) & 255; (_v48[1]) = *(_v48 + &inv_s_box) & 255; (_v48[2]) = *(_v48 + &inv_s_box) & 255; (_v48[3]) = *(_v48 + &inv_s_box) & 255; (_v48[0]) = *(_v48 + &inv_s_box) & 255; (_v48[2]) = *(_v48 + &inv_s_box) & 255; (_v48[3]) = *(_v48 + &inv_s_box) & 255; (_v48[0]) = *(_v48 + &inv_s_box) & 255; (_v48[1]) = *(_v48 + &inv_s_box) & 255; (_v48[3]) = *(_v48 + &inv_s_box) & 255; (_v48[0]) = *(_v48 + &inv_s_box) & 255; (_v48[1]) = *(_v48 + &inv_s_box) & 255; (_v48[2]) = *(_v48 + &inv_s_box) & 255; if(__eflags != 0) { __stack_chk_fail(); return; } return; } aes_set_key( signed char __esi, // r5 signed long long __rdx // r56 ) {// addr = 0x004A0411 signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed char _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t124; // _t124 signed long long _t240; // _t240 signed long long _t241; // _t241 signed int _t242; // _t242 _unknown_ _t243; // _t243 _unknown_ _t244; // _t244 long long _t259; // _t259 _v32 = _t259; _v48 = __rdx; _v36 = __esi; _t124 = _v36 & 255; if(_t124 == 32) { _v36 = 32; L12: _t240 = _v48; __rsi = _v32; copy_block(_v36 & 255, _t240, _v32); _v10 = (_v36 & 255) + 28 << 2; _t241 = _v48; *((char*)(_t241 + 240)) = _t240 - 1; _v16 = _v36 & 255; _v15 = 1; while((_v16 & 255) < _v10) { _v14 = *(_v48 + _t241) & 255; _v13 = *(_v48 + _t241) & 255; _v12 = *(_v48 + _t241) & 255; _v11 = *(_v48 + _t241) & 255; if(((_v16 & 0xff) / _v36 & 255) != 0) { if(_v36 > 24 && ((_v16 & 0xff) / _v36 & 255) == 16) { _v14 = *(_t241 + &s_box) & 255; _v13 = *(_t241 + &s_box) & 255; _v12 = *(_t241 + &s_box) & 255; _v11 = *(_t241 + &s_box) & 255; } } else { _v9 = _v14 & 255; _v14 = *(_t241 + &s_box) & 255 ^ _v15; _v13 = *(_t241 + &s_box) & 255; _v12 = *(_t241 + &s_box) & 255; _v11 = *(_t241 + &s_box) & 255; _v15 = ((_v15 & 255) >> 7) + ((_v15 & 255) >> 7) + _t229 + 0 + _t241 * 8 ^ (_v15 & 255) + (_v15 & 255); } _v9 = (_v16 & 255) - (_v36 & 255); _t242 = _v16 & 255; *(_v48 + _t242) = *(_v48 + _t241) & 255 ^ _v14; _t243 = _t242 + 1; *(_v48 + _t243) = *(_v48 + _t242) & 255 ^ _v13; _t244 = _t243 + 2; *(_v48 + _t244) = *(_v48 + _t243) & 255 ^ _v12; _t241 = _t244 + 3; *(_v48 + _t241) = *(_v48 + _t244) & 255 ^ _v11; _v16 = _v16 + 4; } return 0; } if(_t124 > 32) { if(_t124 == 128) { L8: _v36 = 16; goto L12; } if(_t124 == 192) { L9: _v36 = 24; goto L12; } L11: *((char*)(_v48 + 240)) = 0; return 4294967295; } if(_t124 == 16) { goto L8; } if(_t124 == 24) { goto L9; } else { goto L11; } } aes_encrypt( _unknown_ __rax // r53 ) {// addr = 0x004A06A7 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t28; // _t28 _unknown_ _t37; // _t37 long long _t49; // _t49 long long _t57; // _t57 long long _t63; // _t63 _v64 = _t57; _v72 = _t63; _v80 = _t49; _v16 = *fs:0x28]; if(( *(_v80 + 240) & 255) == 0) { _t28 = 4294967295; } else { copy_and_key(_v80, &_v40, _v64); _v41 = 1; while(1) { _t37 = ( *(_v80 + 240) & 255) - _v41; if(_t37 <= 0) { break; } mix_sub_columns(__eflags); add_round_key(); _v41 = _v41 + 1; } shift_sub_rows( ?_? ( &_v40)); copy_and_key(_v80 + &_v40, _v72, &_v40); _t28 = 0; } if(_t37 != 0) { __stack_chk_fail(); return _t28; } return _t28; } aes_decrypt() {// addr = 0x004A078A long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed int _v41; // _cfa_ffffffd7 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 _unknown_ _t29; // _t29 signed int _t39; // _t39 long long _t50; // _t50 long long _t58; // _t58 long long _t64; // _t64 _v64 = _t58; _v72 = _t64; _v80 = _t50; _v16 = *fs:0x28]; if(( *(_v80 + 240) & 255) == 0) { _t29 = 4294967295; } else { copy_and_key(_v80 + _v80, &_v40, _v64); inv_shift_sub_rows( &_v40); _v41 = *(_v80 + 240) & 255; while(1) { _v41 = _v41 - 1; _t39 = _v41; if(_t39 == 0) { break; } add_round_key(); inv_mix_sub_columns(__eflags); } copy_and_key(_v80, _v72, &_v40); _t29 = 0; } if(_t39 != 0) { __stack_chk_fail(); return _t29; } return _t29; } update_encrypt_key_128( signed char* __rdi, // r57 signed long long __rsi // r58 ) {// addr = 0x004A0877 signed char _v9; // _cfa_fffffff7 signed char* _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed long long _t140; // _t140 signed long long _t141; // _t141 signed int* _t142; // _t142 signed int* _t144; // _t144 signed int* _t146; // _t146 signed char* _t150; // _t150 signed char* _t151; // _t151 signed char* _t153; // _t153 signed char* _t155; // _t155 signed char* _t157; // _t157 signed char* _t159; // _t159 signed char* _t161; // _t161 signed char* _t163; // _t163 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; *_v32 = *_v32 & 255 ^ *_v40 & 255 ^ ( &(_v32[0xd])[(char*)( &s_box)]) & 255; (_v32[1]) = ( &(_v32[0xe])[(char*)( &s_box)]) & 255 ^ (_v32[1]) & 255; (_v32[2]) = ( &(_v32[0xf])[(char*)( &s_box)]) & 255 ^ (_v32[2]) & 255; _t150 = &(_v32[3]); *_t150 = ( &(_v32[0xc])[(char*)( &s_box)]) & 255 ^ (_v32[3]) & 255; _t140 = _v40; _v9 & 255 = (( *_t140 & 255) >> 7) + (( *_t140 & 255) >> 7) + _t100 + 0 + _t140 * 8 ^ ( *_v40 & 0xff) + ( *_v40 & 0xff); _t141 = _v40; *_t141 = _t84; _v9 = 4; while(_v9 <= 15) { _t142 = &(_v32[_t141]); _t151 = &(_t150[_v32]); _t153 = _t151 - 4 + _v32; *_t142 = *_t153 & 255 ^ *_t151 & 255; _t144 = &(_t142[0]) + _v32; _t155 = &( &(_t153[1])[_v32]); _t157 = _t155 - 3 + _v32; *_t144 = *_t157 & 255 ^ *_t155 & 255; _t146 = &(_t144[0]) + _v32; _t159 = &( &(_t157[2])[_v32]); _t161 = _t159 - 2 + _v32; *_t146 = *_t161 & 255 ^ *_t159 & 255; _t84 = _v9 & 255; _t141 = &(_t146[0]) + _v32; _t163 = &( &(_t161[3])[_v32]); _t150 = _t163 - 1 + _v32; *_t141 = *_t150 & 255 ^ *_t163 & 255; _v9 = _v9 + 4; } return _t84; } aes_encrypt_128( long long __rcx // r55 ) {// addr = 0x004A0A38 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 char _v42; // _cfa_ffffffd6 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 _unknown_ _t34; // _t34 long long _t50; // _t50 long long _t57; // _t57 long long _t66; // _t66 _v64 = _t57; _v72 = _t66; _v80 = _t50; _v88 = __rcx; _v16 = *fs:0x28]; _v42 = 1; if(_v88 != _v80) { copy_block16(_v88, _v80); } copy_and_key(_v88, &_v40, _v64); _v41 = 1; while(1) { _t34 = _v41 - 9; if(_t34 > 0) { break; } mix_sub_columns(__eflags); update_encrypt_key_128(_v88, &_v42); add_round_key(); _v41 = _v41 + 1; } shift_sub_rows( &_v40); update_encrypt_key_128(_v88, &_v42); copy_and_key(_v88, _v72, &_v40); if(_t34 != 0) { __stack_chk_fail(); return; } return; } update_decrypt_key_128( signed char* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x004A0B25 char _v9; // _cfa_fffffff7 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t63; // _t63 signed int _t109; // _t109 signed int* _t115; // _t115 signed int* _t116; // _t116 signed int* _t118; // _t118 signed int* _t120; // _t120 signed char* _t145; // _t145 signed char* _t146; // _t146 signed char* _t148; // _t148 signed char* _t150; // _t150 signed char* _t152; // _t152 signed char* _t154; // _t154 signed char* _t156; // _t156 signed char* _t158; // _t158 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v9 = 12; while(_v9 != 0) { _t116 = _t115 + _v32; _t146 = &(_t145[_v32]); _t148 = _t146 - 4 + _v32; *_t116 = *_t148 & 255 ^ *_t146 & 255; _t118 = &(_t116[0]) + _v32; _t150 = &( &(_t148[1])[_v32]); _t152 = _t150 - 3 + _v32; *_t118 = *_t152 & 255 ^ *_t150 & 255; _t120 = &(_t118[0]) + _v32; _t154 = &( &(_t152[2])[_v32]); _t156 = _t154 - 2 + _v32; *_t120 = *_t156 & 255 ^ *_t154 & 255; _t115 = &(_t120[0]) + _v32; _t158 = &( &(_t156[3])[_v32]); _t145 = _t158 - 1 + _v32; *_t115 = *_t145 & 255 ^ *_t158 & 255; _v9 = _v9 - 4; } _t109 = ( *_v40 & 255) >> 1; if(( *_v40 & 1) == 0) { _t63 = 0; } else { _t63 = 4294967181; } *_v40 = _t63 ^ _t109; *_v32 = *_v32 & 255 ^ *_v40 & 255 ^ ( &(_v32[0xd])[(char*)( &s_box)]) & 255; (_v32[1]) = ( &(_v32[0xe])[(char*)( &s_box)]) & 255 ^ (_v32[1]) & 255; (_v32[2]) = ( &(_v32[0xf])[(char*)( &s_box)]) & 255 ^ (_v32[2]) & 255; (_v32[3]) = ( &(_v32[0xc])[(char*)( &s_box)]) & 255 ^ (_v32[3]) & 255; return; } aes_decrypt_128( long long __rcx // r55 ) {// addr = 0x004A0CE5 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v41; // _cfa_ffffffd7 char _v42; // _cfa_ffffffd6 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 char _t31; // _t31 long long _t47; // _t47 long long _t54; // _t54 long long _t63; // _t63 _v64 = _t54; _v72 = _t63; _v80 = _t47; _v88 = __rcx; _v16 = *fs:0x28]; _v42 = 108; if(_v88 != _v80) { copy_block16(_v88, _v80); } copy_and_key(_v88, &_v40, _v64); inv_shift_sub_rows( &_v40); _v41 = 10; while(1) { _v41 = _v41 - 1; _t31 = _v41; if(_t31 == 0) { break; } update_decrypt_key_128(_v88, &_v42); add_round_key(); inv_mix_sub_columns(__eflags); } update_decrypt_key_128(_v88, &_v42); copy_and_key(_v88, _v72, &_v40); if(_t31 != 0) { __stack_chk_fail(); return; } return; } update_encrypt_key_256( signed char* __rdi, // r57 signed long long __rsi // r58 ) {// addr = 0x004A0DD2 signed char _v9; // _cfa_fffffff7 signed char* _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t156; // _t156 signed long long _t238; // _t238 signed long long _t239; // _t239 signed int* _t240; // _t240 signed int* _t242; // _t242 signed int* _t244; // _t244 signed int* _t265; // _t265 signed int* _t266; // _t266 signed int* _t268; // _t268 signed int* _t270; // _t270 signed char* _t274; // _t274 signed char* _t275; // _t275 signed char* _t277; // _t277 signed char* _t279; // _t279 signed char* _t281; // _t281 signed char* _t283; // _t283 signed char* _t285; // _t285 signed char* _t287; // _t287 signed char* _t292; // _t292 signed char* _t293; // _t293 signed char* _t295; // _t295 signed char* _t297; // _t297 signed char* _t299; // _t299 signed char* _t301; // _t301 signed char* _t303; // _t303 signed char* _t305; // _t305 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; *_v32 = *_v32 & 255 ^ *_v40 & 255 ^ ( &(_v32[0x1d])[(char*)( &s_box)]) & 255; (_v32[1]) = ( &(_v32[0x1e])[(char*)( &s_box)]) & 255 ^ (_v32[1]) & 255; (_v32[2]) = ( &(_v32[0x1f])[(char*)( &s_box)]) & 255 ^ (_v32[2]) & 255; _t274 = &(_v32[3]); *_t274 = ( &(_v32[0x1c])[(char*)( &s_box)]) & 255 ^ (_v32[3]) & 255; _t238 = _v40; _t180 = ( *_t238 & 255) >> 7; _t239 = _v40; *_t239 = (( *_t238 & 255) >> 7) + _t180 + _t180 + 0 + _t238 * 8 ^ ( *_v40 & 0xff) + ( *_v40 & 0xff); _v9 = 4; while(_v9 <= 15) { _t240 = &(_v32[_t239]); _t275 = &(_t274[_v32]); _t277 = _t275 - 4 + _v32; *_t240 = *_t277 & 255 ^ *_t275 & 255; _t242 = &(_t240[0]) + _v32; _t279 = &( &(_t277[1])[_v32]); _t281 = _t279 - 3 + _v32; *_t242 = *_t281 & 255 ^ *_t279 & 255; _t244 = &(_t242[0]) + _v32; _t283 = &( &(_t281[2])[_v32]); _t285 = _t283 - 2 + _v32; *_t244 = *_t285 & 255 ^ *_t283 & 255; _t239 = &(_t244[0]) + _v32; _t287 = &( &(_t285[3])[_v32]); _t274 = _t287 - 1 + _v32; *_t239 = *_t274 & 255 ^ *_t287 & 255; _v9 = _v9 + 4; } (_v32[0x10]) = ( &(_v32[0xc])[(char*)( &s_box)]) & 255 ^ (_v32[0x10]) & 255; (_v32[0x11]) = ( &(_v32[0xd])[(char*)( &s_box)]) & 255 ^ (_v32[0x11]) & 255; (_v32[0x12]) = ( &(_v32[0xe])[(char*)( &s_box)]) & 255 ^ (_v32[0x12]) & 255; _t292 = &(_v32[0x13]); _t265 = &(_v32[0xf]); _t156 = *(_t265 + &s_box) & 255 ^ (_v32[0x13]) & 255; *_t292 = _t156; _v9 = 20; while(_v9 <= 31) { _t266 = _t265 + _v32; _t293 = &(_t292[_v32]); _t295 = _t293 - 4 + _v32; *_t266 = *_t295 & 255 ^ *_t293 & 255; _t268 = &(_t266[0]) + _v32; _t297 = &( &(_t295[1])[_v32]); _t299 = _t297 - 3 + _v32; *_t268 = *_t299 & 255 ^ *_t297 & 255; _t270 = &(_t268[0]) + _v32; _t301 = &( &(_t299[2])[_v32]); _t303 = _t301 - 2 + _v32; *_t270 = *_t303 & 255 ^ *_t301 & 255; _t156 = _v9 & 255; _t265 = &(_t270[0]) + _v32; _t305 = &( &(_t303[3])[_v32]); _t292 = _t305 - 1 + _v32; *_t265 = *_t292 & 255 ^ *_t305 & 255; _v9 = _v9 + 4; } return _t156; } aes_encrypt_256( long long __rcx // r55 ) {// addr = 0x004A1112 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed char _v41; // _cfa_ffffffd7 char _v42; // _cfa_ffffffd6 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 _unknown_ _t43; // _t43 long long _t64; // _t64 long long _t73; // _t73 long long _t84; // _t84 _v64 = _t73; _v72 = _t84; _v80 = _t64; _v88 = __rcx; _v16 = *fs:0x28]; _v42 = 1; if(_v88 != _v80) { copy_block16(_v88, _v80); copy_block16(_v88 + 16, _v80 + 16); } copy_and_key(_v88, &_v40, _v64); _v41 = 1; while(1) { _t43 = _v41 - 13; if(_t43 > 0) { break; } mix_sub_columns(__eflags); __eflags = _v41 & 1; if(__eflags == 0) { update_encrypt_key_256(_v88, &_v42); add_round_key(); } else { add_round_key(); } _v41 = _v41 + 1; } shift_sub_rows( &_v40); update_encrypt_key_256(_v88, &_v42); copy_and_key(_v88, _v72, &_v40); if(_t43 != 0) { __stack_chk_fail(); return; } return; } update_decrypt_key_256( signed char* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x004A123E char _v9; // _cfa_fffffff7 signed char* _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t135; // _t135 signed int _t205; // _t205 signed int* _t212; // _t212 signed int* _t213; // _t213 signed int* _t215; // _t215 signed int* _t217; // _t217 signed int* _t238; // _t238 signed int* _t239; // _t239 signed int* _t241; // _t241 signed int* _t243; // _t243 signed char* _t268; // _t268 signed char* _t269; // _t269 signed char* _t271; // _t271 signed char* _t273; // _t273 signed char* _t275; // _t275 signed char* _t277; // _t277 signed char* _t279; // _t279 signed char* _t281; // _t281 signed char* _t286; // _t286 signed char* _t287; // _t287 signed char* _t289; // _t289 signed char* _t291; // _t291 signed char* _t293; // _t293 signed char* _t295; // _t295 signed char* _t297; // _t297 signed char* _t299; // _t299 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v9 = 28; while(_v9 > 16) { _t213 = _t212 + _v32; _t269 = &(_t268[_v32]); _t271 = _t269 - 4 + _v32; *_t213 = *_t271 & 255 ^ *_t269 & 255; _t215 = &(_t213[0]) + _v32; _t273 = &( &(_t271[1])[_v32]); _t275 = _t273 - 3 + _v32; *_t215 = *_t275 & 255 ^ *_t273 & 255; _t217 = &(_t215[0]) + _v32; _t277 = &( &(_t275[2])[_v32]); _t279 = _t277 - 2 + _v32; *_t217 = *_t279 & 255 ^ *_t277 & 255; _t212 = &(_t217[0]) + _v32; _t281 = &( &(_t279[3])[_v32]); _t268 = _t281 - 1 + _v32; *_t212 = *_t268 & 255 ^ *_t281 & 255; _v9 = _v9 - 4; } (_v32[0x10]) = ( &(_v32[0xc])[(char*)( &s_box)]) & 255 ^ (_v32[0x10]) & 255; (_v32[0x11]) = ( &(_v32[0xd])[(char*)( &s_box)]) & 255 ^ (_v32[0x11]) & 255; (_v32[0x12]) = ( &(_v32[0xe])[(char*)( &s_box)]) & 255 ^ (_v32[0x12]) & 255; _t286 = &(_v32[0x13]); _t238 = &(_v32[0xf]); *_t286 = *(_t238 + &s_box) & 255 ^ (_v32[0x13]) & 255; _v9 = 12; while(_v9 != 0) { _t239 = _t238 + _v32; _t287 = &(_t286[_v32]); _t289 = _t287 - 4 + _v32; *_t239 = *_t289 & 255 ^ *_t287 & 255; _t241 = &(_t239[0]) + _v32; _t291 = &( &(_t289[1])[_v32]); _t293 = _t291 - 3 + _v32; *_t241 = *_t293 & 255 ^ *_t291 & 255; _t243 = &(_t241[0]) + _v32; _t295 = &( &(_t293[2])[_v32]); _t297 = _t295 - 2 + _v32; *_t243 = *_t297 & 255 ^ *_t295 & 255; _t238 = &(_t243[0]) + _v32; _t299 = &( &(_t297[3])[_v32]); _t286 = _t299 - 1 + _v32; *_t238 = *_t286 & 255 ^ *_t299 & 255; _v9 = _v9 - 4; } _t205 = ( *_v40 & 255) >> 1; if(( *_v40 & 1) == 0) { _t135 = 0; } else { _t135 = 4294967181; } *_v40 = _t135 ^ _t205; *_v32 = *_v32 & 255 ^ *_v40 & 255 ^ ( &(_v32[0x1d])[(char*)( &s_box)]) & 255; (_v32[1]) = ( &(_v32[0x1e])[(char*)( &s_box)]) & 255 ^ (_v32[1]) & 255; (_v32[2]) = ( &(_v32[0x1f])[(char*)( &s_box)]) & 255 ^ (_v32[2]) & 255; (_v32[3]) = ( &(_v32[0x1c])[(char*)( &s_box)]) & 255 ^ (_v32[3]) & 255; return; } aes_decrypt_256( long long __rcx // r55 ) {// addr = 0x004A157D long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 signed char _v41; // _cfa_ffffffd7 char _v42; // _cfa_ffffffd6 _unknown_ _v64; // _cfa_ffffffc0 _unknown_ _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed char _t38; // _t38 long long _t58; // _t58 long long _t66; // _t66 long long _t76; // _t76 _v64 = _t66; _v72 = _t76; _v80 = _t58; _v88 = __rcx; _v16 = *fs:0x28]; _v42 = 128; if(_v88 != _v80) { copy_block16(_v88, _v80); copy_block16(_v88 + 16, _v80 + 16); } copy_and_key(_v88, &_v40, _v64); inv_shift_sub_rows( &_v40); _v41 = 14; while(1) { _v41 = _v41 - 1; _t38 = _v41; if(_t38 == 0) { break; } __eflags = _v41 & 1; if(__eflags == 0) { add_round_key(); } else { update_decrypt_key_256(_v88, &_v42); add_round_key(); } inv_mix_sub_columns(__eflags); } copy_and_key(_v88, _v72, &_v40); if(_t38 != 0) { __stack_chk_fail(); return; } return; } BDADDR_Assign( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x004A1698 signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A16FE long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A173D _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } _BTCFG_InquiryScanCancelCB() {// addr = 0x004A176F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v40 = __rcx; _v28 = __al; _BTCFG_ScanEventHandler(); return; } _BTCFG_InquiryScanEnableCB() {// addr = 0x004A179F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v40 = __rcx; _v28 = __al; _BTCFG_ScanEventHandler(); return; } _BTCFG_PageScanCancelCB() {// addr = 0x004A17CF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v40 = __rcx; _v28 = __al; _BTCFG_ScanEventHandler(); return; } _BTCFG_PageScanEnableCB() {// addr = 0x004A17FF long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t7; // _t7 _v16 = _t7; _v24 = __rsi; _v40 = __rcx; _v28 = __al; _BTCFG_ScanEventHandler(); return; } _BTCFG_ScanEventHandler() {// addr = 0x004A182F signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 short _v14; // _cfa_fffffff2 intOrPtr _v20; // _cfa_ffffffec long long _v64; // _cfa_ffffffc0 signed char _v68; // _cfa_ffffffbc long long _v80; // _cfa_ffffffb0 intOrPtr _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed char _t77; // _t77 _v64 = __rdi; _v80 = __rdx; _v68 = _t77; _v20 = 31; _v14 = 3098; _v10 = *(_v64 + 190506) & 255; _v11 = *(_v64 + 190506) & 255; r8d = _v68 & 255; DebugPrint(0, _v64, __rcx, __rdx, __rdi, __rsi); if((_v10 & 255) <= 4) { goto __rax; } *(_v64 + 190506) = _v11 & 255; if(_v20 != 0) { r8d = _v11 & 255; _v104 = _v20; _v112 = *(_v64 + 190505) & 0xff; *__rsp = *(_v64 + 190504) & 0xff; r9d = r8d; r8d = _v10 & 255; DebugPrint(0, _v64, __rcx, __rdx, __rdi, __rsi); } else { r8d = _v11 & 255; _v104 = _v20; _v112 = *(_v64 + 190505) & 0xff; *__rsp = *(_v64 + 190504) & 0xff; r9d = r8d; r8d = _v10 & 255; DebugPrint(0, _v64, __rcx, __rdx, __rdi, __rsi); } return; } _BTCFG_SendWriteEIRCommandCompleteEvent() {// addr = 0x004A1FD7 short _v10; // _cfa_fffffff6 char _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 char _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 _unknown_ _t10; // _t10 long long _t17; // _t17 long long _t20; // _t20 _v48 = _t17; _v52 = __al; _v10 = 3154; __ecx = 1; HCI_Fill_Data_Unit(1, &_v52, &_v40, _t20); EG_Generate_Command_Complete_Event(); return; } _BTCFG_WriteEIRW4InquiryScanCB() {// addr = 0x004A2028 char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t10; // _t10 char _t11; // _t11 long long _t13; // _t13 _v32 = _t13; _v40 = __rsi; _v56 = __rcx; _v44 = _t11; if(_v44 != 0) { _t10 = 3; } else { _t10 = 0; } _v9 = _t10; _BTCFG_SendWriteEIRCommandCompleteEvent(); return; } _BTCFG_WriteEIRW4EIRCB() {// addr = 0x004A206A char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t16; // _t16 char _t21; // _t21 long long _t33; // _t33 _v32 = _t33; _v40 = __rsi; _v56 = __rcx; _v44 = _t21; if(_v44 != 0) { _t16 = 3; } else { _t16 = 0; } _v10 = _t16; if(( *(_v32 + 190504) & 1) == 0) { _BTCFG_SendWriteEIRCommandCompleteEvent(); return; } _v9 = LCCMD_InquiryScanRequest(); if(_v9 == 0) { _BTCFG_SendWriteEIRCommandCompleteEvent(); return; } return; } _BTCFG_WriteEIRW4InquiryScanCancelCB() {// addr = 0x004A20EE char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 char _t27; // _t27 long long _t41; // _t41 _v32 = _t41; _v40 = __rsi; _v56 = __rcx; _v44 = _t27; r8d = _BTCFG_WriteEIRW4EIRCB; _v9 = LCCMD_ConfigEIRRequest( *(_v32 + 191057) & 255); if(_v9 == 0) { if(( *(_v32 + 190504) & 1) == 0) { _BTCFG_SendWriteEIRCommandCompleteEvent(); return; } _v9 = LCCMD_InquiryScanRequest(); return; } return; } BTCFG_Initialise() {// addr = 0x004A218C long long _v16; // _cfa_fffffff0 signed int _v19; // _cfa_ffffffed unsigned short _v20; // _cfa_ffffffec signed int _v21; // _cfa_ffffffeb unsigned short _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 signed int _v26; // _cfa_ffffffe6 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 intOrPtr _t296; // _t296 _unknown_ _t325; // _t325 _unknown_ _t327; // _t327 long long _t329; // _t329 _unknown_ _t344; // _t344 _v48 = _t329; _v16 = *fs:0x28]; DebugPrint(0, *fs:0x28], _t325, _t327, _t329, _t344); RtlFillMemory(600, 0, _v48 + 190504); *((char*)(_v48 + 190504)) = 0; *((char*)(_v48 + 190505)) = 0; *((char*)(_v48 + 190506)) = 0; *((char*)(_v48 + 190507)) = 4; *((char*)(_v48 + 190508)) = 4; *((char*)(_v48 + 190509)) = 0; *((short*)(_v48 + 190510)) = 4096; *(_v48 + 190512) = 18; *((short*)(_v48 + 190514)) = 8192; *((short*)(_v48 + 190516)) = 0; *(_v48 + 190518) = 2048; *(_v48 + 190520) = 18; *((char*)(_v48 + 190522)) = 0; *((char*)(_v48 + 190523)) = 2; *((short*)(_v48 + 190524)) = 0; *((char*)(_v48 + 190526)) = 0; *((char*)(_v48 + 190527)) = 0; *((char*)(_v48 + 190528)) = 0; *((char*)(_v48 + 190529)) = 0; *((short*)(_v48 + 190530)) = 0; *((char*)(_v48 + 190532)) = 0; *((char*)(_v48 + 190533)) = 1; *((char*)(_v48 + 190534)) = 0; *((char*)(_v48 + 190535)) = 16; *((char*)(_v48 + 190536)) = 0; *((char*)(_v48 + 190537)) = 1; *((char*)(_v48 + 190538)) = 0; *((char*)(_v48 + 190539)) = 0; *((intOrPtr*)(_v48 + 190540)) = 0; RtlCopyMemory(36, _v48 + 190544, _t344); RtlCopyMemory(2, _v48 + 190792, _t344); *((char*)(_v48 + 191032)) = 255; *((char*)(_v48 + 191033)) = 255; *((char*)(_v48 + 191034)) = 143; *((char*)(_v48 + 191035)) = 254; *((char*)(_v48 + 191036)) = 219; *((char*)(_v48 + 191037)) = 255; *((char*)(_v48 + 191038)) = 91; *((char*)(_v48 + 191039)) = 131; *((char*)(_v48 + 191040)) = 0; *((char*)(_v48 + 191056)) = 0; *((char*)(_v48 + 191057)) = 0; *((char*)(_v48 + 191058)) = 0; *((char*)(_v48 + 191059)) = 0; *((char*)(_v48 + 191070)) = 0; *((char*)(_v48 + 191071)) = 0; *((char*)(_v48 + 191081)) = 0; *((char*)(_v48 + 191082)) = 0; *((char*)(_v48 + 191085)) = 0; *((char*)(_v48 + 191086)) = 1; *((char*)(_v48 + 191084)) = 0; *((char*)(_v48 + 191087)) = 1; *((char*)(_v48 + 191089)) = 0; *((char*)(_v48 + 191088)) = 0; *((char*)(_v48 + 191078)) = 4; *((char*)(_v48 + 191079)) = 4; *((short*)(_v48 + 191090)) = 91; *((short*)(_v48 + 191092)) = 6; *((short*)(_v48 + 191096)) = 6; *((short*)(_v48 + 191098)) = 65535; _t296 = _v48; __eflags = *(_t296 + 191597) & 255; if(( *(_t296 + 191597) & 255) == 0) { RtlCopyMemory(8, _v48 + 191032, _t344); RtlCopyMemory(8, _v48 + 191040, _t344); *((long long*)(_v48 + 191048)) = &CoreV21SupportedCommands; *((char*)(_v48 + 191094)) = 4; *((char*)(_v48 + 191095)) = 4; } else { RtlCopyMemory(8, _v48 + 191032, _t344); RtlCopyMemory(8, _v48 + 191040, _t344); *((long long*)(_v48 + 191048)) = &CoreV40SupportedCommands; *((char*)(_v48 + 191094)) = 6; *((char*)(_v48 + 191095)) = 6; } _v26 = Bth_EEPROM_READ16(_v48); _v19 = _v26 & 65535; _v20 = (_v26 & 65535) >> 8; _v26 = Bth_EEPROM_READ16(_v48); _v21 = _v26 & 65535; _v22 = (_v26 & 65535) >> 8; _v26 = Bth_EEPROM_READ16(_v48); _v23 = _v26 & 65535; _v24 = (_v26 & 65535) >> 8; RtlCopyMemory(6, _v48 + 191072, &_v24); LCCMD_SetLocalBDAddrRequest(); UDM_ComputeSR( *(_v48 + 190520) & 0xffff, *(_v48 + 190518) & 0xffff); LCCMD_SetSRModeRequest(); LCCMD_SetClassOfDeviceRequest(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } BTCFG_WriteLocalName() {// addr = 0x004A268A intOrPtr _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 signed int* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char* _v56; // _cfa_ffffffc8 signed char _v60; // _cfa_ffffffc4 _unknown_ __rbp; // r59 signed char _t24; // _t24 long long _t36; // _t36 _v48 = _t36; _v56 = __rsi; _v60 = _t24; if(_v60 > 248) { } else { __esi = 0; RtlFillMemory(248, 0, _v48 + 40); _v32 = _v48 + 40; _v24 = _v56; _v12 = 0; while((_v60 & 255) > _v12) { *_v32 = *_v24 & 255; _v32 = &(_v32[0]); _v24 = &(_v24[1]); _v12 = _v12 + 1; } } return 0; } BTCFG_ReadLocalName() {// addr = 0x004A2707 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 248; write_end_du(248, _v24, _v16 + 40); return 0; } BTCFG_ReadScanEnable() {// addr = 0x004A273A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t5; // _t5 long long _t7; // _t7 _v16 = _t5; _v24 = _t7; __edx = 1; write_end_du(1, _v24, _v16); return 0; } BTCFG_WriteScanEnable() {// addr = 0x004A2769 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 char _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 char _t7; // _t7 char _t9; // _t9 long long _t11; // _t11 _v32 = _t11; _t7 = _t9; _v36 = _t7; _BTCFG_ScanEventHandler(); _v12 = _t7; return _v12; } BTCFG_ReadPageScanActivity( _unknown_ __rax // r53 ) {// addr = 0x004A2797 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t15; // _t15 long long _t18; // _t18 long long _t21; // _t21 _v16 = _t18; _v24 = _t21; __rdx = _v16 + 14; _t15 = _v24; __ecx = 2; write_du(2, _v16 + 14, _t15, _v24 + 24); _v24 = _t15; __edx = 2; write_end_du(2, _v24, _v16 + 16); return 0; } BTCFG_WritePageScanActivity() {// addr = 0x004A27EF long long _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec signed short _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 signed short _t16; // _t16 signed short _t20; // _t20 long long _t25; // _t25 _v16 = _t25; _v20 = _t20; _v24 = _t16; _v28 = __ecx; *(_v16 + 190518) = _v20 & 65535; *(_v16 + 190520) = _v24 & 65535; LCCMD_SetSRModeRequest(); return 0; } BTCFG_ReadInquiryScanActivity( _unknown_ __rax // r53 ) {// addr = 0x004A283F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t15; // _t15 long long _t18; // _t18 long long _t21; // _t21 _v16 = _t18; _v24 = _t21; __rdx = _v16 + 6; _t15 = _v24; __ecx = 2; write_du(2, _v16 + 6, _t15, _v24 + 24); _v24 = _t15; __edx = 2; write_end_du(2, _v24, _v16 + 8); return 0; } BTCFG_WriteInquiryScanActivity( signed short __edx, // r3 _unknown_ __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2897 long long _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec signed short _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __cx; _v24 = __edx; *(_v16 + 6) = _v20 & 65535; *(_v16 + 8) = _v24 & 65535; return 0; } BTCFG_ReadAuthenticationEnable() {// addr = 0x004A28CA long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 28); return 0; } BTCFG_WriteAuthenticationEnable( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A28FD long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; return 12; } BTCFG_ReadInquiryMode() {// addr = 0x004A2911 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 18); return 0; } BTCFG_WriteInquiryMode( intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2944 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 18)) = __dl; return 0; } BTCFG_WritePageScanType( intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2962 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 22)) = __dl; return 0; } BTCFG_ReadPageScanType() {// addr = 0x004A2980 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 22); return 0; } BTCFG_WriteInquiryScanType( intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A29B3 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 5)) = __dl; return 0; } BTCFG_ReadInquiryScanType() {// addr = 0x004A29D1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 5); return 0; } BTCFG_WritePageTimeout( short __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2A04 long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((short*)(_v16 + 10)) = __dx; return 0; } BTCFG_ReadPageTimeout() {// addr = 0x004A2A25 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 2; write_end_du(2, _v24, _v16 + 10); return 0; } BTCFG_WriteConnectionAcceptTimeout( short __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2A58 long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((short*)(_v16 + 12)) = __dx; return 0; } BTCFG_ReadConnectionAcceptTimeout() {// addr = 0x004A2A79 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 2; write_end_du(2, _v24, _v16 + 12); return 0; } BTCFG_WritePageScanPeriodMode( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2AAC long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 19)) = __dl; return 0; } BTCFG_ReadPageScanPeriodMode() {// addr = 0x004A2ACB long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 19); return 0; } BTCFG_WriteVoiceSetting( short __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2AFE long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((short*)(_v16 + 20)) = __dx; return 0; } BTCFG_ReadVoiceSetting() {// addr = 0x004A2B1F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 2; write_end_du(2, _v24, _v16 + 20); return 0; } BTCFG_WritePINType( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2B52 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; return 12; } BTCFG_ReadPINType() {// addr = 0x004A2B66 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 23); return 0; } BTCFG_WriteHoldModeActivity( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2B99 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; return 12; } BTCFG_ReadHoldModeActivity() {// addr = 0x004A2BAD long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 30); return 0; } BTCFG_WriteNumOfBroadcastRetransmissions( _unknown_ __eax // r0 ) {// addr = 0x004A2BE0 long long _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed char _t15; // _t15 long long _t19; // _t19 _v16 = _t19; _v20 = _t15; if(LCCMD_SetNbcRequest() == 0) { return 12; } *(_v16 + 190535) = _v20 & 255; return 0; } BTCFG_ReadNumOfBroadcastRetransmissions() {// addr = 0x004A2C23 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 31); return 0; } BTCFG_WriteSynchronousFlowControlEnable( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2C56 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 34)) = __dl; return 12; } BTCFG_ReadSynchronousFlowControlEnable() {// addr = 0x004A2C75 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 34); return 0; } BTCFG_WriteDefaultErroneousDataReporting( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A2CA8 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 35)) = __dl; return 0; } BTCFG_ReadDefaultErroneousDataReporting() {// addr = 0x004A2CC7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 35); return 0; } BTCFG_WriteClassOfDevice() {// addr = 0x004A2CFA long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 intOrPtr _t13; // _t13 long long _t18; // _t18 _v16 = _t18; _v20 = _t13; *((intOrPtr*)(_v16 + 190540)) = _v20; LCCMD_SetClassOfDeviceRequest(); return 0; } BTCFG_ReadClassOfDevice() {// addr = 0x004A2D35 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 3; write_end_du(3, _v24, _v16 + 36); return 0; } BTCFG_SetAFHHostChannelClassification( _unknown_ __rax, // r53 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A2D68 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rax = __rax; _v32 = __rdi; _v40 = __rsi; _v12 = 0; while(_v12 <= 9) { __rax = __rax + _v40; *((char*)(_v32 + __rax + 556)) = __cl; _v12 = _v12 + 1; } return 0; } BTCFG_ReadAFHChannelAssessmentMode() {// addr = 0x004A2DAA long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 566); return 0; } BTCFG_WriteAFHChannelAssessmentMode( signed char __edx // r3 ) {// addr = 0x004A2DE0 intOrPtr _v12; // _cfa_fffffff4 signed char* _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 signed char _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 signed char* _t31; // _t31 long long _t35; // _t35 _v32 = _t35; _v40 = __rsi; _v44 = __edx; _t31 = _v32 + 69295; _v24 = _t31; if(_v44 != 0) { L6: *(_v40 + 566) = _v44 & 255; return 0; } _v12 = 0; while(_v12 <= 9) { *((char*)(_v40 + &(_t31[0x22c]))) = 255; _v12 = _v12 + 1; } if(( *_v24 & 255) == 1) { LMass_Deactivate_Channel_Assessment(); } goto L6; } BTCFG_ReadExtendedInquiryResponse( _unknown_ __rax // r53 ) {// addr = 0x004A2E59 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t15; // _t15 long long _t18; // _t18 long long _t21; // _t21 _v16 = _t18; _v24 = _t21; __rdx = _v16 + 552; _t15 = _v24; __ecx = 1; write_du(1, _v16 + 552, _t15, _v24 + 24); _v24 = _t15; __edx = 240; write_end_du(240, _v24, _v16 + 288); return 0; } BTCFG_WriteExtendedInquiryResponse( _unknown_ __eax // r0 ) {// addr = 0x004A2EB7 char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed char* _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed char _v52; // _cfa_ffffffcc signed char* _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t88; // _t88 signed char _t110; // _t110 intOrPtr _t136; // _t136 signed char* _t155; // _t155 long long _t158; // _t158 _v48 = _t158; _v64 = _t155; _v52 = _t110; _v11 = 1; _v20 = 0; _v32 = _v64; _v10 = 0; while(_v10 <= 239) { _v32 = &(_v32[1]); if(( *_v32 & 255) == 0) { break; } else { _v10 = _v10 + 1; continue; } } *(_v48 + 191058) = _v10 & 255; if(_v52 != 1) { if(_v10 > 27) { if(_v10 > 183) { *(_v48 + 191057) = 15; } else { *(_v48 + 191057) = 11; } } else { *(_v48 + 191057) = 4; } } else { if(_v10 > 17) { if(_v10 > 121) { if(_v10 <= 224) { *(_v48 + 191057) = 14; } } else { *(_v48 + 191057) = 10; } } else { *(_v48 + 191057) = 3; } } *(_v48 + 191056) = _v52 & 255; _v10 = 0; do { } while(_v10 <= 239); _t88 = *(_v48 + 191085) & 255; if(_t88 != 0) { _v16 = 0; if((_t88 & 1) == 0) { _v16 = 4294967295; _v20 = _v16; } else { RT_PCI_IO_READ32(); _v20 = _v16; } if((_v20 & 128) == 0) { _v11 = 0; } } if(_v11 == 0) { _BTCFG_SendWriteEIRCommandCompleteEvent(); } else { _t136 = _v48; _t92 = *(_t136 + 190504) & 1; if(( *(_t136 + 190504) & 1) == 0) { r8d = _BTCFG_WriteEIRW4EIRCB; _v9 = LCCMD_ConfigEIRRequest( *(_v48 + 191057) & 255); if(_v9 == 0) { _BTCFG_SendWriteEIRCommandCompleteEvent(); } } else { _v9 = LCCMD_InquiryScanCancelRequest(_t92); if(_v9 == 0) { _BTCFG_SendWriteEIRCommandCompleteEvent(); } } } return 0; } BTCFG_ReadSimplePairingMode() {// addr = 0x004A30F7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 29); return 0; } BTCFG_WriteSimplePairingMode( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A312A long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; return 12; } BTCFG_ReadLocalSupportedFeatures() {// addr = 0x004A313E long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 8; write_end_du(8, _v24, _v16 + 528); return 0; } BTCFG_ReadLocalSupportedCommands() {// addr = 0x004A3174 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 64; write_end_du(64, _v24, *((intOrPtr*)(_v16 + 544))); return 0; } BTCFG_ReadExtendedFeatures( _unknown_ __rax // r53 ) {// addr = 0x004A31AA long long _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed char _t33; // _t33 long long _t38; // _t38 long long _t40; // _t40 long long _t48; // _t48 _v16 = _t48; _v32 = __rdx; _v20 = _t33; _PageNumber = _v20 & 255; _t38 = _v32; write_du(1, __rdx, _t38, _v32 + 24); _v32 = _t38; _t55 = _v32 + 24; _t40 = _v32; _t50 = _t40; write_du(1, __rdx, _t40, _v32 + 24); _v32 = _t40; if((_PageNumber & 255) != 0) { if((_PageNumber & 255) != 1) { RtlFillMemory(8, 0, _t50); write_end_du(8, _v32, _t55); } else { write_end_du(8, _v32, _v16 + 536); } } else { write_end_du(8, _v32, _v16 + 528); } return 0; } BTCFG_ReadLoopbackMode() {// addr = 0x004A3296 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 32); return 0; } BTCFG_WriteLoopbackMode( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A32C9 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((char*)(_v16 + 32)) = __dl; return 0; } BTCFG_WriteLinkKeyType( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A32E8 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; return 12; } BTCFG_ReadLinkKeyType() {// addr = 0x004A32FC long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 1; write_end_du(1, _v24, _v16 + 33); return 0; } BTCFG_ReadLinkPolicySettings() {// addr = 0x004A332F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 2; write_end_du(2, _v24, _v16 + 26); return 0; } BTCFG_WriteLinkPolicySettings( short __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A3362 long long _v16; // _cfa_fffffff0 short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; *((short*)(_v16 + 26)) = __dx; return 0; } BTCFG_WriteBDAddr() {// addr = 0x004A3383 long long _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; BDADDR_Assign(_v16 + 568, &_v24); return 0; } BTCFG_WriteSupportedFeatures() {// addr = 0x004A33B4 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t10; // _t10 long long _t12; // _t12 _v16 = _t10; _v24 = _t12; __edx = 8; RtlCopyMemory(8, _v16 + 528, _v24); return 0; } BTCFG_WriteHostSspSupport() {// addr = 0x004A33EA long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed int _t22; // _t22 _v16 = __rdi; _v20 = _t22; *(_v16 + 536) = *(_v16 + 536) & 255 | _v20; r8d = *(_v16 + 536) & 0xff; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return 0; } BTCFG_ReadInquiryResponseTxPowerLevel( long long __rdi // r57 ) {// addr = 0x004A344C signed char _v9; // _cfa_fffffff7 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; if(( *(_v32 + 3) & 255) != 4) { if(( *(_v32 + 3) & 255) != 3) { if(( *(_v32 + 3) & 255) != 2) { if(( *(_v32 + 3) & 255) != 1) { if(( *(_v32 + 3) & 255) != 0) { _v9 = 10; } else { _v9 = 242; } } else { _v9 = 248; } } else { _v9 = 255; } } else { _v9 = 4; } } else { _v9 = 10; } return _v9 & 255; } BTCFG_WriteInquiryTxPowerLevel( char __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A34B8 long long _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; if(_v20 <= 9) { if(_v20 <= 3) { if(_v20 < 254) { if(_v20 < 248) { if(_v20 >= 242) { *((char*)(_v16 + 3)) = 0; } } else { *((char*)(_v16 + 3)) = 1; } } else { *((char*)(_v16 + 3)) = 2; } } else { *((char*)(_v16 + 3)) = 3; } } else { *((char*)(_v16 + 3)) = 4; } return 0; } BTCFG_ReadLocalVersionInformation() {// addr = 0x004A351A long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t58; // _t58 long long _t64; // _t64 _v16 = _t58; _v24 = _t64; HCI_Fill_Data_Unit(1, _v16 + 591, _v24, _v24 + 24); _v24 = _v24 + 24; HCI_Fill_Data_Unit(2, _v16 + 592, _v24, _v24 + 24); _v24 = _v24 + 24; HCI_Fill_Data_Unit(1, _v16 + 590, _v24, _v24 + 24); _v24 = _v24 + 24; HCI_Fill_Data_Unit(2, _v16 + 586, _v24, _v24 + 24); _v24 = _v24 + 24; HCI_Fill_Data_Unit(2, _v16 + 588, _v24, _v24 + 24); return 0; } BTCFG_WriteLEHostSupport( signed char __edx, // r3 _unknown_ __esi, // r5 long long __rdi // r57 ) {// addr = 0x004A35F6 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed char _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __cl; _v24 = __edx; *(_v16 + 536) = *(_v16 + 536) & 0xfd; *(_v16 + 536) = (_v20 & 255) + (_v20 & 255) | *(_v16 + 536) & 255; *(_v16 + 536) = *(_v16 + 536) & 0xfb; *(_v16 + 536) = (_v24 & 255) << 2 | *(_v16 + 536) & 255; return 0; } BTCFG_ReadLEHostSupport() {// addr = 0x004A3686 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 short _v14; // _cfa_fffffff2 long long _v24; // _cfa_ffffffe8 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 long long _t45; // _t45 long long _t47; // _t47 long long _t56; // _t56 _v112 = _t56; _v14 = 3180; _v11 = 0; _v24 = &_v104; _v10 = ( *(_v112 + 191040) & 2) != 0; _v9 = ( *(_v112 + 191040) & 4) != 0; _t45 = _v24; write_du(1, &_v11, _t45, _v24 + 24); _v24 = _t45; _t47 = _v24; write_du(1, &_v10, _t47, _v24 + 24); _v24 = _t47; __edx = 1; write_end_du(1, _v24, &_v9); EG_Generate_Command_Complete_Event(); return 0; } BDADDR_Assign( signed int* __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x004A3758 signed int* _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *_v16 = *_v24 & 255; (_v16[0]) = (_v24[1]) & 255; (_v16[0]) = (_v24[2]) & 255; (_v16[0]) = (_v24[3]) & 255; (_v16[1]) = (_v24[4]) & 255; (_v16[1]) = (_v24[5]) & 255; return; } BT_Initialise() {// addr = 0x004A37BE char _v12; // _cfa_fffffff4 signed char _v21; // _cfa_ffffffeb char _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t58; // _t58 _unknown_ _t86; // _t86 intOrPtr _t95; // _t95 _unknown_ _t125; // _t125 _unknown_ _t128; // _t128 long long _t130; // _t130 char* _t145; // _t145 _v32 = _t130; _t58 = DebugPrint(0, _t86, _t125, _t128, _t130, _t145); _v24 = 0; _v12 = 0; if((_t58 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { _t145 = &_v12; _t130 = *_v32 + 804; RT_PCI_IO_READ32(); _v24 = _v12; } *(_v32 + 42) = (_v21 & 255) >> 7; _t90 = _v32; if(( *(_v32 + 42) & 255) != 1) { } DebugPrint(0, _t90, _t90, _t128, _t130, _t145); *((char*)(_v32 + 41)) = 1; *((char*)(_v32 + 40)) = 160; *((char*)(_v32 + 191496)) = 1; *((long long*)(_v32 + 32)) = 848297987; _t95 = _v32; *((intOrPtr*)(_t95 + 191488)) = 4261479175; *((intOrPtr*)(_t95 + 191492)) = 0; *((char*)(_v32 + 191498)) = 1; *((char*)(_v32 + 191499)) = 1; *((char*)(_v32 + 191497)) = 1; *((char*)(_v32 + 191596)) = 1; *((char*)(_v32 + 191597)) = 0; BTSTS_Initialise(_v32 + 191308); BTCFG_Initialise(); LESTS_Initialise(); LECFG_Initialise(); LC_Initialise(); QUEUE_Initialise(); TRAHCI_Initialise(); HCI_Initialise(); LM_Initialise(); LL_Initialise(); MCU_Initialise(); RADIO_Initialise(); BTCoex_Initialize(); Codec_Initialise(_v32); DebugPrint(0, _v32, _t90, _v32 + 30488, _v32, _v32 + 30488); return; } BT_DeInitialise() {// addr = 0x004A39EC signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t26; // _t26 signed int _t28; // _t28 _unknown_ _t53; // _t53 long long _t71; // _t71 _v32 = _t71; _t26 = DebugPrint(0, _t53, _t69, __rdx, _t71, __rsi); _v12 = 0; if((_t26 & 1) == 0) { _v12 = 4294967295; _t28 = _v12; _v16 = _t28; } else { _t69 = &_v12; __rsi = &_v12; _t71 = *_v32 + 768; RT_PCI_IO_READ32(); _t28 = _v12; _v16 = _t28; } _t57 = *((intOrPtr*)(_v32 + 191488)); if((_t28 & 1) != 0) { DebugPrint(0, *((intOrPtr*)(_v32 + 191488)), *((intOrPtr*)(_v32 + 191488)), __rdx, _t71, __rsi); _t57 = *_v32 + 768; _t69 = &_v16; __rsi = &_v16; _t71 = *_v32 + 768; RT_PCI_IO_READ32(); } if(_v16 != 255) { BT_SoftReset(); RADIO_DeInitialise(); return; } else { DebugPrint(0, _t57, _t69, __rdx, _t71, __rsi); return; } } BT_SoftReset() {// addr = 0x004A3B0B signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed char _v35; // _cfa_ffffffdd signed char _v36; // _cfa_ffffffdc signed char _v37; // _cfa_ffffffdb signed char _v38; // _cfa_ffffffda signed char _v39; // _cfa_ffffffd9 signed char _v40; // _cfa_ffffffd8 signed int _v53; // _cfa_ffffffcb signed int _v54; // _cfa_ffffffca signed int _v55; // _cfa_ffffffc9 signed int _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t190; // _t190 signed int _t231; // _t231 signed int _t235; // _t235 signed int _t239; // _t239 signed int _t246; // _t246 _unknown_ _t372; // _t372 intOrPtr _t382; // _t382 _unknown_ _t460; // _t460 long long _t463; // _t463 intOrPtr _t485; // _t485 char* _t490; // _t490 _v64 = _t463; _v24 = 0; _t190 = DebugPrint(0, _t372, __rcx, _t460, _t463, _t490); _v20 = 0; if((_t190 & 1) == 0) { _v20 = 4294967295; _v28 = _v20; } else { __rcx = &_v20; _t490 = __rcx; RT_PCI_IO_READ32(); _v28 = _v20; } if(_v28 == 255) { return; } _v56 = 0; _v55 = 0; _v54 = 0; _v53 = 0; BthDisableInterrupt(); r8d = dil & 4294967295L; _v80 = *(_v64 + 191072) & 0xff; _v88 = *(_v64 + 191073) & 0xff; _v96 = *(_v64 + 191074) & 0xff; *__rsp = *(_v64 + 191075) & 0xff; r9d = r8d; r8d = dil & 4294967295L; DebugPrint(0, _v64, __rcx, _t460, _v64, _t490); BDADDR_Assign( &_v40, _v64 + 191072); _t382 = _v64; _t462 = _t382 + 30488; _t492 = _t382 + 30488; QUEUE_Reset(); BTSTS_Initialise(_v64 + 191308); BTCFG_Initialise(); LESTS_Initialise(); LECFG_Initialise(); LC_Initialise(); HCI_Initialise(); LM_Initialise(); LL_Initialise(); r8d = dil & 4294967295L; _v80 = *(_v64 + 191072) & 0xff; _v88 = *(_v64 + 191073) & 0xff; _v96 = *(_v64 + 191074) & 0xff; *__rsp = *(_v64 + 191075) & 0xff; r9d = r8d; r8d = dil & 4294967295L; DebugPrint(0, _v64, __rcx, _t382 + 30488, _v64, _t382 + 30488); if(( *(_v64 + 191072) & 255) != (_v40 & 255) || ( *(_v64 + 191073) & 255) != (_v39 & 255) || ( *(_v64 + 191074) & 255) != (_v38 & 255) || ( *(_v64 + 191075) & 255) != (_v37 & 255) || ( *(_v64 + 191076) & 255) != (_v36 & 255) || ( *(_v64 + 191077) & 255) != (_v35 & 255)) { _v10 = Bth_EEPROM_READ16(_v64); *(_v64 + 191077) = _v10 & 65535; *(_v64 + 191076) = (_v10 & 65535) >> 8; _v10 = Bth_EEPROM_READ16(_v64); *(_v64 + 191075) = _v10 & 65535; *(_v64 + 191074) = (_v10 & 65535) >> 8; _v10 = Bth_EEPROM_READ16(_v64); *(_v64 + 191073) = _v10 & 65535; *(_v64 + 191072) = (_v10 & 65535) >> 8; DebugPrint(0, _v64, __rcx, _t462, _v64, _t492); r8d = dil & 4294967295L; _v80 = *(_v64 + 191072) & 0xff; _v88 = *(_v64 + 191073) & 0xff; _v96 = *(_v64 + 191074) & 0xff; *__rsp = *(_v64 + 191075) & 0xff; r9d = r8d; r8d = dil & 4294967295L; DebugPrint(0, _v64, __rcx, _t462, _v64, _t492); } BthDmaCfg(); _t485 = _v64; _t231 = RtbtResetPDMA(); _v20 = 0; if((_t231 & 1) == 0) { _v20 = 4294967295; _v28 = _v20; } else { __rcx = &_v20; _t492 = __rcx; _t485 = *_v64 + 1024; RT_PCI_IO_READ32(); _v28 = _v20; } _t235 = _v28 & 127; _v28 = _t235; _t419 = *((intOrPtr*)(_v64 + 191488)); if((_t235 & 1) != 0) { _t419 = *_v64 + 1024; _t485 = *_v64 + 1024; RT_PCI_IO_WRITE32(); } _t239 = DebugPrint(0, _t419, __rcx, _t462, _t485, _t492) & 1; if(_t239 != 0) { _t485 = *_v64 + 1024; _t239 = RT_PCI_IO_WRITE32(); } _v16 = 0; while(1) { _v28 = 0; _v20 = 0; _t423 = *((intOrPtr*)(_v64 + 191488)); if((_t239 & 1) == 0) { _v20 = 4294967295; _v28 = _v20; } else { _t423 = *_v64 + 1024; __rcx = &_v20; _t492 = __rcx; _t485 = *_v64 + 1024; RT_PCI_IO_READ32(); _v28 = _v20; } if((_v28 & 128) != 0) { break; } KeStallExecutionProcessor(); _t239 = _v16 - 999 < 0; _v16 = _v16 + 1; if(_t239 != 0) { continue; } L26: if(_v16 > 999) { _t239 = DebugPrint(0, _t423, __rcx, _t462, _t485, _t492); } _t486 = _v64; RADIO_Reset(_v64); _v20 = 0; _t426 = *((intOrPtr*)(_v64 + 191488)); if((_t239 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t426 = *_v64 + 1092; __rcx = &_v20; _t492 = __rcx; _t486 = *_v64 + 1092; RT_PCI_IO_READ32(); _v24 = _v20; } _t246 = _v24; if(_t246 != 20971519) { _t246 = DebugPrint(0, _t426, __rcx, _t462, _t486, _t492); } if((_t246 & 1) != 0) { RT_PCI_IO_WRITE32(); } BTCoex_Initialize(); DebugPrint(0, _v64, __rcx, _t462, _v64, _t492); return; } goto L26; } BT_RadioOffDeinitialize() {// addr = 0x004A41FA signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t55; // _t55 signed int _t60; // _t60 signed int _t63; // _t63 signed int _t64; // _t64 _unknown_ _t110; // _t110 intOrPtr _t114; // _t114 _unknown_ _t139; // _t139 long long _t141; // _t141 intOrPtr _t145; // _t145 _unknown_ _t147; // _t147 char* _t148; // _t148 _v32 = _t141; _v20 = 0; _t55 = DebugPrint(0, _t110, __rcx, _t139, _t141, _t147); _v16 = 0; if((_t55 & 1) == 0) { _v16 = 4294967295; _v24 = _v16; } else { __rcx = &_v16; RT_PCI_IO_READ32(); _v24 = _v16; } if(_v24 != 255) { BthDisableInterrupt(); _t114 = _v32; _t140 = _t114 + 30488; _t148 = _t114 + 30488; QUEUE_Reset(); BthDmaCfg(); _t145 = _v32; _t60 = RtbtResetPDMA(); _v16 = 0; _t120 = *((intOrPtr*)(_v32 + 191488)); if((_t60 & 1) == 0) { _v16 = 4294967295; _v20 = _v16; } else { _t120 = *_v32 + 1092; __rcx = &_v16; _t148 = __rcx; _t145 = *_v32 + 1092; RT_PCI_IO_READ32(); _v20 = _v16; } _t63 = _v20; if(_t63 != 20971519) { _t63 = DebugPrint(0, _t120, __rcx, _t140, _t145, _t148); } _t64 = _t63 & 1; if(_t64 != 0) { _t145 = *_v32 + 544; _t64 = RT_PCI_IO_WRITE32(); } _v12 = 0; _t124 = *((intOrPtr*)(_v32 + 191488)); if((_t64 & 1) == 0) { _v12 = 4294967295; _v16 = _v12; } else { _t124 = *_v32 + 544; __rcx = &_v12; _t148 = __rcx; _t145 = *_v32 + 544; RT_PCI_IO_READ32(); _v16 = _v12; } DebugPrint(0, _t124, __rcx, _t140, _t145, _t148); DebugPrint(0, _t124, __rcx, _t140, _t145, _t148); return; } return; } BT_SanityCheck() {// addr = 0x004A442A long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t8; // _t8 _v16 = _t8; MCU_SanityCheck(); LM_SanityCheck(_v16); LC_SanityCheck(); return; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004A445C signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x004A448B signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A44E1 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A4520 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } LECFG_Initialise() {// addr = 0x004A4552 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 signed int _t78; // _t78 signed int _t79; // _t79 signed int _t80; // _t80 long long _t169; // _t169 _v16 = _t169; _t78 = *(_v16 + 191597) & 255; if(_t78 != 0) { RtlFillMemory(202, 0, _v16 + 191104); RtlFillMemory(8, 0, _v16 + 191104); *((char*)(_v16 + 191104)) = 1; *((char*)(_v16 + 191120)) = 0; *((char*)(_v16 + 191121)) = 0; *((char*)(_v16 + 191122)) = 0; *((char*)(_v16 + 191123)) = 0; *((char*)(_v16 + 191124)) = 0; RtlFillMemory(32, 0, _v16 + 191125); *((char*)(_v16 + 191157)) = 0; RtlFillMemory(80, 0, _v16 + 191158); *((short*)(_v16 + 191238)) = 16; *((short*)(_v16 + 191240)) = 16; *((short*)(_v16 + 191242)) = 256; *((short*)(_v16 + 191244)) = 256; *((char*)(_v16 + 191246)) = 0; *((char*)(_v16 + 191247)) = 0; *((char*)(_v16 + 191248)) = 0; *((char*)(_v16 + 191249)) = 7; *((char*)(_v16 + 191250)) = 0; *((char*)(_v16 + 191251)) = 0; RtlFillMemory(32, 0, _v16 + 191252); RtlFillMemory(6, 0, _v16 + 191284); RtlFillMemory(6, 0, _v16 + 191290); *((char*)(_v16 + 191296)) = 3; *((char*)(_v16 + 191297)) = 3; *((char*)(_v16 + 191298)) = 3; *((char*)(_v16 + 191303)) = 31; *((char*)(_v16 + 191302)) = 255; *((char*)(_v16 + 191301)) = 255; *((char*)(_v16 + 191300)) = 255; *((char*)(_v16 + 191299)) = 255; *((short*)(_v16 + 191304)) = 50; _t79 = _t78 & 1; if(_t79 != 0) { _t79 = RT_PCI_IO_WRITE32(); } _t80 = _t79 & 1; if(_t80 != 0) { _t80 = RT_PCI_IO_WRITE32(); } if((_t80 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } } return; } LECFG_ReadLocalSupportedFeatures() {// addr = 0x004A4813 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 long long _t8; // _t8 long long _t10; // _t10 _v16 = _t8; _v24 = _t10; __edx = 8; write_end_du(8, _v24, _v16 + 191104); return 0; } LECFG_SetRandomAddress() {// addr = 0x004A4849 signed int _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t35; // _t35 signed int _t38; // _t38 long long _t74; // _t74 long long _t80; // _t80 _v32 = _t74; _v40 = _t80; _v16 = 12; if( *((intOrPtr*)(_v32 + 191376)) == 0 && *((intOrPtr*)(_v32 + 191380)) == 0) { RtlCopyMemory(6, _v32 + 191290, _v40); _t35 = casting_uint32(_v40); _v12 = _t35; if((_t35 & 1) != 0) { RT_PCI_IO_WRITE32(); } _t38 = casting_uint16(_v40 + 4) & 65535; _v12 = _t38; _v12 = _v12 | 65536; if((_t38 & 1) != 0) { RT_PCI_IO_WRITE32(); } _v16 = 0; } return _v16; } LECFG_ReadWhilteListSize() {// addr = 0x004A4951 char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed char _v11; // _cfa_fffffff5 unsigned int _v16; // _cfa_fffffff0 unsigned int _v20; // _cfa_ffffffec signed int _v21; // _cfa_ffffffeb signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 signed char _v38; // _cfa_ffffffda signed char _v39; // _cfa_ffffffd9 unsigned int _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 char* _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t147; // _t147 signed int _t151; // _t151 signed int _t152; // _t152 signed int _t160; // _t160 long long _t276; // _t276 _v48 = _t276; _v56 = __rsi; _t277 = _v56; write_du(1, _v11 & 255, _v56, __rsi); _v11 = 0; while(_v11 <= 9) { r9d = *(_v48 + 8 + ((_v11 & 255) + 23894) * 8) & 0xff; r8d = *(_v48 + 191161 + (_v11 & 255) * 8) & 0xff; _t269 = _v11 & 255; r10d = _v11 & 255; r10 = r10d; r10 = r10 + 23894; r11d = *(_v48 + r10*8+0x7]) & 0xff; r10d = _v11 & 255; r10 = r10d; r10 = r10 + 23894; r10d = *(_v48 + r10*8+0x6]) & 0xff; _v64 = r9d; _v72 = r8d; _v80 = *(_v48 + 191162 + (_v11 & 255) * 8) & 0xff; _v88 = *(_v48 + 191163 + (_v11 & 255) * 8) & 0xff; _v96 = *(_v48 + 191164 + (_v11 & 255) * 8) & 0xff; *__rsp = *(_v48 + 191165 + (_v11 & 255) * 8) & 0xff; r9d = r11d; r8d = r10d; DebugPrint(0, _v48, __rcx, _v11 & 255, _t277, __rsi); _v11 = _v11 + 1; } _v10 = 0; _v11 = 0; while(_v11 <= 7) { _v24 = 0; _t147 = _v11 & 255; _v21 = _t147; if((_t147 & 1) != 0) { _t277 = *_v48 + 2348; RT_PCI_IO_WRITE32(); } _v40 = 0; _t151 = _v40 & 0xf0 | 8; _v40 = _t151; _t247 = *(_v48 + 191488); _t152 = _t151 & 1; if(_t152 != 0) { _t247 = *_v48 + 2340; _t277 = *_v48 + 2340; _t152 = RT_PCI_IO_WRITE32(); } _v9 = 5; while(1) { _v9 = _v9 - 1; if(_v9 == 0) { break; } _v40 = 0; _v16 = 0; _t247 = *(_v48 + 191488); if((_t152 & 1) == 0) { _v16 = 4294967295; _v40 = _v16; } else { _t247 = *_v48 + 2340; __rcx = &_v16; __rsi = __rcx; _t277 = *_v48 + 2340; RT_PCI_IO_READ32(); _v40 = _v16; } _t152 = _v39 & 1; if(_t152 == 0) { L21: KeStallExecutionProcessor(); continue; } else { _t152 = _v38 & 1; if(_t152 == 0) { goto L21; } else { _v24 = 0; _v16 = 0; if((_t152 & 1) == 0) { _v16 = 4294967295; _t160 = _v16; _v24 = _t160; } else { __rcx = &_v16; __rsi = __rcx; _t277 = *_v48 + 2348; RT_PCI_IO_READ32(); _t160 = _v16; _v24 = _t160; } _v20 = 0; _v16 = 0; _t247 = *(_v48 + 191488); if((_t160 & 1) == 0) { _v16 = 4294967295; _v20 = _v16; } else { _t247 = *_v48 + 2344; __rcx = &_v16; __rsi = __rcx; _t277 = *_v48 + 2344; RT_PCI_IO_READ32(); _v20 = _v16; } r11d = _v20 & 255; r10d = _v20 >> 8 & 255; r9d = _v20 >> 16 & 255; r8d = _v20; r8d = r8d >> 24; _v64 = r11d; _v72 = r10d; _v80 = r9d; _v88 = r8d; _v96 = _v24 & 0xff; *__rsp = (_v24 & 65535) >> 8 & 0xff; r9d = _v22 & 1; r8d = (_v22 & 255) >> 1 & 1; DebugPrint(0, _t247, __rcx, _t269, _t277, __rsi); _v10 = _v10 + 1; } } break; } r8d = _v24; _t146 = DebugPrint(0, _t247, __rcx, _t269, _t277, __rsi); _v11 = _v11 + 1; } return; } LECFG_ClearWhiteList() {// addr = 0x004A4D66 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t16; // _t16 long long _t32; // _t32 _v32 = _t32; _v24 = 0; _t16 = _v24 & 0xf0 | 1; _v24 = _t16; if((_t16 & 1) != 0) { RT_PCI_IO_WRITE32(); } RtlFillMemory(80, 0, _v32 + 191158); *(_v32 + 191157) = 0; return; } LECFG_AddWhiteList() {// addr = 0x004A4DEA signed int _v25; // _cfa_ffffffe7 signed char _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed char _v28; // _cfa_ffffffe4 signed char _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v38; // _cfa_ffffffda signed char _v40; // _cfa_ffffffd8 signed char _v54; // _cfa_ffffffca signed char _v55; // _cfa_ffffffc9 signed int _v56; // _cfa_ffffffc8 char* _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 char* _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t140; // _t140 signed int _t149; // _t149 signed int _t153; // _t153 signed int _t154; // _t154 signed int _t243; // _t243 _unknown_ _t246; // _t246 signed int _t264; // _t264 signed int _t278; // _t278 _v80 = _t278; _v88 = __rsi; _v32 = 12; _v28 = 1; _v25 = *_v88 & 255; _v64 = &(_v88[1]); r9d = (_v64[4]) & 0xff; r8d = (_v64[5]) & 0xff; _v96 = *_v64 & 0xff; _v104 = (_v64[1]) & 0xff; _v112 = (_v64[2]) & 0xff; *__rsp = (_v64[3]) & 0xff; DebugPrint(0, &(_v64[5]), _t270, _t272, _t278, __rsi); if(( *(_v80 + 191157) & 255) <= 7) { _t140 = *(_v80 + 191376); if(_t140 == 0) { L5: _v27 = 0; while(_v27 <= 9) { _t272 = (_v27 & 255) + 23894; _t140 = *(_v80 + 6 + ((_v27 & 255) + 23894) * 8) & 255; if(_t140 == 0) { L10: _v27 = _v27 + 1; continue; } _t264 = _v80; _t272 = (_v27 & 255) + 23894; _t140 = *(_t264 + 7 + ((_v27 & 255) + 23894) * 8) & 255; if(_t140 != _v25) { goto L10; } _t140 = _t264; _t270 = (_t264 + 23894 << 3) + _v80 + 8; __rsi = _v64; RtlCompareMemory(6, (_t264 + 23894 << 3) + _v80 + 8, __rsi); if(_t140 != 0) { goto L10; } _v28 = 0; break; } if(_v28 != 0) { if((_t140 & 1) != 0) { casting_uint32(_v64); RT_PCI_IO_WRITE32(); } _v40 = 0; _t279 = &(_v64[4]); _v40 = casting_uint16( &(_v64[4])); _v38 = _v38 & 0xfe | _v25 & 1; _t149 = _v38 & 255 | 2; _v38 = _t149; if((_t149 & 1) != 0) { _t279 = *_v80 + 2348; RT_PCI_IO_WRITE32(); } _v56 = 0; _t153 = _v56 & 0xf0 | 2; _v56 = _t153; _t240 = *(_v80 + 191488); _t154 = _t153 & 1; if(_t154 != 0) { _t240 = *_v80 + 2340; _t279 = *_v80 + 2340; _t154 = RT_PCI_IO_WRITE32(); } _v26 = 0; while(1) { _v26 = _v26 + 1; if(_v26 > 9) { break; } _v36 = 0; _t240 = *(_v80 + 191488); if((_t154 & 1) == 0) { _v36 = 4294967295; _v56 = _v36; } else { _t240 = *_v80 + 2340; _t270 = &_v36; __rsi = &_v36; _t279 = *_v80 + 2340; RT_PCI_IO_READ32(); _v56 = _v36; } _t154 = _v55 & 1; if(_t154 == 0) { KeStallExecutionProcessor(); continue; } else { if((_v54 & 1) == 0) { _v32 = 3; } else { _v32 = 0; } break; } } if(_v32 != 0) { L36: if(_v32 != 0) { DebugPrint(0, _t240, _t270, _t272, _t279, __rsi); } return _v32; } _v27 = 0; while(_v27 <= 9) { _t240 = _v80; _t272 = (_v27 & 255) + 23894; if(( *(_v80 + 6 + ((_v27 & 255) + 23894) * 8) & 255) != 0) { _v27 = _v27 + 1; continue; } *(_v80 + 6 + ((_v27 & 255) + 23894) * 8) = 1; _t243 = _v80; _t272 = _v27 & 255; *(_t243 + 7 + ((_v27 & 255) + 23894) * 8) = _v25 & 255; _t246 = (_t243 + 23894 << 3) + _v80; _t270 = _t246 + 8; __rsi = _v64; _t279 = _t246 + 8; RtlCopyMemory(6, _t246 + 8, __rsi); _t240 = _v80; *(_v80 + 191157) = _v80 + 1; goto L36; } goto L36; } return 18; } _t140 = *(_v80 + 191380); if(_t140 == 0) { goto L5; } return 12; } return 7; } LECFG_RemoveWhiteList() {// addr = 0x004A51FA signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v38; // _cfa_ffffffda signed int _v40; // _cfa_ffffffd8 signed char _v54; // _cfa_ffffffca signed char _v55; // _cfa_ffffffc9 signed int _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed int _v80; // _cfa_ffffffb0 char* _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed int _v104; // _cfa_ffffff98 signed int _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t118; // _t118 signed int _t127; // _t127 signed int _t131; // _t131 signed int _t132; // _t132 signed int _t230; // _t230 signed int _t240; // _t240 signed int _t247; // _t247 _v80 = _t247; _v88 = __rsi; _v32 = 12; _v28 = 0; _v25 = *_v88 & 255; _v64 = &(_v88[1]); r9d = (_v64[4]) & 0xff; r8d = (_v64[5]) & 0xff; _v96 = *_v64 & 0xff; _v104 = (_v64[1]) & 0xff; _v112 = (_v64[2]) & 0xff; *__rsp = (_v64[3]) & 0xff; DebugPrint(0, &(_v64[5]), __rcx, _t243, _t247, __rsi); _t118 = *(_v80 + 191376); if(_t118 == 0) { L3: _v27 = 0; while(_v27 <= 9) { _t243 = (_v27 & 255) + 23894; _t118 = *(_v80 + 6 + ((_v27 & 255) + 23894) * 8) & 255; if(_t118 == 0) { L8: _v27 = _v27 + 1; continue; } _t230 = _v80; _t243 = (_v27 & 255) + 23894; _t118 = *(_t230 + 7 + ((_v27 & 255) + 23894) * 8) & 255; if(_t118 != _v25) { goto L8; } _t118 = _t230; __rcx = (_t230 + 23894 << 3) + _v80 + 8; __rsi = _v64; RtlCompareMemory(6, (_t230 + 23894 << 3) + _v80 + 8, __rsi); if(_t118 != 0) { goto L8; } _t243 = (_v27 & 255) + 23894; *(_v80 + 6 + ((_v27 & 255) + 23894) * 8) = 0; RtlFillMemory(6, 0, (_v80 + 23894 << 3) + _v80 + 8); _t240 = _v80; _t118 = *(_t240 + 191157) & 255; *((char*)(_v80 + 191157)) = _t240 - 1; _v28 = 1; break; } if(_v28 != 0) { if((_t118 & 1) != 0) { casting_uint32(_v64); RT_PCI_IO_WRITE32(); } _v40 = 0; _t248 = &(_v64[4]); _v40 = casting_uint16( &(_v64[4])); _v38 = _v38 & 0xfe | _v25 & 1; _t127 = _v38 & 255 | 2; _v38 = _t127; if((_t127 & 1) != 0) { _t248 = *_v80 + 2348; RT_PCI_IO_WRITE32(); } _v56 = 0; _t131 = _v56 & 0xf0 | 4; _v56 = _t131; _t213 = *(_v80 + 191488); _t132 = _t131 & 1; if(_t132 != 0) { _t213 = *_v80 + 2340; _t248 = *_v80 + 2340; _t132 = RT_PCI_IO_WRITE32(); } _v26 = 0; while(1) { _v26 = _v26 + 1; if(_v26 > 9) { break; } _v36 = 0; _t213 = *(_v80 + 191488); if((_t132 & 1) == 0) { _v36 = 4294967295; _v56 = _v36; } else { _t213 = *_v80 + 2340; __rcx = &_v36; __rsi = __rcx; _t248 = *_v80 + 2340; RT_PCI_IO_READ32(); _v56 = _v36; } _t132 = _v55 & 1; if(_t132 == 0) { KeStallExecutionProcessor(); continue; } else { if((_v54 & 1) == 0) { _v32 = 3; } else { _v32 = 0; } break; } } if(_v32 != 0) { DebugPrint(0, _t213, __rcx, _t243, _t248, __rsi); } return _v32; } return 18; } _t118 = *(_v80 + 191380); if(_t118 == 0) { goto L3; } return 12; } LECFG_SetAvertisingData() {// addr = 0x004A55A6 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t20; // _t20 _v16 = _t20; _v32 = __rdx; _v20 = __esi; *(_v16 + 191251) = _v20 & 255; if(_v20 != 0) { __rsi = _v32; RtlCopyMemory(_v20 & 255, _v16 + 191252, _v32); } return 0; } LECFG_SetAdvertiseParameter() {// addr = 0x004A55F4 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t68; // _t68 long long _t72; // _t72 _v32 = _t68; _v40 = _t72; _v12 = 12; if(( *(_v32 + 191376) & 1) == 0) { *((short*)(_v32 + 191242)) = casting_uint16(_v40); *((short*)(_v32 + 191244)) = casting_uint16(_v40 + 2); *(_v32 + 191246) = *(_v40 + 4) & 255; *(_v32 + 191247) = *(_v40 + 5) & 255; *(_v32 + 191248) = *(_v40 + 6) & 255; RtlCopyMemory(6, _v32 + 191284, _v40 + 7); *(_v32 + 191249) = *(_v40 + 13) & 255; *(_v32 + 191250) = *(_v40 + 14) & 255; _v12 = 0; } return _v12; } LECFG_SetScanParameter( _unknown_ __eax // r0 ) {// addr = 0x004A56DA intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t47; // _t47 _v32 = _t47; _v40 = __rsi; _v12 = 12; if(( *(_v32 + 191376) & 2) == 0) { *(_v32 + 191120) = *_v40 & 255; *((short*)(_v32 + 191238)) = casting_uint16( &(_v40[1])); *((short*)(_v32 + 191240)) = casting_uint16( &(_v40[3])); *(_v32 + 191121) = (_v40[5]) & 255; *(_v32 + 191122) = (_v40[6]) & 255; _v12 = 0; } return _v12; } LECFG_SetScanResponseData() {// addr = 0x004A5779 long long _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed char _t19; // _t19 long long _t26; // _t26 _v16 = _t26; _v32 = __rdx; _v20 = _t19; *(_v16 + 191124) = _v20 & 255; if(_v20 == 0) { RtlFillMemory(1, 0, _v16 + 191125); } else { __rsi = _v32; RtlCopyMemory(_v20 & 255, _v16 + 191125, _v32); } return 0; } LECFG_ReadSupportedStates( _unknown_ __eflags, // r9 _unknown_ __rax // r53 ) {// addr = 0x004A57E5 long long _v16; // _cfa_fffffff0 char _v17; // _cfa_ffffffef char _v18; // _cfa_ffffffee char _v19; // _cfa_ffffffed char _v20; // _cfa_ffffffec char _v21; // _cfa_ffffffeb char _v22; // _cfa_ffffffea char _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 short _v26; // _cfa_ffffffe6 char _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 long long _t31; // _t31 long long _t41; // _t41 __eflags = __eflags; _v96 = _t41; _v16 = *fs:0x28]; _v32 = 0; _v26 = 8220; _v40 = &_v88; _v24 = 255; _v23 = 255; _v22 = 255; _v21 = 31; _v20 = 0; _v19 = 0; _v18 = 0; _v17 = 0; _t31 = _v40; __ecx = 1; write_du(1, &_v32, _t31, _v40 + 24); _v40 = _t31; __edx = 8; write_end_du(8, _v40, &_v24); EG_Generate_Command_Complete_Event(); if(__eflags != 0) { __stack_chk_fail(); return; } return; } LLCFG_ReadAdvertisingChannelTxPower() {// addr = 0x004A58A2 short _v10; // _cfa_fffffff6 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 long long _t20; // _t20 long long _t29; // _t29 _v80 = _t29; _v16 = 0; _v10 = 8199; _v24 = &_v72; _t20 = _v24; __ecx = 1; write_du(1, &_v16, _t20, _v24 + 24); _v24 = _t20; __edx = 1; write_end_du(1, _v24, _v80 + 191297); EG_Generate_Command_Complete_Event(); return; } LLCFG_SetHostChannelClassification( long long __rdi, // r57 signed char* __rsi // r58 ) {// addr = 0x004A5923 long long _v16; // _cfa_fffffff0 signed char* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; *(_v16 + 191303) = (_v24[4]) & 255; *(_v16 + 191302) = (_v24[3]) & 255; *(_v16 + 191301) = (_v24[2]) & 255; *(_v16 + 191300) = (_v24[1]) & 255; *(_v16 + 191299) = *_v24 & 255; return; } LESTS_Initialise() {// addr = 0x004A598C long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t23; // _t23 _v16 = _t23; if(__al != 0) { __edx = 96; __esi = 0; RtlFillMemory(96, 0, _v16 + 191376); *((intOrPtr*)(_v16 + 191376)) = 0; *((intOrPtr*)(_v16 + 191380)) = 0; *((long long*)(_v16 + 191448)) = 0; *((long long*)(_v16 + 191456)) = 0; *((long long*)(_v16 + 191464)) = 0; return; } return; } BTRAND_SetSeed( intOrPtr __edi // r4 ) {// addr = 0x004A5A14 intOrPtr _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __edi = __edi; _v12 = __edi; gRandSeed = _v12; return; } BTRAND_Rand() {// addr = 0x004A5A26 _unknown_ __rbp; // r59 _BTRAND_Rand(__rax); return; } BTRAND_Rand128( _unknown_ __rax // r53 ) {// addr = 0x004A5A31 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 _unknown_ _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 char _v88; // _cfa_ffffffa8 _unknown_ _v104; // _cfa_ffffff98 unsigned int _v117; // _cfa_ffffff8b unsigned int _v118; // _cfa_ffffff8a unsigned int _v119; // _cfa_ffffff89 char _v120; // _cfa_ffffff88 char _v136; // _cfa_ffffff78 signed int _v140; // _cfa_ffffff74 unsigned int _v144; // _cfa_ffffff70 unsigned int _v148; // _cfa_ffffff6c unsigned int _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 _unknown_ __rbp; // r59 signed int _t91; // _t91 _unknown_ _t153; // _t153 char* _t155; // _t155 char* _t156; // _t156 char* _t157; // _t157 char* _t163; // _t163 char* _t164; // _t164 long long _t190; // _t190 long long _t198; // _t198 _v160 = _t190; _v168 = _t198; _t155 = *fs:0x28]; _v16 = _t155; _t91 = 0; _v144 = 0; while(_v144 <= 3) { _v140 = _BTRAND_Rand(_t155); *( &_v136 + _t155) = _v140; _t156 = &_v136; *(_t155 + 1 + _t156) = (_v140 & 65280) >> 8; _t157 = &_v136; *(_t156 + 2 + _t157) = (_v140 & 16711680) >> 16; _t155 = &_v136; _t91 = _v140 >> 24; *(_t157 + 3 + _t155) = _t91; _v144 = _v144 + 1; } _v152 = 0; _v148 = 0; if((_t91 & 1) == 0) { _v148 = 4294967295; _v152 = _v148; } else { RT_PCI_IO_READ32(); _v152 = _v148; } RtlFillMemory(16, 0, &_v72); RtlFillMemory(16, 0, &_v120); _v120 = _v152; _v119 = _v152 >> 8; _v118 = _v152 >> 16; _v117 = _v152 >> 24; aes_encrypt_128( &_v40); _t163 = &_v120; aes_encrypt_128( &_v40); _v144 = 0; while(_v144 <= 15) { *(__rbp + _t163 - 80) = *(__rbp + _t163 - 80) & 255 ^ *(__rbp + _t163 - 128) & 255; _v144 = _v144 + 1; } _t164 = &_v88; aes_encrypt_128( &_v40); _v144 = 0; while(1) { _t153 = _v144 - 15; if(_t153 > 0) { break; } *(__rbp + _t164 - 96) = *(__rbp + _t164 - 96) & 255 ^ *(__rbp + _t164 - 80) & 255; _v144 = _v144 + 1; } aes_encrypt_128( &_v40); if(_t153 != 0) { __stack_chk_fail(); return; } return; } BTRAND_Rand1024( _unknown_ __eax // r0 ) {// addr = 0x004A5CF4 _unknown_ __rbp; // r59 return _BTRAND_Rand(__rax) & 1023; } _BTRAND_Rand( _unknown_ __rax // r53 ) {// addr = 0x004A5D03 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 unsigned int _t16; // _t16 __rax = __rax; _push(r12); _push(__rbx); r12d = __rax + 12345; r12d = r12d & 4294705152; r12d = r12d + ((__rax + 12345 & 4292870144) >> 14); _t16 = __rax + 12345; r12d = r12d + (_t16 >> 25); gRandSeed = _t16; _pop(__rbx); _pop(r12); return r12d; } BTRAND_Rand64Bit( unsigned int* __eax, // r0 unsigned int* __rax // r53 ) {// addr = 0x004A5D61 intOrPtr _v20; // _cfa_ffffffec long long _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 unsigned int* _t15; // _t15 unsigned int* _t37; // _t37 unsigned int* _t38; // _t38 unsigned int* _t40; // _t40 unsigned int* _t42; // _t42 _t37 = __rax; _t15 = __eax; _v40 = __rdi; _v20 = 0; while(_v20 <= 1) { __ebx = _BTRAND_Rand(_t37); _t38 = _t37 + _v40; *_t38 = __ebx; _t40 = &(_t38[0]) + _v40; *_t40 = (__ebx & 65280) >> 8; _t42 = &(_t40[0]) + _v40; *_t42 = (__ebx & 16711680) >> 16; _t15 = _t42; _t37 = &(_t42[0]) + _v40; *_t37 = __ebx >> 24; _v20 = _v20 + 1; } return _t15; } BTRAND_Rand128Bit( unsigned int* __eax, // r0 unsigned int* __rax // r53 ) {// addr = 0x004A5DF4 intOrPtr _v20; // _cfa_ffffffec long long _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 unsigned int* _t15; // _t15 unsigned int* _t37; // _t37 unsigned int* _t38; // _t38 unsigned int* _t40; // _t40 unsigned int* _t42; // _t42 _t37 = __rax; _t15 = __eax; _v40 = __rdi; _v20 = 0; while(_v20 <= 3) { __ebx = _BTRAND_Rand(_t37); _t38 = _t37 + _v40; *_t38 = __ebx; _t40 = &(_t38[0]) + _v40; *_t40 = (__ebx & 65280) >> 8; _t42 = &(_t40[0]) + _v40; *_t42 = (__ebx & 16711680) >> 16; _t15 = _t42; _t37 = &(_t42[0]) + _v40; *_t37 = __ebx >> 24; _v20 = _v20 + 1; } return _t15; } BTRAND_Rand192Bit( unsigned int* __eax, // r0 unsigned int* __rax // r53 ) {// addr = 0x004A5E87 intOrPtr _v20; // _cfa_ffffffec long long _v40; // _cfa_ffffffd8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 unsigned int* _t15; // _t15 unsigned int* _t37; // _t37 unsigned int* _t38; // _t38 unsigned int* _t40; // _t40 unsigned int* _t42; // _t42 _t37 = __rax; _t15 = __eax; _v40 = __rdi; _v20 = 0; while(_v20 <= 5) { __ebx = _BTRAND_Rand(_t37); _t38 = _t37 + _v40; *_t38 = __ebx; _t40 = &(_t38[0]) + _v40; *_t40 = (__ebx & 65280) >> 8; _t42 = &(_t40[0]) + _v40; *_t42 = (__ebx & 16711680) >> 16; _t15 = _t42; _t37 = &(_t42[0]) + _v40; *_t37 = __ebx >> 24; _v20 = _v20 + 1; } return _t15; } BTRAND_Seed_Initialize() {// addr = 0x004A5F1A intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t16; // _t16 long long _t29; // _t29 _v32 = _t29; _v24 = 0; _v12 = 0; if((_t16 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } __edi = _v24; BTRAND_SetSeed(_v24); return; } casting_uint24( signed char* __rdi // r57 ) {// addr = 0x004A5F94 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff) << 8) << 8; } write_du( intOrPtr __ecx, // r2 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A5FD6 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __ecx = __ecx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v36 = __ecx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; *((intOrPtr*)(_v16 + 16)) = _v36; _v16 = _v16 + 24; return; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A6015 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } BTSTS_Initialise( long long __rdi // r57 ) {// addr = 0x004A6047 _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; *_v16 = 0; *((short*)(_v16 + 52)) = 0; *((short*)(_v16 + 54)) = 0; *((intOrPtr*)(_v16 + 60)) = 10390323; *((intOrPtr*)(_v16 + 64)) = 0; *((char*)(_v16 + 57)) = 1; return; } BTSTS_ResetInquiryRecord() {// addr = 0x004A608D long long _v16; // _cfa_fffffff0 signed short _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 long long _t17; // _t17 _v16 = _t17; _v20 = __ax; RtlFillMemory(48, 0, _v16 + 4); *((short*)(_v16 + 54)) = 0; *(_v16 + 52) = _v20 & 65535; return; } BTSTS_ReadCurrentIACLAP( _unknown_ __rax // r53 ) {// addr = 0x004A60D1 intOrPtr _v12; // _cfa_fffffff4 signed int _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 long long _t41; // _t41 long long _t46; // _t46 signed int _t54; // _t54 long long _t58; // _t58 _v32 = _t54; _v40 = _t58; _v12 = 0; _t41 = _v40; write_du(1, _v32 + 57, _t41, _v40 + 24); _v40 = _t41; _v12 = 0; while(( *(_v32 + 57) & 0xff) - 1 > _v12) { _t46 = _v40; write_du(3, _v32 + 60 + (_v32 << 2), _t46, _v40 + 24); _v40 = _t46; _v12 = _v12 + 1; } __edx = 3; write_end_du(3, _v40, _v32 + 60 + (_v32 << 2)); return 0; } BTSTS_WriteCurrentIACLAP( _unknown_ __eax, // r0 long long __rdx // r56 ) {// addr = 0x004A618E intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed char* _t33; // _t33 long long _t39; // _t39 _v32 = _t39; _v48 = __rdx; _v36 = __esi; if((gDeviceConsts & 255) >= _v36) { _v12 = 0; while((_v36 & 255) > _v12) { _t33 = _t33 + _v48; *((intOrPtr*)(_v32 + 12 + (_v12 + 12) * 4)) = casting_uint24(_t33); _v12 = _v12 + 1; } *(_v32 + 57) = _v36 & 255; return 0; } return 12; } DM_Read_Clock( _unknown_ __edi, // r4 char __esi, // r5 long long __rdx // r56 ) {// addr = 0x004A6207 short _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rdx = __rdx; __esi = __esi; __edi = __edi; _v24 = __rdx; _v12 = __cx; _v16 = __esi; return 12; } UDM_ComputeSR( _unknown_ __edi, // r4 short __esi // r5 ) {// addr = 0x004A6221 signed char _v9; // _cfa_fffffff7 signed short _v28; // _cfa_ffffffe4 short _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; _v28 = __dx; _v32 = __esi; _v9 = 0; if((_v28 & 65535) != _v32 || _v32 > 2048) { if(_v32 > 2048) { if(_v32 <= 4096) { _v9 = 2; } } else { _v9 = 1; } } else { _v9 = 0; } return _v9 & 255; } BTSTS_ClearDeviceState() {// addr = 0x004A626D signed int* _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed int _t15; // _t15 _v16 = __rdi; _v20 = _t15; *_v16 = !_v20 & *_v16; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return; } BTSTS_SetDeviceState() {// addr = 0x004A62B2 signed int* _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed int _t14; // _t14 _v16 = __rdi; _v20 = _t14; *_v16 = *_v16 | _v20; DebugPrint(0, _v16, __rcx, __rdx, __rdi, __rsi); return; } BTSTS_CheckDeviceState( signed int __esi, // r5 signed int* __rdi // r57 ) {// addr = 0x004A62F5 signed int* _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v16 = __rdi; _v20 = __esi; return *_v16 & _v20; } BT_SyncWordGenerator( signed int __esi, // r5 signed int* __rdi // r57 ) {// addr = 0x004A630C signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc unsigned int _v40; // _cfa_ffffffd8 unsigned int _v44; // _cfa_ffffffd4 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed long long _v64; // _cfa_ffffffc0 signed int* _v72; // _cfa_ffffffb8 signed int* _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac _unknown_ __rbp; // r59 signed int _t55; // _t55 signed long long _t88; // _t88 __rdi = __rdi; __esi = __esi; _v80 = __rdi; _v84 = __esi; _v72 = _v80; _t88 = &(_v80[1]); _v64 = _t88; _v40 = 2206502294; _v36 = 3150730492; _v32 = 2964203445; _v28 = 536870912; _v24 = 738197504; _v20 = 318767104; if((_v84 & 8388608) == 0) { _t55 = _v24 | _v84; } else { _t55 = _v20 | _v84; } _v16 = _t55; _v12 = (_v40 >> 2 ^ _v16) << 2; _v52 = _v12; _v48 = 0; _v44 = 0; while(1) { _v44 = _v44 + 1; if(_v44 > 30) { break; } if(_v52 < 0) { _v52 = _v52 ^ _v32; _v48 = _v48 ^ _v28; } _v52 = _v48 >> 31 | _t88 + _t88; _v48 = _v48 << 1; } *_v72 = (_v48 >> 30 | 0 + _t88 * 4) ^ _v36; *_v64 = (_v52 >> 30 | _v12) ^ _v40; return; } BTtimer_Set_BtClk( long long __rdi // r57 ) {// addr = 0x004A6400 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t18; // _t18 _v32 = __rdi; _v36 = __esi; _v24 = 0; _v12 = 0; if((_t18 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } return _v36 + _v36 + (_v24 & 0xffffffe) - 1 & 268435455; } BTtimer_Is_Expired( long long __rdi // r57 ) {// addr = 0x004A6490 signed char _v9; // _cfa_fffffff7 signed int _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t21; // _t21 _v32 = __rdi; _v36 = __esi; _v24 = 0; _v16 = 0; if((_t21 & 1) == 0) { _v16 = 4294967295; _v24 = _v16; } else { RT_PCI_IO_READ32(); _v24 = _v16; } if((_v36 - (_v24 & 268435455) & 268435455) <= 134217727) { _v9 = 0; } else { _v9 = 1; } return _v9 & 255; } BTtimer_Is_Expired_For_Time( intOrPtr __edi, // r4 intOrPtr __esi // r5 ) {// addr = 0x004A652C intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __esi = __esi; __edi = __edi; _v12 = __edi; _v16 = __esi; return (_v12 - _v16 & 268435455) - 134217727 > 0; } write_end_du( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A6554 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; *_v16 = 0; *((long long*)(_v16 + 8)) = _v24; *((intOrPtr*)(_v16 + 16)) = _v28; return; } BTCFG_ReadNumberOfSupportedIAC() {// addr = 0x004A6586 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; __edx = 1; write_end_du(1, _v16, __rsi); return 0; } Codec_Initialise( long long __rdi // r57 ) {// addr = 0x004A65B0 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; if(__al == 0) { pCodecFunc = &CODEC_FUNC_SW; return; } pCodecFunc = &CODEC_FUNC_HW; return; } HW_BRM_Transmit_Sync_Packet( signed int __eax, // r0 _unknown_ __rax // r53 ) {// addr = 0x004A65E1 signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed int _v18; // _cfa_ffffffee signed int _v20; // _cfa_ffffffec signed int _v22; // _cfa_ffffffea intOrPtr _v28; // _cfa_ffffffe4 signed int _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 signed int _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed long long _v96; // _cfa_ffffffa0 signed int _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 _unknown_ __rbp; // r59 signed long long _t272; // _t272 signed char* _t277; // _t277 signed long long _t291; // _t291 signed int _t301; // _t301 signed int _t306; // _t306 signed long long _t328; // _t328 signed int _t330; // _t330 _t186 = __eax; _v96 = _t328; _v13 = 0; _v12 = 3; _v15 = 0; while(_v15 <= 2) { if(( *(_v96 + 190499) & 255) != 0) { return; } _t272 = _v96; __rdx = _t272 + 33800; _v64 = 920 + _t272 * 184 + _t272 + 33800; _t186 = *_v64 & 255; if(( *_v64 & 255) == 0) { L27: _v15 = _v15 + 1; continue; } _t277 = _v64; _t186 = (_t277[2]) & 255; if(((_t277[2]) & 255) != 0) { goto L27; } else { _v80 = 0; if(((_v64[0x78]) & 4) != 0) { _v48 = (_v64[0x48]); _v14 = *(_v48 + 2) & 255; _v22 = *(_v48 + 6) & 65535; _v11 = *(_v48 + 3) & 255; _v18 = *(_v48 + 8) & 65535; _v80 = _v48 + 10; if(_v11 == 2) { _v22 = _v22 << 1; } } else { _v56 = (_v64[0x48]); _v14 = *(_v56 + 1) & 255; _v22 = *(_v56 + 2) & 0xff; _v11 = *(_v56 + 3) & 255; _v18 = *(_v56 + 4) & 65535; _v80 = _v56 + 6; if(_v11 == 2) { _v22 = _v22 << 1; } } _v10 = (_v64[0x81]) & 0x1f; _v28 = PDMA_Get_Txring_Freeno(_v10 & 255, _v96); _t290 = (_v64[0x30]); _t330 = _t290; QUEUE_DequeueRequest(_t290); _v72 = _t290; if(_v72 == 0 || _v28 == 0) { if(_v28 != 0) { _t291 = _v96; _t186 = *(_t291 + 191081) & 255; if(( *(_t291 + 191081) & 255) != 0) { _v80 = &SilenceESCOPacket; _v9 = QUEUE_IncreasePktSeq(_v64[0x30]); r10d = _v12 & 255; r9d = _v13 & 255; r8d = _v9 & 255; _t186 = (_v64[0xb]) & 255; _v120 = r10d; _v128 = r9d; _v136 = r8d; _v144 = 0; _v152 = _v22 & 65535; _v160 = _v80; *__rsp = 0; r9d = 0; r8d = 0; PDMA_Transmit_TxRing(); } } goto L27; } else { _v20 = 0; while(_v72 != 0 && (_v18 & 65535) < _v22) { _v20 = QUEUE_GetBufLength(_v72); _t301 = _v72; QUEUE_GetDataBuf(_t301); _v40 = _t301; if((_v22 & 65535) - (_v18 & 65535) > (_v20 & 65535)) { __rcx = _v40; __rsi = _v40; RtlCopyMemory(_v20 & 65535, _t301 + _v80, __rsi); QUEUE_DequeueCommit(_v64[0x30]); _v18 = _v18 + (_v20 & 65535); _t306 = (_v64[0x30]); _t330 = _t306; QUEUE_DequeueRequest(_t306); _v72 = _t306; if(((_v64[0x78]) & 4) != 0) { _v48 = (_v64[0x48]); _t290 = _v48; *(_v48 + 8) = _v18 & 65535; } else { _v56 = (_v64[0x48]); _t290 = _v56; *(_v56 + 4) = _v18 & 65535; } } else { __rcx = _v40; __rsi = _v40; RtlCopyMemory((_v22 & 65535) - (_v18 & 65535), _t301 + _v80, __rsi); _t330 = (_v64[0x30]); QUEUE_DequeueCommit(_v64[0x30]); _v18 = _v18 + (_v22 & 65535) - (_v18 & 65535); _v72 = 0; if(((_v64[0x78]) & 4) != 0) { _v48 = (_v64[0x48]); _t290 = _v48; *(_v48 + 8) = 0; } else { _v56 = (_v64[0x48]); _t290 = _v56; *(_v56 + 4) = 0; } } } if((_v18 & 65535) == _v22) { _v9 = QUEUE_IncreasePktSeq(_v64[0x30]); r10d = _v12 & 255; r9d = _v13 & 255; r8d = _v9 & 255; _t186 = (_v64[0xb]) & 255; _v120 = r10d; _v128 = r9d; _v136 = r8d; _v144 = 0; _v152 = _v22 & 65535; _v160 = _v80; *__rsp = 0; r9d = 0; r8d = 0; PDMA_Transmit_TxRing(); goto L27; } *__rsp = _v20 & 65535; r9d = _v22 & 65535; r8d = _v18 & 65535; DebugPrint(0, _t290, __rcx, __rdx, _t330, __rsi); return; } } } return; } SW_BRM_Transmit_Sync_Packet( signed int __eax // r0 ) {// addr = 0x004A6A7A signed char _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v11; // _cfa_fffffff5 signed int _v12; // _cfa_fffffff4 signed int _v13; // _cfa_fffffff3 signed int _v14; // _cfa_fffffff2 signed int _v15; // _cfa_fffffff1 signed int _v18; // _cfa_ffffffee signed int _v20; // _cfa_ffffffec signed int _v22; // _cfa_ffffffea intOrPtr _v28; // _cfa_ffffffe4 _unknown_ _v40; // _cfa_ffffffd8 signed char _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed char _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 signed long long _v112; // _cfa_ffffff90 signed int _v136; // _cfa_ffffff78 signed int _v144; // _cfa_ffffff70 signed int _v152; // _cfa_ffffff68 signed int _v160; // _cfa_ffffff60 signed int _v168; // _cfa_ffffff58 signed int _v176; // _cfa_ffffff50 _unknown_ __rbp; // r59 signed long long _t306; // _t306 signed char* _t311; // _t311 signed long long _t325; // _t325 _unknown_ _t339; // _t339 _unknown_ _t344; // _t344 signed long long _t374; // _t374 signed char _t376; // _t376 _t216 = __eax; _v112 = _t374; _v12 = 0; _v11 = 0; _v15 = 0; while(_v15 <= 2) { if(( *(_v112 + 190499) & 255) != 0) { return; } _t306 = _v112; __rdx = _t306 + 33800; _v64 = 920 + _t306 * 184 + _t306 + 33800; _t216 = *_v64 & 255; if(( *_v64 & 255) == 0) { L35: _v15 = _v15 + 1; continue; } _t311 = _v64; _t216 = (_t311[2]) & 255; if(((_t311[2]) & 255) != 0) { goto L35; } else { _v96 = 0; _v80 = 0; _v72 = 0; if(((_v64[0x78]) & 4) != 0) { _v48 = (_v64[0x48]); _v14 = *(_v48 + 2) & 255; _v22 = *(_v48 + 6) & 65535; _v13 = *(_v48 + 3) & 255; _v18 = *(_v48 + 8) & 65535; _v96 = _v48 + 10; if(_v13 == 2) { _v80 = _v48 + 1096; _v72 = *(_v80 + 1056); _v22 = _v22 << 1; } } else { _v56 = (_v64[0x48]); _v14 = *(_v56 + 1) & 255; _v22 = *(_v56 + 2) & 0xff; _v13 = *(_v56 + 3) & 255; _v18 = *(_v56 + 4) & 65535; _v96 = _v56 + 6; if(_v13 == 2) { _v80 = _v56 + 72; _v72 = *(_v80 + 1056); _v22 = _v22 << 1; } } _v10 = (_v64[0x81]) & 0x1f; _v28 = PDMA_Get_Txring_Freeno(_v10 & 255, _v112); _t324 = (_v64[0x30]); _t376 = _t324; QUEUE_DequeueRequest(_t324); _v88 = _t324; if(_v88 == 0 || _v28 == 0) { if(_v28 != 0) { _t325 = _v112; _t216 = *(_t325 + 191081) & 255; if(( *(_t325 + 191081) & 255) != 0) { if(_v13 != 2) { _v96 = &SilenceESCOPacket; } else { if(_v72 == 0) { _v96 = &SilenceESCOPacket; } else { __rcx = _v72; _v22 = CVSD_Encode(_v22 & 65535, _v80); _v96 = _v72; } } _v9 = QUEUE_IncreasePktSeq(_v64[0x30]); r10d = _v11 & 255; r9d = _v12 & 255; r8d = _v9 & 255; _t216 = (_v64[0xb]) & 255; _v136 = r10d; _v144 = r9d; _v152 = r8d; _v160 = 0; _v168 = _v22 & 65535; _v176 = _v96; *__rsp = 0; r9d = 0; r8d = 0; PDMA_Transmit_TxRing(); } } goto L35; } else { _v20 = 0; do { } while(_v88 != 0 && (_v18 & 65535) < _v22); if((_v18 & 65535) == _v22) { if(_v13 == 2 && _v72 != 0) { __rcx = _v72; __rsi = _v96; _v22 = CVSD_Encode(_v22 & 65535, _v80); _v96 = _v72; } _v9 = QUEUE_IncreasePktSeq(_v64[0x30]); r10d = _v11 & 255; r9d = _v12 & 255; r8d = _v9 & 255; _t216 = (_v64[0xb]) & 255; _v136 = r10d; _v144 = r9d; _v152 = r8d; _v160 = 0; _v168 = _v22 & 65535; _v176 = _v96; *__rsp = 0; r9d = 0; r8d = 0; PDMA_Transmit_TxRing(); goto L35; } *__rsp = _v20 & 65535; r9d = _v22 & 65535; r8d = _v18 & 65535; DebugPrint(0, _t324, __rcx, __rdx, _t376, __rsi); return; } } } return; } HW_RtbtReceiveSyncPacket( _unknown_ __rax, // r53 signed int* _a8 // _cfa_8 ) {// addr = 0x004A6FCE signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed short _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 signed int _v92; // _cfa_ffffffa4 char _v96; // _cfa_ffffffa0 signed short _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed int _t94; // _t94 _unknown_ _t95; // _t95 char _t103; // _t103 signed char _t105; // _t105 long long _t115; // _t115 intOrPtr _t117; // _t117 long long _t146; // _t146 long long _t165; // _t165 long long _t171; // _t171 _v80 = _t165; _v88 = _t171; _v104 = r8; _v112 = r9; _v92 = _t105; _v96 = _t103; _t115 = _v80 + 60216; _v64 = _t115; _v10 = 0; _v9 = 1; _v12 = *(_t115 + (((_v92 & 255) >> 4 & 3) << 4) + _t115 + (((_v92 & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 65535; _v56 = 0; if(_v88 == 0) { *_a8 = 1; return; } _t117 = _v88; if(( *(_t117 + 2) & 255) != 1) { if(_v96 != 0) { _v12 = _v12 << 1; } if(_t117 >= _v112) { if(( *(_v80 + 191081) & 255) == 0) { _v16 = 0; while(_v16 <= 2) { if(( *(((_v16 << 2) + _v16 << 5) + _v64 + 0x17c0) & 255) != 4 || *((intOrPtr*)(((_v16 << 2) + _v16 << 5) + _v64 + 6152)) != _v88) { _v16 = _v16 + 1; continue; } else { _v56 = _v104; _v48 = _v112; _v24 = 0; _t94 = _v24 & 0xf000 | *(((_v16 << 2) + _v16 << 5) + _v64 + 0x17c8) & 0xfff; _v24 = _t94; _v22 = _t94; QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v88 + 32)); if(_v40 == 0) { *(_v80 + 190501) = 1; } else { _t146 = _v40; _t95 = QUEUE_GetDataBuf(_t146); _v32 = _t146; RtlCopyMemory(_t95, _v32, _v56); QUEUE_EnqueueCommit(); _v10 = 1; _v9 = 1; RtbtHalHCIReceiveSCOData(); } break; } } *_a8 = _v9 & 255; return; } *_a8 = 1; return; } *_a8 = 1; return; } else { *_a8 = 1; return; } } SW_RtbtReceiveSyncPacket( _unknown_ __rax, // r53 signed int* _a8 // _cfa_8 ) {// addr = 0x004A721F signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed short _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v96; // _cfa_ffffffa0 long long _v104; // _cfa_ffffff98 signed int _v108; // _cfa_ffffff94 char _v112; // _cfa_ffffff90 signed short _v120; // _cfa_ffffff88 long long _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed int _t122; // _t122 _unknown_ _t123; // _t123 char _t137; // _t137 signed char _t139; // _t139 long long _t155; // _t155 intOrPtr _t157; // _t157 long long _t192; // _t192 long long _t199; // _t199 long long _t206; // _t206 long long _t224; // _t224 long long _t232; // _t232 _v96 = _t224; _v104 = _t232; _v120 = r8; _v128 = r9; _v108 = _t139; _v112 = _t137; _t155 = _v96 + 60216; _v64 = _t155; _v10 = 0; _v9 = 1; _t220 = ((_v108 & 255) >> 4 & 3) << 4; _v12 = *(_t155 + (((_v108 & 255) >> 4 & 3) << 4) + _t155 + (((_v108 & 255) >> 4 & 3) << 4) + &gMaxDataLenTable) & 65535; _v72 = 0; if(_v104 == 0) { *_a8 = 1; return 0; } _t157 = _v104; if(( *(_t157 + 2) & 255) == 1) { *_a8 = 1; return 0; } if(_t157 < _v128) { r8d = _v12 & 65535; DebugPrint(0, _v128, _v128, _t220, _t224, _t232); *_a8 = 1; } if(( *(_v96 + 191081) & 255) == 0) { _v16 = 0; while(_v16 <= 2) { if(( *(((_v16 << 2) + _v16 << 5) + _v64 + 0x17c0) & 255) != 4 || *((intOrPtr*)(((_v16 << 2) + _v16 << 5) + _v64 + 6152)) != _v104) { _v16 = _v16 + 1; continue; } else { _v72 = _v120; _v80 = _v128; if(( *(_v104 + 120) & 4) != 0) { _v48 = *((intOrPtr*)(_v104 + 72)); _v72 = _v48 + 2708; _t116 = *(_v48 + 3) & 255; if(( *(_v48 + 3) & 255) == 2) { _t199 = _v96; CVSD_Decode(_t116 & 65535, _t199); _v80 = _t199; } } else { _v56 = *((intOrPtr*)(_v104 + 72)); _v72 = _v56 + 1174; _t129 = *(_v56 + 3) & 255; if(( *(_v56 + 3) & 255) == 2) { _t206 = _v96; CVSD_Decode(_t129 & 65535, _t206); _v80 = _t206; } } _v24 = 0; _t122 = _v24 & 0xf000 | *(((_v16 << 2) + _v16 << 5) + _v64 + 0x17c8) & 0xfff; _v24 = _t122; _v22 = _t122; QUEUE_EnqueueRequest(); _v40 = *((intOrPtr*)(_v104 + 32)); if(_v40 == 0) { *(_v96 + 190501) = 1; } else { _t192 = _v40; _t123 = QUEUE_GetDataBuf(_t192); _v32 = _t192; RtlCopyMemory(_t123, _v32, _v72); QUEUE_EnqueueCommit(); _v10 = 1; _v9 = 1; RtbtHalHCIReceiveSCOData(); } break; } } *_a8 = _v9 & 255; return _v10 & 255; } else { *_a8 = 1; return 0; } } TX_UPS( signed int __esi, // r5 _unknown_ __rcx, // r55 long long __rdx, // r56 long long __rdi, // r57 _unknown_ __rsi // r58 ) {// addr = 0x004A7522 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 intOrPtr _t229; // _t229 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; __rcx = __rcx; _v48 = __rdi; _v52 = __esi; _v64 = __rdx; _v40 = 0; _v36 = 256; _v32 = 0; _v28 = 0; _v24 = *(_v48 + 12); _v20 = *(_v48 + 16); _v16 = *(_v48 + 20); _t229 = _v48; _v12 = *(_t229 + 24); _v12 = _v16; _v16 = _v20; _v20 = _v24; _v24 = _v52; *_v64 = __rsi + _t229; *((intOrPtr*)(_v64 + 4)) = *5079064 * _v16 + _v12 * *5079068 + __rcx + __rdx; *((intOrPtr*)(_v64 + 8)) = *5079080 * _v16 + _v12 * *5079084 + __rcx + __rdx; *((intOrPtr*)(_v64 + 12)) = *5079096 * _v16 + _v12 * *5079100 + __rcx + __rdx; *((intOrPtr*)(_v64 + 16)) = *5079112 * _v16 + _v12 * *5079116 + __rcx + __rdx; *((intOrPtr*)(_v64 + 20)) = *5079128 * _v16 + _v12 * *5079132 + __rcx + __rdx; *((intOrPtr*)(_v64 + 24)) = *5079144 * _v16 + _v12 * *5079148 + __rcx + __rdx; *((intOrPtr*)(_v64 + 28)) = _v32 * _v16 + _v12 * _v28 + __rcx + __rdx; *(_v48 + 12) = _v24; *(_v48 + 16) = _v20; *(_v48 + 20) = _v16; *(_v48 + 24) = _v12; return *5079048 * _v16 + _v12 * *5079052; } CVSD_TX( signed long long __rdx, // r56 signed int* __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004A77B0 long long _v16; // _cfa_fffffff0 signed int _v21; // _cfa_ffffffeb signed int _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 intOrPtr _v48; // _cfa_ffffffd0 signed int* _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed long long _t170; // _t170 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v64 = __rdi; _v72 = __rsi; _v80 = __rdx; _v16 = *fs:0x28]; _v48 = 0; _v44 = 0; _v40 = (_v64[1]); _v36 = (_v64[2]); _v24 = *_v64 & 255; _v23 = (_v64[0]) & 255; _v22 = (_v64[0]) & 255; _v21 = (_v64[0]) & 255; _t170 = _v80; *_t170 = 0; _v48 = 0; while(1) { __eflags = _v48 - 7; if(__eflags > 0) { break; } _v32 = _v36 - (_v36 >> 5); _v28 = ( *((_t170 << 2) + _v72) >> 2) - _v32; __eflags = _v28; if(_v28 >= 0) { *_v80 = ( *_v80 & 255) >> 1 | 128; } else { *_v80 = ( *_v80 & 255) >> 1; } _v21 = _v22 & 255; _v22 = _v23 & 255; _v23 = _v24 & 255; _v24 = ( *_v80 & 0x80) >> 7; __eflags = (_v21 & 255) - 1; if((_v21 & 255) != 1) { L9: __eflags = _v21 & 255; if((_v21 & 255) != 0) { L14: _v44 = 0; L15: _t170 = _v80; __eflags = ( *_t170 & 0x80) >> 7 - 1; if(( *_t170 & 0x80) >> 7 != 1) { _v36 = (_v40 >> 4) + _v32; } else { _v36 = _v32 - (_v40 >> 4); } __eflags = _v36 - 2097088; if(_v36 <= 2097088) { __eflags = _v36 - 4292870208; if(_v36 < 4292870208) { _v36 = 4292870208; } } else { _v36 = 2097088; } __eflags = _v44 - 1; if(_v44 != 1) { __eflags = _v40 - (_v40 >> 10) - 10240; if(_v40 - (_v40 >> 10) <= 10240) { _v40 = 10240; } else { _v40 = _v40 - (_v40 >> 10); } } else { __eflags = _v40 + 10240 - 1310719; if(_v40 + 10240 > 1310719) { _v40 = 1310720; } else { _v40 = _v40 + 10240; } } _v48 = _v48 + 1; continue; } __eflags = _v22 & 255; if((_v22 & 255) != 0) { goto L14; } __eflags = _v23 & 255; if((_v23 & 255) != 0) { goto L14; } __eflags = _v24 & 255; if((_v24 & 255) != 0) { goto L14; } _v44 = 1; goto L15; } __eflags = (_v22 & 255) - 1; if((_v22 & 255) != 1) { goto L9; } __eflags = (_v23 & 255) - 1; if((_v23 & 255) != 1) { goto L9; } __eflags = (_v24 & 255) - 1; if((_v24 & 255) != 1) { goto L9; } _v44 = 1; goto L15; } (_v64[2]) = _v36; (_v64[1]) = _v40; *_v64 = _v24 & 255; (_v64[0]) = _v23 & 255; (_v64[0]) = _v22 & 255; (_v64[0]) = _v21 & 255; if(__eflags == 0) { return; } __stack_chk_fail(); return; } CVSD_RX( char __edi, // r4 signed char __esi, // r5 signed long long __rax, // r53 long long __rdx // r56 ) {// addr = 0x004A7A12 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 signed int _v28; // _cfa_ffffffe4 char _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed long long _t79; // _t79 __rdx = __rdx; _t79 = __rax; __esi = __esi; __edi = __edi; _v48 = __rdx; _v36 = __edi; _v40 = __esi; _v28 = 0; _v24 = 0; if(_v36 == 1) { *7345987 = 2; *7345986 = 2; *7345985 = 2; y_reg.6234 = 2; delta_reg.6237 = 0; sat_reg.6238 = 0; return; } _v28 = 0; while(_v28 <= 7) { _v20 = sat_reg.6238 - (sat_reg.6238 >> 5); _t79 = (_t79 << 2) + _v48; *_t79 = _v20 >> 6; *7345987 = *7345986 & 255; *7345986 = *7345985 & 255; *7345985 = y_reg.6234 & 255; y_reg.6234 = _v40 >> _v28 & 1; if(( *7345987 & 255) != 1 || ( *7345986 & 255) != 1) { L8: if(( *7345987 & 255) != 0 || ( *7345986 & 255) != 0 || ( *7345985 & 255) != 0 || (y_reg.6234 & 255) != 0) { _v24 = 0; } else { _v24 = 1; } goto L14; } else { if(( *7345985 & 255) != 1 || (y_reg.6234 & 255) != 1) { goto L8; } else { _v24 = 1; L14: if((_v40 >> _v28 & 1) == 0) { sat_reg.6238 = (delta_reg.6237 >> 4) + _v20; } else { sat_reg.6238 = _v20 - (delta_reg.6237 >> 4); } if(sat_reg.6238 <= 2097088) { if(sat_reg.6238 >= 4292870208) { sat_reg.6238 = sat_reg.6238; } else { sat_reg.6238 = 4292870208; } } else { sat_reg.6238 = 2097088; } if(_v24 != 1) { if(delta_reg.6237 - (delta_reg.6237 >> 10) <= 10240) { delta_reg.6237 = 10240; } else { delta_reg.6237 = delta_reg.6237 - (delta_reg.6237 >> 10); } } else { if(delta_reg.6237 + 10240 > 1310719) { delta_reg.6237 = 1310720; } else { delta_reg.6237 = delta_reg.6237 + 10240; } } _v28 = _v28 + 1; continue; } } } return; } RX_DS( char __edi, // r4 signed long long __rax, // r53 signed int* __rdx, // r56 long long __rsi // r58 ) {// addr = 0x004A7C54 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 signed int* _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed long long _t104; // _t104 signed long long _t105; // _t105 signed long long _t106; // _t106 signed long long _t107; // _t107 __rsi = __rsi; __rdx = __rdx; _t104 = __rax; __edi = __edi; _v40 = __rsi; _v48 = __rdx; _v28 = __edi; _v16 = 0; if(_v28 == 0) { _v16 = 0; while(_v16 <= 7) { _t105 = _t104 + 24; *(_t105 * 4 + &data.6248) = *(_t104 * 4 + &data.6248); _t106 = _t105 + 16; *(_t106 * 4 + &data.6248) = *(_t105 * 4 + &data.6248); _t107 = _t106 + 8; *(_t107 * 4 + &data.6248) = *(_t106 * 4 + &data.6248); _t104 = (_t107 << 2) + _v40; *(_t104 * 4 + &data.6248) = *_t104; _v16 = _v16 + 1; } _v12 = 0; _v16 = 0; while(_v16 <= 31) { _v12 = _v12 + *(_t104 * 4 + &tap.6247) * *(_t104 * 4 + &data.6248); _v16 = _v16 + 1; } *_v48 = _v12 >> 8; if( *_v48 <= 32766) { if( *_v48 >= 4294934530) { *_v48 = *_v48; return; } *_v48 = 4294934529; return; } *_v48 = 32767; return; } _v16 = 0; while(_v16 <= 31) { *(_t104 * 4 + &data.6248) = 0; _v16 = _v16 + 1; } return; } CVSD_Encode( signed short __edx, // r3 signed int* __rax // r53 ) {// addr = 0x004A7DB1 signed int _v10; // _cfa_fffffff6 intOrPtr _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 _unknown_ _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed short _v76; // _cfa_ffffffb4 signed long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed int* _t73; // _t73 long long _t88; // _t88 _t73 = __rax; _v64 = _t88; _v72 = __rsi; _v88 = _t79; _v76 = __edx; _v16 = 0; while(_v16 < _t73) { _v10 = (_t73 + 1 + _v72[_v72]) & 0xff | ( *(_t73 + 1 + _v72) & 0xff) << 8; _t73 = _v64; _t79 = _v16 + 4; *(_t73 + 12 + (_v16 + 4) * 4) = _v10; _v16 = _v16 + 1; } _v16 = 0; while(_v16 < _t73) { __esi = *((intOrPtr*)(_v64 + 12 + (_v16 + 4) * 4)); TX_UPS( *((intOrPtr*)(_v64 + 12 + (_v16 + 4) * 4)), _t79, &_v56, _v64, __rsi); _t79 = ?_? ( &_v56); _t73 = _v64; __rsi = &_v56; CVSD_TX(_v64 + _v88, _t73, __rsi); _v16 = _v16 + 1; } return (_v76 & 65535) >> 1 & 65535; } CVSD_Decode( signed short __edx, // r3 signed int* __rax // r53 ) {// addr = 0x004A7EA5 char _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 char _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int _v76; // _cfa_ffffffb4 long long _v88; // _cfa_ffffffa8 _unknown_ __rbp; // r59 signed int* _t44; // _t44 _unknown_ _t46; // _t46 signed int* _t47; // _t47 long long _t52; // _t52 _t44 = __rax; _v64 = __rdi; _v72 = _t52; _v88 = __rcx; _v76 = __edx; _v12 = 0; while(_v12 < _t44) { __esi = *(_t44 + _v72) & 255; CVSD_RX(0, *(_t44 + _v72) & 255, _t44 + _v72, &_v56); _t46 = &_v56; RX_DS(0, _t46, &_v16, _t46); _t47 = _t46 + _v88; *_t47 = _v16; _t44 = &(_t47[0]) + _v88; *_t44 = (_v16 & 65280) >> 8; _v12 = _v12 + 1; } return (_v76 & 65535) + (_v76 & 65535); } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004A7F44 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } casting_uint32( signed char* __rdi // r57 ) {// addr = 0x004A7F73 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return *_v16 & 0xff | ((_v16[1]) & 0xff | ((_v16[2]) & 0xff | (sil & 4294967295L) << 8) << 8) << 8; } BTCoex_Initialize() {// addr = 0x004A7FC9 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t32; // _t32 signed int _t36; // _t36 long long _t64; // _t64 _v32 = _t64; *(_v32 + 191472) = 0; *(_v32 + 191473) = 0; *(_v32 + 191474) = 0; *(_v32 + 191475) = 0; *(_v32 + 191477) = 0; _v12 = 0; if((_t32 & 1) == 0) { _v12 = 4294967295; _v24 = _v12; } else { RT_PCI_IO_READ32(); _v24 = _v12; } _t36 = _v24 & 0xc0; _v24 = _t36; if((_t36 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } BTCoex_CheckHighPriorityProfile() {// addr = 0x004A80AC signed int _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 short _v14; // _cfa_fffffff2 signed short _v16; // _cfa_fffffff0 signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 char _v84; // _cfa_ffffffac signed int _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed short _t145; // _t145 long long _t176; // _t176 intOrPtr _t179; // _t179 intOrPtr _t184; // _t184 long long _t186; // _t186 long long _t206; // _t206 intOrPtr _t210; // _t210 intOrPtr _t222; // _t222 long long _t228; // _t228 long long _t236; // _t236 _v80 = _t236; _v96 = _t228; _v84 = sil; _v88 = _t145; _t176 = _v96; _v24 = casting_uint32(_t176); LM_SearchACLByConnectionHandle(_t176); _v64 = _t176; if(_v64 == 0) { L36: return; } _v56 = *((intOrPtr*)(_v64 + 72)); _t179 = _v56; _t115 = *(_t179 + 20) & 65535; if(( *(_t179 + 20) & 65535) != 25) { if((_v23 & 0x30) == 0) { L18: _v16 = casting_uint16(_v96 + 4); _v14 = casting_uint16(_v96 + 6); _t115 = _v88 & 65535; if((_v88 & 65535) != (_v16 & 65535) + 8 || _v14 != 1) { goto L36; } else { _t184 = _v96; _t115 = *(_t184 + 8) & 255; _v9 = *(_t184 + 8) & 255; if(_v9 != 2) { goto L36; } _t186 = _v96 + 12; _v12 = casting_uint16(_t186); if(_v12 == 25) { LM_Find_Link_Table_Entry_By_Connection_Handle(_v24 & 0xfff, _t186, _v80 + 60216); _v32 = _t186; *(_v56 + 20) = _v12 & 65535; *(_v56 + 16) = 1; if(( *(_v56 + 17) & 255) == 0) { *(_v56 + 17) = 1; } KeQuerySystemTime(_v56 + 24); LLINK_ChangeLCLinkPriority(1); BTCoex_EventCallback(); if(( *(_v56 + 1) & 255) > 1 && (( *(_v56 + _v56 + 4) & 255) >> 4 & 0xf) == 0) { BTCoex_EventCallback(); } LMbw_Adjust_Link_Priority(); return; } if(_v12 == 17 || _v12 == 19) { if(( *(_v56 + 20) & 0x13) == 0) { BTCoex_EventCallback(); } *(_v56 + 20) = _v12 & 65535; return; } else { if(_v12 != 15) { goto L36; } *(_v56 + 20) = _v12 & 65535; return; } } } _t115 = _v23 & 0x30; if((_v23 & 0x30) != 32) { goto L36; } goto L18; } if(_v88 <= 600) { goto L36; } else { KeQuerySystemTime(_v56 + 24); if(( *(_v56 + 16) & 255) == 0) { *(_v56 + 16) = 1; BTCoex_EventCallback(); } _t206 = _v56; if(( *(_t206 + 17) & 255) == 0) { L7: LM_Find_Link_Table_Entry_By_Connection_Handle(_v24 & 0xfff, _t206, _v80 + 60216); _v48 = _t206; if(_v84 == 0) { *(_v56 + 17) = 3; } else { *(_v56 + 17) = 2; _t210 = _v56; _t144 = *(_t210 + 18) & 65535; if(( *(_t210 + 18) & 65535) == 10) { _v40 = *((intOrPtr*)(_v64 + 80)); if( *((intOrPtr*)(_v40 + 96)) != 0 && *((intOrPtr*)(_v40 + 104)) != 0 && *((intOrPtr*)( *((intOrPtr*)(_v40 + 104)) + 16)) != 0) { _t222 = *((intOrPtr*)( *((intOrPtr*)(_v40 + 104)) + 16)); _t144 = *(_t222 + 1) & 255; if(( *(_t222 + 1) & 255) == 0) { r8d = 1; _t144 = LCCMD_ChangeLinkPriorityRequest(); } } } } LMbw_Adjust_Link_Priority(); return; } _t206 = _v56; _t115 = *(_t206 + 17) & 255; if(( *(_t206 + 17) & 255) != 1) { goto L36; } goto L7; } } BTCoex_Task() {// addr = 0x004A8424 char _v9; // _cfa_fffffff7 _unknown_ _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 long long _t46; // _t46 _v48 = _t46; _v9 = 0; while(_v9 <= 6) { _v9 = _v9 + 1; } return; } BTCoex_EventCallback() {// addr = 0x004A84DF signed int _v12; // _cfa_fffffff4 signed char _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 _unknown_ _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc signed int _v72; // _cfa_ffffffb8 signed int _v80; // _cfa_ffffffb0 signed int _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t37; // _t37 signed int _t64; // _t64 _v48 = __rdi; _t37 = _t64; _v52 = _t37; _v16 = 0; if((_t37 & 1) == 0) { _v16 = 4294967295; _v24 = _v16; } else { __rcx = &_v16; __rsi = __rcx; __rdi = *_v48 + 900; RT_PCI_IO_READ32(); _v24 = _v16; } _v12 = _v24 & 0x3f; if((_v52 & 255) <= 14) { goto __rax; } r8d = *(_v48 + 191477) & 0xff; r9d = _v24 & 0x3f; r10d = _v12; _v72 = r8d; _v80 = *(_v48 + 191476) & 0xff; _v88 = *(_v48 + 191475) & 0xff; _v96 = *(_v48 + 191474) & 0xff; *__rsp = *(_v48 + 191473) & 0xff; r8d = r10d; DebugPrint(0, _v48, __rcx, __rdx, __rdi, __rsi); return; } Bth_EEPROM_READ16( _unknown_ __rax // r53 ) {// addr = 0x004A9270 signed short _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 signed int _v52; // _cfa_ffffffcc _unknown_ __rbp; // r59 signed int _t71; // _t71 signed int _t73; // _t73 signed int _t74; // _t74 signed int _t76; // _t76 signed int _t79; // _t79 signed int _t89; // _t89 signed int _t111; // _t111 signed int _t126; // _t126 signed int _t129; // _t129 signed int _t132; // _t132 signed int _t153; // _t153 signed int _t162; // _t162 signed int _t170; // _t170 char* _t176; // _t176 _v48 = _t170; _t71 = _t111; _v52 = _t71; _v32 = 0; _v24 = 0; _v16 = 0; _t126 = *(_v48 + 191488); if((_t71 & 1) == 0) { _v16 = 4294967295; _t73 = _v16; _v32 = _t126; } else { _t162 = *_v48 + 964; _t176 = &_v16; _t170 = _t162; RT_PCI_IO_READ32(); _t73 = _v16; _v32 = _t162; } while(1) { _t74 = _t73 & 2147483648; if(_v32 == 0 || _v24 > 100) { break; } _v24 = _v24 + 1; _t89 = rtbt_usec_delay(_t74, _t170); _v16 = 0; _t153 = *(_v48 + 191488); if((_t89 & 1) == 0) { _v16 = 4294967295; _v32 = _t153; } else { _t153 = *_v48 + 964; _t176 = &_v16; _t170 = _t153; RT_PCI_IO_READ32(); _v32 = _t153; } _t169 = _v32; _t73 = 4294967295; if(_v32 != _t153) { continue; } else { _t74 = DebugPrint(0, *(_v48 + 191488), *(_v48 + 191488), _t169, _t170, _t176); break; } } _v16 = 0; _t129 = *(_v48 + 191488); if((_t74 & 1) == 0) { _v16 = 4294967295; _t76 = _v16; _v32 = _t129; } else { RT_PCI_IO_READ32(); _t76 = _v16; _v32 = *_v48 + 900; } if((_t76 & 1) != 0) { RT_PCI_IO_WRITE32(); } _t132 = _v48; _t78 = *(_t132 + 42) & 255; if(( *(_t132 + 42) & 255) == 0) { _t79 = rtbt_prom_read16(_t78); } else { _t79 = eFuseRead(_t78); } _v32 = _v32; if((_t79 & 1) != 0) { RT_PCI_IO_WRITE32(); } return _v10 & 65535; } Bth_EEPROM_WRITE16( _unknown_ __rax // r53 ) {// addr = 0x004A94E8 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed int _v48; // _cfa_ffffffd0 short _v52; // _cfa_ffffffcc signed int _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t71; // _t71 signed int _t73; // _t73 signed int _t74; // _t74 signed int _t76; // _t76 signed int _t78; // _t78 signed int _t88; // _t88 signed int _t103; // _t103 short _t113; // _t113 signed int _t128; // _t128 signed int _t131; // _t131 signed int _t155; // _t155 signed int _t164; // _t164 signed int _t171; // _t171 char* _t177; // _t177 _v48 = _t171; _t71 = _t103; _v52 = _t113; _v56 = _t71; _v32 = 0; _v24 = 0; _v12 = 0; _t128 = *(_v48 + 191488); if((_t71 & 1) == 0) { _v12 = 4294967295; _t73 = _v12; _v32 = _t128; } else { _t164 = *_v48 + 964; _t177 = &_v12; _t171 = _t164; RT_PCI_IO_READ32(); _t73 = _v12; _v32 = _t164; } while(1) { _t74 = _t73 & 2147483648; if(_v32 == 0 || _v24 > 100) { break; } _v24 = _v24 + 1; _t88 = rtbt_usec_delay(_t74, _t171); _v12 = 0; _t155 = *(_v48 + 191488); if((_t88 & 1) == 0) { _v12 = 4294967295; _v32 = _t155; } else { _t155 = *_v48 + 964; _t177 = &_v12; _t171 = _t155; RT_PCI_IO_READ32(); _v32 = _t155; } _t170 = _v32; _t73 = 4294967295; if(_v32 != _t155) { continue; } else { _t74 = DebugPrint(0, *(_v48 + 191488), *(_v48 + 191488), _t170, _t171, _t177); break; } } _v12 = 0; _t131 = *(_v48 + 191488); if((_t74 & 1) == 0) { _v12 = 4294967295; _t76 = _v12; _v32 = _t131; } else { RT_PCI_IO_READ32(); _t76 = _v12; _v32 = *_v48 + 900; } if((_t76 & 1) != 0) { RT_PCI_IO_WRITE32(); } _t78 = *(_v48 + 42) & 255; if(_t78 == 0) { _t78 = rtbt_prom_write16(); } else { eFuseWrite(); } _v32 = _v32; if((_t78 & 1) == 0) { return; } else { RT_PCI_IO_WRITE32(); return; } } BthReadEEPROMParameters() {// addr = 0x004A9765 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return; } BthInitAsicFromEEPROM() {// addr = 0x004A978C long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return; } eFusePhysicalReadRegisters( long long __rcx // r55 ) {// addr = 0x004A97B4 signed int _v26; // _cfa_ffffffe6 signed char _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed int _v37; // _cfa_ffffffdb signed int _v38; // _cfa_ffffffda signed int _v40; // _cfa_ffffffd8 char _v48; // _cfa_ffffffd0 _unknown_ _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t72; // _t72 signed int _t88; // _t88 signed int _t91; // _t91 signed int _t102; // _t102 signed int _t116; // _t116 signed short _t125; // _t125 unsigned int _t138; // _t138 long long _t170; // _t170 _v64 = _t170; _t72 = _t116; _v80 = __rcx; _v68 = _t125; _v72 = _t72; _v36 = 0; if((_t72 & 1) == 0) { _v36 = 4294967295; _v40 = _v36; } else { RT_PCI_IO_READ32(); _v40 = _v36; } _v38 = _v38 & 0xfc00 | _v68 & 0x3f0; _v40 = _v40 & 0x3f | 64; _v37 = _v37 & 255 | 64; _t171 = &_v48; _t88 = RtlCopyMemory(4, &_v48, &_v40) & 1; if(_t88 != 0) { _t171 = *_v64 + 804; _t88 = RT_PCI_IO_WRITE32(); } _v32 = 0; while(_v32 <= 99) { _t102 = _t88 & 4; if( *((intOrPtr*)(_v64 + 48)) == 0) { _v36 = 0; if((_t102 & 1) == 0) { _v36 = 4294967295; _v40 = _v36; } else { _t171 = *_v64 + 804; RT_PCI_IO_READ32(); _v40 = _v36; } _t106 = _v37 & 0x40; if((_v37 & 0x40) != 0) { _t88 = rtbt_usec_delay(_t106, _t171); _v32 = _v32 + 1; continue; } } else { } break; } _t91 = (_v68 & 0xc) + 808; _v26 = _t91; _v36 = 0; _t138 = *(_v64 + 191488); if((_t91 & 1) == 0) { _v36 = 4294967295; _v48 = _t138; } else { RT_PCI_IO_READ32(); _v48 = _v64 + *_v64; } _v48 = _v48 >> (_v68 & 3) << 3; RtlCopyMemory(_v72 & 65535, _v80, &_v48); return; } eFuseReadRegisters( long long __rcx // r55 ) {// addr = 0x004A99FC signed int _v26; // _cfa_ffffffe6 signed char _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc signed int _v37; // _cfa_ffffffdb signed int _v38; // _cfa_ffffffda signed int _v40; // _cfa_ffffffd8 char _v48; // _cfa_ffffffd0 _unknown_ _v64; // _cfa_ffffffc0 signed int _v68; // _cfa_ffffffbc signed int _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t81; // _t81 signed int _t95; // _t95 signed int _t96; // _t96 signed int _t101; // _t101 signed int _t119; // _t119 signed int _t133; // _t133 signed short _t142; // _t142 signed long long _t154; // _t154 unsigned int _t156; // _t156 long long _t185; // _t185 _v64 = _t185; _t81 = _t133; _v80 = __rcx; _v68 = _t142; _v72 = _t81; _v36 = 0; if((_t81 & 1) == 0) { _v36 = 4294967295; _v40 = _v36; } else { RT_PCI_IO_READ32(); _v40 = _v36; } _v38 = _v38 & 0xfc00 | _v68 & 0x3f0; _v40 = _v40 & 0x3f; _v37 = _v37 & 255 | 64; _t186 = &_v48; _t95 = RtlCopyMemory(4, &_v48, &_v40); _t154 = *(_v64 + 191488); _t96 = _t95 & 1; if(_t96 != 0) { _t154 = *_v64 + 804; _t186 = _t154; _t96 = RT_PCI_IO_WRITE32(); } _v32 = 0; while(_v32 <= 99) { _t154 = *(_v64 + 48); _t119 = _t96 & 4; if(_t154 == 0) { _v36 = 0; _t154 = *(_v64 + 191488); if((_t119 & 1) == 0) { _v36 = 4294967295; _v40 = _v36; } else { _t154 = *_v64 + 804; _t186 = _t154; RT_PCI_IO_READ32(); _v40 = _v36; } _t123 = _v37 & 0x40; if((_v37 & 0x40) != 0) { _t96 = rtbt_usec_delay(_t123, _t186); _v32 = _v32 + 1; continue; } } else { } break; } if((_v40 & 0x3f) != 63) { _t101 = (_v68 & 0xc) + 808; _v26 = _t101; _v36 = 0; _t156 = *(_v64 + 191488); if((_t101 & 1) == 0) { _v36 = 4294967295; _v48 = _t156; } else { RT_PCI_IO_READ32(); _v48 = _v64 + *_v64; } _v48 = _v48 >> (_v68 & 3) << 3; RtlCopyMemory(_v72 & 65535, _v80, &_v48); } else { _v32 = 0; while(((_v72 & 65535) >> 1 & 65535) > _v32) { _t154 = (_t154 << 2) + _v80; *_t154 = 65535; _v32 = _v32 + 1; } } return _v40 & 0x3f; } eFuseReadPhysical() {// addr = 0x004A9C86 signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 long long _v24; // _cfa_ffffffe8 signed short* _v32; // _cfa_ffffffe0 signed short* _v48; // _cfa_ffffffd0 signed short* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 intOrPtr _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed short* _t36; // _t36 long long _t38; // _t38 long long _t40; // _t40 long long _t42; // _t42 signed short* _t43; // _t43 _v48 = _t43; _v56 = __rsi; _v64 = _t40; _v72 = _t38; _v80 = r8; _v32 = _v56; _v24 = _v72; _v12 = *_v32 & 65535; _t36 = _v32; _v10 = (_t36[1]) & 65535; _v14 = 0; while((_v14 & 65535) < _v10) { _t42 = _t36 + _t36 + _v24; _t36 = _v48; eFusePhysicalReadRegisters(_t42); _v14 = _v14 + 2; } return; } eFuseRead( _unknown_ __eax // r0 ) {// addr = 0x004A9D17 char _v9; // _cfa_fffffff7 signed short _v12; // _cfa_fffffff4 signed short _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc short _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 short _t30; // _t30 short _t32; // _t32 long long _t34; // _t34 long long _t36; // _t36 long long _t38; // _t38 long long _t39; // _t39 _v32 = _t39; _v48 = _t36; _v36 = _t32; _v40 = _t30; _t34 = _v48; _v24 = _t34; _v16 = 0; _v12 = 0; while((_v12 & 65535) < _v40) { _t38 = _t34 + _t34 + _v24; _t34 = _v32; __rcx = _t38; _v9 = eFuseReadRegisters(_t38); _v12 = _v12 + 2; } return _v16; } eFusePhysicalWriteRegisters( signed char __rdx // r56 ) {// addr = 0x004A9D94 signed short _v10; // _cfa_fffffff6 signed char _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec signed int _v21; // _cfa_ffffffeb signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 char _v32; // _cfa_ffffffe0 char _v72; // _cfa_ffffffb8 _unknown_ _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac short _v88; // _cfa_ffffffa8 signed int _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 signed int _t160; // _t160 signed int _t161; // _t161 signed int _t176; // _t176 signed int _t188; // _t188 signed int _t201; // _t201 signed int _t202; // _t202 short _t235; // _t235 signed short _t257; // _t257 signed long long _t285; // _t285 char* _t286; // _t286 signed int _t287; // _t287 char* _t320; // _t320 signed int _t341; // _t341 signed char _t349; // _t349 signed long long _t351; // _t351 long long _t356; // _t356 _unknown_ _t363; // _t363 _t349 = __rdx; _v80 = _t356; _v96 = _t341; _v84 = _t257; _v88 = _t235; r8d = *_v96 & 0xffff; _t160 = DebugPrint(0, _v96, _t341, __rdx, _t356, _t363); RtlFillMemory(32, 0, &_v72); _t161 = _t160 & 4; if( *((intOrPtr*)(_v80 + 48)) != 0) { return; } _v20 = 0; if((_t161 & 1) == 0) { _v20 = 4294967295; _v24 = _t349; } else { RT_PCI_IO_READ32(); _v24 = _t349; } _v22 = _v22 & 0xfc00 | _v84 & 0x3f0; _v24 = _v24 & 0x3f | 64; _v21 = _v21 & 255 | 64; _t358 = &_v32; _t176 = RtlCopyMemory(4, &_v32, &_v24) & 1; if(_t176 != 0) { _t358 = *_v80 + 804; _t176 = RT_PCI_IO_WRITE32(); } _v16 = 0; while(_v16 <= 99) { _t176 = _t176 & 4; if( *((intOrPtr*)(_v80 + 48)) == 0) { _v20 = 0; if((_t176 & 1) == 0) { _v20 = 4294967295; _v24 = _t349; } else { _t358 = *_v80 + 804; RT_PCI_IO_READ32(); _v24 = _t349; } _t223 = _v21 & 0x40; if((_v21 & 0x40) != 0) { _t176 = rtbt_usec_delay(_t223, _t358); _v16 = _v16 + 1; continue; } } else { } break; } _v10 = 808; _v16 = 0; while(_v16 <= 3) { _v20 = 0; _t285 = *(_v80 + 191488); if((_t176 & 1) == 0) { _v20 = 4294967295; _t286 = &_v72; _t351 = 0 + _t285 * 8 + _t286; _t176 = _v20; *_t351 = _t286; } else { RT_PCI_IO_READ32(); _t320 = &_v72; _t351 = 0 + (_v80 + *_v80) * 8 + _t320; _t176 = _v20; *_t351 = _t320; } _v10 = _v10 + 4; _v16 = _v16 + 1; } _v10 = (_v84 & 0xc) >> 2; _t287 = _v96; _v32 = _t287; if((_v84 & 3) == 0) { _t188 = _t287; *(__rbp + (_v10 & 65535) * 8 - 64) = *(__rbp + _t287 * 8 - 64) | _v32; } else { _t188 = _t287; *(__rbp + (_v10 & 65535) * 8 - 64) = _t351 | _v32 << 16; } _v10 = 808; _v16 = 0; while(_v16 <= 3) { _t188 = _t188 & 1; if(_t188 != 0) { _t188 = RT_PCI_IO_WRITE32(); } _v10 = _v10 + 4; _v16 = _v16 + 1; } _v22 = _v22 & 0xfc00 | _v84 & 0x3f0; _v24 = _v24 & 255 | 192; _v21 = _v21 & 255 | 64; _t359 = &_v32; _t201 = RtlCopyMemory(4, &_v32, &_v24) & 1; if(_t201 != 0) { _t359 = *_v80 + 804; _t201 = RT_PCI_IO_WRITE32(); } _v16 = 0; while(_v16 <= 99) { _t202 = _t201 & 4; if( *((intOrPtr*)(_v80 + 48)) == 0) { _v20 = 0; if((_t202 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t359 = *_v80 + 804; RT_PCI_IO_READ32(); _v24 = _v20; } _t206 = _v21 & 0x40; if((_v21 & 0x40) != 0) { _t201 = rtbt_usec_delay(_t206, _t359); _v16 = _v16 + 1; continue; } break; } else { return; } L44: } return; goto L44; } eFuseWritePhysical() {// addr = 0x004AA24F signed int _v10; // _cfa_fffffff6 signed int _v12; // _cfa_fffffff4 signed short _v14; // _cfa_fffffff2 signed short* _v24; // _cfa_ffffffe8 signed short* _v32; // _cfa_ffffffe0 signed short* _v48; // _cfa_ffffffd0 signed short* _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 intOrPtr _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed short* _t37; // _t37 long long _t39; // _t39 long long _t41; // _t41 signed char _t43; // _t43 signed short* _t44; // _t44 _v48 = _t44; _v56 = __rsi; _v64 = _t41; _v72 = _t39; _v80 = r8; _v32 = _v56; _v12 = *_v32 & 65535; _v10 = (_v32[1]) & 65535; _t37 = &(_v32[2]); _v24 = _t37; _v14 = 0; while((_v14 & 65535) < _v10) { _t43 = _t37 + _t37 + _v24; _t37 = _v48; eFusePhysicalWriteRegisters(_t43); _v14 = _v14 + 2; } return; } eFuseWriteRegisters() {// addr = 0x004AA2E4 signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 signed int _v28; // _cfa_ffffffe4 signed int _v30; // _cfa_ffffffe2 signed int _v32; // _cfa_ffffffe0 signed short _v34; // _cfa_ffffffde signed int _v36; // _cfa_ffffffdc signed int _v38; // _cfa_ffffffda char _v40; // _cfa_ffffffd8 signed int _v52; // _cfa_ffffffcc signed int _v54; // _cfa_ffffffca char _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 signed long long _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed short _v104; // _cfa_ffffff98 signed short* _v112; // _cfa_ffffff90 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed short _t415; // _t415 signed short _t471; // _t471 signed long long _t492; // _t492 char* _t493; // _t493 char* _t500; // _t500 char* _t502; // _t502 signed short* _t506; // _t506 _unknown_ _t508; // _t508 signed long long _t510; // _t510 char* _t513; // _t513 _v96 = _t510; _v112 = _t506; _v100 = _t471; _v104 = _t415; _v34 = 65535; _v26 = 1; _v64 = 0; r9d = *_v112 & 0xffff; r8d = _v104 & 65535; DebugPrint(0, _v112, _t506, _t508, _t510, _t513); _v30 = _v100 & 0xfe; _t509 = ?_? ( &_v40); _t492 = _v96; _t507 = ?_? ( &_v40); _t511 = _t492; _v25 = eFuseReadRegisters( &_v40); if(_v25 != 63) { _v34 = _v25 & 255; L12: r8d = _v25 & 255; DebugPrint(0, _t492, _t507, _t509, _t511, _t513); if(_v34 != 255) { _v36 = 0; while(_v36 <= 7) { _v32 = (_v34 & 65535) << 4; _v56 = (_v36 & 65535) + (_v36 & 65535) + _v32; _v54 = 2; _v52 = 0; _t493 = &_v56; _t509 = &(_t493[4]); _t513 = &_v56; _t492 = _v96; r8d = 2; _t507 = &(_t493[4]); _t511 = _t492; eFuseReadPhysical(); *(__rbp + _t492 * 2 - 80) = _v52 & 65535; _v36 = _v36 + 1; } if(( *(__rbp + _t492 * 2 - 80) & 65535 | *_v112 & 65535) == ( *_v112 & 65535)) { L20: _t497 = (_v100 & 65535) >> 1 & 7; *(__rbp + _t497 * 2 - 80) = *_v112 & 65535; do { DebugPrint(0, _t497, _t507, _t509, _t511, _t513); if(_v26 != 0) { r8d = _v52 & 0xffff; DebugPrint(0, _t497, _t507, _t509, _t511, _t513); _v32 = (_v34 & 65535) << 4; _v56 = (_v100 & 0xf) + _v32; _v54 = 2; _v52 = *_v112 & 65535; _t513 = &_v56; _t497 = _v96; r8d = 2; _t511 = _v96; eFuseWritePhysical(); L27: _v32 = (_v34 & 65535) + 480; _v28 = _v32 & 65535; if((_v32 & 1) != 0) { _v32 = _v32 - 1; } _v56 = _v32 & 65535; _v54 = 2; _v30 = _v100 & 65535; _v30 = _v30 >> 4; _v30 = _v30 & 65535 | !((_v30 & 65535) >> 3 & 1 ^ _v30 & 1 ^ (_v30 & 65535) >> 1 & 1 ^ (_v30 & 65535) >> 2 & 1) << 6 & 64; _v30 = _v30 & 65535 | !((_v30 & 65535) >> 5 & 1 ^ (_v30 & 65535) >> 2 & 1 ^ (_v30 & 65535) >> 3 & 1 ^ (_v30 & 65535) >> 4 & 1) << 7 & 255; if((_v28 & 1) == 0) { _v52 = _v30 & 65535; } else { _v52 = (_v30 & 65535) << 8; } DebugPrint(0, _t497, _t507, _t509, _t511, _t513); _t513 = &_v56; _t499 = _v96; r8d = 0; _t511 = _v96; eFuseWritePhysical(); _v26 = 1; _v36 = 0; while(_v36 <= 7) { _v32 = (_v34 & 65535) << 4; _v56 = (_v36 & 65535) + (_v36 & 65535) + _v32; _v54 = 2; _v52 = 0; _t500 = &_v56; _t509 = &(_t500[4]); _t513 = &_v56; _t499 = _v96; r8d = 2; _t507 = &(_t500[4]); _t511 = _t499; eFuseReadPhysical(); _t309 = _v52 & 65535; if(( *(__rbp + _t499 * 2 - 80) & 65535) == (_v52 & 65535)) { _v36 = _v36 + 1; continue; } _v26 = 0; break; } if(_v26 != 0) { L65: _v64 = _v64 + 1; if(_v26 != 0 || _v64 > 199) { break; } else { goto L67; } } DebugPrint(0, _t499, _t507, _t509, _t511, _t513); _v32 = (_v34 & 65535) + 480; _v34 = 65535; _v36 = 480; while(_v36 <= 509) { _t509 = &_v38; _t499 = _v96; _t507 = &_v38; _t511 = _v96; eFusePhysicalReadRegisters( &_v38); if((_v38 & 0xff) != 0) { if(((_v38 & 65535) >> 8 & 0xff) != 0) { _v36 = _v36 + 2; continue; } if(_v36 != 509) { _v34 = (_v36 & 65535) - 479; } L48: DebugPrint(0, _t499, _t507, _t509, _t511, _t513); if(_v34 != 255) { _v28 = _v32 & 65535; if((_v32 & 1) != 0) { _v32 = _v32 - 1; } _v56 = _v32 & 65535; _v54 = 2; _t502 = &_v56; _t509 = &(_t502[4]); r8d = 2; _t507 = &(_t502[4]); eFuseReadPhysical(); _t309 = _v28 & 1; if((_v28 & 1) == 0) { _v36 = 0; while(_v36 <= 7) { _t309 = (_v52 & 0xffff) >> (_v36 & 65535) & 1; if(((_v52 & 0xffff) >> (_v36 & 65535) & 1) != 0) { _v36 = _v36 + 1; continue; } _t309 = 1 << (_v36 & 65535) | _v52 & 65535; _v52 = 1 << (_v36 & 65535) | _v52 & 65535; goto L64; } } else { _v36 = 8; while(_v36 <= 14) { _t309 = (_v52 & 0xffff) >> (_v36 & 65535) & 1; if(((_v52 & 0xffff) >> (_v36 & 65535) & 1) != 0) { _v36 = _v36 + 1; continue; } _t309 = 1 << (_v36 & 65535) | _v52 & 65535; _v52 = 1 << (_v36 & 65535) | _v52 & 65535; L64: _t513 = &_v56; r8d = 0; _t511 = _v96; eFuseWritePhysical(); goto L65; } } goto L64; } DebugPrint(0, _t499, _t507, _t509, _t511, _t513); return 4294967295; } _v34 = (_v36 & 65535) - 480; goto L48; } goto L48; } _v36 = 0; while(_v36 <= 7) { _v32 = (_v34 & 65535) << 4; _v56 = (_v36 & 65535) + (_v36 & 65535) + _v32; _v54 = 2; _v52 = *(__rbp + _t497 * 2 - 80) & 65535; _t513 = &_v56; _t497 = _v96; r8d = 2; _t511 = _t497; eFuseWritePhysical(); _v36 = _v36 + 1; } goto L27; L67: _t497 = *(_v96 + 48); } while(_t497 == 0); return 0; } _t509 = &_v38; _t507 = &_v38; _t511 = _v96; eFusePhysicalReadRegisters( &_v38); if((_v38 & 0xff) == 0) { goto L20; } return 4294967295; } DebugPrint(0, _t492, _t507, _t509, _t511, _t513); return 4294967295; } _v36 = 480; while(_v36 <= 509) { _t509 = &_v38; _t492 = _v96; _t507 = &_v38; _t511 = _t492; eFusePhysicalReadRegisters( &_v38); r8d = _v38 & 0xffff; DebugPrint(0, _t492, &_v38, &_v38, _t492, _t513); if((_v38 & 0xff) != 0) { if(((_v38 & 65535) >> 8 & 0xff) != 0) { _v36 = _v36 + 2; continue; } if(_v36 != 509) { _v34 = (_v36 & 65535) - 479; } goto L12; } _v34 = (_v36 & 65535) - 480; goto L12; } goto L12; } eFuseWrite() {// addr = 0x004AAA61 signed short _v10; // _cfa_fffffff6 signed short _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 short _v36; // _cfa_ffffffdc short _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 short _t28; // _t28 short _t30; // _t30 long long _t34; // _t34 long long _t37; // _t37 _v32 = _t37; _v48 = _t34; _v36 = _t30; _v40 = _t28; _v16 = 0; _v24 = _v48; _v10 = 0; while((_v10 & 65535) < _v40) { eFuseWriteRegisters(); _v10 = _v10 + 2; } return; } RaiseClock() {// addr = 0x004AAADC _unknown_ _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t11; // _t11 _v16 = __rdi; _v24 = __rsi; *_v24 = *_v24 | 1; _t12 = _t11 & 1; if((_t11 & 1) != 0) { __rdi = *_v16 + 772; _t12 = RT_PCI_IO_WRITE32(); } rtbt_usec_delay(_t12, __rdi); return; } LowerClock() {// addr = 0x004AAB4E _unknown_ _v16; // _cfa_fffffff0 signed int* _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 signed int _t11; // _t11 _v16 = __rdi; _v24 = __rsi; *_v24 = *_v24 & 254; _t12 = _t11 & 1; if((_t11 & 1) != 0) { __rdi = *_v16 + 772; _t12 = RT_PCI_IO_WRITE32(); } rtbt_usec_delay(_t12, __rdi); return; } ShiftInBits() {// addr = 0x004AABC0 signed int _v10; // _cfa_fffffff6 signed int _v16; // _cfa_fffffff0 signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t45; // _t45 signed int _t47; // _t47 signed int _t49; // _t49 signed int _t60; // _t60 signed int _t65; // _t65 long long _t82; // _t82 _v48 = _t82; _v10 = 0; _v16 = 0; _t60 = *(_v48 + 191488); if((_t45 & 1) == 0) { _v16 = 4294967295; _t47 = _v16; _v32 = _t60; } else { RT_PCI_IO_READ32(); _t47 = _v16; _v32 = *_v48 + 772; } _v32 = _v32 & 243; _v24 = 0; while(_v24 <= 15) { _v10 = _v10 << 1; RaiseClock(); _v16 = 0; _t65 = *(_v48 + 191488); if((_t47 & 1) == 0) { _v16 = 4294967295; _t49 = _v16; _v32 = _t65; } else { RT_PCI_IO_READ32(); _t49 = _v16; _v32 = *_v48 + 772; } LowerClock(); _v32 = _v32 & 251; _t47 = _t49 & 8; if(_v32 != 0) { _v10 = _v10 | 1; } _v24 = _v24 + 1; } return _v10 & 65535; } ShiftOutBits( short __edx, // r3 signed int __rax // r53 ) {// addr = 0x004AAD06 intOrPtr _v28; // _cfa_ffffffe4 unsigned long long _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 _unknown_ _v64; // _cfa_ffffffc0 signed short _v68; // _cfa_ffffffbc short _v72; // _cfa_ffffffb8 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 signed int _t54; // _t54 signed int _t55; // _t55 signed short _t74; // _t74 signed int _t84; // _t84 signed long long _t88; // _t88 long long _t116; // _t116 _v64 = _t116; _v68 = _t74; _v72 = __edx; _v40 = __rax; _v28 = 0; _t84 = *(_v64 + 191488); if((__rax & 1) == 0) { _v28 = 4294967295; _v48 = _t84; } else { RT_PCI_IO_READ32(); _v48 = *_v64 + 772; } _v48 = _v48 & 243; do { _t88 = _v48 & 251; _v48 = _t88; _t54 = _v68 & 65535; if((_t88 & _v40) != 0) { _v48 = _v48 | 4; } _t55 = _t54 & 1; if(_t55 != 0) { _t55 = RT_PCI_IO_WRITE32(); } RaiseClock(); LowerClock(); _v40 = _v40 >> 1; } while(_v40 != 0); _v48 = _v48 & 251; if((_t55 & 1) != 0) { RT_PCI_IO_WRITE32(); return; } return; } EEpromCleanup() {// addr = 0x004AAE8D signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t26; // _t26 signed int _t28; // _t28 signed int _t38; // _t38 long long _t56; // _t56 _v32 = _t56; _v12 = 0; _t38 = *(_v32 + 191488); if((_t26 & 1) == 0) { _v12 = 4294967295; _t28 = _v12; _v24 = _t38; } else { RT_PCI_IO_READ32(); _t28 = _v12; _v24 = *_v32 + 772; } _v24 = _v24 & 249; if((_t28 & 1) != 0) { RT_PCI_IO_WRITE32(); } RaiseClock(); LowerClock(); return; } EWEN() {// addr = 0x004AAF6A signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t31; // _t31 signed int _t33; // _t33 signed int _t48; // _t48 long long _t71; // _t71 _v32 = _t71; _v12 = 0; _t48 = *(_v32 + 191488); if((_t31 & 1) == 0) { _v12 = 4294967295; _t33 = _v12; _v24 = _t48; } else { RT_PCI_IO_READ32(); _t33 = _v12; _v24 = *_v32 + 772; } _v24 = _v24 & 242; _v24 = _v24 | 2; if((_t33 & 1) != 0) { RT_PCI_IO_WRITE32(); } RaiseClock(); LowerClock(); ShiftOutBits(5, _v32); ShiftOutBits(6, _v32); EEpromCleanup(); return; } EWDS() {// addr = 0x004AB08B signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t31; // _t31 signed int _t33; // _t33 signed int _t48; // _t48 long long _t71; // _t71 _v32 = _t71; _v12 = 0; _t48 = *(_v32 + 191488); if((_t31 & 1) == 0) { _v12 = 4294967295; _t33 = _v12; _v24 = _t48; } else { RT_PCI_IO_READ32(); _t33 = _v12; _v24 = *_v32 + 772; } _v24 = _v24 & 242; _v24 = _v24 | 2; if((_t33 & 1) != 0) { RT_PCI_IO_WRITE32(); } RaiseClock(); LowerClock(); ShiftOutBits(5, _v32); ShiftOutBits(6, _v32); EEpromCleanup(); return; } rtbt_prom_read16( _unknown_ __eax // r0 ) {// addr = 0x004AB1AC signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t41; // _t41 signed int _t43; // _t43 signed int _t57; // _t57 signed int _t64; // _t64 long long _t86; // _t86 long long _t90; // _t90 _v32 = _t90; _v48 = _t86; _v36 = _t57; _t41 = (_v36 & 65535) >> 1; _v36 = _t41; _v12 = 0; _t64 = *(_v32 + 191488); if((_t41 & 1) == 0) { _v12 = 4294967295; _t43 = _v12; _v24 = _t64; } else { RT_PCI_IO_READ32(); _t43 = _v12; _v24 = *_v32 + 772; } _v24 = _v24 & 242; _v24 = _v24 | 2; if((_t43 & 1) != 0) { RT_PCI_IO_WRITE32(); } RaiseClock(); LowerClock(); ShiftOutBits(3, _v32); ShiftOutBits(8, _v32); *_v48 = ShiftInBits(); EEpromCleanup(); return 0; } rtbt_prom_write16() {// addr = 0x004AB2FB signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc short _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t55; // _t55 signed int _t57; // _t57 signed int _t58; // _t58 signed int _t60; // _t60 short _t72; // _t72 signed int _t79; // _t79 signed int _t89; // _t89 signed int _t102; // _t102 long long _t123; // _t123 _v32 = _t123; _v36 = _t79; _v40 = _t72; _t55 = (_v36 & 65535) >> 1; _v36 = _t55; EWEN(); _v12 = 0; _t89 = *(_v32 + 191488); if((_t55 & 1) == 0) { _v12 = 4294967295; _t57 = _v12; _v24 = _t89; } else { RT_PCI_IO_READ32(); _t57 = _v12; _v24 = *_v32 + 772; } _v24 = _v24 & 242; _v24 = _v24 | 2; _t58 = _t57 & 1; if(_t58 != 0) { _t58 = RT_PCI_IO_WRITE32(); } RaiseClock(); LowerClock(); ShiftOutBits(3, _v32); ShiftOutBits(8, _v32); ShiftOutBits(16, _v32); _v12 = 0; _t102 = *(_v32 + 191488); if((_t58 & 1) == 0) { _v12 = 4294967295; _t60 = _v12; _v24 = _t102; } else { RT_PCI_IO_READ32(); _t60 = _v12; _v24 = *_v32 + 772; } EEpromCleanup(); rtbt_usec_delay(_t60, _v32); EWDS(); EEpromCleanup(); return 0; } BthUserCfgInit( long long __rdi // r57 ) {// addr = 0x004AB4E0 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; __rax = _v16; *((intOrPtr*)(__rax + 191480)) = 4294967295; *((intOrPtr*)(__rax + 191484)) = 0; return; } RtbtReceiveACLCPacket( _unknown_ __rax // r53 ) {// addr = 0x004AB504 signed char _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 signed int* _v72; // _cfa_ffffffb8 _unknown_ __rbp; // r59 _unknown_ _t27; // _t27 long long _t42; // _t42 signed int* _t47; // _t47 long long _t49; // _t49 long long _t54; // _t54 _v48 = _t49; _v56 = _t54; _v64 = __rdx; _v72 = _t47; _v10 = 0; _v9 = 1; DebugPrint(0, __rax, _t47, __rdx, _t49, _t54); if(_v48 != 0) { QUEUE_EnqueueRequest(); _v32 = *((intOrPtr*)(_v48 + 32)); if(_v32 != 0) { _t42 = _v32; _t27 = QUEUE_GetDataBuf(_t42); _v24 = _t42; RtlCopyMemory(_t27, _v24, _v56); QUEUE_EnqueueCommit(); _v10 = 1; } } *_v72 = _v9 & 255; return _v10 & 255; } RtbtReceiveACLUPacket() {// addr = 0x004AB5BC signed int _v9; // _cfa_fffffff7 signed int _v10; // _cfa_fffffff6 signed short _v22; // _cfa_ffffffea signed int _v23; // _cfa_ffffffe9 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 signed short* _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 intOrPtr _v96; // _cfa_ffffffa0 signed int* _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 _unknown_ _t110; // _t110 _unknown_ _t156; // _t156 long long _t158; // _t158 long long _t169; // _t169 long long _t174; // _t174 long long _t186; // _t186 long long _t188; // _t188 long long _t193; // _t193 _unknown_ _t194; // _t194 long long _t195; // _t195 signed short* _t201; // _t201 long long _t202; // _t202 _v64 = _t193; _v72 = _t201; _v80 = _t188; _v88 = _t186; _v96 = r8; _v104 = r9; _v10 = 0; _v9 = 1; DebugPrint(0, _t156, _t186, _t188, _t193, _t201); _t158 = *((intOrPtr*)(_v96 + 80)); _t190 = _v64 + 60216; _t202 = _t158; _t194 = _v64 + 60216; LM_Find_Link_Table_Entry_By_LLink(); _v48 = _t158; if(_v48 != 0) { *(_v96 + 12) = ((_v72[1]) & 255) >> 1 & 1; if(_v88 != 0) { _v24 = 0; _v23 = _v23 & 0xcf | (((_v72[1]) & 255) >> 4 & 3) << 4; _v23 = _v23 & 0x3f | ((_v72[1]) & 255) >> 6 << 6; _v22 = *_v72 & 0xfff; _v24 = _v24 & 0xf000 | *(_v48 + 626) & 0xfff; if(((_v72[1]) & 0xc0) == 64 || ((_v72[1]) & 0xc0) == 128) { if(( *(_v48 + 2) & 255) != 0) { goto L8; } *_v104 = 1; DebugPrint(0, _v104, _t186, _t190, _t194, _t202); return; } else { L8: _t169 = *((intOrPtr*)(_v96 + 32)); _t195 = _t169; QUEUE_EnqueueRequest(); _v40 = _t169; if(_v40 == 0) { *(_v64 + 190501) = 1; _v10 = 1; r9d = *(_v96 + 13) & 0xff; r8 = _v88; DebugPrint(0, _v96, _t186, _v88, _t195, _t202); DebugPrint(0, _v96, _t186, _v88, _t195, _t202); } else { _t174 = _v40; _t110 = QUEUE_GetDataBuf(_t174); _v32 = _t174; RtlCopyMemory(_t110, _v32, _v80); QUEUE_EnqueueCommit(); _v10 = 1; _v9 = 1; RtbtHalHCIReceiveACLData(); r8 = _v88; DebugPrint(0, _v96, _v80, _v88, _v64, _v80); r8d = 0; Bth_Dbg_DumpBuffer(_v80, _v88, _v32, _v88); } *_v104 = _v9 & 255; return; } } *_v104 = 1; return; } *_v104 = 1; return; } RtbtReceiveSyncPacket( intOrPtr _a8 // _cfa_8 ) {// addr = 0x004AB877 char _v9; // _cfa_fffffff7 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 char _v44; // _cfa_ffffffd4 char _v48; // _cfa_ffffffd0 char* _v56; // _cfa_ffffffc8 intOrPtr _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 char _t24; // _t24 char _t31; // _t31 char _t35; // _t35 char* _t46; // _t46 intOrPtr* _t47; // _t47 char* _t49; // _t49 long long _t52; // _t52 _v32 = _t52; _v40 = __rsi; _v56 = r8; _v64 = r9; _v44 = _t35; _v48 = _t31; _t46 = &_v24; _t53 = _t46; KeQuerySystemTime(_t46); r8 = _t46; _t24 = DebugPrint(0, _t46, __rcx, __rdx, _t46, __rsi); _t47 = pCodecFunc; _t48 = *((intOrPtr*)(_t47 + 8)); if( *((intOrPtr*)(_t47 + 8)) == 0) { DebugPrint(0, _t48, __rcx, __rdx, _t53, __rsi); _v9 = 0; } else { r10 = *((intOrPtr*)(pCodecFunc + 8)); r9 = _v64; r8 = _v56; __rsi = _v40; *__rsp = _a8; r10(); _v9 = _t24; } _t49 = &_v24; KeQuerySystemTime(_t49); r8 = _t49; DebugPrint(0, _t49, __rcx, __rdx, _t49, __rsi); return; } RtbtReceivePacket() {// addr = 0x004AB95A signed int _v25; // _cfa_ffffffe7 signed int _v26; // _cfa_ffffffe6 char _v27; // _cfa_ffffffe5 signed int _v28; // _cfa_ffffffe4 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 intOrPtr _v68; // _cfa_ffffffbc long long _v80; // _cfa_ffffffb0 char* _v88; // _cfa_ffffffa8 char* _v96; // _cfa_ffffffa0 _unknown_ __rbx; // r54 _unknown_ __rbp; // r59 char _t69; // _t69 intOrPtr _t109; // _t109 long long _t114; // _t114 char* _t140; // _t140 long long _t143; // _t143 long long _t147; // _t147 _unknown_ _t154; // _t154 intOrPtr _t155; // _t155 _v64 = _t147; _v68 = _t109; _v80 = _t143; _v88 = _t140; _v96 = r8; _v27 = 0; _v28 = 1; _v48 = 0; _t114 = _v80; _t145 = _v64 + 30560; _t148 = _v64 + 30560; _t69 = LLINK_SearchUsedLinkByLLIndx( *(_t114 + 5) & 0x1f, _t114, _v64 + 30560); _v48 = _t114; if(_v48 != 0) { if( *((intOrPtr*)(_v48 + 40)) == 0) { _v26 = ( *(_v80 + 1) & 255) >> 4 | ( *(_v80 + 2) & 3) << 4; _v25 = ( *(_v80 + 3) & 255) >> 3 & 3; if(( *(_v48 + 1) & 0xff) > 24) { r8d = *(_v48 + 1) & 0xff; DebugPrint(0, _v48, _t140, _t145, _t148, _t154); _t155 = _v80; RXBI_TRACE(); if((_v28 & 255) != 0) { if( *((intOrPtr*)( *((intOrPtr*)(_v48 + 104)) + 24)) != 0) { r8d = *( *((intOrPtr*)( *((intOrPtr*)(_v48 + 104)) + 24)) + 4) & 0xff; DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v48 + 104)) + 24)), _t140, _t145, _t148, _t155); } r8 = _v96; r9 = r8; r8 = _v88; PDMA_RX_TRACE(); } if(_v27 != 0) { SetPollMode(); } return _v28 & 255; } goto __rax; } r10 = *((intOrPtr*)(_v48 + 40)); r8 = &_v28; r9 = r8; r8 = _v96; r10(); _v27 = _t69; return _v28 & 255; } RXBI_TRACE(); return 1; } casting_uint16( signed char* __rdi // r57 ) {// addr = 0x004ABE34 signed char* _v16; // _cfa_fffffff0 signed char* _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return ((_v16[1]) & 0xff) << 8 | *_v16 & 0xff; } SetPollMode() {// addr = 0x004ABE63 intOrPtr _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t43; // _t43 _v32 = __rdi; _v16 = 1; _t43 = _v32; __rdx = ?_? ( &_v16); ioctl(); _v12 = 0; if(_v12 >= 0) { if( *((intOrPtr*)(_v32 + 191676)) >= 0) { _t46 = _v32; *((intOrPtr*)(_v32 + 191676)) = _v32 + 1; } else { _t46 = _v32; *((intOrPtr*)(_v32 + 191676)) = 1; } DebugPrint(0, _t46, __rcx, __rdx, __rdi, __rsi); } else { DebugPrint(0, _t43, __rcx, &_v16, __rdi, __rsi); perror(); } if( *((intOrPtr*)(_v32 + 191676)) > 65534) { *((intOrPtr*)(_v32 + 191676)) = 4095; return; } return; } Write2BlueZ() {// addr = 0x004ABF37 intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc signed int _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed short _t31; // _t31 intOrPtr _t41; // _t41 intOrPtr _t48; // _t48 long long _t49; // _t49 intOrPtr _t52; // _t52 _v32 = __rdi; _v36 = _t41; _v48 = _t49; _v40 = _t31; _v24 = &bzwrite; *_v24 = _v36; *(_v24 + 4) = _v40 & 65535; *((long long*)(_v24 + 8)) = _v48; _t48 = _v32; _t52 = _v24; ioctl(); _v12 = 0; if(_v12 >= 0) { r9 = _v48; r8d = _v40 & 65535; DebugPrint(0, _t48, _v48, _t52, __rdi, __rsi); return; } DebugPrint(0, _t48, _t49, _t52, __rdi, __rsi); perror(); return; } RtbtHalCancelHCIReceiveSCOData() {// addr = 0x004ABFF9 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t11; // _t11 long long _t14; // _t14 _v32 = _t14; _v12 = 0; DebugPrint(0, _t11, __rcx, __rdx, _t14, __rsi); *((char*)(_v32 + 190497)) = 1; RtbtHalHCIReceiveSCOData(); return _v12; } hps_sco_traffic_notification() {// addr = 0x004AC041 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 char _v20; // _cfa_ffffffec signed char _v32; // _cfa_ffffffe0 signed char* _v40; // _cfa_ffffffd8 _unknown_ _v48; // _cfa_ffffffd0 signed int* _v56; // _cfa_ffffffc8 char* _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 intOrPtr _t111; // _t111 char* _t118; // _t118 long long _t150; // _t150 _v80 = _t150; ral_spin_lock(_v80 + 30536, &_v64); if(( *(_v80 + 190328) & 65535) != 0) { _v20 = *(_v80 + 190328) & 0xffff; *(_v80 + 190328) = 0; } _t158 = _v64; ral_spin_unlock(_v80 + 30536, _v64); if(_v20 == 0 || *((intOrPtr*)(_v80 + 190336)) == 0) { L13: return; } else { _v48 = *((intOrPtr*)(_v80 + 190336)); _v56 = *((intOrPtr*)(_v80 + 190336)) + 3; _v12 = 0; _v16 = 0; while(_v16 <= 3) { _t111 = _v80; _t141 = _t111 + 66296; _v40 = ((_v16 << 2) + _v16 << 5) + _t111 + 66296; if(( *_v40 & 255) == 4 && (_v40[0x48]) != 0) { _v32 = (_v40[0x48]); if( *((intOrPtr*)(_v32 + 48)) != 0) { *((short*)(_v32 + 14)) = QUEUE_GetNumCompletedPkt( *((intOrPtr*)(_v32 + 48))); r8d = _v20; DebugPrint(0, *((intOrPtr*)(_v32 + 48)), _t141, _v32, *((intOrPtr*)(_v32 + 48)), _t158); _v12 = _v12 + 1; RtlCopyMemory(2, _v56, &(_v40[8])); _t158 = &_v20; RtlCopyMemory(2, &(_v56[0]), &_v20); _v56 = &(_v56[1]); } } _v16 = _v16 + 1; } if(_v12 == 0) { goto L13; } _t118 = _v48; *_t118 = 19; *((char*)(_v48 + 1)) = _t118 + 1; _v56 = *((intOrPtr*)(_v80 + 190336)) + 2; *_v56 = _v12; Write2BlueZ(); return; } } RtbtHalHCIReceiveSCOData() {// addr = 0x004AC257 signed short _v9; // _cfa_fffffff7 short _v12; // _cfa_fffffff4 signed int _v14; // _cfa_fffffff2 signed int _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec signed long long _v32; // _cfa_ffffffe0 signed long long _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed char _v56; // _cfa_ffffffc8 signed char* _v64; // _cfa_ffffffc0 signed long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 signed long long _v88; // _cfa_ffffffa8 signed short _v96; // _cfa_ffffffa0 char _v104; // _cfa_ffffff98 long long _v112; // _cfa_ffffff90 _unknown_ __rbp; // r59 signed int _t143; // _t143 _unknown_ _t158; // _t158 signed long long _t233; // _t233 intOrPtr _t242; // _t242 signed long long _t258; // _t258 signed long long _t263; // _t263 signed char* _t274; // _t274 intOrPtr _t280; // _t280 _unknown_ _t293; // _t293 signed long long _t294; // _t294 long long _t295; // _t295 _v112 = _t295; _v20 = 4294967292; DebugPrint(0, _t233, &( &(_v64[0x68])[(_v64[0x98]) & 65535]), _t293, _t295, _v88); _v104 = 4244967296; ral_mem_alloc(556, 1, _t233); _v72 = _t233; if(_v72 != 0) { *(_v112 + 190497) = 0; *(_v112 + 191595) = 0; if(( *(_v112 + 190497) & 255) != 0) { L4: r9d = *(_v112 + 190499) & 0xff; r8d = *(_v112 + 190497) & 0xff; _t143 = DebugPrint(0, _v112, _t289, _t293, _t295, _t306); L5: _t240 = _v112 + 190480; _t294 = &_v104; r8 = _t294; _t296 = _v112 + 190480; KeWaitForSingleObject(0, 0, 0, _v112 + 190480); if(_t143 == 253) { DebugPrint(0, _t240, _t289, _t294, _t296, _t306); } _v9 = 0; while(_v9 <= 2) { _t241 = _v112; if(( *(_v112 + 190499) & 255) == 0) { _t242 = _v112; _t289 = _t242 + 66296; _v64 = ((_t294 << 2) + _t294 << 5) + _t242 + 66296; if(( *_v64 & 255) != 4 || (_v64[0x48]) == 0) { L23: *(_v112 + 191595) = _v112 + 1 - 0xaaaaaaac + ((_v112 + 1) * 1431655766 >> 32) - (_v112 + 1 >> 31); _v9 = _v9 + 1; continue; } else { _v96 = 0; _v56 = (_v64[0x48]); while(1) { _t258 = *((intOrPtr*)(_v56 + 32)); _t296 = _t258; QUEUE_DequeueRequest(_t258); _v48 = _t258; if(_v48 == 0) { goto L23; } _v40 = _v72; _t158 = QUEUE_GetPktHdr(_v48); _t294 = _v40; *_t294 = _t158; *(_v40 + 2) = 48; _v16 = QUEUE_GetBufLength(_v48); _t263 = _v48; QUEUE_GetDataBuf(_t263); _v32 = _t263; _t289 = _v32; *__rsp = (_v64[0x98]) & 65535; r9 = _v32; r8d = _v16 & 65535; DebugPrint(0, _v64, _v32, _t294, _t263, _t306); if(_v16 == 0) { continue; } _v88 = _v32; _v96 = 0; do { _v80 = _v72 + 3; _v14 = 48; _v12 = ((_v64[0x98]) & 65535) + _v16; if(_v12 <= 47) { _t289 = &( &(_v64[0x68])[(_v64[0x98]) & 65535]); _t306 = _v88; RtlCopyMemory(_v16 & 65535, &( &(_v64[0x68])[(_v64[0x98]) & 65535]), _v88); _t274 = _v64; (_t274[0x98]) = ((_v64[0x98]) & 65535) + _v16; _v96 = &(_t274[_v96]); _v12 = _v12 - (_v16 & 65535); } else { if(((_v64[0x98]) & 65535) != 0) { RtlCopyMemory((_v64[0x98]) & 65535, _v80, &(_v64[0x68])); _v80 = _v80 + ((_v64[0x98]) & 65535); _v14 = _v14 - ((_v64[0x98]) & 65535); (_v64[0x98]) = 0; } _t306 = _v88; RtlCopyMemory(_v14 & 65535, _v80, _v88); _t294 = _v72; _t280 = _v112; _t289 = _t294; Write2BlueZ(); _v88 = _v88 + _t280; _v96 = _v96 + _t280; _v16 = _v16 - (_v14 & 65535); _v12 = _v12 - 48; } } while(_v12 != 0); QUEUE_DequeueCommit( *(_v56 + 32)); } goto L23; } } _v20 = 4294967292; DebugPrint(0, _t241, _t289, _t294, _t296, _t306); break; } if(_v72 != 0) { ral_mem_free(_v72); } return _v20; } _t143 = *(_v112 + 190499) & 255; if(_t143 == 0) { goto L5; } goto L4; } DebugPrint(0, _t233, _t289, _t293, _t295, _t306); return 4294967294; } rtbt_hal_hci_sco_task() {// addr = 0x004AC6AB long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t25; // _t25 _v32 = _t25; _v16 = _v32; ral_task_customize(_v16 + 190312); DebugPrint(0, _v16 + 190312, __rcx, __rdx, _v16 + 190312, __rsi); RtbtHalHCIReceiveSCOData(); DebugPrint(0, _v16, __rcx, __rdx, _v16, __rsi); ral_task_notify_exit(_v16 + 190312); return 0; } RtbtHalHCISendSCOData() {// addr = 0x004AC728 intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 char _v40; // _cfa_ffffffd8 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 intOrPtr _t34; // _t34 long long _t54; // _t54 long long _t58; // _t58 intOrPtr _t62; // _t62 long long _t64; // _t64 intOrPtr _t67; // _t67 _v64 = _t58; _v72 = _t64; _v80 = _t54; _v32 = _v64; _v24 = _v32 + 190224; _v16 = 4294967294; if(_v32 == 0) { return _v16; } _v56 = 4244967296; if(_v72 == 0) { _v16 = 4294967291; } else { if( *((intOrPtr*)(_v24 + 24)) != 0) { r8 = *((intOrPtr*)(_v24 + 24)); _t67 = _v72; _t52 = _v24; _t62 = _v24; r8(); _v12 = _t34; if(_v12 == 0) { _v16 = 0; DebugPrint(0, _t52, __rcx, _t54, _t62, _t67); SetPollMode(); } } } if(_v16 != 0) { _v16 = 0; } ral_spin_lock(_v32 + 30536, &_v40); _BRM_Transmit_Sync_Packet(); ral_spin_unlock(_v32 + 30536, _v40); return _v16; } RtbtHalCancelHCIGetEvent() {// addr = 0x004AC836 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t8; // _t8 _unknown_ _t11; // _t11 long long _t14; // _t14 _v32 = _t14; _v12 = 0; _t8 = DebugPrint(0, _t11, __rcx, __rdx, _t14, __rsi); *((char*)(_v32 + 190498)) = 1; RtbtHalHCIGetEvent(_t8); return _v12; } RtbtHalFillHCIEvent( intOrPtr __rax // r53 ) {// addr = 0x004AC87E signed int _v10; // _cfa_fffffff6 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v64; // _cfa_ffffffc0 char _v68; // _cfa_ffffffbc char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 intOrPtr _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 char _t57; // _t57 intOrPtr _t61; // _t61 long long _t62; // _t62 long long _t64; // _t64 long long _t68; // _t68 long long _t72; // _t72 long long _t75; // _t75 long long _t78; // _t78 _t61 = __rax; _v64 = _t78; _v80 = _t75; _v88 = _t72; _v96 = r8; _v68 = _t57; _v72 = r9d; _v48 = 0; while(QUEUE_IsEmpty(_t61) == 0) { _t62 = _v80; QUEUE_DequeueRequest(_t62); _v40 = _t62; if(_v40 != 0) { _t64 = _v40; _v10 = QUEUE_GetBufLength(_t64); _t41 = _v10 & 65535; if(_t64 + _v48 + 2 > _v96) { } else { _v24 = QUEUE_GetPktHdr(_v40); _t68 = _v40; QUEUE_GetDataBuf(_t68); _v32 = _t68; RtlCopyMemory(2, _v88, &_v24); if(_v10 != 0) { RtlCopyMemory(_v10 & 65535, _v88 + 2, _v32); } _t61 = _v80; QUEUE_DequeueCommit(_t61); _v48 = _v48 + _t61; _v88 = _v88 + _t61; if(_v72 != 0) { continue; } } } L11: return; } goto L11; } RtbtHalHCIEventTrace() {// addr = 0x004AC9B0 signed char _v23; // _cfa_ffffffe9 short _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v56; // _cfa_ffffffc8 short _v68; // _cfa_ffffffbc char _v71; // _cfa_ffffffb9 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 _unknown_ _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 char* _t44; // _t44 long long _t47; // _t47 long long _t49; // _t49 _v80 = _t49; _v88 = __rsi; _v96 = _t47; _v32 = 0; _v72 = 0; _v71 = 4; _v40 = _v80; while(_v32 < _v96) { _v24 = casting_uint16(_v88); _v56 = _v88; _v68 = (_v23 & 0xff) + 2; _t44 = &_v72; _t49 = _t44; HCI_TRACE(); _v32 = _v32 + _t44; _v88 = _v88 + _t44; } if(_v32 != _v96) { r8 = _v32; __rcx = _v96; DebugPrint(0, _v96, _v96, _v32, _t49, __rsi); return; } return; } RtbtHalHCIGetEvent( _unknown_ __eax // r0 ) {// addr = 0x004ACA63 signed int _v9; // _cfa_fffffff7 char _v23; // _cfa_ffffffe9 char _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 signed long long _v56; // _cfa_ffffffc8 signed long long _v64; // _cfa_ffffffc0 char _v72; // _cfa_ffffffb8 long long _v80; // _cfa_ffffffb0 long long _v88; // _cfa_ffffffa8 long long _v96; // _cfa_ffffffa0 _unknown_ __rbp; // r59 _unknown_ _t69; // _t69 intOrPtr _t70; // _t70 _unknown_ _t119; // _t119 signed long long _t120; // _t120 signed long long _t134; // _t134 long long _t135; // _t135 _unknown_ _t141; // _t141 _unknown_ _t146; // _t146 intOrPtr _t148; // _t148 long long _t152; // _t152 long long _t156; // _t156 _v96 = _t152; _v28 = 4294967292; _t69 = DebugPrint(0, _t119, _t141, _t146, _t152, __rsi); _v64 = 257; _t120 = _v64; _t70 = ral_mem_alloc(_t69, 1, _t120); _v56 = _t120; if(_v56 == 0 || _v64 <= 256) { return 4294967294; } RtlZeroMemory(_t70, _v56); _v72 = 4044967296; _v24 = 1; _v23 = 2; _v88 = *((intOrPtr*)(_v96 + 74432)); _v80 = *((intOrPtr*)(_v96 + 74440)); *(_v96 + 190498) = 0; _t147 = ?_? ( &_v72); r8 = &_v72; _t154 = _v96 + 190448; KeWaitForSingleObject(0, 0, 0, _v96 + 190448); _v28 = _t70; if(( *(_v96 + 190498) & 255) != 0 || ( *(_v96 + 190499) & 255) != 0) { _v28 = 4294967292; r9d = *(_v96 + 190498) & 0xff; r8d = *(_v96 + 190499) & 0xff; DebugPrint(0, _v96, _t141, _t147, _t154, __rsi); } if(( *(_v96 + 190499) & 255) != 1) { _v9 = 0; while(_v9 <= 1) { do { _t134 = _v56; _v48 = _t134; _t148 = *((intOrPtr*)(__rbp + _t134 * 8 - 80)); _t135 = _v96; r9d = 0; r8 = _v64; _t156 = _t135; RtbtHalFillHCIEvent(_t135); _v40 = _t135; if(_v40 != 0) { DebugPrint(0, _v40, _v40, _t148, _t156, __rsi); Write2BlueZ(); _t135 = _v96; __rsi = _v56; RtbtHalHCIEventTrace(); } } while(QUEUE_IsEmpty(_t135) == 0); _v9 = _v9 + 1; } if(_v56 != 0) { ral_mem_free(_v56); } return _v28; } else { return 4294967292; } } rtbt_hal_HCI_event_Task() {// addr = 0x004ACCB2 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t25; // _t25 _v32 = _t25; _v16 = _v32; ral_task_customize(_v16 + 190280); RtbtHalHCIGetEvent(DebugPrint(0, _v16 + 190280, __rcx, __rdx, _v16 + 190280, __rsi)); DebugPrint(0, _v16, __rcx, __rdx, _v16, __rsi); ral_task_notify_exit(_v16 + 190280); return 0; } RtbtHalHCICommand() {// addr = 0x004ACD2F intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 intOrPtr _t26; // _t26 long long _t50; // _t50 intOrPtr _t51; // _t51 long long _t53; // _t53 intOrPtr _t54; // _t54 _v48 = _t50; _v56 = _t53; _v64 = __rdx; _v32 = _v48; _v16 = 4294967294; if(_v32 == 0) { return _v16; } _t43 = _v32 + 190224; _v24 = _v32 + 190224; if(_v64 > 2) { if(_v56 == 0) { _v16 = 4294967291; } else { if( *((intOrPtr*)(_v24 + 24)) != 0) { r8 = *((intOrPtr*)(_v24 + 24)); _t54 = _v56; _t48 = _v24; _t51 = _v24; r8(); _v12 = _t26; if(_v12 == 0) { _v16 = 0; DebugPrint(0, _t48, __rcx, __rdx, _t51, _t54); SetPollMode(); } } } return _v16; } else { DebugPrint(0, _t43, __rcx, __rdx, _t50, _t53); return 4294967295; } } RtbtHalHCISendACLData() {// addr = 0x004ACE0F intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 intOrPtr _t25; // _t25 long long _t41; // _t41 intOrPtr _t42; // _t42 long long _t44; // _t44 intOrPtr _t45; // _t45 _v48 = _t41; _v56 = _t44; _v64 = __rdx; _v32 = _v48; _v24 = _v32 + 190224; _v16 = 4294967294; if(_v32 == 0) { return _v16; } if(_v56 == 0) { _v16 = 4294967291; } else { if( *((intOrPtr*)(_v24 + 24)) != 0) { r8 = *((intOrPtr*)(_v24 + 24)); _t45 = _v56; _t39 = _v24; _t42 = _v24; r8(); _v12 = _t25; if(_v12 == 0) { _v16 = 0; DebugPrint(0, _t39, __rcx, __rdx, _t42, _t45); SetPollMode(); } } } return _v16; } RtbtHalCancelHCIReceiveACLData() {// addr = 0x004ACEC5 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t10; // _t10 long long _t13; // _t13 _v32 = _t13; _v12 = 0; DebugPrint(0, _t10, __rcx, __rdx, _t13, __rsi); *((char*)(_v32 + 190496)) = 1; RtbtHalHCIReceiveACLData(); return _v12; } RtbtHalHCIReceiveACLData() {// addr = 0x004ACF0D signed char _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 short _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 char _v72; // _cfa_ffffffb8 signed int _v88; // _cfa_ffffffa8 long long _v104; // _cfa_ffffff98 short _v116; // _cfa_ffffff8c char _v119; // _cfa_ffffff89 signed char _v120; // _cfa_ffffff88 signed int _v128; // _cfa_ffffff80 _unknown_ __rbp; // r59 signed char _t101; // _t101 _unknown_ _t184; // _t184 long long _t206; // _t206 long long _t212; // _t212 intOrPtr _t226; // _t226 _unknown_ _t229; // _t229 intOrPtr _t231; // _t231 signed int _t232; // _t232 long long _t234; // _t234 _v128 = _t232; _v20 = 4294967292; _t101 = DebugPrint(0, _t184, _t226, _t229, _t232, _t245); _v72 = 4244967296; *(_v128 + 190496) = 0; _t230 = ?_? ( &_v72); r8 = &_v72; _t233 = _v128 + 190464; KeWaitForSingleObject(0, 0, 0, _v128 + 190464); _v20 = _t101; if(( *(_v128 + 190496) & 255) != 0) { L2: _t190 = _v128; r9d = *(_v128 + 190499) & 0xff; r8d = *(_v128 + 190496) & 0xff; DebugPrint(0, _v128, _t226, _t230, _t233, _t245); _v20 = 4294967292; L3: if(_v20 == 253) { DebugPrint(0, _t190, _t226, _t230, _t233, _t245); } _v9 = 0; while(_v9 <= 6) { if(( *(_v128 + 190499) & 255) == 0) { _t231 = _v128 + 60224; _v56 = _v128 * 808 + _t231; if(( *(_v56 + 1) & 255) != 1 || *((intOrPtr*)(_v56 + 768)) == 0) { L21: *((char*)(_v128 + 191594)) = _v128 + 1 - ((_t231 + _t226 >> 2) - (_v128 + 1 >> 31) << 3) - (_t231 + _t226 >> 2) - (_v128 + 1 >> 31); _v9 = _v9 + 1; continue; } else { while( *((intOrPtr*)( *((intOrPtr*)(_v56 + 768)) + 32)) != 0) { _t206 = *((intOrPtr*)( *((intOrPtr*)(_v56 + 768)) + 32)); _t234 = _t206; QUEUE_DequeueRequest(_t206); _v48 = _t206; if(_v48 == 0) { r8 = *((intOrPtr*)( *((intOrPtr*)(_v56 + 768)) + 32)); DebugPrint(0, *((intOrPtr*)( *((intOrPtr*)(_v56 + 768)) + 32)), _t226, _t231, _t234, _t245); _v20 = 4294967295; } else { _v24 = QUEUE_GetPktHdr(_v48); _v12 = QUEUE_GetBufLength(_v48); _t212 = _v48; QUEUE_GetDataBuf(_t212); _v40 = _t212; _v16 = (_v12 & 65535) + 4; ral_mem_alloc(_v16, 1, _t212); _v32 = _t212; if(_v32 != 0) { RtlCopyMemory(4, _v32, &_v24); if(_v12 != 0) { RtlCopyMemory(_v12 & 65535, _v32 + 4, _v40); } QUEUE_DequeueCommit( *((intOrPtr*)( *((intOrPtr*)(_v56 + 768)) + 32))); _v20 = 0; _t245 = _v32; hex_dump(_v16, *((intOrPtr*)( *((intOrPtr*)(_v56 + 768)) + 32)), _v32); _t226 = _v32; Write2BlueZ(); _v104 = _v32; _v120 = 0; _v119 = 2; _v88 = _v128; _v116 = _v16; HCI_TRACE(); _t231 = _v32; BTCoex_CheckHighPriorityProfile(); ral_mem_free(_v32); } } if(_v20 != 0) { goto L21; } else { continue; } } goto L21; } } _v20 = 4294967292; break; } return; } _t190 = _v128; if(( *(_v128 + 190499) & 255) == 0) { goto L3; } goto L2; } rtbt_hal_HCI_Acl_Task() {// addr = 0x004AD27B long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t16; // _t16 _v32 = _t16; _v16 = _v32; ral_task_customize(_v16 + 190296); RtbtHalHCIReceiveACLData(); DebugPrint(0, _v16, __rcx, __rdx, _v16, __rsi); ral_task_notify_exit(_v16 + 190296); return 0; } BthInitializeAdapter() {// addr = 0x004AD2E0 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t16; // _t16 long long _t19; // _t19 _v16 = _t19; DebugPrint(0, _t16, __rcx, __rdx, _t19, __rsi); BthInitializeAsic(); BT_Initialise(); DebugPrint(0, _v16, __rcx, __rdx, _v16, __rsi); return 0; } dump_mac_reg() {// addr = 0x004AD342 signed int _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _v32 = __rdi; DebugPrint(0, _t51, _t54, __rdx, __rdi, __rsi); _v12 = 0; while(_v12 <= 63) { _t53 = _v32; _t51 = _v32 + *_t53; _t54 = ?_? ( &_v16); __rsi = ?_? ( &_v16); __rdi = _v32 + *_t53; RT_PCI_IO_READ32(); r8d = _v16; DebugPrint(0, _v32 + *_t53, ?_? ( &_v16), __rdx, __rdi, __rsi); _v12 = _v12 + 1; if((_v12 & 3) == 0) { DebugPrint(0, _t51, &_v16, __rdx, __rdi, __rsi); } } DebugPrint(0, _t51, _t54, __rdx, __rdi, __rsi); return; } BthInitializePrerequire( _unknown_ __rax // r53 ) {// addr = 0x004AD424 signed int _v9; // _cfa_fffffff7 signed int _v12; // _cfa_fffffff4 char _v16; // _cfa_fffffff0 signed char _v21; // _cfa_ffffffeb signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 signed int _v53; // _cfa_ffffffcb signed int _v56; // _cfa_ffffffc8 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t200; // _t200 signed int _t202; // _t202 signed int _t204; // _t204 signed int _t205; // _t205 signed int _t209; // _t209 signed int _t217; // _t217 signed int _t218; // _t218 signed int _t220; // _t220 signed int _t228; // _t228 signed int _t232; // _t232 signed int _t250; // _t250 signed int _t251; // _t251 signed int _t252; // _t252 signed int _t414; // _t414 signed int _t424; // _t424 signed int _t444; // _t444 signed int _t480; // _t480 signed int _t481; // _t481 signed int _t509; // _t509 signed int _t523; // _t523 _unknown_ _t524; // _t524 signed int _t535; // _t535 signed int _t539; // _t539 signed int _t540; // _t540 signed int _t541; // _t541 signed int _t542; // _t542 signed int _t543; // _t543 _unknown_ _t545; // _t545 _v64 = _t535; DebugPrint(0, __rax, _t524, __rdx, _t535, _t545); DebugPrint(0, __rax, _t524, __rdx, _t535, _t545); dump_mac_reg(); _t546 = _v64 + 191488; RT_PCI_IO_READ32(); BthEnableBtFunc(_v64); _t200 = DebugPrint(0, _v64, _v64 + 191488, __rdx, _v64, _v64 + 191488); _t539 = _v64; dump_mac_reg(); _v16 = 0; _t414 = *(_v64 + 191488); if((_t200 & 1) == 0) { _v16 = 4294967295; _t202 = _v16; _v40 = _t414; } else { _t523 = *_v64 + 960; _t546 = &_v16; _t539 = _t523; RT_PCI_IO_READ32(); _t202 = _v16; _v40 = _t523; } _v40 = _v40 | 8; _t203 = _t202 & 1; if((_t202 & 1) != 0) { _t539 = *_v64 + 960; _t203 = RT_PCI_IO_WRITE32(); } _t204 = rtbt_usec_delay(_t203, _t539); _v40 = _v40 & 247; _t205 = _t204 & 1; if(_t205 != 0) { _t539 = *_v64 + 960; _t205 = RT_PCI_IO_WRITE32(); } _v16 = 0; _t424 = *(_v64 + 191488); if((_t205 & 1) == 0) { _v16 = 4294967295; _v56 = _t424; } else { _t509 = *_v64 + 824; _t546 = &_v16; _t539 = _t509; RT_PCI_IO_READ32(); _v56 = _t509; } _t209 = _v53 & 255 | 128; _v53 = _t209; if((_t209 & 1) != 0) { _t539 = *_v64 + 824; RT_PCI_IO_WRITE32(); } _v53 = _v53 & 255 | 128; _v53 = _v53 & 255 | 64; _t217 = _v56 & 0xe000 | 39; _v56 = _t217; _t218 = _t217 & 1; if(_t218 != 0) { _t539 = *_v64 + 824; _t218 = RT_PCI_IO_WRITE32(); } _v16 = 0; if((_t218 & 1) == 0) { _v16 = 4294967295; _t220 = _v16; *(_v64 + 191488) = __rdx; } else { _t546 = &_v16; _t539 = *_v64 + 960; RT_PCI_IO_READ32(); _t220 = _v16; *(_v64 + 191488) = __rdx; } _v24 = 0; _v16 = 0; if((_t220 & 1) == 0) { _v16 = 4294967295; _v24 = _v16; } else { _t546 = &_v16; _t539 = *_v64 + 804; RT_PCI_IO_READ32(); _v24 = _v16; } *(_v64 + 42) = (_v21 & 255) >> 7; _t435 = _v64; if(( *(_v64 + 42) & 255) != 1) { } _t228 = DebugPrint(0, _t435, _t435, __rdx, _t539, _t546); _v32 = 0; do { _v16 = 0; if((_t228 & 1) == 0) { _v16 = 4294967295; *(_v64 + 32) = __rdx; } else { _t546 = &_v16; _t539 = *_v64 + 768; RT_PCI_IO_READ32(); *(_v64 + 32) = __rdx; } if( *(_v64 + 32) != 0) { _t481 = _v64; __rdx = *(_t481 + 32); if(__rdx != _t481) { L32: _t232 = DebugPrint(0, *(_v64 + 32), *(_v64 + 32), __rdx, _t539, _t546); _v16 = 0; _t444 = *(_v64 + 191488); if((_t232 & 1) == 0) { _v16 = 4294967295; _v40 = _t444; } else { _t480 = *_v64 + 1536; _t546 = &_v16; _t539 = _t480; RT_PCI_IO_READ32(); _v40 = _t480; } _t529 = _v40; DebugPrint(0, _v40, _v40, __rdx, _t539, _t546); _t540 = _v64; _v12 = Bth_EEPROM_READ16(_v64); if(_v12 == 255) { *(_v64 + 41) = 0; DebugPrint(0, _v64, _t529, __rdx, _t540, _t546); } else { _v9 = _v12 & 65535; *(_v64 + 41) = _v9 & 255; } DebugPrint(0, _v64, _t529, __rdx, _t540, _t546); _t449 = _v64; _t541 = _v64; _v12 = Bth_EEPROM_READ16(_v64); if(_v12 == 255) { DebugPrint(0, _t449, _t529, __rdx, _t541, _t546); *((char*)(_v64 + 40)) = 255; } else { _v9 = _v12 & 65535; if(_v9 != 160) { if(_v9 != 176) { DebugPrint(0, _t449, _t529, __rdx, _t541, _t546); } else { DebugPrint(0, _t449, _t529, __rdx, _t541, _t546); *((char*)(_v64 + 40)) = 176; } } else { DebugPrint(0, _t449, _t529, __rdx, _t541, _t546); *((char*)(_v64 + 40)) = 160; } } _t542 = _v64; _v12 = Bth_EEPROM_READ16(_v64) >> 8; _t250 = _v12 & 1; if(_t250 == 0 || _v12 == 255) { *((char*)(_v64 + 191499)) = 1; } else { *((char*)(_v64 + 191496)) = 1; _t250 = DebugPrint(0, _v64, _t529, __rdx, _t542, _t546); } *((char*)(_v64 + 191497)) = 1; _t543 = _v64; Rtbth_Set_Radio_Led(); _t251 = _t250 & 1; if(_t251 != 0) { _t543 = *_v64 + 520; _t251 = RT_PCI_IO_WRITE32(); } _t252 = _t251 & 1; if(_t252 != 0) { _t543 = *_v64 + 1024; _t252 = RT_PCI_IO_WRITE32(); } _t460 = *(_v64 + 191488); if((_t252 & 1) != 0) { _t460 = *_v64 + 1024; _t543 = *_v64 + 1024; RT_PCI_IO_WRITE32(); } DebugPrint(0, _t460, _t529, __rdx, _t543, _t546); BthDisableInterrupt(); DebugPrint(0, _v64, _t529, __rdx, _v64, _t546); return; } } KeStallExecutionProcessor(); _t228 = _v32 - 9 < 0; _v32 = _v32 + 1; } while(_t228 != 0); goto L32; } BthInitialize() {// addr = 0x004ADBE1 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t46; // _t46 long long _t55; // _t55 intOrPtr _t58; // _t58 _v32 = _t55; RT_PCI_IO_WRITE32(); BthInitializePrerequire(_v32); _t46 = _v32; _t54 = *(_t46 + 48) | 2; *(_v32 + 48) = *(_t46 + 48) | 2; _t49 = _v32; _t58 = _v32; _v12 = BthInitializeAdapter(); if(_v12 == 0) { BthReadEEPROMParameters(); BthInitAsicFromEEPROM(); BthUserCfgInit(_v32); r8d = _v12; DebugPrint(0, _v32, __rcx, _t54, _v32, __rsi); return _v12; } DebugPrint(0, _t49, __rcx, _t54, _t58, __rsi); return _v12; } BthEnableRxTx() {// addr = 0x004ADCBE intOrPtr _v12; // _cfa_fffffff4 char _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t24; // _t24 intOrPtr _t25; // _t25 _unknown_ _t26; // _t26 char* _t27; // _t27 _v32 = __rdi; DebugPrint(0, _t24, __rcx, _t26, __rdi, __rsi); _v24 = 1; _t25 = _v32; _t27 = &_v24; ioctl(); _v12 = 0; if(_v12 < 0) { perror(); } DebugPrint(0, _t25, __rcx, _t27, __rdi, __rsi); return; } Rtbth_Set_Radio_Led() {// addr = 0x004ADD3C char _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 signed int _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 signed int _t58; // _t58 signed char _t69; // _t69 _unknown_ _t77; // _t77 _unknown_ _t114; // _t114 long long _t121; // _t121 _unknown_ _t126; // _t126 _v32 = _t121; _v36 = _t69; _v16 = 0; _t58 = _v36 & 255; if(_v36 != 1) { } r8d = _t58; DebugPrint(0, _t77, _t77, _t114, _t121, _t126); if(_v36 != 1) { *(_v32 + 191488) = *(_v32 + 191488) & 4294901759; RT_PCI_IO_WRITE32(); RT_PCI_IO_READ32(); DebugPrint(0, _v16, _v16, *(_v32 + 191488) & 4294901759, *_v32 + 960, &_v16); return; } else { *(_v32 + 191488) = *(_v32 + 191488) & 4278190079; *(_v32 + 191488) = *(_v32 + 191488) | 65536; RT_PCI_IO_WRITE32(); RT_PCI_IO_READ32(); DebugPrint(0, _v16, _v16, *(_v32 + 191488) | 65536, *_v32 + 960, &_v16); return; } } BthRadioOff() {// addr = 0x004ADEF7 signed int _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t46; // _t46 _v32 = _t46; *(_v32 + 191488) = *(_v32 + 191488) & 254; __rcx = &_v16; __rsi = __rcx; RT_PCI_IO_READ32(); _v16 = _v16 & 254; RT_PCI_IO_WRITE32(); Rtbth_Set_Radio_Led(); DebugPrint(0, _v32, __rcx, *(_v32 + 191488) & 254, _v32, __rcx); return; } BthRadioOn( _unknown_ __rax // r53 ) {// addr = 0x004ADFAF char _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 signed int _v32; // _cfa_ffffffe0 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t55; // _t55 signed int _t103; // _t103 _unknown_ _t120; // _t120 _unknown_ _t123; // _t123 long long _t130; // _t130 _v48 = _t130; _v32 = *(_v48 + 191488); _v24 = 0; if((DebugPrint(0, *(_v48 + 191488), _t120, _t123, _t130, __rsi) & 1) == 0) { _v32 = _v32 | 5; _v32 = _v32 & 253; _t55 = RT_PCI_IO_WRITE32(); *(_v48 + 191488) = *(_v48 + 191488) | 5; *(_v48 + 191488) = *(_v48 + 191488) & 253; while(1) { _v24 = _v24 + 1; _v32 = 0; _v12 = 0; _t103 = *(_v48 + 191488); if((_t55 & 1) == 0) { _v12 = 4294967295; _v32 = _t103; } else { __rsi = &_v12; RT_PCI_IO_READ32(); _v32 = *_v48 + 800; } if(_v24 > 1000) { break; } if(_v32 == 0) { continue; } L10: *(_v48 + 191488) = *(_v48 + 191488) | 7; RT_PCI_IO_WRITE32(); Rtbth_Set_Radio_Led(); DebugPrint(0, _v24, _v24, *(_v48 + 191488) | 7, _v48, __rsi); return; } goto L10; } return; } rtbt_dev_hw_init( long long __rdi // r57 ) {// addr = 0x004AE18C long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rdi = __rdi; _v32 = __rdi; _v16 = _v32; return 0; } rtbt_dev_hw_deinit( long long __rdi // r57 ) {// addr = 0x004AE1A3 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return 0; } rtbt_dev_resource_init() {// addr = 0x004AE1B2 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; rtbt_pci_resource_init(); return; } rtbt_dev_resource_deinit() {// addr = 0x004AE1CC long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; rtbt_pci_resource_deinit(); return; } rtbt_dev_ctrl_deinit() {// addr = 0x004AE1E6 long long _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t55; // _t55 _v32 = _t55; _v16 = *_v32; if(_v16 != 0) { ral_spin_deinit(_v16 + 30424); ral_spin_deinit(_v16 + 30440); ral_spin_deinit(_v16 + 30456); ral_spin_deinit(_v16 + 30472); ral_spin_deinit(_v16 + 30488); ral_spin_deinit(_v16 + 30504); ral_spin_deinit(_v16 + 30520); ral_spin_deinit(_v16 + 30536); KeDestoryEvent(_v16 + 190432); KeDestoryEvent(_v16 + 190448); KeDestoryEvent(_v16 + 190464); KeDestoryEvent(_v16 + 190480); KeFreeTimer(_v16 + 191520); KeFreeTimer(_v16 + 190368); return 0; } r8 = _v32; DebugPrint(0, _v32, __rcx, __rdx, _t55, __rsi); return 4294967295; } rtbt_dev_ctrl_init() {// addr = 0x004AE336 intOrPtr _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 _unknown_ _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 intOrPtr _v80; // _cfa_ffffffb0 _unknown_ __rbp; // r59 signed int _t93; // _t93 long long _t145; // _t145 intOrPtr _t183; // _t183 _unknown_ _t188; // _t188 _unknown_ _t193; // _t193 long long _t204; // _t204 long long _t224; // _t224 _v64 = _t204; _v72 = _t224; _v24 = 0; _v20 = 0; _v16 = 0; _v12 = 191752; ral_mem_valloc(_v12, _t145); _v48 = _t145; if(_v48 != 0) { RtlZeroMemory(_v12, _v48); _v40 = _v48; _v32 = _v48 + 72; _v80 = _v12; *__rsp = 191680; r9 = _v32; r8d = 72; _t93 = DebugPrint(0, _v40, _v40, _t193, _v48, _t224); *_v40 = _v32; *((long long*)(_v40 + 24)) = rtbt_pci_isr; *((long long*)(_v40 + 32)) = _v72; *((long long*)(_v40 + 48)) = &rtbt_3298_hps_ops; *_v32 = _v72; ral_spin_init(_v32 + 30424); _v24 = _v24 | _t93; ral_spin_init(_v32 + 30440); _v24 = _v24 | _t93; ral_spin_init(_v32 + 30456); _v24 = _v24 | _t93; ral_spin_init(_v32 + 30472); _v24 = _v24 | _t93; ral_spin_init(_v32 + 30488); _v24 = _v24 | _t93; ral_spin_init(_v32 + 30504); _v24 = _v24 | _t93; ral_spin_init(_v32 + 30520); _v24 = _v24 | _t93; ral_spin_init(_v32 + 30536); _v24 = _v24 | _t93; KeInitializeEvent(0, 1, _v32 + 190432); _v16 = _v16 | _t93; KeInitializeEvent(0, 1, _v32 + 190448); _v16 = _v16 | _t93; KeInitializeEvent(0, 1, _v32 + 190464); _v16 = _v16 | _t93; KeInitializeEvent(0, 1, _v32 + 190480); _v16 = _v16 | _t93; _t181 = _v32; KeInitializeDpc(_v32, _v32 + 191504, _t224); ral_timer_init(_v32 + 191520, _t181); _v20 = _v20 | rtmp_timer_RadioStateMonitorDPC; _t192 = _v32 + 190352; _t183 = _v32; KeInitializeDpc(_t183, _v32 + 190352, _t181); _t202 = _v32 + 190368; _t226 = _t183; ral_timer_init(_v32 + 190368, _t183); _v20 = _v20 | rtmp_timer_RtbtCoreIdleTimerFunc; r8d = _v20; DebugPrint(0, _t183, _v32 + 190352, _v32 + 190368, _v32 + 190368, _t183); _t185 = _v32 + 12; _t222 = _v32 + 12; RtlCopyMemory(8, _v32 + 12, _t183); if((_v16 | _v24 | _v20) == 0) { *_v64 = _v40; return 0; } *__rsp = _v20; r9d = _v16; r8d = _v24; DebugPrint(0, _t185, _t192, _t202, _t222, _t226); rtbt_dev_ctrl_deinit(); return 4294967295; } DebugPrint(0, _t145, _t188, _t193, _t204, _t224); return 4294967295; } RTBT_Alloc( long long __rax // r53 ) {// addr = 0x004AE678 long long _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 intOrPtr _t10; // _t10 long long _t14; // _t14 _t14 = __rax; _v28 = _t10; ral_mem_alloc(_v28, 1, __rax); _v16 = _t14; if(_v16 != 0) { __rdi = _v16; RtlZeroMemory(_v28, _v16); } return; } RtbtReadFWTest( _unknown_ __rax // r53 ) {// addr = 0x004AE6B4 char _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t16; // _t16 long long _t28; // _t28 long long _t33; // _t33 _v32 = __rdi; _v24 = 0; _v12 = 0; _t28 = *((intOrPtr*)(_v32 + 191488)); if((_t16 & 1) == 0) { _v12 = 4294967295; _v24 = _t28; } else { _t33 = *_v32 + 1052; __rsi = &_v12; __rdi = _t33; RT_PCI_IO_READ32(); _v24 = _t33; } DebugPrint(0, _v24, _v24, __rdx, __rdi, __rsi); return; } RtbtWriteReadTest( _unknown_ __rax // r53 ) {// addr = 0x004AE749 signed int _v12; // _cfa_fffffff4 signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t47; // _t47 signed int _t48; // _t48 signed int _t51; // _t51 signed int _t52; // _t52 long long _t82; // _t82 long long _t86; // _t86 long long _t92; // _t92 _unknown_ _t105; // _t105 _unknown_ _t110; // _t110 _v48 = __rdi; _t47 = DebugPrint(0, __rax, _t105, _t110, __rdi, __rsi); _v24 = 0; while(_v24 <= 3299) { _v32 = 305419896; _t48 = _t47 & 1; if(_t48 != 0) { __rdi = *_v48 + 552; _t48 = RT_PCI_IO_WRITE32(); } _v12 = 0; _t82 = *((intOrPtr*)(_v48 + 191488)); if((_t48 & 1) == 0) { _v12 = 4294967295; _v32 = _t82; } else { _t82 = *_v48 + 552; __rsi = &_v12; __rdi = _t82; RT_PCI_IO_READ32(); _v32 = _t82; } _t111 = _v32; _t51 = 4294967295; if(_v32 != _t82) { _t51 = DebugPrint(0, _v32, _v32, _t111, __rdi, __rsi); } _v32 = 305419896; _t52 = _t51 & 1; if(_t52 != 0) { __rdi = *_v48 + 552; _t52 = RT_PCI_IO_WRITE32(); } _v12 = 0; _t86 = *((intOrPtr*)(_v48 + 191488)); if((_t52 & 1) == 0) { _v12 = 4294967295; _t47 = _v12; _v32 = _t86; } else { _t92 = *_v48 + 552; __rsi = &_v12; __rdi = _t92; RT_PCI_IO_READ32(); _t47 = _v12; _v32 = _t92; } if(_v32 != 0) { _t47 = DebugPrint(0, _v32, _v32, _t111, __rdi, __rsi); } _v24 = _v24 + 1; } return; } handler( intOrPtr __edi, // r4 long long __rdx, // r56 long long __rsi // r58 ) {// addr = 0x004AE92C intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdx = __rdx; _v12 = __edi; _v24 = __rsi; _v32 = __rdx; puts(); g_is_exit = 1; return; } bt_detect( signed int __rax, // r53 _unknown_ __rcx // r55 ) {// addr = 0x004AE955 signed int _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 signed int _t134; // _t134 intOrPtr* _t140; // _t140 signed int _t146; // _t146 signed int _t147; // _t147 _unknown_ _t152; // _t152 intOrPtr* _t158; // _t158 intOrPtr* _t160; // _t160 signed int _t161; // _t161 _t134 = __rax; i = 0; while(1) { __eflags = i - 100; if(i > 100) { break; } RtlFillMemory(32, 0, _t161); sprintf(); __stat(); __eflags = ?_? ( &rfkill_dir); if( &rfkill_dir != 0) { _t161 = _t134; printf(); L16: i = i + 1; continue; } printf(); RtlFillMemory(64, 0, _t134); _v16 = 4294967295; asm("repne scasb "); _t158 = !_v16 - 1; strncat(); r8d = &type_file; _v16 = 4294967295; asm("repne scasb "); _t140 = !_v16 - 1 + r8; *_t140 = *_t158; *(_t140 + 4) = *(_t158 + 4) & 65535; RtlFillMemory(64, 0, !_v16); _v16 = 4294967295; asm("repne scasb "); _t160 = !_v16 - 1; strncat(); r8d = &name_file; _v16 = 4294967295; asm("repne scasb "); _t146 = !_v16 - 1 + r8; *_t146 = *_t160; *(_t146 + 4) = *(_t160 + 4) & 65535; open(); fd_type = 0; __eflags = fd_type; if(fd_type >= 0) { printf(); _exit(); } _t161 = _t146; printf(); read(); sz = _t146; _t147 = sz; __eflags = _t147; if(_t147 <= 0) { L10: open(); fd_name = 0; __eflags = fd_name; if(fd_name < 0) { _exit(); } read(); sz = _t147; _t134 = sz; __eflags = _t134; if(__eflags <= 0) { goto L16; } else { _t134 = sz - 1; *(_t134 + &name_file) = 0; asm("rep cmpsb "); if(__eflags != 0) { _t161 = _t134; printf(); goto L16; } printf(); close(); fd_name = 4294967295; return 1; } } else { *(sz - 1 + &type_file) = 0; _t152 = sz - 1; __eflags = _t152 - 10; _t134 = _t152 - 10 > 0 ? _t160 : _t152; __eflags = _t134 - _t134; asm("rep cmpsb "); __eflags = _t134 - _t134 > 0 != _t134 - _t134 > 0; if(_t134 - _t134 > 0 != _t134 - _t134 > 0) { _t161 = _t134; printf(); goto L16; } _t161 = _t134; printf(); close(); fd_type = 4294967295; goto L10; } } close(); close(); fd_type = 4294967295; fd_name = 4294967295; return fd_name; } bt_on( signed int __ecx, // r2 _unknown_ __edi, // r4 _unknown_ __esp, // r7 long long __rax, // r53 intOrPtr* __rdx, // r56 _unknown_ __rsi // r58 ) {// addr = 0x004AED88 signed int _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _t93 = __rdx; _t76 = __rax; if(fd_state == 255) { _push(__ecx << 0); _push(0); _push(__edi); memset(); _v16 = 4294967295; asm("repne scasb "); _t93 = !_v16 - 1; strncat(); r8d = &state_file; _v16 = 4294967295; asm("repne scasb "); _t76 = !_v16 - 1 + r8; *_t76 = *_t93; *(_t76 + 4) = *(_t93 + 4) & 65535; *(_t76 + 6) = *(_t93 + 6) & 255; printf(); open(); fd_state = 0; if(fd_state < 0) { _exit(); } printf(); } read(); sz = _t76; if(sz > 0) { *(sz - 1 + &state_file) = 0; printf(); _t82 = sz - 1; _t83 = sz - 1 - 2 > 0 ? _t93 : _t82; _t74 = (sz - 1 - 2 > 0 ? _t93 : _t82) - _t83; asm("rep cmpsb "); if((sz - 1 - 2 > 0 ? _t93 : _t82) - _t83 > 0 == (sz - 1 - 2 > 0 ? _t93 : _t82) - _t83 > 0) { puts(); write(); puts(); } } close(); fd_state = 4294967295; return; } bt_off( signed int __ecx, // r2 _unknown_ __edi, // r4 _unknown_ __esp, // r7 long long __rax, // r53 intOrPtr* __rdx, // r56 _unknown_ __rsi // r58 ) {// addr = 0x004AEF7F signed int _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _t95 = __rdx; _t78 = __rax; if(fd_state == 255) { _push(__ecx << 0); _push(0); _push(__edi); memset(); _v16 = 4294967295; asm("repne scasb "); _t95 = !_v16 - 1; strncat(); r8d = &state_file; _v16 = 4294967295; asm("repne scasb "); _t78 = !_v16 - 1 + r8; *_t78 = *_t95; *(_t78 + 4) = *(_t95 + 4) & 65535; *(_t78 + 6) = *(_t95 + 6) & 255; printf(); open(); fd_state = 0; if(fd_state < 0) { perror(); _exit(); } printf(); } read(); sz = _t78; if(sz <= 0) { puts(); } else { *(sz - 1 + &state_file) = 0; printf(); _t84 = sz - 1; _t85 = sz - 1 - 2 > 0 ? _t95 : _t84; _t76 = (sz - 1 - 2 > 0 ? _t95 : _t84) - _t85; asm("rep cmpsb "); if((sz - 1 - 2 > 0 ? _t95 : _t84) - _t85 > 0 == (sz - 1 - 2 > 0 ? _t95 : _t84) - _t85 > 0) { puts(); write(); puts(); } } close(); fd_state = 4294967295; return; } hotkey_rfkill_recv() {// addr = 0x004AF18C signed int _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 signed int _v33; // _cfa_ffffffdf signed int _v34; // _cfa_ffffffde signed int _v35; // _cfa_ffffffdd signed char _v36; // _cfa_ffffffdc char _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 char* _t77; // _t77 _v12 = 0; if(hotkey_rfkill_fd == 255) { fcntl(); if(0 < 0) { __errno_location(); strerror(); _t71 = __rax; printf(); } } if(hotkey_rfkill_fd >= 0) { L24: return; } else { while(1) { __rcx = &_v40; _t77 = __rcx; read(); _v24 = __rax; if(_v24 < 0) { break; } asm("repne dec eax"); asm("ucomisd xmm0, [0x2ab6f]"); if(__eflags != 0) { L13: __rax = _v24; asm("movsd xmm0, [0x2ab50]"); printf(); L7: continue; } asm("ucomisd xmm0, [0x2ab65]"); if(__eflags == 0) { r8d = _v33 & 255; _t54 = _v34 & 255; __ecx = _v35 & 255; r9d = r8d; r8d = _v34 & 255; printf(); __eflags = (_v36 & 255) - 2; if(__eflags == 0) { __eflags = (_v35 & 255) - 2; if(__eflags == 0) { __eflags = _v33 & 255; if((_v33 & 255) == 0) { __eflags = _v34 & 255; if((_v34 & 255) == 0) { _t54 = "rfkill: WLAN unblocked"; puts(); _v12 = 0; } } else { _t54 = "rfkill: WLAN hard blocked"; puts(); _v12 = 1; } __eflags = _v12; if(_v12 == 0) { bt_detect(__rax, __rcx); bt_on(__ecx, _t54, __esp, __rax, _t71, _t77); puts(); } else { bt_detect(__rax, __rcx); bt_off(__ecx, _t54, __esp, __rax, _t71, _t77); _t54 = "Disable BT"; puts(); } } } goto L7; } goto L13; } __errno_location(); if( *__rax == 11) { goto L24; } __errno_location(); strerror(); printf(); return; } } RtbtPostCoreEvent() {// addr = 0x004AF3A0 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 long long _t3; // _t3 _v16 = _t3; SetPollMode(); return; } RtbtCheckPendingQueue( _unknown_ __eax // r0 ) {// addr = 0x004AF3BA intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t25; // _t25 long long _t31; // _t31 _v32 = _t31; _v12 = 0; while(_v12 <= 45) { if(QUEUE_IsEmpty(_t25) != 0) { _v12 = _v12 + 1; continue; } return 1; } if(( *(_v32 + 190500) & 255) != 0 || LCCQ_IsEmpty() != 0) { if(LCEQ_IsEmpty() != 0) { return 0; } return 1; } else { return 1; } } rtmp_timer_RtbtCoreIdleTimerFunc() {// addr = 0x004AF440 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t12; // _t12 _unknown_ _t29; // _t29 _unknown_ _t31; // _t31 _unknown_ _t33; // _t33 _v32 = __rdi; _t21 = _v32; _v24 = _v32; if(_v24 == 0) { DebugPrint(0, _t21, _t29, _t31, __rdi, _t33); return; } _v16 = _v24 + 16; if( *_v16 != 0) { r8 = *_v16; r8(); return; } return; } RtbtCoreIdleTimerFunc() {// addr = 0x004AF4BB long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 long long _t11; // _t11 _v32 = _t11; _v40 = __rsi; _v48 = __rdx; _v56 = __rcx; _v16 = _v40; __edx = 0; KeSetEvent(0, _v16 + 190432, __rsi); return; } RtbtSetCoreIdleTime( _unknown_ __eax // r0 ) {// addr = 0x004AF4F9 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 long long _t49; // _t49 long long _t60; // _t60 long long _t65; // _t65 _v32 = _t60; _v40 = _t65; if(( *(_v32 + 190499) & 255) != 1) { _v12 = DM_Min_Expried_Time(); _t49 = _v32; if(( *(_t49 + 191598) & 255) == 0) { if(_v12 != 0) { _v44 = _v12; _v24 = _t49; if(_v24 == 0) { _v24 = _v24 + 1; } __rdx = _v32 + 190352; KeSetTimer(_v32 + 190352, _v32 + 190368, _v24); return; } KeSetEvent(0, _v32 + 190432, _t65); return; } if(_v12 == 0) { KeSetEvent(0, _v32 + 190432, _t65); return; } } return; } RtBtBlueZNotifyHandler() {// addr = 0x004AF5E0 long long _v16; // _cfa_fffffff0 char _v2072; // _cfa_fffff7e8 intOrPtr _v2076; // _cfa_fffff7e4 _unknown_ _v2088; // _cfa_fffff7d8 long long _v2096; // _cfa_fffff7d0 intOrPtr _v2100; // _cfa_fffff7cc _unknown_ __rbp; // r59 intOrPtr _t51; // _t51 intOrPtr _t80; // _t80 intOrPtr _t87; // _t87 intOrPtr _t92; // _t92 _unknown_ _t110; // _t110 _unknown_ _t115; // _t115 intOrPtr _t117; // _t117 long long _t118; // _t118 _v2096 = _t118; _v2100 = _t80; _v16 = *fs:0x28]; _v2088 = &bzread; _t89 = _v2088; _t119 = _v2088; RtlFillMemory(16, 0, _v2088); if(_v2100 != 0) { if(_v2100 != 1) { if(_v2100 != 2) { DebugPrint(0, _t89, _t110, _t115, _t119, __rsi); perror(); } else { *_v2088 = 2; } } else { *_v2088 = 1; } } else { *_v2088 = 0; } *((short*)(_v2088 + 4)) = 2048; *((long long*)(_v2088 + 8)) = &_v2072; _t92 = _v2096; _t117 = _v2088; ioctl(); _v2076 = 0; _t87 = _v2076; if(_t87 >= 0) { _t51 = _v2100; if(_t51 == 1) { __rsi = *((intOrPtr*)(_v2088 + 8)); _t119 = _v2096; RtbtHalHCISendACLData(); } else { if(_t51 < 1) { __rsi = *((intOrPtr*)(_v2088 + 8)); _t119 = _v2096; RtbtHalHCICommand(); } else { if(_t51 == 2) { __rsi = *((intOrPtr*)(_v2088 + 8)); _t119 = _v2096; RtbtHalHCISendSCOData(); } } } } else { DebugPrint(0, _t92, _t110, _t117, _t119, __rsi); perror(); } r9d = *(_v2088 + 6) & 0xffff; r8 = _v2088 + 8; DebugPrint(0, _v2088, _v2088 + 8, _t117, _t119, __rsi); if(_t87 == 0) { return; } else { __stack_chk_fail(); return; } } RtBtRxNotifyHandler() {// addr = 0x004AF814 long long _v16; // _cfa_fffffff0 char _v2072; // _cfa_fffff7e8 intOrPtr _v2076; // _cfa_fffff7e4 long long _v2088; // _cfa_fffff7d8 _unknown_ _v2096; // _cfa_fffff7d0 long long _v2112; // _cfa_fffff7c0 _unknown_ __rbp; // r59 intOrPtr _t72; // _t72 _unknown_ _t82; // _t82 intOrPtr _t86; // _t86 long long _t87; // _t87 intOrPtr _t89; // _t89 _unknown_ _t90; // _t90 _v2112 = _t87; _v16 = *fs:0x28]; _v2096 = &trxctrl; _v2088 = &rxctrl; RtlFillMemory(16, 0, _v2096); _t89 = _v2088; RtlFillMemory(32, 0, _t89); *_v2096 = 1; *((short*)(_v2096 + 4)) = 32; *((long long*)(_v2096 + 8)) = &rxctrl; *((long long*)(_v2088 + 24)) = &_v2072; _t72 = _v2112; _t86 = _v2096; ioctl(); _v2076 = 0; __eflags = _v2076; if(_v2076 >= 0) { _t86 = _v2088; r8 = _t89; _t89 = _v2112; RtbtReceivePacket(); } else { DebugPrint(0, _t72, _t82, _t86, _t89, _t90); perror(); } *__rsp = *(_v2088 + 18) & 0xffff; r9 = *((intOrPtr*)(_v2088 + 24)); r8 = _v2088; DebugPrint(0, _v2088, _v2088, _t86, _t89, *((intOrPtr*)(_v2088 + 24))); if(__eflags != 0) { __stack_chk_fail(); return; } return; } RtbtCoreThread() {// addr = 0x004AF9B9 signed char _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec char _v28; // _cfa_ffffffe4 signed int _v32; // _cfa_ffffffe0 char* _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t112; // _t112 _unknown_ _t162; // _t162 char* _t166; // _t166 char* _t173; // _t173 char* _t190; // _t190 _unknown_ _t193; // _t193 _unknown_ _t195; // _t195 char* _t197; // _t197 char* _t199; // _t199 _unknown_ _t206; // _t206 _v64 = _t197; _v20 = 0; _v16 = 4294967295; _v32 = 16; DebugPrint(0, _t162, _t193, _t195, _t197, _t206); open(); _v16 = 0; if(_v16 < 0) { perror(); exit(); } (_v64[0x2ecb8]) = _v16; r8d = _v16; _t194 = _v64; DebugPrint(0, _v64, _v64, _t195, _t197, _t206); LM_Initialise(); _t166 = _v64; _t196 = &(_t166[0x7718]); _t207 = &(_t166[0x7718]); _t199 = &(_v64[0x11cf8]); QUEUE_Initialise(); (_v64[0x2ec0b]) = 0; (_v64[0x2ec0a]) = 0; (_v64[0x2ec09]) = 0; while(1) { _t172 = _v64; if(((_v64[0x2e823]) & 255) == 1) { break; } _t194 = &_v32; _t207 = &_v32; read(); _v20 = _v16; if(_v20 >= 0) { r9d = _v32; r8d = _v20; _t112 = "RtbtCoreThread"; DebugPrint(0, _t172, &_v32, _t196, _t199, &_v32); } else { usleep(); if((_v64[0x2ecbc]) != 0) { _t187 = _v64; if((_v64[0x2ecbc]) <= 0) { DebugPrint(0, _t187, &_v32, _t196, _t199, &_v32); } else { (_v64[0x2ecbc]) = _v64 - 1; } } else { _v28 = 0; _t190 = _v64; _t196 = &_v28; ioctl(); _v12 = 0; if(_v12 >= 0) { (_v64[0x2ecbc]) = _v64 - 1; DebugPrint(0, _v64, &_v32, &_v28, _t199, &_v32); } else { DebugPrint(0, _t190, &_v32, &_v28, _t199, &_v32); perror(); } } } _t173 = _v64; _t82 = (_t173[0x2e823]) & 255; if(((_t173[0x2e823]) & 255) != 1) { if(_v20 <= 0) { L18: BTCoex_Task(); LC_Task(_t82); LM_Task(_v64); HCI_Task(); _t199 = _v64; RADIO_State_Update(); _t179 = _v64; if(((_v64[0x2e825]) & 255) != 0) { _t112 = "RtbtCoreThread"; DebugPrint(0, _t179, _t194, _t196, _t199, _t207); (_v64[0x2e825]) = 0; } _t172 = _v64; if(((_v64[0x2e823]) & 255) == 1) { } else { if(g_is_exit == 0) { continue; } bt_detect(_t172, _t194); puts(); bt_off(_t112, "try to turn bt off ..", __esp, _t172, _t196, _t207); puts(); usleep(); close(); } goto L26; } _t82 = _v32; if(_v32 > 15) { goto L18; } goto __rax; } else { _t172 = _v64; r8d = (_v64[0x2e823]) & 0xff; DebugPrint(0, _v64, _t194, _t196, _t199, _t207); L26: DebugPrint(0, _t172, _t194, _t196, _t199, _t207); KeCancelTimer( &(_v64[0x2e7a0])); ral_task_notify_exit( &(_v64[0x2e738])); return; } } goto L26; } RtbtStartCore() {// addr = 0x004B01C6 intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t42; // _t42 intOrPtr _t44; // _t44 intOrPtr _t46; // _t46 intOrPtr _t48; // _t48 intOrPtr _t93; // _t93 intOrPtr _t97; // _t97 intOrPtr _t100; // _t100 intOrPtr _t103; // _t103 long long _t126; // _t126 _v32 = _t126; _v12 = 4294967295; _t93 = _v32; _t106 = _t93 + 190264; _t94 = _v32; _t114 = _v32; _t127 = _t93 + 190264; ral_task_init(_v32, _t93 + 190264, __rsi); _v12 = _t42; if(_v12 == 0) { *((char*)(_v32 + 190499)) = 0; ral_task_attach(_v32, _v32 + 190264, __rsi); _v12 = _t42; _t44 = DebugPrint(0, _v32, _v32 + 190264, _v32, _v32 + 190264, __rsi); } else { _t44 = DebugPrint(0, _t94, _t106, _t114, _t127, __rsi); } _t97 = _v32; _t108 = _t97 + 190280; _t98 = _v32; _t117 = _v32; _t129 = _t97 + 190280; ral_task_init(_v32, _t97 + 190280, __rsi); _v12 = _t44; if(_v12 == 0) { ral_task_attach(_v32, _v32 + 190280, __rsi); _v12 = _t44; _t46 = DebugPrint(0, _v32, _v32 + 190280, _v32, _v32 + 190280, __rsi); } else { _t46 = DebugPrint(0, _t98, _t108, _t117, _t129, __rsi); } _t100 = _v32; _t110 = _t100 + 190296; _t101 = _v32; _t120 = _v32; _t131 = _t100 + 190296; ral_task_init(_v32, _t100 + 190296, __rsi); _v12 = _t46; if(_v12 == 0) { ral_task_attach(_v32, _v32 + 190296, __rsi); _v12 = _t46; _t48 = DebugPrint(0, _v32, _v32 + 190296, _v32, _v32 + 190296, __rsi); } else { _t48 = DebugPrint(0, _t101, _t110, _t120, _t131, __rsi); } _t103 = _v32; _t112 = _t103 + 190312; _t104 = _v32; _t123 = _v32; _t133 = _t103 + 190312; ral_task_init(_v32, _t103 + 190312, __rsi); _v12 = _t48; if(_v12 == 0) { ral_task_attach(_v32, _v32 + 190312, __rsi); _v12 = _t48; DebugPrint(0, _v32, _v32 + 190312, _v32, _v32 + 190312, __rsi); } else { DebugPrint(0, _t104, _t112, _t123, _t133, __rsi); } return; } RtbtStopCore() {// addr = 0x004B03E1 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t10; // _t10 long long _t14; // _t14 _v16 = _t14; DebugPrint(0, _t10, __rcx, __rdx, _t14, __rsi); RtbtHalCancelHCIGetEvent(); RtbtHalCancelHCIReceiveACLData(); RtbtHalCancelHCIReceiveSCOData(); return; } main() {// addr = 0x004B042C long long _v16; // _cfa_fffffff0 intOrPtr _v32; // _cfa_ffffffe0 char _v168; // _cfa_ffffff58 intOrPtr _v172; // _cfa_ffffff54 long long _v184; // _cfa_ffffff48 _unknown_ __rbp; // r59 _unknown_ _t15; // _t15 intOrPtr _t22; // _t22 long long _t34; // _t34 _unknown_ _t39; // _t39 long long _t42; // _t42 long long _t43; // _t43 _v172 = _t22; _v184 = _t42; _v32 = 4; _t39 = &_v168 + 8; sigemptyset(); _v168 = handler; _t34 = &_v168; _t43 = _t34; sigaction(); if(_t15 == 255) { perror(); _exit(); } ral_mem_valloc(191680, _t34); _v16 = _t34; if(_v16 != 0) { RtlZeroMemory(191680, _v16); *((char*)(_v16 + 190499)) = 0; *((intOrPtr*)(_v16 + 191676)) = 0; RtbtCoreThread(); return; } else { DebugPrint(0, _t34, __rcx, __rdx, _t39, _t43); return; } } rtbt_dma_mem_alloc( char __edx, // r3 long long __rcx, // r55 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B0508 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 long long _v40; // _cfa_ffffffd8 intOrPtr _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rcx = __rcx; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v40 = __rcx; _v48 = r8; _v28 = __edx; return 1; } rtbt_dma_mem_free( long long __rcx, // r55 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B0528 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; __rcx = __rcx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; _v40 = __rcx; return; } BthGetTxRingSize() {// addr = 0x004B053E long long _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed char _t13; // _t13 _v16 = __rdi; _v20 = _t13; if((_v20 & 255) <= 21) { goto __rax; } DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return 0; } BthGetTxRingPacketSize() {// addr = 0x004B05BB long long _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed char _t13; // _t13 _v16 = __rdi; _v20 = _t13; if((_v20 & 255) <= 21) { goto __rax; } DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return 0; } BthGetTxRingOffset() {// addr = 0x004B0638 long long _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 signed char _t13; // _t13 _v16 = __rdi; _v20 = _t13; if((_v20 & 255) <= 21) { goto __rax; } DebugPrint(0, __rax, __rcx, __rdx, __rdi, __rsi); return 0; } BthEnableInterrupt() {// addr = 0x004B073A signed int _v21; // _cfa_ffffffeb signed int _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t32; // _t32 long long _t43; // _t43 _v32 = _t43; _v24 = 4194305; _v24 = _v24 | 4194303; _v22 = _v22 & 255 | 192; _v21 = _v21 & 255 | 1; _v21 = _v21 & 255 | 2; _v21 = _v21 & 255 | 8; _t32 = _v21 & 255 | 4; _v21 = _t32; if((_t32 & 1) != 0) { RT_PCI_IO_WRITE32(); } return 1; } BthDisableInterrupt() {// addr = 0x004B07CC long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t15; // _t15 long long _t21; // _t21 _v32 = _t21; DebugPrint(0, _t15, __rcx, __rdx, _t21, __rsi); _v16 = 0; RT_PCI_IO_WRITE32(); return; } BthInitTxRingByIdx() {// addr = 0x004B0827 signed int _v9; // _cfa_fffffff7 signed char _v10; // _cfa_fffffff6 signed short _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed char _v20; // _cfa_ffffffec signed int* _v32; // _cfa_ffffffe0 signed int _v40; // _cfa_ffffffd8 signed int _v48; // _cfa_ffffffd0 intOrPtr _v56; // _cfa_ffffffc8 signed int* _v64; // _cfa_ffffffc0 long long _v72; // _cfa_ffffffb8 signed int* _v80; // _cfa_ffffffb0 signed int _v96; // _cfa_ffffffa0 signed int _v100; // _cfa_ffffff9c signed int _v112; // _cfa_ffffff90 long long _v120; // _cfa_ffffff88 signed int* _v128; // _cfa_ffffff80 signed int* _v136; // _cfa_ffffff78 _unknown_ __rbp; // r59 signed int _t135; // _t135 signed int _t152; // _t152 signed int _t163; // _t163 signed char _t209; // _t209 signed int _t222; // _t222 signed int* _t266; // _t266 signed int* _t270; // _t270 signed int _t294; // _t294 signed int _t298; // _t298 long long _t299; // _t299 signed int _t307; // _t307 signed int _t320; // _t320 signed int _t322; // _t322 _v96 = _t320; _v112 = _t307; _v120 = _t299; _v128 = r8; _v136 = r9; _v100 = _t209; _v20 = 0; if(_v136 == 0) { return; } _v9 = BthGetTxRingSize(); if(_v9 != 0) { _t322 = _v96; _v12 = BthGetTxRingPacketSize(); if(_v12 != 0) { _t222 = _v96; _t300 = _t222 + 64; _v80 = (_t307 + _t307 + _t307 << 3) + _t222 + 64; _v72 = _v96 * 1176 + _v96 + 616; *(_v72 + 1152) = 0; *(_v72 + 1160) = 0; *(_v72 + 1168) = 0; *_v80 = (_v9 & 255) << 4; (_v80[2]) = _v112; (_v80[4]) = _v128; _t135 = _v100 & 3; if(_t135 == 0) { _t135 = rtbt_usec_delay(_t135, _t322); } if(_v100 == 0) { _t238 = *(_v96 + 191488); if((_t135 & 1) != 0) { _t294 = _v96; __rsi = *_t294; _t238 = _t294 + __rsi; _t322 = _t294 + __rsi; RT_PCI_IO_WRITE32(); } } else { _t322 = _v96; _t163 = BthGetTxRingOffset(); _v16 = _t163; _t238 = *(_v96 + 191488); if((_t163 & 1) != 0) { _t298 = _v96; _t300 = *_t298; _t238 = _t298 + *_t298; _t322 = _t298 + *_t298; RT_PCI_IO_WRITE32(); } } r9 = _v128; r8d = (_v100 & 255) << 4; DebugPrint(0, _t238, _t300, _v128, _t322, __rsi); _v10 = 0; while((_v10 & 255) < _v9) { *(_v72 + 1152) = 0; *((intOrPtr*)(((_v10 & 255) + (_v10 & 255) + (_v10 & 255) << 4) + _v72)) = 16; *(((_v10 & 255) + (_v10 & 255) + (_v10 & 255) << 4) + _v72 + 8) = _v112; *(((_v10 & 255) + (_v10 & 255) + (_v10 & 255) << 4) + _v72 + 16) = _v128; _v64 = ((_v10 & 255) + (_v10 & 255) + (_v10 & 255) << 4) + 16 + _v72 + 8; *_v64 = _v12 & 65535; _t266 = _v64; _t318 = &(_t266[2]); r8 = &(_v64[4]); _t305 = &(_t266[2]); _t323 = *((intOrPtr*)(_v56 + 8)); rtbt_dma_mem_alloc(0, &(_t266[2]), *((intOrPtr*)(_v56 + 8)), __rsi); _t270 = _v64; _t271 = (_t270[2]); if((_t270[2]) != 0) { *_v136 = *_v136 + *_v64; *__rsp = *_v136; r9d = *_v64; r8d = _v10 & 255; DebugPrint(0, _v64, _t305, _t318, _t323, __rsi); _v48 = (_v64[4]); _v40 = (_v64[2]); _t152 = _v10 & 255; _v32 = *((_t152 + _t152 + _t152 << 4) + _v72 + 8); *_v32 = _t152; (_v32[3]) = (_v32[3]) & 0xe0 | _v100 & 0x1f; (_v32[1]) = (_v32[1]) & 255 | 128; _v128 = &(_v128[4]); _v112 = _v112 + 16; _v10 = _v10 + 1; continue; } DebugPrint(0, _t271, _t305, _t318, _t323, __rsi); _v20 = 4294967295; return; } return; } _v20 = 4294967295; return; } else { _v20 = 4294967295; return; } } BthInitSend( long long __rdi // r57 ) {// addr = 0x004B0C30 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } BthInitRecv( long long __rdi // r57 ) {// addr = 0x004B0C3A long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } BthFreeRfd( long long __rdi // r57 ) {// addr = 0x004B0C44 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } reg_dump_txdesc() {// addr = 0x004B0C4E signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t64; // _t64 signed int _t72; // _t72 signed int _t80; // _t80 intOrPtr* _t130; // _t130 intOrPtr* _t132; // _t132 intOrPtr* _t134; // _t134 _v32 = __rdi; DebugPrint(0, _t123, _t135, __rdx, __rdi, __rsi); _v16 = 0; while(_v16 <= 21) { DebugPrint(0, _t123, _t135, __rdx, __rdi, __rsi); _t64 = _v16 << 4; _v12 = _t64; _v20 = 0; _t125 = *((intOrPtr*)(_v32 + 191488)); if((_t64 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t134 = _v32; _t125 = _t134 + *_t134; _t135 = &_v20; __rsi = &_v20; __rdi = _t134 + *_t134; RT_PCI_IO_READ32(); _v24 = _v20; } r8d = _v24; DebugPrint(0, _t125, _t135, __rdx, __rdi, __rsi); _t72 = (_v16 << 4) + 4; _v12 = _t72; _v20 = 0; _t127 = *((intOrPtr*)(_v32 + 191488)); if((_t72 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t132 = _v32; _t127 = _t132 + *_t132; _t135 = &_v20; __rsi = &_v20; __rdi = _t132 + *_t132; RT_PCI_IO_READ32(); _v24 = _v20; } r8d = _v24; DebugPrint(0, _t127, _t135, __rdx, __rdi, __rsi); _t80 = (_v16 << 4) + 8; _v12 = _t80; _v20 = 0; _t123 = *((intOrPtr*)(_v32 + 191488)); if((_t80 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t130 = _v32; _t123 = _t130 + *_t130; _t135 = &_v20; __rsi = &_v20; __rdi = _t130 + *_t130; RT_PCI_IO_READ32(); _v24 = _v20; } r8d = _v24; _t59 = DebugPrint(0, _t123, _t135, __rdx, __rdi, __rsi); _v16 = _v16 + 1; } return; } reg_dump_rxdesc() {// addr = 0x004B0E4A signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t65; // _t65 signed int _t73; // _t73 signed int _t81; // _t81 intOrPtr* _t131; // _t131 intOrPtr* _t133; // _t133 intOrPtr* _t135; // _t135 _v32 = __rdi; DebugPrint(0, _t124, _t136, __rdx, __rdi, __rsi); _v16 = 0; while(_v16 <= 1) { DebugPrint(0, _t124, _t136, __rdx, __rdi, __rsi); _t65 = _v16 + 24 << 4; _v12 = _t65; _v20 = 0; _t126 = *((intOrPtr*)(_v32 + 191488)); if((_t65 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t135 = _v32; _t126 = _t135 + *_t135; _t136 = &_v20; __rsi = &_v20; __rdi = _t135 + *_t135; RT_PCI_IO_READ32(); _v24 = _v20; } r8d = _v24; DebugPrint(0, _t126, _t136, __rdx, __rdi, __rsi); _t73 = (_v16 << 4) + 388; _v12 = _t73; _v20 = 0; _t128 = *((intOrPtr*)(_v32 + 191488)); if((_t73 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t133 = _v32; _t128 = _t133 + *_t133; _t136 = &_v20; __rsi = &_v20; __rdi = _t133 + *_t133; RT_PCI_IO_READ32(); _v24 = _v20; } r8d = _v24; DebugPrint(0, _t128, _t136, __rdx, __rdi, __rsi); _t81 = (_v16 << 4) + 392; _v12 = _t81; _v20 = 0; _t124 = *((intOrPtr*)(_v32 + 191488)); if((_t81 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t131 = _v32; _t124 = _t131 + *_t131; _t136 = &_v20; __rsi = &_v20; __rdi = _t131 + *_t131; RT_PCI_IO_READ32(); _v24 = _v20; } r8d = _v24; _t59 = DebugPrint(0, _t124, _t136, __rdx, __rdi, __rsi); _v16 = _v16 + 1; } return; } RtbtResetPDMA() {// addr = 0x004B104D intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 _unknown_ _t20; // _t20 _v32 = __rdi; DebugPrint(0, _t18, __rcx, _t20, __rdi, __rsi); _v24 = 0; ioctl(); _v12 = 0; if(_v12 < 0) { perror(); return 0; } return 0; } BthRxPacket( _unknown_ __eax // r0 ) {// addr = 0x004B10B2 char _v9; // _cfa_fffffff7 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _v56; // _cfa_ffffffc8 long long _v64; // _cfa_ffffffc0 long long _v80; // _cfa_ffffffb0 signed int _v84; // _cfa_ffffffac long long _v96; // _cfa_ffffffa0 _unknown_ _v104; // _cfa_ffffff98 _unknown_ __rbp; // r59 signed char _t69; // _t69 long long _t122; // _t122 long long _t133; // _t133 long long _t144; // _t144 intOrPtr _t145; // _t145 _unknown_ _t147; // _t147 _v80 = _t144; _v96 = _t133; _v104 = _t122; _v84 = _t69; if( *_v104 >= _v96) { _v64 = _v96 - *_v104 + 40; } else { _v64 = _v96 - *_v104; } r9 = *_v104; r8 = _v96; _t57 = DebugPrint(0, _v64, _v64, _v96, _t144, _t147); _v56 = 0; while(_v56 < _v64) { _v48 = *((intOrPtr*)(( *_v104 + *_v104 + *_v104 << 4) + (_v84 & 255) * 1944 + _v80 + 26544)); _v40 = *((intOrPtr*)(( *_v104 + *_v104 + *_v104 << 4) + (_v84 & 255) * 1944 + _v80 + 26568)); _t145 = _v80; if(BthPacketFilter() == 0) { return; } _v32 = _v40; _v24 = _v48; r8 = _t145; _v9 = RtbtReceivePacket(); if(_v9 != 0) { *(_v48 + 7) = *(_v48 + 7) & 0x7f; *_v104 = *_v104 + 1; if( *_v104 > 39) { *_v104 = 0; } _v56 = _v56 + 1; continue; } return; } return; } BthHandleRecvInterrupt() {// addr = 0x004B1287 signed char _v9; // _cfa_fffffff7 signed char _v16; // _cfa_fffffff0 char _v24; // _cfa_ffffffe8 signed long long _v32; // _cfa_ffffffe0 signed char _v40; // _cfa_ffffffd8 signed long long _v48; // _cfa_ffffffd0 _unknown_ __rbp; // r59 signed int _t51; // _t51 signed int _t72; // _t72 signed long long _t80; // _t80 signed long long _t85; // _t85 signed char _t92; // _t92 signed long long _t126; // _t126 _v48 = _t126; _v40 = 0; _v32 = 0; _v9 = 0; while(_v9 <= 1) { ral_spin_lock(_v48 + 30440, &_v24); _v16 = 0; _t80 = *(_v48 + 191488); if((_t51 & 1) == 0) { _v16 = 4294967295; _v32 = _t80; } else { _t80 = _v48 + *_v48; RT_PCI_IO_READ32(); _v32 = _t80; } _v40 = *(_t80 * 1944 + _v48 + 28472); _t85 = _v48; BthRxPacket(_t80); _t51 = _t85; if( *((intOrPtr*)(_t85 * 1944 + _v48 + 28472)) != _v40) { *((_v9 & 255) * 1944 + _v48 + 28472) = _v40; _t72 = _v9 & 255; _t92 = _v40; if(_t92 == 0) { _t51 = 39; } else { _t92 = _v40 - 1; } *(_t72 * 1944 + _v48 + 28456) = _t92; _t51 = _t51 & 1; if(_t51 != 0) { _t51 = RT_PCI_IO_WRITE32(); } } ral_spin_unlock(_v48 + 30440, _v24); _v9 = _v9 + 1; } return; } BthPacketFilter() {// addr = 0x004B1479 signed long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 signed char _v36; // _cfa_ffffffdc long long _v48; // _cfa_ffffffd0 _unknown_ _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed char _t31; // _t31 long long _t51; // _t51 long long _t55; // _t55 _v32 = __rdi; _v48 = _t55; _v56 = _t51; _v36 = _t31; if( *_v56 != _v48) { _t56 = *_v56; __rsi = _v36 & 255; _t57 = __rsi * 1944; _v16 = *(( *_v56 + _t56 + _t56 << 4) + __rsi * 1944 + _v32 + 26544); if(( *(_v16 + 7) & 0x80) != 0) { return 1; } _t46 = _v16; r8d = ( *(_v16 + 7) & 255) >> 7 & 255; DebugPrint(0, *((intOrPtr*)(_t46 * 1944 + _v32 + 28472)), *((intOrPtr*)(_t46 * 1944 + _v32 + 28472)), _t57, __rdi, __rsi); return 0; } return 0; } BthHandleTxRingDmaDoneInterrupt() {// addr = 0x004B1549 char _v9; // _cfa_fffffff7 char _v10; // _cfa_fffffff6 char _v11; // _cfa_fffffff5 char _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 signed long long _v48; // _cfa_ffffffd0 intOrPtr _v56; // _cfa_ffffffc8 _unknown_ __rbp; // r59 signed int _t57; // _t57 intOrPtr _t77; // _t77 signed long long _t80; // _t80 long long _t118; // _t118 signed long long _t124; // _t124 _v48 = _t124; _v56 = _t77; _v11 = 0; while(_v11 <= 21) { _v10 = 0; _t80 = _v48; _t118 = _t80 + 616; _v32 = _t80 * 1176 + _t118; _t57 = KeAcquireSpinLockAtDpcLevel(_v48 + 30424); _v16 = 0; if((_t57 & 1) == 0) { _v16 = 4294967295; *((long long*)(_v32 + 1160)) = _t118; } else { __rsi = &_v16; RT_PCI_IO_READ32(); *((long long*)(_v32 + 1160)) = _t118; } while( *((intOrPtr*)(_v32 + 1160)) != _v32) { if( *((intOrPtr*)(_v32 + 1168)) != *((intOrPtr*)(_v32 + 1160))) { _v24 = *((intOrPtr*)(( *((intOrPtr*)(_v32 + 1168)) + *((intOrPtr*)(_v32 + 1168)) + *((intOrPtr*)(_v32 + 1168)) << 4) + _v32 + 8)); if(( *(_v24 + 7) & 0x80) == 0) { break; } _v9 = BthGetTxRingSize(); *((long long*)(_v32 + 1168)) = *((intOrPtr*)(_v32 + 1168)) + 1; if( *((intOrPtr*)(_v32 + 1168)) >= _v32) { *((long long*)(_v32 + 1168)) = 0; } KeSetEvent(0, _v48 + 190432, __rsi); continue; } break; } KeReleaseSpinLockFromDpcLevel(_v48 + 30424); _v11 = _v11 + 1; } return; } rtbt_pci_isr() {// addr = 0x004B1716 signed int _v12; // _cfa_fffffff4 signed int _v16; // _cfa_fffffff0 signed int _v20; // _cfa_ffffffec signed int _v21; // _cfa_ffffffeb signed char _v22; // _cfa_ffffffea signed int _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 long long _v48; // _cfa_ffffffd0 signed int _v64; // _cfa_ffffffc0 _unknown_ __rbp; // r59 signed int _t79; // _t79 signed int _t82; // _t82 _unknown_ _t176; // _t176 long long _t179; // _t179 _v48 = _t179; _v32 = _v48; _v24 = 0; _v16 = *( *_v32 + 544); _v12 = *( *_v32 + 552); if( *(_v32 + 48) == 0) { L2: _v64 = _v16 & _v12; *__rsp = _v12; r9d = _v16; r8d = *(_v32 + 48) != 0 & 255; DebugPrint(0, *(_v32 + 48), *(_v32 + 48), _t176, _t179, __rsi); return 4294967295; } _t79 = _v12 & _v16; if(_t79 != 0) { _v20 = 0; if((_t79 & 1) == 0) { _v20 = 4294967295; _v24 = _v20; } else { _t174 = &_v20; __rsi = &_v20; _t179 = *_v32 + 544; RT_PCI_IO_READ32(); _v24 = _v20; } _t82 = _v24; if(_t82 != 255) { if((_t82 & 1) != 0) { RT_PCI_IO_WRITE32(); } if((_v24 & 4194303) != 0) { BthHandleTxRingDmaDoneInterrupt(); } if((_v22 & 0xc0) != 0 || (_v21 & 0x40) != 0) { BthHandleRecvInterrupt(); } if((_v21 & 2) != 0) { MCU_Handle_Command_Interrupt(); } if((_v21 & 1) != 0) { MCU_Handle_Event_Interrupt(); } if((_v21 & 4) != 0) { KeSetEvent(0, _v32 + 190480, __rsi); KeAcquireSpinLockAtDpcLevel(_v32 + 30536); *((short*)(_v32 + 190328)) = _v32 + 1; KeReleaseSpinLockFromDpcLevel(_v32 + 30536); } if((_v21 & 8) != 0) { DM_Handle_Timer_Interrupt(); MCU_Handle_FError_Interrupt(); } return 0; } else { *(_v32 + 48) = *(_v32 + 48) | 4; DebugPrint(0, _v32, _t174, *(_v32 + 48) | 4, _t179, __rsi); return 4294967295; } } goto L2; } rtbt_pci_resource_deinit() {// addr = 0x004B199B long long _v16; // _cfa_fffffff0 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 long long _t22; // _t22 _v32 = _t22; DebugPrint(0, _t18, __rcx, __rdx, _t22, __rsi); _v16 = *_v32; BthFreeRfd(_v16); DebugPrint(0, _v16, __rcx, __rdx, _v16, __rsi); return 0; } rtbt_pci_resource_init() {// addr = 0x004B1A01 intOrPtr _v12; // _cfa_fffffff4 long long _v24; // _cfa_ffffffe8 _unknown_ _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t16; // _t16 _unknown_ _t44; // _t44 long long _t52; // _t52 _v32 = _t52; _t16 = DebugPrint(0, _t44, __rcx, __rdx, _t52, __rsi); _v24 = *_v32; _t47 = _v24; _t53 = _v24; BthInitSend(_v24); _v12 = _t16; if(_v12 == 0) { _t48 = _v24; _t54 = _v24; BthInitRecv(_v24); _v12 = _t16; if(_v12 == 0) { reg_dump_txdesc(); reg_dump_rxdesc(); DebugPrint(0, _v24, __rcx, __rdx, _v24, __rsi); return 0; } DebugPrint(0, _t48, __rcx, __rdx, _t54, __rsi); L5: rtbt_pci_resource_deinit(); return 4294967295; } DebugPrint(0, _t47, __rcx, __rdx, _t53, __rsi); goto L5; } BthShutdown() {// addr = 0x004B1AF0 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _unknown_ _t18; // _t18 long long _t23; // _t23 _v16 = _t23; DebugPrint(0, _t18, __rcx, __rdx, _t23, __rsi); BthDisableInterrupt(); BT_DeInitialise(); Rtbth_Set_Radio_Led(); BthDisableBtFunc(); DebugPrint(0, _v16, __rcx, __rdx, _v16, __rsi); return; } rtbt_hps_open() {// addr = 0x004B1B6A signed int _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 signed int _t25; // _t25 long long _t54; // _t54 _unknown_ _t63; // _t63 long long _t66; // _t66 intOrPtr _t67; // _t67 _v32 = _t66; _t54 = _v32; _v24 = _t54; DebugPrint(0, _t54, __rcx, _t63, _t66, __rsi); ral_mem_alloc(512, 1, _t54); *((long long*)(_v24 + 190336)) = _t54; ral_mem_alloc(63, 1, _t54); _t65 = _v24; *((long long*)(_v24 + 190344)) = _t54; _t55 = _v24; _t67 = _v24; _t25 = BthInitialize(); _v12 = _t25; if(_v12 == 0) { _t57 = *((intOrPtr*)(_v24 + 191488)); if((_t25 & 1) != 0) { _t57 = *_v24 + 544; _t67 = *_v24 + 544; RT_PCI_IO_WRITE32(); } DebugPrint(0, _t57, __rcx, _t65, _t67, __rsi); BthEnableInterrupt(); BthEnableRxTx(); return _v12; } DebugPrint(0, _t55, __rcx, _t65, _t67, __rsi); return _v12; } rtbt_hps_close() {// addr = 0x004B1C79 long long _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 intOrPtr _t35; // _t35 intOrPtr _t44; // _t44 intOrPtr _t46; // _t46 _unknown_ _t49; // _t49 long long _t52; // _t52 _v32 = _t52; _v16 = _v32; DebugPrint(0, _v32, __rcx, _t49, _t52, __rsi); _t35 = _v16; _t51 = *(_t35 + 48) & 253; *(_v16 + 48) = *(_t35 + 48) & 253; BthShutdown(); RtbtStopCore(); _t55 = _v16 + 191520; KeCancelTimer(_v16 + 191520); if( *((intOrPtr*)(_v16 + 190336)) != 0) { _t55 = *((intOrPtr*)(_v16 + 190336)); ral_mem_free( *((intOrPtr*)(_v16 + 190336))); } _t44 = _v16; _t45 = *((intOrPtr*)(_t44 + 190344)); if( *((intOrPtr*)(_t44 + 190344)) != 0) { _t46 = _v16; _t45 = *((intOrPtr*)(_t46 + 190344)); _t55 = *((intOrPtr*)(_t46 + 190344)); ral_mem_free( *((intOrPtr*)(_t46 + 190344))); } DebugPrint(0, _t45, __rcx, _t51, _t55, __rsi); return 0; } DebugPrint( _unknown_ __eax, // r0 long long __rax, // r53 long long __rcx, // r55 long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B1D50 intOrPtr _v144; // _cfa_ffffff70 intOrPtr _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 _unknown_ _v192; // _cfa_ffffff40 char _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 long long _v216; // _cfa_ffffff28 long long _v224; // _cfa_ffffff20 _unknown_ __rbp; // r59 long long _t43; // _t43 __rsi = __rsi; __rdx = __rdx; __rcx = __rcx; _t43 = __rax; _v208 = __rdi; _v216 = __rsi; _v160 = __rcx; _v152 = r8; _v144 = r9; if(__eax != 0) { asm("movaps [ebp-0x80], xmm0"); asm("movaps [ebp-0x70], xmm1"); asm("movaps [ebp-0x60], xmm2"); asm("movaps [ebp-0x50], xmm3"); asm("movaps [ebp-0x40], xmm4"); asm("movaps [ebp-0x30], xmm5"); asm("movaps [ebp-0x20], xmm6"); asm("movaps [ebp-0x10], xmm7"); } _v224 = __rdx; time(); _v200 = _t43; localtime(); _v192 = &_v200; now = *((intOrPtr*)(_v192 + 20)) + 1900; *7349572 = *((intOrPtr*)(_v192 + 16)) + 1; *7349576 = *((intOrPtr*)(_v192 + 12)); *7349580 = *((intOrPtr*)(_v192 + 8)); if( *7349580 > 11) { *7349584 = 0; *7349588 = *((intOrPtr*)(_v192 + 8)) - 12; } else { *7349584 = 1; *7349588 = *((intOrPtr*)(_v192 + 8)); } *7349592 = *((intOrPtr*)(_v192 + 4)); *7349596 = *_v192; gettimeofday(); return 0; } Bth_Dbg_DumpBuffer( long long __rcx, // r55 long long __rdx, // r56 signed char* __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B1E91 long long _v16; // _cfa_fffffff0 char _v40; // _cfa_ffffffd8 char _v104; // _cfa_ffffff98 signed int _v105; // _cfa_ffffff97 signed int _v106; // _cfa_ffffff96 signed int _v107; // _cfa_ffffff95 signed int _v112; // _cfa_ffffff90 signed int* _v120; // _cfa_ffffff88 signed int* _v128; // _cfa_ffffff80 long long _v136; // _cfa_ffffff78 signed char* _v144; // _cfa_ffffff70 signed char* _v160; // _cfa_ffffff60 long long _v168; // _cfa_ffffff58 long long _v176; // _cfa_ffffff50 long long _v184; // _cfa_ffffff48 long long _v192; // _cfa_ffffff40 _unknown_ __rbp; // r59 signed int _t76; // _t76 signed int _t83; // _t83 signed int _t85; // _t85 long long _t90; // _t90 __rdi = __rdi; _v160 = __rdi; _v168 = __rsi; _v176 = __rdx; _v184 = __rcx; _v192 = r8; _v16 = *fs:0x28]; _t75 = 0; _v144 = _v160; _v136 = _v168; while(_v160 != 0) { _t90 = _v136; if(_t90 > 0) { _v128 = &_v104; _v120 = &_v40; _v112 = 0; while(_v112 <= 15) { if(_v112 != 8) { _t76 = 32; } else { _t76 = 45; } *_v128 = _t76; _v128 = &(_v128[0]); _t75 = _v136 > 0; _v136 = _v136 - 1; if(_v136 > 0) { *_v128 = 32; _v128 = &(_v128[0]); *_v128 = 32; _v128 = &(_v128[0]); *_v120 = 32; _v120 = &(_v120[0]); } else { _v107 = *_v144 & 255; _v144 = &(_v144[1]); _v106 = (_v107 & 255) >> 4; _v105 = _v107 & 0xf; if(_v106 <= 9) { _t83 = (_v106 & 255) + 48; } else { _t83 = (_v106 & 255) + 55; } *_v128 = _t83; _v128 = &(_v128[0]); if(_v105 <= 9) { _t85 = (_v105 & 255) + 48; } else { _t85 = (_v105 & 255) + 55; } *_v128 = _t85; _v128 = &(_v128[0]); if(_v107 <= 32 || (_v107 & 255) >= 0) { _t75 = 46; } else { _t75 = _v107 & 255; } *_v120 = _t75; _v120 = &(_v120[0]); } _v112 = _v112 + 1; } *_v120 = 0; *_v128 = __dl; if(_v192 != 0) { r8 = _v192; r8(); } _v176 = _v176 + 16; continue; } break; } if(_t90 == 0) { return; } __stack_chk_fail(); return; } hex_dump( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B2070 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; return; } RtlStringCchPrintfA( intOrPtr __eax, // r0 intOrPtr __esi, // r5 long long __rcx, // r55 long long __rdx, // r56 long long __rdi, // r57 char _a8 // _cfa_8 ) {// addr = 0x004B2084 intOrPtr _v144; // _cfa_ffffff70 intOrPtr _v152; // _cfa_ffffff68 long long _v160; // _cfa_ffffff60 char _v184; // _cfa_ffffff48 intOrPtr _v188; // _cfa_ffffff44 long long _v200; // _cfa_ffffff38 long long _v208; // _cfa_ffffff30 intOrPtr _v212; // _cfa_ffffff2c intOrPtr _v216; // _cfa_ffffff28 long long _v224; // _cfa_ffffff20 intOrPtr _v228; // _cfa_ffffff1c long long _v240; // _cfa_ffffff10 _unknown_ __rbp; // r59 intOrPtr _t19; // _t19 long long _t28; // _t28 _t28 = __rdx; _t19 = __eax; _v224 = __rdi; _v228 = __esi; _v160 = __rcx; _v152 = r8; _v144 = r9; if(__eax != 0) { asm("movaps [ebp-0x80], xmm0"); asm("movaps [ebp-0x70], xmm1"); asm("movaps [ebp-0x60], xmm2"); asm("movaps [ebp-0x50], xmm3"); asm("movaps [ebp-0x40], xmm4"); asm("movaps [ebp-0x30], xmm5"); asm("movaps [ebp-0x20], xmm6"); asm("movaps [ebp-0x10], xmm7"); } _v240 = _t28; _v216 = 24; _v212 = 48; _v208 = &_a8; _v200 = &_v184; vsnprintf(); _v188 = _t19; return _v188; } ral_mem_valloc( intOrPtr __edi, // r4 _unknown_ __rax // r53 ) {// addr = 0x004B213A intOrPtr _v12; // _cfa_fffffff4 _unknown_ __rbp; // r59 __rax = __rax; __edi = __edi; _v12 = __edi; malloc(); return __rax; } ral_mem_vfree( long long __rdi // r57 ) {// addr = 0x004B2154 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; free(); return 1; } ral_mem_alloc( intOrPtr __edi, // r4 intOrPtr __esi, // r5 long long __rax // r53 ) {// addr = 0x004B2173 long long _v16; // _cfa_fffffff0 intOrPtr _v28; // _cfa_ffffffe4 intOrPtr _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t8; // _t8 __esi = __esi; __edi = __edi; _v28 = __edi; _v32 = __esi; _v16 = 0; if(_v32 == 1) { _t8 = __rax; malloc(); _v16 = __rax; } return _t8; } ral_mem_free( long long __rdi // r57 ) {// addr = 0x004B21A6 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 _v16 = __rdi; free(); return 1; } RtlCopyMemory( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B21C5 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; memcpy(); return 1; } RtlZeroMemory( intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x004B21F8 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec _unknown_ __rbp; // r59 _v16 = __rdi; _v20 = __esi; memset(); return; } RtlFillMemory( intOrPtr __edx, // r3 intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x004B2220 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __edx = __edx; _v16 = __rdi; _v20 = __esi; _v24 = __edx; memset(); return; } RtlCompareMemory( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B224B long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; memcmp(); return; } ral_spin_lock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B2279 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } ral_spin_unlock( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B2287 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } ral_spin_init( long long __rdi // r57 ) {// addr = 0x004B2295 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } ral_spin_deinit( long long __rdi // r57 ) {// addr = 0x004B229F long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } KeAcquireSpinLockAtDpcLevel( long long __rdi // r57 ) {// addr = 0x004B22A9 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return 1; } KeReleaseSpinLockFromDpcLevel( long long __rdi // r57 ) {// addr = 0x004B22B8 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return 1; } KeSetEvent( _unknown_ __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B22C7 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __al; return; } KeWaitForSingleObject( _unknown_ __ecx, // r2 intOrPtr __edx, // r3 intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x004B22DA long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 char _v28; // _cfa_ffffffe4 intOrPtr _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; __edx = __edx; __ecx = __ecx; _v16 = __rdi; _v20 = __esi; _v24 = __edx; _v40 = r8; _v28 = __al; return; } KeInitializeEvent( intOrPtr __edx, // r3 intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x004B22F3 long long _v16; // _cfa_fffffff0 intOrPtr _v20; // _cfa_ffffffec intOrPtr _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; __edx = __edx; _v16 = __rdi; _v20 = __esi; _v24 = __edx; return; } KeDestoryEvent( long long __rdi // r57 ) {// addr = 0x004B2303 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } KeQuerySystemTime( long long __rdi // r57 ) {// addr = 0x004B230D _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; gettimeofday(); *_v16 = *7350248; return 0; } rtbt_usec_delay( signed int __eax, // r0 unsigned int __rdi // r57 ) {// addr = 0x004B2347 signed int _v16; // _cfa_fffffff0 unsigned long long _v32; // _cfa_ffffffe0 unsigned long long _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 signed int _t31; // _t31 signed int _t32; // _t32 signed int _t33; // _t33 unsigned long long _t57; // _t57 _t31 = __eax; _v32 = __rdi; _v16 = 0; while(1) { _v40 = _v32 >> 1; _t32 = _t31 * -6640827866535438581; if(-6640827866535438581 >> 4 <= _v16) { break; } _t31 = 0; usleep(); _v16 = _v16 + 1; } _t57 = _v32; _v40 = _t57 >> 1; _t33 = _t32 * -6640827866535438581; if(_t57 != (-6640827866535438581 << 2) + (-6640827866535438581 >> 4) + 0x8f5c28f5c28f5c2c + (-6640827866535438581 << 2) + (-6640827866535438581 >> 4) + 0x8f5c28f5c28f5c2c) { _v40 = _v32 >> 1; usleep(); return 0; } return _t33; } KeStallExecutionProcessor() {// addr = 0x004B2433 _unknown_ _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 signed int _t3; // _t3 long long _t5; // _t5 _v16 = _t5; rtbt_usec_delay(_t3, _v16); return; } KeSetTimer( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B244D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; return; } KeCancelTimer( long long __rdi // r57 ) {// addr = 0x004B245F long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } KeFreeTimer( long long __rdi // r57 ) {// addr = 0x004B2469 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } ral_timer_init( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B2473 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; return; } KeInitializeDpc( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B2481 _unknown_ _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; *_v16 = _v24; *((long long*)(_v16 + 8)) = _v32; return; } ral_file_obj_init( long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B24AA intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; _v32 = __rdi; _v40 = __rsi; _v12 = 4294967295; *_v40 = 0; return _v12; } ral_file_open( intOrPtr __esi, // r5 long long __rdi // r57 ) {// addr = 0x004B24CD intOrPtr _v12; // _cfa_fffffff4 intOrPtr _v16; // _cfa_fffffff0 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc _unknown_ __rbp; // r59 __rdi = __rdi; __esi = __esi; _v32 = __rdi; _v36 = __esi; _v16 = 4294967295; if(_v32 != 0) { if(_v36 != 1) { return 4294967295; } _v12 = 1; return _v16; } return _v16; } ral_file_read( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B2507 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; return 0; } ral_file_write( intOrPtr __edx, // r3 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B251D long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 intOrPtr _v28; // _cfa_ffffffe4 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __edx = __edx; _v16 = __rdi; _v24 = __rsi; _v28 = __edx; return 0; } ral_file_close( long long __rdi // r57 ) {// addr = 0x004B2533 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return 0; } ral_file_obj_deinit( long long __rdi // r57 ) {// addr = 0x004B2542 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return 0; } ral_task_kill( long long __rdi // r57 ) {// addr = 0x004B2551 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } ral_task_notify_exit( long long __rdi // r57 ) {// addr = 0x004B255B long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } ral_task_customize( long long __rdi // r57 ) {// addr = 0x004B2565 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } ral_task_attach( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B256F long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; return; } ral_task_init( long long __rdx, // r56 long long __rdi, // r57 long long __rsi // r58 ) {// addr = 0x004B2581 long long _v16; // _cfa_fffffff0 long long _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 __rsi = __rsi; __rdi = __rdi; __rdx = __rdx; _v16 = __rdi; _v24 = __rsi; _v32 = __rdx; return; } ral_task_deinit( long long __rdi // r57 ) {// addr = 0x004B2593 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } dump_dev_list( long long __rdi // r57 ) {// addr = 0x004B259D long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } rtbt_dev_list_add( long long __rdi // r57 ) {// addr = 0x004B25A7 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } rtbt_dev_list_del( long long __rdi // r57 ) {// addr = 0x004B25B1 long long _v16; // _cfa_fffffff0 _unknown_ __rbp; // r59 __rdi = __rdi; _v16 = __rdi; return; } ral_os_register() {// addr = 0x004B25BB intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t5; // _t5 _v32 = _t5; _v12 = 4294967295; rtbt_dev_list_add(_v32); return _v12; } ral_os_unregister() {// addr = 0x004B25DF intOrPtr _v12; // _cfa_fffffff4 long long _v32; // _cfa_ffffffe0 _unknown_ __rbp; // r59 long long _t5; // _t5 _v32 = _t5; _v12 = 4294967295; rtbt_dev_list_del(_v32); return _v12; } RT_PCI_IO_READ32() {// addr = 0x004B2604 intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 _unknown_ _v40; // _cfa_ffffffd8 intOrPtr _v44; // _cfa_ffffffd4 _unknown_ __rbp; // r59 intOrPtr _t20; // _t20 long long _t33; // _t33 _v32 = _t33; _v40 = __rsi; _v44 = _t20; _v24 = &pci32read; RtlFillMemory(16, 0, _v24); *_v24 = _v32; ioctl(); _v12 = 0; if(_v12 >= 0) { *_v40 = *((intOrPtr*)(_v24 + 8)); } else { perror(); } return _v12; } RT_PCI_IO_WRITE32() {// addr = 0x004B2684 intOrPtr _v12; // _cfa_fffffff4 _unknown_ _v24; // _cfa_ffffffe8 long long _v32; // _cfa_ffffffe0 intOrPtr _v36; // _cfa_ffffffdc intOrPtr _v40; // _cfa_ffffffd8 _unknown_ __rbp; // r59 intOrPtr _t18; // _t18 intOrPtr _t23; // _t23 long long _t31; // _t31 _v32 = _t31; _v36 = _t23; _v40 = _t18; _v24 = &pci32write; RtlFillMemory(16, 0, _v24); *_v24 = _v32; *((intOrPtr*)(_v24 + 8)) = _v36; ioctl(); _v12 = 0; if(_v12 < 0) { perror(); return 0; } return 0; } __libc_csu_init( _unknown_ __edi, // r4 long long __rbx, // r54 intOrPtr __rdx, // r56 intOrPtr __rsi, // r58 long long __rbp // r59 ) {// addr = 0x004B2700 intOrPtr _v8; // _cfa_fffffff8 intOrPtr _v16; // _cfa_fffffff0 intOrPtr _v24; // _cfa_ffffffe8 intOrPtr _v32; // _cfa_ffffffe0 long long _v40; // _cfa_ffffffd8 long long _v48; // _cfa_ffffffd0 long long _t17; // _t17 signed long long _t26; // _t26 _t17 = __rbx; _v40 = __rbp; _v32 = r12; r12 = 7290404; _v24 = r13; _v16 = r14; _v8 = r15; _v48 = __rbx; __rsp = __rsp - 56; r13d = __edi; r14 = __rsi; _t26 = 7290404 - r12 >> 3; r15 = __rdx; _init(); if(7290404 == 0) { } else { do { *r12+rbx*8](); _t17 = _t17 + 1; } while(_t17 != _t26); } r12 = _v32; r13 = _v24; r14 = _v16; r15 = _v8; __rsp = __rsp + 56; return; } __libc_csu_fini() {// addr = 0x004B2790 asm("rep ret "); 0; 0; goto __imp____xstat; } __stat() {// addr = 0x004B27A0 _unknown_ _t1; // _t1 goto __imp____xstat; } __do_global_ctors_aux() {// addr = 0x004B27B0 intOrPtr* __rbx; // r54 _unknown_ __rbp; // r59 __rax = __CTOR_LIST__; if(__rax == 255) { } else { do { __rbx = __rbx - 8; *__rax(); __rax = *__rbx; } while(__rax != 255); } return; } _fini() {// addr = 0x004B27E8 __do_global_dtors_aux(); return; } _fini() {// addr = 0x004B27E8 @rec __do_global_dtors_aux@__do_global_dtors_aux@(); return; } // Statistics: // 11108 Register nodes // 23434 Temporaries nodes // 3451 Casts // 96692 Statements // 1656 Labels // 1303 Gotos // 2586 Blocks // 301406 Nodes // 63 Assembly nodes // 4785 Unknown Types Total time: 15 seconds.