Function at 0x44d450
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 - 0xbc], eax
mov dword [ebp - 0xb8], edi
ja 0x44d998
movsx eax, word [edi + 2]
mov ecx, ebx
mov edx, dword [edi + 0x24]
push eax
call fcn.0044ecb0
movsx esi, word [edi]
add esp, 4
mov dword [ebp - 0xac], esi
lea eax, [esi*4]
call fcn.0047a3e0
movsx ebx, word [edi + 2]
mov ecx, dword [edi + 0xc]
mov eax, dword [edi + 8]
mov dword [ebp - 0x94], esp
mov dword [ebp - 0xa0], ebx
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0x88], eax
test bl, 1
jne 0x44d9a9
xor edx, edx
mov dword [ebp - 0x90], edx
test esi, esi
jle 0x44d626
lea esi, [ebx + ebx]
lea edi, [ebx - 2]
mov dword [ebp - 0xa4], esi
mov esi, dword [ebp - 0x98]
neg ebx
add ebx, ebx
mov dword [ebp - 0xb0], edi
sub esi, ecx
mov dword [ebp - 0xa8], ebx
mov dword [ebp - 0x80], esi
nop dword [eax]
xor ecx, ecx
xor ebx, ebx
mov dword [ebp - 0x7c], ecx
test edi, edi
js 0x44d5e1
mov edx, dword [ebp - 0x8c]
add edx, 2
inc eax
mov dword [ebp - 0x9c], eax
lea edx, [edx + edi*2]
mov dword [ebp - 0x84], edx
nop dword [eax + eax]
movzx ecx, byte [eax + edi]
movzx eax, word [esi + edx]
shl cx, 7
sub ax, cx
sar ebx, 1
movsx esi, ax
movsx eax, word [edx]
imul esi, eax
mov eax, esi
sar esi, 1
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
add dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x88]
movzx ecx, byte [edi + eax]
mov eax, dword [ebp - 0x98]
shl cx, 7
movzx eax, word [eax + edi*2]
sub ax, cx
mov ecx, dword [ebp - 0x7c]
movsx ebx, ax
mov eax, dword [ebp - 0x84]
movsx eax, word [eax - 2]
imul ebx, eax
mov eax, ebx
sub eax, esi
mov esi, dword [ebp - 0x80]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x84]
add ecx, eax
sub edx, 4
sub edi, 2
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x84], edx
jns 0x44d550
mov eax, dword [ebp - 0x88]
mov edx, dword [ebp - 0x90]
add eax, dword [ebp - 0xa0]
mov ebx, esp
add esi, dword [ebp - 0xa8]
mov edi, dword [ebp - 0xb0]
mov dword [ebp - 0x88], eax
mov dword [ebx + edx*4], ecx
inc edx
mov ecx, dword [ebp - 0xa4]
add dword [ebp - 0x8c], ecx
mov dword [ebp - 0x80], esi
mov dword [ebp - 0x90], edx
cmp edx, dword [ebp - 0xac]
jl 0x44d520
mov edi, dword [ebp - 0xb8]
mov ebx, dword [ebp + 0x14]
lea esi, [ebx*4]
mov eax, esi
call fcn.0047a3e0
movsx ecx, word [edi]
mov eax, esp
push ebx
push ecx
mov ecx, dword [ebp - 0x94]
mov edx, eax
mov dword [ebp - 0x84], eax
call fcn.0044f080
add esp, 8
mov eax, esi
call fcn.0047a3e0
mov esi, esp
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x9c], esi
call fcn.0047a3e0
mov ecx, esp
mov dword [ebp - 0xd4], ecx
test ebx, ebx
jle 0x44d926
mov eax, dword [ebp + 0x10]
mov ebx, esi
sar dword [ebp + 0x18], 1
sar eax, 2
mov dword [ebp - 0x80], ecx
mov ecx, dword [ebp - 0x84]
cwde
sub ecx, esi
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x8c], ebx
mov dword [ebp - 0xb4], ecx
mov dword [ebp - 0x88], eax
nop
movzx eax, word [edi + 2]
mov esi, dword [ecx + ebx]
movsx edx, ax
mov ecx, edx
mov dword [ebp - 0xa0], eax
mov eax, dword [edi + 8]
imul ecx, esi
mov dword [ebp - 0xc8], esi
add eax, ecx
mov dword [ebp - 0xb0], eax
mov eax, dword [edi + 0xc]
lea ebx, [eax + ecx*2]
xor eax, eax
mov dword [ebp - 0x90], eax
test edx, edx
jle 0x44d883
mov ecx, dword [ebp - 0xbc]
lea edi, [ebp - 0x78]
mov edx, dword [ebp - 0x98]
sub ecx, ebx
mov dword [ebp - 0xac], ecx
sub edx, ebx
sub edi, ebx
mov dword [ebp - 0xc0], edx
lea ecx, [ebp - 0x58]
mov dword [ebp - 0xc4], edi
sub ecx, ebx
mov dword [ebp - 0xa4], ecx
nop
mov ecx, dword [ebp - 0xb0]
movsx esi, word [ebx]
movzx ecx, byte [eax + ecx]
mov ax, word [edx + ebx]
shl cx, 7
sub ax, cx
cwde
imul eax, esi
imul esi, esi
sar eax, 0xe
mov word [edi + ebx], ax
mov eax, dword [ebp - 0xac]
movsx eax, word [eax + ebx]
mov dword [ebp - 0x7c], eax
cdq
xor eax, edx
sub eax, edx
je 0x44d766
bsr eax, eax
mov edi, 0x1e
sub edi, eax
jmp 0x44d76b
mov edi, 0x1f
mov eax, esi
mov ecx, edi
shl dword [ebp - 0x7c], cl
cdq
xor eax, edx
sub eax, edx
je 0x44d785
bsr eax, eax
mov ecx, 0x1e
sub ecx, eax
jmp 0x44d78a
mov ecx, 0x1f
shl esi, cl
mov eax, 0x1fffffff
cdq
mov dword [ebp - 0x94], ecx
mov ecx, esi
sar ecx, 0x10
idiv ecx
mov dword [ebp - 0xa8], esi
movsx ecx, ax
mov eax, dword [ebp - 0x7c]
movzx esi, ax
sar eax, 0x10
imul eax, ecx
imul esi, ecx
sub edi, dword [ebp - 0x94]
sar esi, 0x10
add esi, eax
mov eax, esi
imul dword [ebp - 0xa8]
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 0x44d831
mov ecx, edi
mov eax, 0x80000000
neg ecx
mov esi, 0x7fffffff
sar eax, cl
sar esi, cl
cmp eax, esi
jle 0x44d814
cmp edx, eax
jg 0x44d829
cmp edx, esi
mov eax, edx
cmovl eax, esi
neg edi
mov ecx, edi
shl eax, cl
jmp 0x44d840
cmp edx, esi
jle 0x44d822
neg edi
mov eax, esi
mov ecx, edi
shl eax, cl
jmp 0x44d840
cmp edx, eax
cmovl edx, eax
mov eax, edx
neg edi
mov ecx, edi
shl eax, cl
jmp 0x44d840
cmp edi, 0x20
jge 0x44d83e
mov eax, edx
mov ecx, edi
sar eax, cl
jmp 0x44d840
xor eax, eax
mov ecx, dword [ebp - 0xa4]
mov edx, dword [ebp - 0xa0]
mov edi, dword [ebp - 0xc4]
mov word [ecx + ebx], ax
add ebx, 2
mov eax, dword [ebp - 0x90]
inc eax
movsx ecx, dx
mov edx, dword [ebp - 0xc0]
mov dword [ebp - 0x90], eax
cmp eax, ecx
jl 0x44d720
mov edi, dword [ebp - 0xb8]
mov esi, dword [ebp - 0xc8]
push esi
push edi
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x38]
call fcn.00439490
movzx eax, word [edi + 2]
lea edx, [ebp - 0x78]
mov ecx, dword [ebp - 0x80]
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.0044f250
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 0x44d8df
movzx ecx, byte [eax + esi - 1]
movzx eax, byte [eax + esi]
sub ecx, eax
call fcn.00425020
add dword [ebp - 0x80], 0x10
mov ecx, 0x400
sub ecx, eax
movsx eax, cx
imul eax, dword [ebp - 0xcc]
mov ecx, dword [ebp - 0xb4]
add dword [ebx], eax
add ebx, 4
sub dword [ebp - 0x88], 1
mov dword [ebp - 0x8c], ebx
jne 0x44d6b0
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp - 0x9c]
push 1
push ebx
lea edx, [ebp - 0xb4]
mov ecx, esi
call fcn.0044f080
mov esi, dword [ebp - 0xb4]
mov eax, dword [ebp - 0x84]
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.00459900
mov ecx, dword [ebp - 0x98]
add esp, 0x14
mov edx, ebx
push edi
call fcn.0044ce70
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.00457d6e
mov esp, ebp
pop ebp
ret
push 0x3f
mov edx, 0x5b46fc
mov ecx, str.assertion_failed:_signalType___0__signalType___2
call fcn.004127a0
push 0x31
mov edx, str.C:projectlibopus_silkNLSF_VQ.c
mov ecx, str.assertion_failed:___LPC_order__1____0
call fcn.004127a0
int3