Function at 0x21123410
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x1fc
push ebx
push ebp
push esi
push edi
mov ebx, ecx
push ebx
push str.Input_file_types
push str.ASI_codec
mov ebp, edx
call sym.mss32.dll_RIB_find_file_provider
mov edi, eax
xor esi, esi
cmp edi, esi
jne 0x21123453
push ebx
push str.DLSFILE:_No_ASI_provider_available_for_file_type__s_n
call sym.mss32.dll_AIL_debug_printf
add esp, 8
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1fc
ret 0x10
lea ecx, [esp + 0x1d4]
mov dword [esp + 0x40], ecx
lea edx, [esp + 0x1c]
mov dword [esp + 0x50], edx
lea ecx, [esp + 0x20]
mov dword [esp + 0x70], ecx
lea edx, [esp + 0x14]
mov dword [esp + 0x80], edx
lea ecx, [esp + 0x1e4]
mov dword [esp + 0xa0], ecx
lea eax, [esp + 0x24]
lea edx, [esp + 0x1c4]
lea ecx, [esp + 0x204]
mov dword [esp + 0x30], eax
mov dword [esp + 0xb0], edx
mov dword [esp + 0xc0], ecx
lea eax, [esp + 0x200]
lea edx, [esp + 0x1cc]
lea ecx, [esp + 0x1ec]
mov dword [esp + 0x60], eax
mov dword [esp + 0xd0], edx
mov dword [esp + 0xe0], ecx
lea eax, [esp + 0x208]
lea edx, [esp + 0x1b8]
lea ecx, [esp + 0x1fc]
mov dword [esp + 0x90], eax
mov eax, 1
mov dword [esp + 0xf0], edx
mov dword [esp + 0x100], ecx
lea edx, [esp + 0x1dc]
lea ecx, [esp + 0x1f4]
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], str.ASI_error
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], str.ASI_stream_attribute
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], str.ASI_stream_open
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], str.ASI_stream_seek
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], str.ASI_stream_close
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], str.ASI_stream_process
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], str.ASI_stream_set_preference
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], str.Input_bit_rate
mov dword [esp + 0xa4], esi
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], str.Input_sample_rate
mov dword [esp + 0xb4], esi
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], str.Input_sample_width
mov dword [esp + 0xc4], esi
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], str.Input_channels
mov dword [esp + 0xd4], esi
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], str.Output_bit_rate
mov dword [esp + 0xe4], esi
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], str.Output_sample_rate
mov dword [esp + 0xf4], esi
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], str.Output_sample_width
mov dword [esp + 0x104], esi
mov dword [esp + 0x108], eax
mov dword [esp + 0x10c], str.Output_channels
mov dword [esp + 0x110], edx
mov dword [esp + 0x114], esi
mov dword [esp + 0x118], eax
mov dword [esp + 0x11c], str.Position
mov dword [esp + 0x120], ecx
mov dword [esp + 0x124], esi
lea ecx, [esp + 0x1c0]
mov dword [esp + 0x140], ecx
lea ecx, [esp + 0x1d0]
mov dword [esp + 0x160], ecx
lea ecx, [esp + 0x1e0]
lea edx, [esp + 0x1bc]
mov dword [esp + 0x130], edx
mov dword [esp + 0x180], ecx
lea ecx, [esp + 0x1f0]
lea edx, [esp + 0x1c8]
mov dword [esp + 0x150], edx
mov dword [esp + 0x1a0], ecx
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x1dc]
mov ebx, 2
mov dword [esp + 0x174], edx
push eax
lea edx, [esp + 0x1f0]
mov dword [esp + 0x198], edx
push str.ASI_codec
lea edx, [esp + 0x204]
push edi
mov dword [esp + 0x138], eax
mov dword [esp + 0x13c], str.Percent_done
mov dword [esp + 0x144], esi
mov dword [esp + 0x148], eax
mov dword [esp + 0x14c], str.Minimum_input_block_size
mov dword [esp + 0x154], esi
mov dword [esp + 0x158], ebx
mov dword [esp + 0x15c], str.Raw_source_sample_rate
mov dword [esp + 0x164], esi
mov dword [esp + 0x168], ebx
mov dword [esp + 0x16c], str.Raw_source_sample_width
mov dword [esp + 0x174], esi
mov dword [esp + 0x178], ebx
mov dword [esp + 0x17c], str.Raw_source_channels
mov dword [esp + 0x184], esi
mov dword [esp + 0x188], ebx
mov dword [esp + 0x18c], str.Requested_bit_rate
mov dword [esp + 0x194], esi
mov dword [esp + 0x198], ebx
mov dword [esp + 0x19c], str.Requested_sample_rate
mov dword [esp + 0x1a4], esi
mov dword [esp + 0x1a8], ebx
mov dword [esp + 0x1ac], str.Requested_sample_width
mov dword [esp + 0x1b4], esi
mov dword [esp + 0x1b8], ebx
mov dword [esp + 0x1bc], str.Requested_channels
mov dword [esp + 0x1c0], edx
mov dword [esp + 0x1c4], esi
call sym.mss32.dll_RIB_request_interface
lea edx, [esp + 0x38]
push edx
push 0x18
push str.ASI_stream
push edi
call sym.mss32.dll_RIB_request_interface
mov eax, dword [esp + 0x210]
push eax
push 0x2111ad50
push esi
mov dword [0x211507b8], eax
mov dword [0x211507b4], ebp
mov dword [0x211507b0], esi
call dword [esp + 0x28]
cmp eax, esi
mov dword [esp + 0x10], eax
jne 0x2112384d
call dword [esp + 0x24]
push eax
push str.DLSFILE:_Could_not_open_stream___s__n
call sym.mss32.dll_AIL_debug_printf
add esp, 8
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1fc
ret 0x10
mov eax, dword [esp + 0x218]
cmp dword [esp + 0x21c], 0x10
mov edi, dword [esp + 0x214]
mov ebp, eax
mov dword [esp + 0x18], ebp
jne 0x211238a3
cmp eax, esi
je 0x21123914
cmp ebp, 0x400
mov eax, 0x400
jg 0x21123882
mov eax, ebp
push eax
mov eax, dword [esp + 0x14]
push edi
push eax
call dword [esp + 0x20]
cmp eax, esi
je 0x21123899
add edi, eax
sub ebp, eax
jne 0x21123873
jmp 0x21123914
cmp ebp, esi
je 0x21123914
mov ecx, ebp
xor eax, eax
jmp 0x21123906
cmp eax, esi
je 0x21123914
lea eax, [ebp + ebp]
cmp eax, 0x800
jbe 0x211238b7
mov eax, 0x800
push eax
mov eax, dword [esp + 0x14]
push 0x21151824
push eax
call dword [esp + 0x20]
sar eax, 1
je 0x211238fb
xor ecx, ecx
cmp eax, esi
jle 0x211238ef
mov ebp, 0x21151824
xor edx, edx
mov dx, word [ebp]
add ebp, ebx
sar edx, 8
xor dl, 0x80
mov byte [ecx + edi], dl
inc ecx
cmp ecx, eax
jl 0x211238d5
mov ebp, dword [esp + 0x18]
add edi, eax
sub ebp, eax
mov dword [esp + 0x18], ebp
jne 0x211238a7
jmp 0x21123914
cmp ebp, esi
je 0x21123914
mov ecx, ebp
mov eax, 0x80808080
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x10]
push eax
call dword [esp + 0x24]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x1fc
ret 0x10