Function at 0xb74160
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xfc
mov esi, dword [ebp + 0x20]
cmp esi, 2
ja 0xb74138
mov eax, dword [ebp + 0x10]
movsx eax, word [eax + 2]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00b707b0
mov eax, dword [ebp + 0x10]
movsx edx, word [eax]
lea eax, [edx*4 + 0x12]
shr eax, 4
shl eax, 4
call fcn.00bd0e20
sub esp, eax
mov eax, dword [ebp + 0x10]
lea edi, [esp + 0x28]
movsx eax, word [eax + 2]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 8]
mov dword [esp], edi
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
call 0xb74160
mov eax, dword [ebp + 0x1c]
lea ebx, [eax*4 + 0x12]
shr ebx, 4
shl ebx, 4
mov eax, ebx
call fcn.00bd0e20
sub esp, eax
lea eax, [esp + 0x28]
mov ecx, eax
mov dword [ebp - 0xc4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x10]
movsx eax, word [eax]
mov dword [esp + 4], ecx
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.00b71120
mov eax, ebx
call fcn.00bd0e20
sub esp, eax
lea eax, [esp + 0x2b]
shr eax, 2
mov dword [ebp - 0xd4], eax
shl eax, 2
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp + 0x1c]
shl eax, 4
call fcn.00bd0e20
sub esp, eax
lea eax, [esp + 0x28]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp + 0x1c]
test eax, eax
jle 0xb74064
mov eax, dword [ebp + 0x18]
sar esi, 1
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0xc8], esi
sar eax, 2
cwde
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xc0], eax
lea esi, [esi]
lea edi, [edi]
mov ebx, dword [ebp - 0xb4]
mov eax, dword [ebp - 0xc4]
xor edi, edi
mov esi, dword [ebp + 0x10]
mov eax, dword [eax + ebx*4]
mov ebx, dword [ebp + 0x10]
movsx ebx, word [ebx + 2]
mov dword [ebp - 0xb8], eax
imul eax, ebx
mov dword [ebp - 0xa8], ebx
lea edx, [eax + eax]
add eax, dword [esi + 8]
add edx, dword [esi + 0xc]
test ebx, ebx
mov dword [ebp - 0xb0], edx
mov dword [ebp - 0xac], eax
jle 0xb73f6a
mov ebx, edi
jmp 0xb73eae
mov ecx, edi
sar ecx, 0x1f
mov edx, ecx
xor edx, edi
sub edx, ecx
bsr edx, edx
xor edx, 0x1f
lea ecx, [edx - 1]
lea esi, [edx + 0x1c]
shl edi, cl
test eax, eax
mov dword [ebp - 0xa4], esi
mov dword [ebp - 0x9c], edi
je 0xb73f14
bsr ecx, eax
xor ecx, 0x1f
lea edi, [ecx - 1]
mov dword [ebp - 0xa0], edi
movzx ecx, byte [ebp - 0xa0]
shl eax, cl
mov ecx, eax
mov esi, eax
mov eax, 0x1fffffff
sar esi, 0x10
cdq
idiv esi
mov edx, dword [ebp - 0x9c]
movzx esi, dx
movsx edi, ax
imul esi, edi
mov eax, esi
mov esi, edx
sar esi, 0x10
sar eax, 0x10
imul esi, edi
add esi, eax
mov eax, ecx
mov ecx, dword [ebp - 0x9c]
imul esi
mov eax, edx
shl eax, 3
sub ecx, eax
mov eax, ecx
movzx ecx, cx
imul ecx, edi
sar eax, 0x10
imul eax, edi
sar ecx, 0x10
add eax, ecx
add esi, eax
mov eax, dword [ebp - 0xa4]
sub eax, dword [ebp - 0xa0]
mov ecx, eax
sub ecx, 0x15
js 0xb73f25
xor eax, eax
cmp ecx, 0x1f
jg 0xb73e9a
sar esi, cl
mov eax, esi
mov word [ebp + ebx*2 - 0x58], ax
add ebx, 1
cmp dword [ebp - 0xa8], ebx
je 0xb73f6a
mov edi, dword [ebp - 0xac]
mov eax, dword [ebp - 0xb0]
mov esi, dword [ebp + 0x14]
movzx edx, byte [edi + ebx]
mov edi, dword [ebp + 0xc]
movsx eax, word [eax + ebx*2]
movzx edi, word [edi + ebx*2]
shl edx, 7
mov word [ebp - 0x9c], di
sub edi, edx
movsx edx, di
movsx edi, word [esi + ebx*2]
imul edx, eax
imul eax, eax
sar edx, 0xe
test edi, edi
mov word [ebp + ebx*2 - 0x78], dx
jne 0xb73de0
mov ecx, 0x1f
mov dword [ebp - 0xa4], 0x3c
shl edi, cl
test eax, eax
mov dword [ebp - 0x9c], edi
jne 0xb73e0d
mov dword [ebp - 0xa0], 0x1f
xor eax, eax
jmp 0xb73e1c
mov ecx, 0x15
mov edx, 0x7fffffff
sub ecx, eax
mov eax, 0x80000000
sar eax, cl
sar edx, cl
cmp eax, edx
jle 0xb74100
cmp esi, eax
jg 0xb7410c
cmp esi, edx
jl 0xb740f0
shl esi, cl
mov eax, esi
mov word [ebp + ebx*2 - 0x58], ax
add ebx, 1
cmp dword [ebp - 0xa8], ebx
jne 0xb73eae
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp - 0xb8]
mov dword [esp + 8], eax
lea eax, [ebp - 0x88]
mov dword [esp + 0xc], ebx
mov dword [esp + 4], eax
lea eax, [ebp - 0x38]
mov dword [esp], eax
call fcn.00b5e410
mov eax, dword [ebp + 0x10]
movsx eax, word [eax + 2]
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x10]
movsx eax, word [eax + 6]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x10]
movsx eax, word [eax + 4]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x38]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x88]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x58]
mov dword [esp + 8], eax
lea eax, [ebp - 0x78]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xc0]
mov dword [esp], eax
call 0xb742a0
mov edi, dword [ebp - 0xbc]
mov esi, dword [ebp - 0xb4]
mov dword [edi + esi*4], eax
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 0x10]
movsx eax, word [eax]
imul eax, dword [ebp - 0xc8]
add eax, dword [edi + 0x10]
test ebx, ebx
jne 0xb74120
movzx edx, byte [eax]
mov eax, 0x100
sub eax, edx
mov dword [esp], eax
call fcn.00b60250
mov edx, eax
mov eax, 0x400
mov ebx, dword [ebp - 0xb4]
sub eax, edx
mov edi, dword [ebp - 0xbc]
add dword [ebp - 0xc0], 0x10
cwde
imul eax, dword [ebp - 0xcc]
add dword [edi + ebx*4], eax
add ebx, 1
cmp dword [ebp + 0x1c], ebx
mov dword [ebp - 0xb4], ebx
jne 0xb73d90
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0xc], 1
mov dword [esp + 8], eax
lea eax, [ebp - 0x8c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xbc]
mov dword [esp], eax
call fcn.00b71120
mov eax, dword [ebp - 0x8c]
mov ebx, dword [ebp - 0xc4]
mov edx, dword [ebx + eax*4]
mov ebx, dword [ebp + 8]
shl eax, 4
add eax, dword [ebp - 0xd0]
mov byte [ebx], dl
lea edx, [ebx + 1]
mov ebx, dword [ebp + 0x10]
movsx ecx, word [ebx + 2]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp + 0x10]
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00b68b70
mov eax, dword [ebp - 0xd4]
mov eax, dword [eax*4]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, edx
shl esi, cl
mov eax, esi
jmp 0xb73f56
cmp esi, edx
jg 0xb740f0
cmp esi, eax
jge 0xb73f52
mov esi, eax
shl esi, cl
mov eax, esi
jmp 0xb73f56
mov ebx, dword [ebp - 0xb8]
movzx edx, byte [eax + ebx - 1]
movzx eax, byte [eax + ebx]
sub edx, eax
mov eax, edx
jmp 0xb74023
mov dword [esp + 8], 0x3f
mov dword [esp + 4], str.silk_NLSF_encode.c
mov dword [esp], str.assertion_failed:_signalType___0__signalType___2
call fcn.00b371e0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
test byte [esp + 0x64], 1
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x60]
jne 0xb74283
test ecx, ecx
jle 0xb7426d
mov esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x50]
add esi, esi
lea edi, [ebx + ecx*4]
mov dword [esp + 0x14], ebx
lea edx, [esi - 2]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x20], edi
add esi, edx
add edx, dword [esp + 0x54]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x64]
and esi, 1
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], esi
nop
lea esi, [esi]
cmp dword [esp + 0x64], 1
jle 0xb74275
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x28]
xor ecx, ecx
xor edx, edx
add edi, eax
add eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], edi
mov ebx, edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x10], eax
nop
lea esi, [esi]
movzx ebp, byte [ebx - 1]
movsx eax, word [esi]
sar ecx, 1
sub esi, 4
sub ebx, 2
sub edi, 4
shl ebp, 7
sub eax, ebp
movsx ebp, word [edi + 4]
cwde
imul eax, ebp
mov ebp, eax
sar eax, 1
sub ebp, ecx
mov ecx, ebp
sar ecx, 0x1f
xor ebp, ecx
sub ebp, ecx
movsx ecx, word [esi + 2]
add ebp, edx
movzx edx, byte [ebx]
shl edx, 7
sub ecx, edx
movsx edx, word [edi + 2]
movsx ecx, cx
imul ecx, edx
mov edx, ecx
sub edx, eax
mov eax, edx
cdq
xor eax, edx
sub eax, edx
cmp dword [esp + 0x10], ebx
lea edx, [eax + ebp]
jne 0xb741f0
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
add dword [esp + 0x18], ebx
mov eax, dword [esp + 0x1c]
mov dword [esi], edx
add esi, 4
cmp dword [esp + 0x20], esi
mov dword [esp + 0x14], esi
jne 0xb741c0
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [esp + 0x64]
xor edx, edx
add eax, esi
mov dword [esp + 0x1c], eax
jmp 0xb7424a
mov dword [esp + 8], 0x31
mov dword [esp + 4], str.silk_NLSF_VQ.c
mov dword [esp], str.assertion_failed:___LPC_order__1____0
call fcn.00b371e0
nop
push ebp
push edi
mov ecx, 0xfffffff6
push esi
push ebx
mov esi, 0xfffffff7
mov ebx, 0xffffd866
sub esp, 0x17c
mov eax, dword [esp + 0x1ac]
mov ebp, dword [esp + 0x1b4]
movsx edi, word [esp + 0x1a8]
mov dword [esp], eax
jmp 0xb7430e
lea edx, [ebx - 0xcc]
lea eax, [ebx + 0x334]
movsx edx, dx
cwde
imul edx, edi
imul eax, edi
sar edx, 0x10
sar eax, 0x10
cmp esi, 0xa
mov dword [esp + ecx*4 + 0x104], edx
mov dword [esp + ecx*4 + 0x154], eax
je 0xb7432c
add ecx, 1
add esi, 1
add bx, 0x400
cmp ecx, 0
jg 0xb742d4
je 0xb74799
cmp ecx, 0xffffffff
je 0xb747c5
mov edx, ebx
lea eax, [ebx + 0x400]
jmp 0xb742e0
movsx eax, bp
xor ecx, ecx
mov dword [esp + 0x7c], 0
mov ebp, eax
mov word [esp + 0x6c], cx
mov dword [esp + 0x38], eax
sub ebp, 1
js 0xb74792
movsx eax, word [esp]
xor edx, edx
xor edi, edi
mov dword [esp + 0x28], 1
mov ecx, edx
mov dword [esp + 0x20], eax
movsx eax, word [esp + 0x1b0]
mov dword [esp + 0x24], eax
nop
mov eax, dword [esp + 0x1a0]
lea edx, [esp + 0x6c]
mov dword [esp + 0x30], ebp
movsx eax, word [eax + ebp*2]
add eax, dword [esp + 0x1a4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x194]
movsx eax, word [eax + ebp*2]
mov esi, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x19c]
mov word [esp + 6], si
movzx eax, byte [eax + ebp]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x198]
movsx eax, word [eax + ebp*2]
mov dword [esp], eax
mov eax, dword [esp + 0x28]
lea ebx, [eax + eax]
mov dword [esp + 0x34], eax
lea eax, [esp + eax*4 + 0x7c]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x9c]
add edx, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], edx
xor ebx, ebx
add eax, ebp
movsx edx, cx
mov dword [esp + 8], eax
imul edx, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
sar edx, 8
sub eax, edx
cwde
imul eax, dword [esp + 0x20]
sar eax, 0x10
cmp eax, 0xfffffff6
jge 0xb744b5
mov eax, 0xfffffff6
mov esi, dword [esp + 8]
mov ecx, edx
mov byte [esi + ebx*8], al
lea esi, [eax + 0xa]
add cx, word [esp + esi*4 + 0xdc]
add dx, word [esp + esi*4 + 0x12c]
cmp eax, 2
mov esi, dword [esp + 0x18]
mov word [esp + ebx + 0x6c], cx
mov word [esi + ebx], dx
jle 0xb744d0
cmp eax, 3
je 0xb745b3
imul eax, eax, 0x2b
lea esi, [eax + 0x6c]
add eax, 0x97
mov ebp, esi
movzx esi, word [esp + 6]
sub esi, ecx
movsx ecx, si
mov esi, ebp
mov ebp, dword [esp + 0x24]
imul ecx, ecx
imul ecx, dword [esp]
imul esi, ebp
imul eax, ebp
add ecx, edi
add esi, ecx
movzx ecx, word [esp + 6]
mov dword [esp + ebx*2 + 0x7c], esi
sub ecx, edx
movsx edx, cx
imul edx, edx
imul edx, dword [esp]
add edx, edi
add edx, eax
mov eax, dword [esp + 0x14]
mov dword [eax + ebx*2], edx
add ebx, 2
cmp dword [esp + 0x10], ebx
je 0xb744f2
movsx edx, word [esp + ebx + 0x6c]
mov edi, dword [esp + ebx*2 + 0x7c]
jmp 0xb743f0
cmp eax, 9
jle 0xb74415
mov eax, 9
jmp 0xb74415
cmp eax, 0xfffffffd
jge 0xb745a0
cmp eax, 0xfffffffc
je 0xb74780
imul eax, eax, 0xffffffd5
lea esi, [eax + 0x6c]
add eax, 0x41
mov ebp, esi
jmp 0xb7445d
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x30]
cmp edi, 2
mov eax, edi
jg 0xb745d0
lea ebx, [esp + 0x17c]
shl eax, 4
add eax, ebx
movzx ebx, byte [esp + ebp + 0x9c]
cmp edi, 2
lea edx, [ebx + 1]
mov byte [esp], bl
mov byte [ebp + eax - 0xe0], dl
jne 0xb74540
movzx eax, byte [esp + ebp + 0xac]
mov byte [esp], al
add eax, 1
mov byte [esp + ebp + 0xcc], al
shl dword [esp + 0x28], 1
mov edi, dword [esp + 0x28]
cmp edi, 4
je 0xb74580
mov eax, dword [esp + 0x34]
movzx edx, byte [esp + ebp + 0x9c]
lea ebx, [esp + 0x17c]
shl eax, 5
add eax, ebx
cmp edi, 2
mov byte [ebp + eax - 0xe0], dl
jne 0xb74580
movzx eax, byte [esp + ebp + 0xac]
mov byte [esp + ebp + 0xcc], al
sub ebp, 1
cmp ebp, 0xffffffff
je 0xb746fa
movzx ecx, word [esp + 0x6c]
mov edi, dword [esp + 0x7c]
jmp 0xb74370
mov esi, dword [esp + 0x2c]
movzx ebp, byte [esi + eax + 4]
movzx eax, byte [esi + eax + 5]
jmp 0xb7445d
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + 7]
mov ebp, eax
mov eax, 0x118
jmp 0xb7445d
xor eax, eax
mov ecx, dword [esp + eax*4 + 0x7c]
mov edx, dword [esp + eax*4 + 0x8c]
lea ebx, [eax + 4]
cmp ecx, edx
jle 0xb746c0
mov dword [esp + eax*4 + 0x5c], ecx
mov dword [esp + eax*4 + 0x4c], edx
mov dword [esp + eax*4 + 0x7c], edx
mov dword [esp + eax*4 + 0x8c], ecx
movzx edx, word [esp + eax*2 + 0x6c]
movzx ecx, word [esp + eax*2 + 0x74]
mov dword [esp + eax*4 + 0x3c], ebx
mov word [esp + eax*2 + 0x6c], cx
mov word [esp + eax*2 + 0x74], dx
add eax, 1
cmp eax, 4
jne 0xb745d2
nop
lea esi, [esi]
xor esi, esi
mov edi, 0x7fffffff
xor edx, edx
xor ebx, ebx
xor eax, eax
mov ecx, dword [esp + eax*4 + 0x5c]
cmp ecx, edi
jge 0xb74639
mov edi, ecx
mov ebx, eax
mov ecx, dword [esp + eax*4 + 0x4c]
cmp ecx, esi
jle 0xb74645
mov esi, ecx
mov edx, eax
add eax, 1
cmp eax, 4
jne 0xb7462d
cmp edi, esi
jge 0xb746d1
mov eax, dword [esp + ebx*4 + 0x3c]
mov dword [esp + ebx*4 + 0x5c], 0x7fffffff
mov dword [esp + edx*4 + 0x4c], 0
xor eax, 4
mov dword [esp + edx*4 + 0x3c], eax
lea eax, [ebx + 4]
shl ebx, 4
mov esi, dword [esp + ebx + 0x9c]
mov ecx, dword [esp + eax*4 + 0x7c]
movzx eax, word [esp + eax*2 + 0x6c]
mov dword [esp + edx*4 + 0x7c], ecx
mov word [esp + edx*2 + 0x6c], ax
lea eax, [esp + ebx + 0x9c]
shl edx, 4
lea edi, [esp + edx + 0x9c]
mov ebx, dword [eax + 4]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + edx + 0x9c], esi
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], eax
jmp 0xb74620
mov dword [esp + eax*4 + 0x4c], ecx
mov dword [esp + eax*4 + 0x5c], edx
mov dword [esp + eax*4 + 0x3c], eax
jmp 0xb74613
mov ecx, dword [esp + 8]
xor eax, eax
mov edi, dword [esp + eax + 0x3c]
mov edx, edi
mov dword [esp], edi
sar edx, 2
add byte [ecx + eax*4], dl
add eax, 4
cmp eax, 0x10
jne 0xb746d7
sub ebp, 1
cmp ebp, 0xffffffff
jne 0xb7458c
mov ecx, dword [esp + 0x7c]
mov eax, 0x7fffffff
xor ebx, ebx
xor edx, edx
jmp 0xb74714
mov ecx, dword [esp + edx*4 + 0x7c]
cmp eax, ecx
jle 0xb7471c
mov eax, ecx
mov ebx, edx
add edx, 1
cmp edx, 8
jne 0xb74710
mov edx, dword [esp + 0x38]
test edx, edx
jle 0xb7475f
mov edx, ebx
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x190]
and edx, 3
shl edx, 4
lea esi, [esp + edx + 0x9c]
xor edx, edx
nop
lea esi, [esi]
movzx ecx, byte [esi + edx]
mov byte [ebp + edx], cl
add edx, 1
cmp edi, edx
jne 0xb74750
mov edi, dword [esp + 0x190]
sar ebx, 2
add byte [edi], bl
add esp, 0x17c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x2c]
mov ebp, 0x118
movzx eax, byte [eax + 1]
jmp 0xb7445d
xor ecx, ecx
jmp 0xb746fe
lea edx, [ebx - 0x66]
lea eax, [ebx + 0x334]
movsx edx, dx
cwde
imul edx, edi
imul eax, edi
sar edx, 0x10
sar eax, 0x10
mov dword [esp + ecx*4 + 0x104], edx
mov dword [esp + ecx*4 + 0x154], eax
jmp 0xb74303
lea eax, [ebx + 0x39a]
mov edx, ebx
jmp 0xb747a2