Function at 0x4a954b
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push edi
xor edi, edi
push edi
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0xc]
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 - 0x24], edi
mov dword [ebp - 0x20], edi
call fcn.004a9282
add esp, 0x28
test al, al
jne 0x4a9591
xor eax, eax
jmp 0x4a97ca
mov eax, dword [ebp - 0xc]
push ebx
mov ebx, dword [ebp + 0x10]
test bl, 0x10
push esi
mov esi, eax
jne 0x4a95a8
test ebx, 0x400000
je 0x4a95ac
sar eax, 1
mov esi, eax
mov eax, ebx
and eax, 0x40
je 0x4a95b5
sar esi, 1
test ebx, 0x40000
je 0x4a95c7
cmp eax, edi
je 0x4a95c7
and ebx, 0xffffefff
mov ecx, ebx
and cl, 0x40
neg cl
mov eax, 0xff
push eax
mov edi, 0xffffff7f
sbb ecx, ecx
and ecx, edi
add ecx, 0x80
push ecx
push eax
push dword [ebp - 0x14]
push ebx
push esi
push dword [ebp + 8]
call fcn.0049f5aa
mov esi, eax
test esi, esi
jne 0x4a95ff
xor eax, eax
jmp 0x4a97c8
mov eax, dword [esi + 0x10c]
dec eax
push eax
push 0
push esi
call fcn.0049f6d1
mov eax, dword [ebp - 0x10]
push 0
push dword [ebp - 8]
mov dword [esi + 0x164], eax
push dword [ebp + 0xc]
call fcn.004a2eb8
mov eax, dword [esi + 0x164]
add esp, 0xc
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 0xc]
push 0
push esi
call fcn.0049ee0b
test al, al
jne 0x4a9658
push esi
call fcn.0049e9ba
jmp 0x4a95f8
mov eax, dword [ebp - 0x10]
cmp dword [eax + 4], 0
jne 0x4a9666
cmp dword [eax], 0
je 0x4a966e
test ebx, 0x400000
je 0x4a9692
test bl, 0x10
push dword [ebp + 0xc]
je 0x4a9680
mov eax, dword [ebp - 4]
shr eax, 1
push eax
push 2
jmp 0x4a9685
push dword [ebp - 4]
push 1
push dword [ebp - 8]
call fcn.004a2d9f
jmp 0x4a9730
push 0x311
mov edi, str.src_format_wav.c
push edi
push dword [ebp - 4]
push 0
call fcn.004a2379
add esp, 0x10
test eax, eax
mov dword [ebp - 0x10], eax
jne 0x4a96c6
push esi
call fcn.0049e9ba
mov dword [0x4f3440], 0xc
jmp 0x4a95f8
push dword [ebp + 0xc]
push dword [ebp - 4]
push 1
push eax
call fcn.004a2d9f
lea eax, [ebp - 0xc]
push eax
push dword [ebp - 8]
push dword [ebp - 4]
push dword [ebp - 0x10]
push dword [esi + 0x164]
call fcn.004a94d7
add esp, 0x24
test al, al
jne 0x4a971b
push esi
call fcn.0049e9ba
push 0x31e
push edi
push dword [ebp - 0x10]
push 0
call fcn.004a231f
add esp, 0x10
mov dword [0x4f3440], 0xb
jmp 0x4a95f8
push 0x323
push edi
push dword [ebp - 0x10]
push 0
call fcn.004a231f
mov edi, 0xffffff7f
add esp, 0x10
test bl, 8
je 0x4a9763
mov eax, dword [ebp - 8]
xor ecx, ecx
cmp dword [ebp - 0x14], ecx
jbe 0x4a974c
xor byte [eax], 0x80
inc eax
inc ecx
cmp ecx, dword [ebp - 0x14]
jb 0x4a9742
lea eax, [esi + 0x124]
mov edx, dword [eax]
and ebx, edi
mov ecx, 0x100
and edx, edi
or ebx, ecx
or edx, ecx
mov dword [eax], edx
push dword [ebp - 0x18]
push dword [ebp - 0x14]
push dword [ebp - 0x1c]
push dword [ebp - 8]
push esi
call fcn.0049eea8
test bl, 0x10
mov eax, dword [ebp - 0xc]
je 0x4a977f
sar eax, 1
test bl, 0x40
je 0x4a9786
sar eax, 1
xor ecx, ecx
cmp dword [ebp - 0x24], ecx
jne 0x4a979d
cmp dword [ebp - 0x20], ecx
jne 0x4a979d
dec eax
push eax
push ecx
push esi
call fcn.0049f6d1
jmp 0x4a97bb
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push esi
call fcn.0049f6d1
test bl, 1
jne 0x4a97bb
and ebx, 0xfffffffa
or ebx, 2
push ebx
push esi
call fcn.0049f63a
push dword [esi + 0x164]
call fcn.004a948a
mov eax, esi
pop esi
pop ebx
pop edi
leave
ret