Function at 0x455670
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 8], eax
cmp dword [ebp + 0x18], 2
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ebx, edx
mov dword [ebp - 0x98], ebx
mov dword [ebp - 0xd0], ecx
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0xb4], edi
ja 0x455bc0
movsx eax, word [edi + 2]
mov ecx, ebx
mov edx, dword [edi + 0x24]
push eax
call fcn.00454e20
movsx ebx, word [edi]
add esp, 4
mov dword [ebp - 0xac], ebx
lea eax, [ebx*4]
call fcn.00471740
movsx eax, word [edi + 2]
mov ecx, dword [edi + 0xc]
mov esi, dword [edi + 8]
mov dword [ebp - 0x94], esp
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0x7c], esi
test al, 1
jne 0x455bd1
xor edx, edx
mov dword [ebp - 0x90], edx
test ebx, ebx
jle 0x455834
lea ebx, [eax - 2]
mov dword [ebp - 0x9c], ebx
lea ebx, [eax + eax]
neg eax
mov dword [ebp - 0xa4], ebx
add eax, eax
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x98]
sub eax, ecx
mov dword [ebp - 0x84], eax
nop dword [eax + eax]
mov ebx, dword [ebp - 0x9c]
xor ecx, ecx
xor edi, edi
mov dword [ebp - 0x80], ecx
test ebx, ebx
js 0x4557f5
mov ecx, dword [ebp - 0x8c]
lea edx, [ebx + 1]
lea edx, [ecx + edx*2]
mov dword [ebp - 0x88], edx
nop word [eax + eax]
movzx eax, word [eax + edx]
movzx ecx, byte [esi + ebx + 1]
shl cx, 7
sub ax, cx
sar edi, 1
movsx esi, ax
movsx eax, word [edx]
imul esi, eax
mov eax, esi
sar esi, 1
sub eax, edi
cdq
xor eax, edx
sub eax, edx
add dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x7c]
movzx ecx, byte [eax + ebx]
mov eax, dword [ebp - 0x98]
shl cx, 7
movzx eax, word [eax + ebx*2]
sub ax, cx
mov ecx, dword [ebp - 0x80]
movsx edi, ax
mov eax, dword [ebp - 0x88]
movsx eax, word [eax - 2]
imul edi, eax
mov eax, edi
sub eax, esi
mov esi, dword [ebp - 0x7c]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x88]
add ecx, eax
sub edx, 4
sub ebx, 2
mov eax, dword [ebp - 0x84]
mov dword [ebp - 0x80], ecx
mov dword [ebp - 0x88], edx
jns 0x455770
mov edx, dword [ebp - 0x90]
add esi, dword [ebp - 0xa0]
mov ebx, esp
add eax, dword [ebp - 0xa8]
mov dword [ebp - 0x7c], esi
mov dword [ebp - 0x84], eax
mov dword [ebx + edx*4], ecx
inc edx
mov ecx, dword [ebp - 0xa4]
add dword [ebp - 0x8c], ecx
mov dword [ebp - 0x90], edx
cmp edx, dword [ebp - 0xac]
jl 0x455740
mov edi, dword [ebp - 0xb4]
mov ebx, dword [ebp + 0x14]
lea esi, [ebx*4]
mov eax, esi
call fcn.00471740
movsx ecx, word [edi]
mov eax, esp
push ebx
push ecx
mov ecx, dword [ebp - 0x94]
mov edx, eax
mov dword [ebp - 0x80], eax
call fcn.00456e90
add esp, 8
mov eax, esi
call fcn.00471740
mov esi, esp
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x9c], esi
call fcn.00471740
mov ecx, esp
mov dword [ebp - 0xd4], ecx
test ebx, ebx
jle 0x455b51
mov eax, dword [ebp + 0x10]
mov ebx, esi
sar dword [ebp + 0x18], 1
sar eax, 2
mov dword [ebp - 0x84], ecx
mov ecx, dword [ebp - 0x80]
cwde
sub ecx, esi
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x8c], ebx
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0x88], eax
nop word [eax + eax]
mov esi, dword [ecx + ebx]
movzx eax, word [edi + 2]
movsx ebx, ax
mov ecx, ebx
mov dword [ebp - 0xbc], eax
mov eax, dword [edi + 8]
imul ecx, esi
mov dword [ebp - 0xc8], esi
add eax, ecx
mov dword [ebp - 0xac], eax
mov eax, dword [edi + 0xc]
lea edx, [eax + ecx*2]
xor eax, eax
mov dword [ebp - 0x90], edx
mov dword [ebp - 0x94], eax
test ebx, ebx
jle 0x455aa8
mov ecx, dword [ebp - 0xb8]
lea edi, [ebp - 0x78]
mov ebx, dword [ebp - 0x98]
sub ecx, edx
mov dword [ebp - 0xa8], ecx
sub ebx, edx
sub edi, edx
mov dword [ebp - 0xc0], ebx
lea ecx, [ebp - 0x58]
mov dword [ebp - 0xc4], edi
sub ecx, edx
mov dword [ebp - 0xa0], ecx
nop dword [eax]
nop dword [eax + eax]
mov ecx, dword [ebp - 0xac]
movsx esi, word [edx]
movzx ecx, byte [ecx + eax]
mov ax, word [ebx + edx]
shl cx, 7
sub ax, cx
cwde
imul eax, esi
imul esi, esi
sar eax, 0xe
mov word [edi + edx], ax
mov eax, dword [ebp - 0xa8]
movsx ebx, word [eax + edx]
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
je 0x455985
bsr eax, eax
mov edi, 0x1e
sub edi, eax
jmp 0x45598a
mov edi, 0x1f
mov eax, esi
mov ecx, edi
cdq
shl ebx, cl
xor eax, edx
mov dword [ebp - 0x7c], ebx
sub eax, edx
je 0x4559a6
bsr eax, eax
mov ebx, 0x1e
sub ebx, eax
jmp 0x4559ab
mov ebx, 0x1f
mov ecx, ebx
mov eax, 0x1fffffff
shl esi, cl
sub edi, ebx
cdq
mov ecx, esi
sar ecx, 0x10
idiv ecx
mov dword [ebp - 0xa4], esi
movsx ecx, ax
mov eax, dword [ebp - 0x7c]
movzx esi, ax
sar eax, 0x10
imul eax, ecx
imul esi, ecx
sar esi, 0x10
add esi, eax
mov eax, esi
imul dword [ebp - 0xa4]
shl edx, 3
sub dword [ebp - 0x7c], edx
mov edx, dword [ebp - 0x7c]
movzx eax, dx
sar edx, 0x10
imul edx, ecx
imul eax, ecx
add edx, esi
sar eax, 0x10
add edx, eax
add edi, 8
jns 0x455a4a
mov ecx, edi
mov eax, 0x80000000
neg ecx
mov esi, 0x7fffffff
sar eax, cl
sar esi, cl
cmp eax, esi
jle 0x455a2d
cmp edx, eax
jg 0x455a42
cmp edx, esi
mov eax, edx
cmovl eax, esi
neg edi
mov ecx, edi
shl eax, cl
jmp 0x455a59
cmp edx, esi
jle 0x455a3b
neg edi
mov eax, esi
mov ecx, edi
shl eax, cl
jmp 0x455a59
cmp edx, eax
cmovl edx, eax
mov eax, edx
neg edi
mov ecx, edi
shl eax, cl
jmp 0x455a59
cmp edi, 0x20
jge 0x455a57
mov eax, edx
mov ecx, edi
sar eax, cl
jmp 0x455a59
xor eax, eax
mov edx, dword [ebp - 0x90]
mov ecx, dword [ebp - 0xa0]
mov ebx, dword [ebp - 0xbc]
mov edi, dword [ebp - 0xc4]
mov word [ecx + edx], ax
add edx, 2
mov eax, dword [ebp - 0x94]
inc eax
movsx ecx, bx
mov ebx, dword [ebp - 0xc0]
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x90], edx
cmp eax, ecx
jl 0x455940
mov edi, dword [ebp - 0xb4]
mov esi, dword [ebp - 0xc8]
push esi
push edi
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x38]
call fcn.0043e380
movzx eax, word [edi + 2]
lea edx, [ebp - 0x78]
mov ecx, dword [ebp - 0x84]
push eax
push dword [ebp + 0x10]
movzx eax, word [edi + 6]
push eax
movsx eax, word [edi + 4]
push eax
push dword [edi + 0x20]
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.00457060
mov ebx, dword [ebp - 0x8c]
add esp, 0x28
mov ecx, 0x100
mov dword [ebx], eax
movsx eax, word [edi]
imul eax, dword [ebp + 0x18]
add eax, dword [edi + 0x10]
test esi, esi
je 0x455b07
movzx ecx, byte [eax + esi - 1]
movzx eax, byte [eax + esi]
sub ecx, eax
call fcn.00420340
add dword [ebp - 0x84], 0x10
mov ecx, 0x400
sub ecx, eax
movsx eax, cx
imul eax, dword [ebp - 0xcc]
mov ecx, dword [ebp - 0xb0]
add dword [ebx], eax
add ebx, 4
sub dword [ebp - 0x88], 1
mov dword [ebp - 0x8c], ebx
jne 0x4558c0
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp - 0x9c]
push 1
push ebx
lea edx, [ebp - 0xb0]
mov ecx, esi
call fcn.00456e90
mov esi, dword [ebp - 0xb0]
mov eax, dword [ebp - 0x80]
mov ebx, dword [ebp - 0xd0]
mov al, byte [eax + esi*4]
mov byte [ebx], al
movsx eax, word [edi + 2]
push eax
shl esi, 4
lea eax, [ebx + 1]
add esi, dword [ebp - 0xd4]
push esi
push eax
call fcn.004591f0
mov ecx, dword [ebp - 0x98]
add esp, 0x14
mov edx, ebx
push edi
call fcn.004483f0
mov eax, dword [ebp - 0x9c]
add esp, 4
mov eax, dword [eax]
lea esp, [ebp - 0xe4]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004575d6
mov esp, ebp
pop ebp
ret
push 0x3f
mov edx, str.D:_aopus_tools_win32_buildopus_tools_win32_buildlibopus_silkNLSF_encode.c
mov ecx, str.assertion_failed:_signalType___0__signalType___2
call fcn.00403f00
push 0x31
mov edx, str.D:_aopus_tools_win32_buildopus_tools_win32_buildlibopus_silkNLSF_VQ.c
mov ecx, str.assertion_failed:___LPC_order__1____0
call fcn.00403f00
int3