Function at 0x403f90
Capabilities:
Contain obfuscated stackstrings
Print debug messages

Disassembly:
push 0x2e8
mov eax, 0x54e7fe
call fcn.00534de0
mov dword [ebp - 0x2c8], ecx
mov edi, dword [ebp + 8]
xor ebx, ebx
push str.20BFE8DD_B7BB_4E04_A29D_D39CD7F914C4
lea ecx, [ebp - 0x2d0]
mov dword [ebp - 0x270], edi
mov dword [ebp - 0x278], ebx
mov dword [ebp - 0x268], ebx
call fcn.0040301a
lea eax, [ebp - 0x22c]
push eax
lea ecx, [ebp - 0x2d0]
mov dword [ebp - 4], ebx
call fcn.004082df
mov esi, eax
lea eax, [ebp - 0x29c]
push eax
mov ecx, edi
mov byte [ebp - 4], 1
call fcn.004082df
push esi
mov ecx, eax
mov byte [ebp - 4], 2
call fcn.004090f5
test eax, eax
mov byte [ebp - 4], 1
mov esi, vtable.MA::StringT_wchar_t__char_.0
lea ecx, [ebp - 0x298]
setns bl
mov dword [ebp - 0x29c], esi
call fcn.00402ee1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], esi
call fcn.00402ee1
test bl, bl
je 0x404bb9
lea eax, [ebp - 0x268]
push eax
lea edx, [ebp - 0x278]
mov ecx, edi
call fcn.00408dd0
mov eax, dword [ebp - 0x278]
mov dword [ebp - 0x260], eax
mov eax, dword [ebp - 0x268]
lea ecx, [ebp - 0x28c]
mov dword [ebp - 0x264], 0x4030201
mov dword [ebp - 0x25c], eax
mov dword [ebp - 0x258], 0xadfbcade
mov dword [esp], str.SoftwareinMusicAudioDrivers
call fcn.0040301a
mov esi, 0x56f088
push esi
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 3
call fcn.0040301a
lea eax, [ebp - 0x26c]
push eax
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 4
call fcn.004015e4
mov byte [ebp - 4], 3
mov ebx, vtable.MA::StringT_wchar_t__char_.0
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x26c], ebx
call fcn.00402ee1
push str.20BFE8DD_B7BB_4E04_A29D_D39CD7F914C4
lea ecx, [ebp - 0x26c]
call fcn.0040301a
lea eax, [ebp - 0x26c]
push eax
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 5
call fcn.004015e4
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x26c], ebx
call fcn.00402ee1
push esi
lea ecx, [ebp - 0x26c]
call fcn.0040301a
lea eax, [ebp - 0x26c]
push eax
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 6
call fcn.004015e4
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x26c], ebx
call fcn.00402ee1
lea edx, [ebp - 0x264]
lea ecx, [ebp - 0x24c]
call fcn.00409154
mov byte [ebp - 4], 7
cmp dword [eax + 0x14], 0x10
jb 0x404163
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x26c]
call fcn.004091d4
lea eax, [ebp - 0x26c]
push eax
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 8
call fcn.004015e4
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x26c], ebx
call fcn.00402ee1
lea ecx, [ebp - 0x24c]
mov byte [ebp - 4], 3
call fcn.00402ccf
push 0
lea eax, [ebp - 0x28c]
push eax
lea eax, [ebp - 0x27c]
push 2
push eax
call fcn.00409a9a
add esp, 0x10
mov byte [ebp - 4], 9
push dword [0x570034]
lea ecx, [ebp - 0x22c]
call fcn.0040301a
push eax
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0xa
call fcn.00409334
push str.HardwareName
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 0xb
call fcn.0040301a
lea eax, [ebp - 0x254]
push eax
lea eax, [ebp - 0x26c]
mov byte [ebp - 4], 0xc
mov ecx, dword [ebp - 0x27c]
push eax
call fcn.004148c0
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x26c], ebx
call fcn.00402ee1
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0xa
call fcn.00409385
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
push esi
lea ecx, [ebp - 0x26c]
call fcn.0040301a
lea eax, [ebp - 0x26c]
push eax
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 0xd
call fcn.004015e4
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x26c], ebx
call fcn.00402ee1
push str.Instances
lea ecx, [ebp - 0x26c]
call fcn.0040301a
lea eax, [ebp - 0x26c]
push eax
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 0xe
call fcn.004015e4
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x26c], ebx
call fcn.00402ee1
push 0
lea eax, [ebp - 0x28c]
push eax
lea eax, [ebp - 0x268]
push 2
push eax
call fcn.00409a9a
add esp, 0x10
push eax
lea ecx, [ebp - 0x27c]
mov byte [ebp - 4], 0xf
call fcn.004098b8
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x268]
test eax, eax
je 0x404308
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
add ecx, eax
mov eax, dword [ecx]
call dword [eax + 0xc]
sub esp, 0xc
lea ecx, [ebp - 0x2c4]
call fcn.004070da
lea eax, [ebp - 0x2c4]
mov byte [ebp - 4], 0x10
mov ecx, dword [ebp - 0x27c]
push eax
call fcn.00414110
lea ecx, [ebp - 0x2f4]
call fcn.00409868
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x2b8]
lea ecx, [ebp - 0x2b8]
mov eax, dword [eax + 4]
add ecx, eax
xor esi, esi
mov eax, dword [ecx]
or edi, 0xffffffff
mov dword [ebp - 0x278], esi
call dword [eax]
shr eax, 2
test eax, eax
jle 0x4044f6
push str.LastPath
lea ecx, [ebp - 0x284]
call fcn.0040301a
mov byte [ebp - 4], 0x12
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
mov ebx, esi
call dword [eax + 0x64]
lea ecx, [ebp - 0x2f4]
push ecx
lea ecx, [ebp - 0x284]
push ecx
mov ecx, dword [eax + ebx*4]
call fcn.00413760
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x280]
mov dword [ebp - method.MA::StringT_wchar_t__char_.virtual_0], vtable.MA::StringT_wchar_t__char_.0
call fcn.00402ee1
lea eax, [ebp - 0x23c]
push eax
lea ecx, [ebp - 0x2f4]
call fcn.00415850
push 0
mov byte [ebp - 4], 0x13
push dword [ebp - 0x270]
mov ecx, eax
call fcn.00408ce7
mov ebx, eax
neg ebx
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x238]
sbb bl, bl
mov dword [ebp - method.MA::StringT_wchar_t__char_.virtual_0], vtable.MA::StringT_wchar_t__char_.0
call fcn.00402ee1
inc bl
jne 0x4044ce
push str.Attached
lea ecx, [ebp - 0x22c]
call fcn.0040301a
mov byte [ebp - 4], 0x14
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
call dword [eax + 0x64]
mov ecx, esi
shl ecx, 2
add eax, ecx
lea ecx, [ebp - 0x22c]
push ecx
lea ecx, [ebp - 0x268]
push ecx
mov ecx, dword [eax]
call fcn.00413aa0
lea ecx, [ebp - 0x2f4]
push ecx
mov byte [ebp - 4], 0x15
mov ecx, dword [eax]
push 0x59e510
call fcn.00413760
mov byte [ebp - 4], 0x14
mov eax, dword [ebp - 0x268]
test eax, eax
je 0x404476
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
add ecx, eax
mov eax, dword [ecx]
call dword [eax + 0xc]
mov byte [ebp - 4], 0x11
mov ebx, vtable.MA::StringT_wchar_t__char_.0
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
cmp edi, 0xffffffff
jne 0x4044a5
lea ecx, [ebp - 0x2f4]
call fcn.00415420
test al, al
cmove edi, esi
mov eax, dword [ebp - 0x2b8]
lea ecx, [ebp - 0x2b8]
mov eax, dword [eax + 4]
add ecx, eax
inc esi
mov eax, dword [ecx]
mov dword [ebp - 0x278], esi
call dword [eax]
shr eax, 2
cmp esi, eax
jl 0x404366
jmp 0x4044f6
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
call dword [eax + 0x64]
lea eax, [eax + esi*4]
push ecx
mov eax, dword [eax]
mov ecx, esp
mov dword [ecx], eax
call fcn.00409a10
call fcn.00404d3c
mov ebx, vtable.MA::StringT_wchar_t__char_.0
mov eax, dword [ebp - 0x2b8]
lea ecx, [ebp - 0x2b8]
mov eax, dword [eax + 4]
add ecx, eax
mov eax, dword [ecx]
call dword [eax]
shr eax, 2
cmp esi, eax
jne 0x40470d
test edi, edi
js 0x4045ff
push str.Initialized
lea ecx, [ebp - 0x22c]
mov esi, edi
call fcn.0040301a
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
call dword [eax + 0x64]
lea ecx, [ebp - 0x2f4]
push ecx
lea ecx, [ebp - 0x22c]
push ecx
mov ecx, dword [eax + edi*4]
call fcn.00413760
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
lea ecx, [ebp - 0x2f4]
call fcn.00415420
test al, al
je 0x404699
push str.Device_Attach_Error___Initialized_is_true__n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push 0
lea ecx, [ebp - 0x254]
call fcn.00408c4f
push str.Initialized
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0x17
call fcn.0040301a
mov byte [ebp - 4], 0x18
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
call dword [eax + 0x64]
lea ecx, [ebp - 0x254]
push ecx
lea ecx, [ebp - 0x22c]
push ecx
mov ecx, dword [eax + edi*4]
call fcn.004148c0
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0x11
call fcn.00409385
jmp 0x404699
and dword [ebp - 0x244], 0
xor eax, eax
lea edi, [ebp - 0x240]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, dword [ebp - 0x2b8]
lea ecx, [ebp - 0x2b8]
mov eax, dword [eax + 4]
add ecx, eax
mov eax, dword [ecx]
call dword [eax]
shr eax, 2
sub esp, 0x10
inc al
mov byte [ebp - 0x235], al
mov eax, dword [ebp - 0x27c]
mov edi, esp
lea esi, [ebp - 0x244]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push ecx
movsd dword es:[edi], dword [esi]
mov ecx, esp
movsd dword es:[edi], dword [esi]
mov dword [ecx], eax
call fcn.00409a10
lea eax, [ebp - 0x268]
push eax
call fcn.00404bdb
mov byte [ebp - 4], 0x19
mov esi, dword [ebp - 0x2c4]
push eax
lea ecx, [ebp - 0x2c4]
call dword [esi]
push eax
lea ecx, [ebp - 0x2c4]
call dword [esi + 0x44]
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x268]
test eax, eax
je 0x404693
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
add ecx, eax
mov eax, dword [ecx]
call dword [eax + 0xc]
mov esi, dword [ebp - 0x278]
push dword [ebp - 0x270]
lea ecx, [ebp - 0x254]
call fcn.00409334
push str.LastPath
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0x1a
call fcn.0040301a
mov byte [ebp - 4], 0x1b
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
call dword [eax + 0x64]
lea ecx, [ebp - 0x254]
push ecx
lea eax, [eax + esi*4]
lea ecx, [ebp - 0x22c]
push ecx
mov ecx, dword [eax]
call fcn.004148c0
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0x11
call fcn.00409385
push 1
lea ecx, [ebp - 0x254]
call fcn.00408c4f
push str.Attached
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0x1c
call fcn.0040301a
mov byte [ebp - 4], 0x1d
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
call dword [eax + 0x64]
lea ecx, [ebp - 0x22c]
push ecx
lea ecx, [ebp - 0x270]
push ecx
mov ecx, dword [eax + esi*4]
call fcn.00413aa0
lea ecx, [ebp - 0x254]
push ecx
mov byte [ebp - 4], 0x1e
mov ecx, dword [eax]
push 0x59e510
call fcn.004148c0
mov byte [ebp - 4], 0x1d
mov eax, dword [ebp - 0x270]
test eax, eax
je 0x404788
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
add ecx, eax
mov eax, dword [ecx]
call dword [eax + 0xc]
mov byte [ebp - 4], 0x1c
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0x11
call fcn.00409385
call fcn.00406b69
push edx
push eax
lea ecx, [ebp - 0x254]
call fcn.00408bbe
push str.LastAttachTime
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0x1f
call fcn.0040301a
mov byte [ebp - 4], 0x20
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
call dword [eax + 0x64]
lea ecx, [ebp - 0x254]
push ecx
lea ecx, [ebp - 0x22c]
push ecx
mov ecx, dword [eax + esi*4]
call fcn.004148c0
mov byte [ebp - 4], 0x1f
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0x11
call fcn.00409385
mov eax, dword [ebp - 0x2c4]
lea ecx, [ebp - 0x2c4]
call dword [eax + 0x64]
lea ecx, [ebp - 0x23c]
push ecx
mov ecx, dword [eax + esi*4]
call fcn.004139e0
lea edx, [ebp - 0x234]
mov ecx, eax
mov byte [ebp - 4], 0x21
call fcn.00408952
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x238]
mov dword [ebp - 0x23c], ebx
call fcn.00402ee1
lea eax, [ebp - 0x234]
push eax
lea edx, [ebp - 0x264]
lea ecx, [ebp - 0x29c]
call fcn.0040885e
pop ecx
lea ecx, [ebp - 0x294]
mov byte [ebp - 4], 0x22
call fcn.0040a0cf
push ecx
push ecx
mov ecx, esp
push str.DriverInterface
mov byte [ebp - 4], 0x23
call fcn.0040301a
lea eax, [ebp - 0x294]
push eax
push 0
call fcn.00406903
test eax, eax
js 0x4048c4
lea eax, [ebp - 0x294]
push eax
call fcn.00417230
pop ecx
test al, al
jne 0x4049bd
xor eax, eax
push 0x208
push eax
mov word [ebp - 0x224], ax
lea eax, [ebp - 0x222]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [ebp - 0x224]
push 0x209
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x224]
push eax
lea ecx, [ebp - 0x274]
call fcn.0040301a
push str.DriverInterface.exe
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0x24
call fcn.0040301a
push 0x5c
lea ecx, [ebp - 0x274]
mov byte [ebp - 4], 0x25
call fcn.00408195
push eax
lea eax, [ebp - 0x284]
push eax
lea ecx, [ebp - 0x274]
call fcn.004070bd
lea ecx, [ebp - 0x22c]
push ecx
lea ecx, [ebp - 0x23c]
push ecx
mov ecx, eax
mov byte [ebp - 4], 0x26
call fcn.00401770
push eax
lea ecx, [ebp - 0x294]
mov byte [ebp - 4], 0x27
call fcn.0040ad47
mov byte [ebp - 4], 0x26
lea ecx, [ebp - 0x238]
mov dword [ebp - 0x23c], ebx
call fcn.00402ee1
mov byte [ebp - 4], 0x25
lea ecx, [ebp - 0x280]
mov dword [ebp - 0x284], ebx
call fcn.00402ee1
mov byte [ebp - 4], 0x24
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
mov byte [ebp - 4], 0x23
lea ecx, [ebp - 0x270]
mov dword [ebp - 0x274], ebx
call fcn.00402ee1
lea eax, [ebp - 0x294]
push eax
call fcn.00417230
pop ecx
test al, al
je 0x404adc
push 0x56f2c0
lea ecx, [ebp - 0x22c]
call fcn.0040301a
mov esi, 0x56f2bc
push esi
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 0x28
call fcn.0040301a
lea ecx, [ebp - 0x294]
push ecx
lea ecx, [ebp - 0x23c]
push ecx
mov ecx, eax
mov byte [ebp - 4], 0x29
call fcn.00401770
lea ecx, [ebp - 0x22c]
push ecx
lea ecx, [ebp - 0x274]
push ecx
mov ecx, eax
mov byte [ebp - 4], 0x2a
call fcn.00401770
mov byte [ebp - 4], 0x2c
lea ecx, [ebp - 0x238]
mov dword [ebp - 0x23c], ebx
call fcn.00402ee1
mov byte [ebp - 4], 0x2d
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x26c], ebx
call fcn.00402ee1
mov byte [ebp - 4], 0x2e
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x22c], ebx
call fcn.00402ee1
lea eax, [ebp - 0x29c]
push eax
lea ecx, [ebp - 0x274]
call fcn.004015e4
push esi
lea ecx, [ebp - 0x284]
call fcn.0040301a
lea eax, [ebp - 0x284]
push eax
lea ecx, [ebp - 0x274]
mov byte [ebp - 4], 0x2f
call fcn.004015e4
mov byte [ebp - 4], 0x2e
lea ecx, [ebp - 0x280]
mov dword [ebp - 0x284], ebx
call fcn.00402ee1
mov ecx, dword [ebp - 0x2c8]
lea eax, [ebp - 0x274]
push eax
lea eax, [ebp - 0x294]
push eax
call fcn.00406051
mov byte [ebp - 4], 0x23
mov dword [ebp - 0x274], ebx
lea ecx, [ebp - 0x270]
jmp 0x404b3b
mov ecx, dword [ebp - 0x290]
add ecx, 4
mov eax, dword [ecx]
mov eax, dword [eax + 4]
add ecx, eax
mov eax, dword [ecx]
call dword [eax + 0x18]
push eax
lea eax, [ebp - 0x23c]
push str.DriverInterface_does_not_exist___s_
push eax
call fcn.00411470
add esp, 0xc
mov byte [ebp - 4], 0x30
mov ecx, dword [eax + 4]
mov eax, dword [ecx + 4]
mov eax, dword [eax + 4]
add eax, 4
add ecx, eax
mov eax, dword [ecx]
call dword [eax + 0x18]
push eax
push dword [ebp - 0x2c8]
call fcn.00403070
pop ecx
pop ecx
mov byte [ebp - 4], 0x23
mov dword [ebp - 0x23c], ebx
lea ecx, [ebp - 0x238]
call fcn.00402ee1
mov byte [ebp - 4], 0x22
lea ecx, [ebp - 0x290]
mov dword [ebp - 0x294], ebx
call fcn.00402ee1
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x298]
mov dword [ebp - 0x29c], ebx
call fcn.00402ee1
lea ecx, [ebp - 0x2f4]
mov byte [ebp - 4], 0x10
call fcn.00409385
lea ecx, [ebp - 0x2c4]
mov byte [ebp - 4], 9
call fcn.00407133
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x27c]
test eax, eax
je 0x404ba2
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
add ecx, eax
mov eax, dword [ecx]
call dword [eax + 0xc]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x288]
mov dword [ebp - 0x28c], ebx
call fcn.00402ee1
jmp 0x404bbe
mov ebx, vtable.MA::StringT_wchar_t__char_.0
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x2cc]
mov dword [ebp - 0x2d0], ebx
call fcn.00402ee1
call fcn.00534d8f
ret 4