Function at 0x447700
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x148
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov edi, dword [ebx + 8]
mov dword [ebp - 0x138], edx
mov dword [ebp - 0x13c], ecx
mov dword [ebp - 0x148], edi
cmp edi, 0xa
je 0x44774b
cmp edi, 0x10
jne 0x447bb3
cmp edi, 0x10
mov ecx, 0x92a1c8
mov eax, 0x92a1b8
cmovne eax, ecx
xor ecx, ecx
mov dword [ebp - 0x140], eax
mov dword [ebp - 0x134], ecx
test edi, edi
jle 0x4477c7
nop dword [eax]
movsx esi, word [edx + ecx*2]
mov ecx, esi
sar ecx, 8
lea eax, [ecx + ecx]
shl ecx, 8
movsx edx, word [eax + 0x92acd0]
sub esi, ecx
movsx eax, word [eax + 0x92acd2]
mov ecx, dword [ebp - 0x134]
sub eax, edx
imul esi, eax
mov eax, dword [ebp - 0x140]
shl edx, 8
movzx eax, byte [eax + ecx]
add esi, edx
mov edx, dword [ebp - 0x138]
inc ecx
sar esi, 3
inc esi
mov dword [ebp - 0x134], ecx
sar esi, 1
mov dword [ebp + eax*4 - 0x130], esi
cmp ecx, edi
jl 0x447770
mov esi, edi
lea edx, [ebp - 0x130]
sar esi, 1
lea ecx, [ebp - 0x9c]
push esi
mov dword [ebp - 0x134], esi
call fcn.00447650
add esp, 4
lea edx, [ebp - 0x12c]
lea ecx, [ebp - 0xd0]
push esi
call fcn.00447650
xor esi, esi
add esp, 4
cmp dword [ebp - 0x134], esi
jle 0x44784c
lea eax, [ebp + edi*4 - 0x6c]
mov edi, eax
nop dword [eax + eax]
mov edx, dword [ebp + esi*4 - 0x98]
lea edi, [edi - 4]
add edx, dword [ebp + esi*4 - 0x9c]
mov ecx, dword [ebp + esi*4 - 0xcc]
sub ecx, dword [ebp + esi*4 - 0xd0]
lea eax, [ecx + edx]
sub ecx, edx
neg eax
mov dword [ebp + esi*4 - 0x68], eax
inc esi
mov dword [edi + 4], ecx
cmp esi, dword [ebp - 0x134]
jl 0x447810
mov edi, dword [ebp - 0x148]
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0x138], ecx
mov dword [ebp - 0x134], eax
nop dword [eax]
xor edx, edx
xor esi, esi
mov dword [ebp - 0x140], edx
test edi, edi
jle 0x4478b6
nop
mov eax, dword [ebp + edx*4 - 0x68]
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
mov edx, dword [ebp - 0x140]
cmp ecx, esi
mov eax, ecx
mov ecx, edx
cmovle ecx, dword [ebp - 0x138]
cmovle eax, esi
inc edx
mov dword [ebp - 0x144], eax
mov dword [ebp - 0x138], ecx
mov esi, eax
mov dword [ebp - 0x140], edx
cmp edx, edi
jl 0x447870
mov eax, dword [ebp - 0x134]
mov dword [ebp - 0x138], ecx
sar esi, 4
inc esi
sar esi, 1
cmp esi, 0x7fff
jle 0x447911
mov edx, 0x27ffe
mov eax, 0x7fff
cmp esi, edx
cmovl edx, esi
inc ecx
imul ecx, edx
sub eax, edx
shl eax, 0xe
cdq
sar ecx, 2
idiv ecx
mov edx, edi
lea ecx, [ebp - 0x68]
add eax, 0xffbe
push eax
call fcn.00454d80
mov eax, dword [ebp - 0x134]
add esp, 4
mov ecx, dword [ebp - 0x138]
inc eax
mov dword [ebp - 0x134], eax
cmp eax, 0xa
jl 0x447860
mov esi, dword [ebp - 0x13c]
movups xmm1, xmmword [0x92b7e0]
cmp eax, 0xa
jne 0x44796b
xor ecx, ecx
test edi, edi
jle 0x447a14
mov edx, 0xffff8000
mov eax, dword [ebp + ecx*4 - 0x68]
sar eax, 4
inc eax
sar eax, 1
cmp eax, 0x7fff
jle 0x44794a
mov eax, 0x7fff
jmp 0x447952
cmp eax, 0xffff8000
cmovl eax, edx
movzx eax, ax
mov word [esi + ecx*2], ax
cwde
shl eax, 5
mov dword [ebp + ecx*4 - 0x68], eax
inc ecx
cmp ecx, edi
jl 0x447932
jmp 0x447a14
xor ecx, ecx
test edi, edi
jle 0x447a14
cmp edi, 8
jb 0x447a01
lea eax, [ebp + edi*4 - 0x6c]
lea edx, [esi - 2]
lea edx, [edx + edi*2]
cmp esi, eax
ja 0x447993
lea eax, [ebp - 0x68]
cmp edx, eax
jae 0x447a01
mov eax, edi
lea edi, [ebp - 0x68]
and eax, 0xfffffff8
nop dword [eax + eax]
movups xmm0, xmmword [edi + ecx*4]
psrad xmm0, 4
paddd xmm0, xmm1
psrad xmm0, 1
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [esi + ecx*2], xmm0
movups xmm0, xmmword [ebp + ecx*4 - 0x58]
psrad xmm0, 4
paddd xmm0, xmm1
psrad xmm0, 1
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [esi + ecx*2 + 8], xmm0
add ecx, 8
mov edx, ecx
cmp ecx, eax
jl 0x4479a0
mov edi, dword [ebp - 0x148]
cmp edx, edi
jge 0x447a14
mov eax, dword [ebp + ecx*4 - 0x68]
sar eax, 4
inc eax
sar eax, 1
mov word [esi + ecx*2], ax
inc ecx
cmp ecx, edi
jl 0x447a01
mov edx, edi
mov dword [ebp - 0x138], 0
mov ecx, esi
call fcn.004482a0
test eax, eax
jne 0x447ba0
nop
mov eax, dword [ebp - 0x138]
cmp eax, 0x10
jge 0x447ba0
mov ecx, eax
mov edx, 2
shl edx, cl
mov eax, 0x10000
sub eax, edx
lea ecx, [ebp - 0x68]
push eax
mov edx, edi
call fcn.00454d80
add esp, 4
xor eax, eax
test edi, edi
jle 0x447b89
cmp edi, 0x10
jb 0x447b76
lea ecx, [ebp + edi*4 - 0x6c]
lea edx, [edi - 1]
lea edx, [esi + edx*2]
cmp esi, ecx
ja 0x447a89
lea ecx, [ebp - 0x68]
cmp edx, ecx
jae 0x447b76
movups xmm1, xmmword [0x92b7e0]
mov edx, edi
mov dword [ebp - 0x134], eax
and edx, 0xfffffff0
lea ecx, [esi + 0x10]
mov edi, eax
lea esi, [ebp - 0x68]
movups xmm0, xmmword [esi + edi]
mov esi, dword [ebp - 0x134]
lea ecx, [ecx + 0x20]
add dword [ebp - 0x134], 0x40
lea edi, [edi + 0x40]
psrad xmm0, 4
paddd xmm0, xmm1
psrad xmm0, 1
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [ecx - 0x30], xmm0
movups xmm0, xmmword [ebp + esi - 0x58]
lea esi, [ebp - 0x48]
psrad xmm0, 4
paddd xmm0, xmm1
psrad xmm0, 1
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [ecx - 0x28], xmm0
movups xmm0, xmmword [esi + eax*4]
lea esi, [ebp - 0x38]
psrad xmm0, 4
paddd xmm0, xmm1
psrad xmm0, 1
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [ecx - 0x20], xmm0
movups xmm0, xmmword [esi + eax*4]
mov esi, dword [ebp - 0x13c]
add eax, 0x10
psrad xmm0, 4
paddd xmm0, xmm1
psrad xmm0, 1
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [ecx - 0x18], xmm0
cmp eax, edx
jl 0x447aa0
mov edi, dword [ebp - 0x148]
mov dword [ebp - 0x144], eax
cmp eax, edi
jge 0x447b89
mov ecx, dword [ebp + eax*4 - 0x68]
sar ecx, 4
inc ecx
sar ecx, 1
mov word [esi + eax*2], cx
inc eax
cmp eax, edi
jl 0x447b76
inc dword [ebp - 0x138]
mov edx, edi
mov ecx, esi
call fcn.004482a0
test eax, eax
je 0x447a30
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.004575d6
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push 0x59
mov edx, str.D:_aopus_tools_win32_buildopus_tools_win32_buildlibopus_silkNLSF2A.c
mov ecx, str.assertion_failed:_d10__d16
call fcn.00403f00
int3