Function at 0x100dc9cf
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
push esi
push edi
xor edi, edi
push edi
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp + 0x10]
push eax
push dword [ebp + 0xc]
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], edi
call fcn.100dc593
add esp, 0x28
test al, al
je 0x100dcb8d
mov ecx, dword [ebp + 0x10]
test cl, 0x10
mov eax, dword [ebp - 8]
mov esi, eax
jne 0x100dca29
test ecx, 0x400000
je 0x100dca2d
sar eax, 1
mov esi, eax
mov eax, ecx
and eax, 0x40
je 0x100dca36
sar esi, 1
test ecx, 0x40000
je 0x100dca4b
cmp eax, edi
je 0x100dca4b
and ecx, 0xffffefff
mov dword [ebp + 0x10], ecx
mov edx, ecx
and dl, 0x40
neg dl
mov eax, 0xff
push eax
mov ebx, 0xffffff7f
sbb edx, edx
and edx, ebx
add edx, 0x80
push edx
push eax
push dword [ebp - 0x14]
push ecx
push esi
push dword [ebp + 8]
call fcn.100c9cd6
mov esi, eax
cmp esi, edi
je 0x100dcb8d
mov eax, dword [esi + 0x10c]
dec eax
push eax
push edi
push esi
call fcn.100cab6e
mov eax, dword [ebp - 0x18]
push edi
mov dword [esi + 0x168], eax
push dword [ebp - 0x1c]
push dword [ebp + 0xc]
call fcn.100d7321
mov edi, dword [esi + 0x168]
add esp, 0xc
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp + 8]
push eax
push dword [ebp - 8]
push 0
push esi
call fcn.100ca91d
test al, al
jne 0x100dcad7
push esi
call fcn.100c9d66
jmp 0x100dcb8d
xor eax, eax
cmp dword [edi + 4], eax
jne 0x100dcae2
cmp dword [edi], eax
je 0x100dcae8
test byte [ebp + 0x12], 0x40
je 0x100dcb0d
test byte [ebp + 0x10], 0x10
push dword [ebp + 0xc]
je 0x100dcafb
mov eax, dword [ebp - 4]
shr eax, 1
push eax
push 2
jmp 0x100dcb00
push dword [ebp - 4]
push 1
push dword [ebp + 8]
call fcn.100d70a3
jmp 0x100dcba4
push 0x318
mov edi, str.F:dev_fmodsrc375win_src_format_wav.c
push edi
push dword [ebp - 4]
push eax
call fcn.100d679b
add esp, 0x10
test eax, eax
mov dword [ebp - 0xc], eax
jne 0x100dcb3d
push esi
call fcn.100c9d66
mov dword [0x1013a120], 0xc
jmp 0x100dcb8d
push dword [ebp + 0xc]
push dword [ebp - 4]
push 1
push eax
call fcn.100d70a3
lea eax, [ebp - 8]
push eax
push dword [ebp + 8]
push dword [ebp - 4]
push dword [ebp - 0xc]
push dword [esi + 0x168]
call fcn.100dc891
add esp, 0x24
test al, al
jne 0x100dcb94
push esi
call fcn.100c9d66
push 0x325
push edi
push dword [ebp - 0xc]
push 0
call fcn.100d6744
add esp, 0x10
mov dword [0x1013a120], 0xb
xor eax, eax
jmp 0x100dcc4f
push 0x32a
push edi
push dword [ebp - 0xc]
push 0
call fcn.100d6744
mov eax, dword [ebp + 0x10]
add esp, 0x10
test al, 8
je 0x100dcbe3
mov ecx, dword [ebp + 8]
xor edx, edx
cmp dword [ebp - 0x10], edx
jbe 0x100dcbc5
xor byte [ecx], 0x80
inc ecx
inc edx
cmp edx, dword [ebp - 0x10]
jb 0x100dcbb8
mov eax, dword [ebp + 0x10]
and eax, ebx
mov ecx, 0x100
or eax, ecx
mov dword [ebp + 0x10], eax
mov edx, dword [esi + 0x124]
lea eax, [esi + 0x124]
and edx, ebx
or edx, ecx
mov dword [eax], edx
push dword [ebp - 0x20]
push dword [ebp - 0x10]
push dword [ebp - 0x24]
push dword [ebp + 8]
push esi
call fcn.100ca9ba
test byte [ebp + 0x10], 0x10
mov eax, dword [ebp - 8]
je 0x100dcc00
sar eax, 1
test byte [ebp + 0x10], 0x40
je 0x100dcc08
sar eax, 1
xor ecx, ecx
cmp dword [ebp - 0x30], ecx
jne 0x100dcc1f
cmp dword [ebp - 0x2c], ecx
jne 0x100dcc1f
dec eax
push eax
push ecx
push esi
call fcn.100cab6e
jmp 0x100dcc42
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
push esi
call fcn.100cab6e
mov eax, dword [ebp + 0x10]
test al, 1
jne 0x100dcc42
and eax, 0xfffffffa
or eax, 2
push eax
push esi
mov dword [ebp + 0x10], eax
call fcn.100caa03
push dword [esi + 0x168]
call fcn.100dc844
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret