Function at 0x41cadb
Capabilities:
Access peb ldr_data

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x47233b
push eax
mov dword fs:[0], esp
sub esp, 0xc8
push esi
mov esi, ecx
mov al, byte [esi + 0x18]
test al, al
push edi
je 0x41cbbc
xor eax, eax
mov ecx, 0x12
lea edi, [esp + 0x88]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x60]
push eax
mov ecx, esi
call fcn.00411bb0
mov ecx, dword [eax + 0xc]
test ecx, ecx
mov dword [esp + 0xd8], 0
je 0x41cb1d
mov ecx, dword [ecx + 0xc]
jmp 0x41cb1f
xor ecx, ecx
mov edx, dword [eax + 8]
mov eax, dword [eax + 4]
imul edx, ecx
lea ecx, [edx + eax]
mov edx, dword [ecx]
call dword [edx + 0x38]
or edi, 0xffffffff
lea ecx, [esp + 0x60]
mov dword [esp + 0xa0], eax
mov dword [esp + 0xd8], edi
call fcn.004112b0
lea eax, [esp + 0x4c]
push eax
mov ecx, esi
mov dword [esp + 0x90], 0x204d454d
call fcn.00411bb0
mov ecx, dword [eax + 0xc]
test ecx, ecx
mov dword [esp + 0xd8], 1
je 0x41cb78
mov ecx, dword [ecx + 0xc]
jmp 0x41cb7a
xor ecx, ecx
mov edx, dword [eax + 8]
mov eax, dword [eax + 4]
imul edx, ecx
lea ecx, [edx + eax]
mov edx, dword [ecx]
call dword [edx + 0x3c]
lea ecx, [esp + 0x4c]
mov dword [esp + 0x9c], eax
mov dword [esp + 0xd8], edi
call fcn.004112b0
push 0
lea eax, [esp + 0x8c]
push eax
push 0
call dword [0x485574]
mov dword [esi + 0x38], eax
jmp 0x41cc53
lea ecx, [esp + 0x74]
push ecx
mov ecx, esi
call fcn.00411bb0
mov ecx, dword [eax + 0xc]
test ecx, ecx
mov dword [esp + 0xd8], 2
je 0x41cbdf
mov ecx, dword [ecx + 0xc]
jmp 0x41cbe1
xor ecx, ecx
mov edx, dword [eax + 8]
mov eax, dword [eax + 4]
imul edx, ecx
lea ecx, [edx + eax]
mov edx, dword [ecx]
lea eax, [esp + 0x1c]
push eax
call dword [edx + 0x2c]
cmp dword [eax + 0x18], 0x10
jb 0x41cc02
mov eax, dword [eax + 4]
jmp 0x41cc05
add eax, 4
push 0
push 0
push eax
call dword [0x485574]
mov dword [esi + 0x38], eax
cmp dword [esp + 0x34], 0x10
jb 0x41cc27
mov ecx, dword [esp + 0x20]
push ecx
call fcn.004618bc
add esp, 4
lea ecx, [esp + 0x74]
mov dword [esp + 0x34], 0xf
mov dword [esp + 0x30], 0
mov byte [esp + 0x20], 0
mov dword [esp + 0xd8], 0xffffffff
call fcn.004112b0
mov eax, dword [esi + 0x38]
test eax, eax
jne 0x41cc85
push str.CWaveStream::Initialize_mmioOpen
push 0x4bb2a8
call fcn.004051b0
add esp, 8
pop edi
mov eax, 1
pop esi
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
add esp, 0xd4
ret
mov eax, dword [esi + 0x38]
mov edi, dword [0x485578]
push 0x20
push 0
lea edx, [esp + 0x40]
push edx
push eax
mov dword [esp + 0x50], 0x45564157
call edi
test eax, eax
je 0x41ccd4
push str.CWaveStream::Initialize_Wave
push 0x4bb2a8
call fcn.004051b0
add esp, 8
pop edi
mov eax, 2
pop esi
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
add esp, 0xd4
ret
mov eax, dword [esi + 0x38]
push 0x10
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x10]
push edx
push eax
mov dword [esp + 0x18], 0x20746d66
call edi
test eax, eax
je 0x41cd20
push str.CWaveStream::Initialize_fmt
push 0x4bb2a8
call fcn.004051b0
add esp, 8
pop edi
mov eax, 3
pop esi
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
add esp, 0xd4
ret
mov edx, dword [esi]
push 0x12
mov ecx, esi
call dword [edx + 0x1c]
push eax
mov eax, dword [esi + 0x38]
push eax
call dword [0x48557c]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x1c]
cmp word [eax], 1
je 0x41cd6f
push str.CWaveStream::Initialize_WAVE_FORMAT_PCM
push 0x4bb2a8
call fcn.004051b0
add esp, 8
pop edi
mov eax, 4
pop esi
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
add esp, 0xd4
ret
mov ecx, dword [esi + 0x38]
push 0
lea eax, [esp + 0xc]
push eax
push ecx
call dword [0x485580]
mov ecx, dword [esi + 0x38]
push 0x10
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x10]
push eax
push ecx
mov dword [esp + 0x18], 0x61746164
call edi
test eax, eax
je 0x41cdcc
push str.CWaveStream::Initialize
push 0x4bb2a8
call fcn.004051b0
add esp, 8
pop edi
mov eax, 5
pop esi
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
add esp, 0xd4
ret
mov eax, dword [esi + 0x38]
mov edx, dword [esp + 0xc]
push 1
push 0
push eax
mov dword [esi + 0x30], edx
call dword [0x485584]
mov edx, dword [esi]
push 0
mov ecx, esi
mov dword [esi + 0x2c], eax
call dword [edx + 0x10]
mov ecx, dword [esp + 0xd0]
pop edi
xor eax, eax
pop esi
mov dword fs:[0], ecx
add esp, 0xd4
ret