Function at 0x4e7c40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x178
mov eax, dword [0x5d5de8]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
mov dword [ebp - 0x128], eax
mov eax, dword [ebp + 0x10]
cmp dword [eax + 0x18], 0x10
push esi
push edi
jb 0x4e7c6d
mov eax, dword [eax + 4]
jmp 0x4e7c70
add eax, 4
call fcn.004e7610
mov ebx, eax
test ebx, ebx
jbe 0x4e7de1
push ebx
push 4
lea ecx, [ebp - 0x10]
push 1
push ecx
mov byte [ebp - 0xc], 0
call fcn.004e7720
add esp, 0x10
mov edi, str.RIFF
lea esi, [ebp - 0x10]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4e7de1
push ebx
push 1
lea eax, [ebp - 0x12c]
push 4
push eax
call fcn.004e7720
push ebx
push 4
lea ecx, [ebp - 0x10]
push 1
push ecx
call fcn.004e7720
add esp, 0x20
mov edi, str.WAVE
lea esi, [ebp - 0x10]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4e7de1
mov esi, ebx
mov dword [ebp - 0x120], 0x10
mov dword [ebp - 0x148], 1
mov dword [ebp - 0x130], 0x5622
mov byte [ebp - 0x115], dl
call fcn.004e7770
test eax, eax
jne 0x4e7de1
push ebx
push 4
lea eax, [ebp - 0x10]
push 1
push eax
call fcn.004e7720
push ebx
push 1
lea ecx, [ebp - 0x12c]
push 4
push ecx
call fcn.004e7720
add esp, 0x20
test eax, eax
je 0x4e7de1
push ebx
call fcn.004e76e0
add esp, 4
mov edi, str.fmt
lea esi, [ebp - 0x10]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov dword [ebp - 0x124], eax
jne 0x4e7df6
push ebx
push 1
lea eax, [ebp - 0x134]
push 2
push eax
call fcn.004e7720
push ebx
push 1
lea ecx, [ebp - 0x148]
push 2
push ecx
call fcn.004e7720
push ebx
push 1
lea edx, [ebp - 0x130]
push 4
push edx
call fcn.004e7720
push ebx
push 1
lea eax, [ebp - 0x174]
push 4
push eax
call fcn.004e7720
add esp, 0x40
push ebx
push 1
lea ecx, [ebp - 0x170]
push 2
push ecx
call fcn.004e7720
push ebx
push 1
lea edx, [ebp - 0x120]
push 2
push edx
call fcn.004e7720
add esp, 0x20
cmp word [ebp - 0x134], 1
je 0x4e7f49
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.005697e2
mov esp, ebp
pop ebp
ret 0xc
mov edi, str.dep
lea esi, [ebp - 0x10]
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x4e7f0d
push ebx
push 1
lea ecx, [ebp - 0x11c]
push 2
push ecx
call fcn.004e7720
mov eax, dword [ebp - 0x11c]
add esp, 0x10
cmp ax, 0xff
jbe 0x4e7e38
mov eax, 0xff
mov dword [ebp - 0x11c], eax
movzx edx, ax
push ebx
push edx
lea eax, [ebp - 0x114]
push 1
push eax
call fcn.004e7720
movzx ecx, word [ebp - 0x11c]
push ebx
push 1
lea edx, [ebp - 0x13c]
push 8
push edx
mov byte [ebp + ecx - 0x114], 0
call fcn.004e7720
add esp, 0x20
xor eax, eax
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x14c], eax
mov dword [ebp - 0x158], eax
mov byte [ebp - 0x168], al
lea eax, [ebp - 0x114]
mov dword [ebp - 0x154], 0xf
lea edx, [eax + 1]
jmp 0x4e7ea0
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4e7ea0
sub eax, edx
push eax
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x16c]
call fcn.0043dd50
lea edi, [ebp - 0x150]
lea ecx, [ebp - 0x16c]
call fcn.004e8fa0
cmp dword [ebp - 0x154], 0x10
jb 0x4e7ee7
mov ecx, dword [ebp - 0x168]
push ecx
call fcn.00569095
add esp, 4
mov edx, dword [ebp - 0x138]
cmp edx, dword [ebp - 0x14c]
jne 0x4e7de1
mov eax, dword [ebp - 0x13c]
cmp eax, dword [ebp - 0x150]
jne 0x4e7de1
jmp 0x4e7f49
mov edi, str.xor
lea esi, [ebp - 0x10]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4e7f36
push ebx
push 1
lea eax, [ebp - 0x115]
push 1
push eax
call fcn.004e7720
add esp, 0x10
jmp 0x4e7f49
mov edi, str.data
lea esi, [ebp - 0x10]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4e7f73
mov eax, dword [ebp - 0x12c]
mov ecx, dword [ebp - 0x124]
lea edi, [ecx + eax]
xor esi, esi
call fcn.004e76b0
mov esi, ebx
call fcn.004e7770
test eax, eax
je 0x4e7d17
jmp 0x4e7de1
mov ecx, dword [ebp - 0x12c]
mov esi, dword [ebp - 0x128]
mov edx, dword [ebp + 0xc]
xor eax, eax
mov dword [ebp - 0x144], eax
mov dword [ebp - 0x138], eax
mov dword [ebp - 0x140], eax
mov dword [ebp - 0x13c], eax
mov eax, dword [ebp - 0x148]
mov dword [esi + edx*4 + 0x2008], ecx
mov edx, dword [ebp - 0x130]
mov word [ebp - 0x142], ax
movzx eax, ax
mov dword [ebp - 0x140], edx
movzx edx, word [ebp - 0x120]
imul eax, edx
cdq
and edx, 7
add eax, edx
mov dx, word [ebp - 0x120]
sar eax, 3
mov word [ebp - 0x138], ax
movzx eax, ax
imul eax, dword [ebp - 0x130]
mov dword [ebp - 0x13c], eax
xor eax, eax
mov dword [ebp - 0x164], eax
mov dword [ebp - 0x160], eax
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x154], eax
mov dword [ebp - 0x158], eax
mov dword [ebp - 0x15c], ecx
mov edi, ecx
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x144]
mov dword [ebp - 0x154], eax
mov eax, dword [esi + 0x3094]
push 0
lea esi, [esi + ecx*4 + 4]
push esi
mov word [ebp - 0x136], dx
lea ecx, [ebp - 0x164]
mov word [ebp - 0x144], 1
mov dword [ebp - 0x164], 0x14
mov dword [ebp - 0x160], 0x80ea
mov edx, dword [eax]
mov edx, dword [edx + 0xc]
push ecx
push eax
call edx
test eax, eax
je 0x4e8079
push ebx
call fcn.004e7670
add esp, 4
jmp 0x4e7de1
mov eax, dword [esi]
mov ecx, dword [eax]
push 0
push 0
push 0
lea edx, [ebp - 0x128]
push edx
lea edx, [ebp - 0x11c]
push edx
push edi
push 0
push eax
mov eax, dword [ecx + 0x2c]
call eax
test eax, eax
push ebx
jne 0x4e806c
mov ecx, dword [ebp - 0x11c]
push edi
push 1
push ecx
call fcn.004e7720
push ebx
mov dword [ebp - 0x124], eax
call fcn.004e7670
add esp, 0x14
xor eax, eax
test edi, edi
jle 0x4e80e6
jmp 0x4e80d0
mov ecx, dword [ebp - 0x11c]
mov dl, byte [ebp - 0x115]
xor byte [eax + ecx], dl
add eax, 1
cmp eax, edi
jl 0x4e80d0
mov ecx, dword [ebp - 0x128]
mov esi, dword [esi]
mov edx, dword [ebp - 0x11c]
mov eax, dword [esi]
mov eax, dword [eax + 0x4c]
push 0
push 0
push ecx
push edx
push esi
call eax
test eax, eax
jne 0x4e7de1
cmp dword [ebp - 0x124], edi
mov ecx, dword [ebp - 8]
pop edi
sete al
pop esi
xor ecx, ebp
pop ebx
call fcn.005697e2
mov esp, ebp
pop ebp
ret 0xc