Function at 0x457c30
Capabilities:
Encode data using xor

Disassembly:
push edi
push ebx
push ebp
mov ebp, dword [esp + 0x10]
mov ebx, dword [ebp + 0x6cfc]
cmp dword [ebp + 0x2574], 0
je 0x457fe2
cmp ebx, 4
je 0x457f1a
cmp ebx, 0x82
je 0x457edc
cmp ebx, 1
je 0x457e9c
cmp ebx, 8
je 0x457ca3
mov dword [ebp + 0x6ef0], 4
test byte [ebp + 0x6dbc], 0x20
jne 0x457c9a
push 2
call fcn.0049ba21
push 0x17c
push str._.........._srclibmpg123_tabinit.c:_i__error:_Unknown_8_bit_encoding_choice._n
push eax
call fcn.0040f2f0
add esp, 0x10
mov eax, 0xffffffff
pop ebp
pop ebx
pop edi
ret
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax]
shr edx, 1
lea ecx, [eax + eax + 1]
shr ecx, 1
mov byte [edi + eax*2], dl
mov ebx, dword [ebp + 0x2578]
mov byte [ebx + eax*2 + 1], cl
inc eax
cmp eax, 0x20
jb 0x457ca5
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax]
shr edx, 2
lea ecx, [eax + eax + 1]
add edx, 0x20
mov byte [edi + eax*2 + 0x40], dl
mov ebx, dword [ebp + 0x2578]
shr ecx, 2
add ecx, 0x20
mov byte [ebx + eax*2 + 0x41], cl
inc eax
cmp eax, 0x20
jb 0x457ccb
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax]
shr edx, 3
lea ecx, [eax + eax + 1]
add edx, 0x30
mov byte [edi + eax*2 + 0x80], dl
mov ebx, dword [ebp + 0x2578]
shr ecx, 3
add ecx, 0x30
mov byte [ebx + eax*2 + 0x81], cl
inc eax
cmp eax, 0x40
jb 0x457cfa
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax]
shr edx, 4
lea ecx, [eax + eax + 1]
add edx, 0x40
mov byte [edi + eax*2 + 0x100], dl
mov ebx, dword [ebp + 0x2578]
shr ecx, 4
add ecx, 0x40
mov byte [ebx + eax*2 + 0x101], cl
inc eax
cmp eax, 0x80
jb 0x457d2f
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax]
shr edx, 5
lea ecx, [eax + eax + 1]
add edx, 0x50
mov byte [edi + eax*2 + 0x200], dl
mov ebx, dword [ebp + 0x2578]
shr ecx, 5
add ecx, 0x50
mov byte [ebx + eax*2 + 0x201], cl
inc eax
cmp eax, 0x100
jb 0x457d66
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax]
shr edx, 6
lea ecx, [eax + eax + 1]
add edx, 0x60
mov byte [edi + eax*2 + 0x400], dl
mov ebx, dword [ebp + 0x2578]
shr ecx, 6
add ecx, 0x60
mov byte [ebx + eax*2 + 0x401], cl
inc eax
cmp eax, 0x200
jb 0x457d9d
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax]
shr edx, 7
lea ecx, [eax + eax + 1]
add edx, 0x70
mov byte [edi + eax*2 + 0x800], dl
mov ebx, dword [ebp + 0x2578]
shr ecx, 7
add ecx, 0x70
mov byte [ebx + eax*2 + 0x801], cl
inc eax
cmp eax, 0x400
jb 0x457dd4
xor eax, eax
nop dword [eax + eax]
mov ebx, dword [ebp + 0x2578]
lea edi, [eax + eax]
mov ecx, ebx
sub ecx, edi
neg edi
movzx edx, byte [ecx + 0xfff]
or edx, 0xffffff80
mov byte [ebx + eax*2 - 0xfff], dl
mov ecx, dword [ebp + 0x2578]
add edi, ecx
movzx edx, byte [edi + 0xffe]
or edx, 0xffffff80
mov byte [ecx + eax*2 - 0xffe], dl
inc eax
cmp eax, 0x7ff
jb 0x457e10
mov edi, dword [ebp + 0x2578]
movzx eax, byte [edi + 1]
or eax, 0xffffff80
mov byte [edi - 1], al
xor eax, eax
mov ecx, dword [ebp + 0x2578]
movzx edx, byte [ecx - 0xfff]
mov byte [ecx - 0x1000], dl
mov edx, dword [ebp + 0x2578]
xor byte [edx + eax*2 - 0x1000], 0x55
mov ecx, dword [ebp + 0x2578]
xor byte [ecx + eax*2 - 0xfff], 0x55
inc eax
cmp eax, 0x1000
jb 0x457e76
jmp 0x457f14
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax - 0x1000]
shr edx, 5
lea ecx, [eax + eax - 0xfff]
add edx, 0xffffff80
mov byte [edi + eax*2 - 0x1000], dl
mov ebx, dword [ebp + 0x2578]
shr ecx, 5
add ecx, 0xffffff80
mov byte [ebx + eax*2 - 0xfff], cl
inc eax
cmp eax, 0x1000
jb 0x457e9e
jmp 0x457f14
xor eax, eax
mov edi, dword [ebp + 0x2578]
lea edx, [eax + eax - 0x1000]
shr edx, 5
lea ecx, [eax + eax - 0xfff]
shr ecx, 5
mov byte [edi + eax*2 - 0x1000], dl
mov ebx, dword [ebp + 0x2578]
mov byte [ebx + eax*2 - 0xfff], cl
inc eax
cmp eax, 0x1000
jb 0x457ede
xor eax, eax
pop ebp
pop ebx
pop edi
ret
movsd xmm2, qword [0x4c91b8]
mov edi, 0xfffff000
pxor xmm1, xmm1
cvtsi2sd xmm1, edi
mulsd xmm1, qword [0x4c91c0]
movsd xmm0, qword [0x4c91a8]
subsd xmm0, xmm1
call fcn.00488620
mulsd xmm0, qword [0x4c91b8]
cvttsd2si ebx, xmm0
neg ebx
add ebx, 0x7f
cmp ebx, 0xff
ja 0x457fb4
mov edx, dword [ebp + 0x2578]
mov eax, 2
test ebx, ebx
cmove ebx, eax
mov byte [edx + edi], bl
inc edi
cmp edi, 0x1000
jge 0x457f14
test edi, edi
js 0x457f27
pxor xmm0, xmm0
cvtsi2sd xmm0, edi
mulsd xmm0, qword [0x4c91c0]
addsd xmm0, qword [0x4c91a8]
call fcn.00488620
mulsd xmm0, qword [0x4c91b8]
cvttsd2si ebx, xmm0
neg ebx
add ebx, 0xff
jmp 0x457f59
test byte [ebp + 0x6dbc], 0x20
jne 0x457fd9
push 2
call fcn.0049ba21
push ebx
push edi
push 0x139
push str._.........._srclibmpg123_tabinit.c:_i__error:_Converror__d__d_n
push eax
call fcn.0040f2f0
add esp, 0x18
mov eax, 0xffffffff
pop ebp
pop ebx
pop edi
ret
push 0x2000
call fcn.0049d38a
add esp, 4
mov dword [ebp + 0x2574], eax
test eax, eax
je 0x458009
add eax, 0x1000
mov dword [ebp + 0x2578], eax
jmp 0x457c4a
mov dword [ebp + 0x6ef0], 4
test byte [ebp + 0x6dbc], 0x20
jne 0x458036
push 2
call fcn.0049ba21
push 0x123
push str._.........._srclibmpg123_tabinit.c:_i__error:_Cant_allocate_16_to_8_converter_table__n
push eax
call fcn.0040f2f0
add esp, 0x10
mov eax, 0xffffffff
pop ebp
pop ebx
pop edi
ret