Function at 0x413968
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x2c], edx
push edi
push 0xa
xor ebx, ebx
mov dword [esp + 0x38], 0x2030501
mov edi, dword [esi + 0x120]
mov word [esp + 0x3d], 0x300
mov eax, dword [edi + 0x14b18]
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 0x14b1c]
mov dword [esp + 0x30], eax
pop eax
sub eax, dword [esi + 0xa4]
imul eax, eax, 0xa
push 4
sub eax, dword [esi + 0x2c]
mov dword [esp + 0x28], eax
pop eax
mov byte [esp + 0x38], al
mov eax, dword [edi + 0x38]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fmul qword [0x4525a8]
fadd qword [0x452530]
fld qword [0x4525a0]
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x43971e
fstp st(0)
push ebp
call fcn.00430de0
mov edx, dword [edi + 0x6c]
mov ch, bl
mov ebp, dword [esi + 0x48]
mov cl, bl
mov byte [esp + 0x17], al
mov al, byte [edi + 0x20]
mov byte [esp + 0x16], al
mov al, byte [edi + 0xd4]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x13], al
test edx, edx
je 0x413c89
cmp edx, 3
je 0x439725
mov eax, dword [edi + 0x14]
shl eax, 4
add eax, dword [edi + 0x74]
mov eax, dword [eax*4 + 0x452740]
push 7
mov dword [esp + 0x24], eax
pop eax
mov dword [esp + 0x18], eax
cmp edx, eax
jae 0x43972d
mov al, byte [esp + edx + 0x38]
mov byte [esp + 0x14], al
cmp dword [edi + 0x84], ebx
je 0x413a8c
mov eax, dword [edi + 0x14eb8]
mov edx, 0x1fe
cmp eax, edx
jg 0x439736
mov edx, 0xfffffe02
cmp eax, edx
jl 0x43973d
test eax, eax
jns 0x439744
neg eax
or eax, 0x2e00
movzx eax, ax
mov dword [esp + 0x1c], eax
cmp dword [edi + 0x88], ebx
jne 0x43974e
cmp ebp, 0xffffffff
je 0x413aaf
cmp dword [esi + 0x4c], ebx
lea eax, [ebp - 1]
setg cl
cmp dword [esi + 0x4c], eax
jl 0x439788
mov esi, dword [esp + 0x28]
add cl, cl
add cl, ch
shl cl, 6
cmp dword [edi + 0x64], ebx
sete al
dec al
and al, 0x20
add al, 0x10
add cl, al
add cl, byte [esp + 0x13]
mov byte [esp + 0x12], cl
test esi, esi
js 0x43978f
mov eax, dword [edi + 0xb8]
sub eax, ebx
je 0x4397b7
sub eax, 1
jne 0x439796
cmp dword [edi + 0x54], ebx
setne al
add al, 3
mov byte [esp + 0x18], al
mov ecx, dword [edi + 0x40]
mov ebp, 0x7d00
cmp ecx, ebp
jle 0x4397c1
mov eax, 0xbb80
cmp ecx, eax
je 0x4397c8
setg al
lea eax, [eax*4 + 2]
mov edx, dword [edi + 0xbc]
cmp edx, 3
je 0x4397e8
cmp edx, 2
je 0x4397e8
cmp dword [edi + 0x38], 0xffffffff
je 0x4397d0
cmp dword [edi + 0x94], ebx
jne 0x4397db
cmp dword [edi + 0xe0], ebx
jne 0x4397e8
cmp dword [edi + 0xd8], ebx
jne 0x4397e8
cmp byte [esp + 0x13], bl
je 0x4397e8
cmp ecx, ebp
jle 0x4397e8
mov ecx, ebx
movzx ebp, word [edi + 0x14efc]
add al, cl
shl al, 3
mov edx, esi
add al, byte [esp + 0x18]
mov esi, dword [esp + 0x44]
mov ecx, esi
shl al, 2
add al, byte [esp + 0x16]
mov dword [esp + 0x28], eax
call fcn.00413ca0
push 9
lea eax, [esi + 4]
push str.LAME3.100
push eax
call fcn.0041b7f0
mov al, byte [esp + 0x20]
lea ecx, [esi + 0xf]
mov edx, dword [esp + 0x30]
add esp, 0xc
mov byte [esi + 0xd], al
mov al, byte [esp + 0x17]
mov byte [esi + 0xe], al
call fcn.00413ca0
mov eax, dword [esp + 0x1c]
movzx ecx, ax
mov eax, ecx
mov byte [esi + 0x14], cl
shr eax, 8
mov byte [esi + 0x13], al
mov al, byte [esp + 0x12]
mov word [esi + 0x15], bx
mov byte [esi + 0x17], al
mov eax, dword [esp + 0x20]
cmp eax, 0xff
jge 0x4397f0
mov byte [esi + 0x18], al
mov ecx, dword [esp + 0x2c]
mov eax, ecx
mov edx, dword [esp + 0x30]
sar eax, 4
mov byte [esi + 0x19], al
mov eax, edx
sar eax, 8
shl cl, 4
add al, cl
mov byte [esi + 0x1b], dl
mov edx, dword [esp + 0x34]
mov byte [esi + 0x1a], al
mov eax, dword [esp + 0x28]
mov byte [esi + 0x1c], al
mov byte [esi + 0x1d], bl
mov ecx, dword [edi + 0x68]
mov eax, ecx
sar eax, 8
mov byte [esi + 0x1f], cl
lea ecx, [esi + 0x20]
mov byte [esi + 0x1e], al
call fcn.00413ca0
mov ecx, ebp
mov eax, ebp
mov byte [esi + 0x25], cl
mov ecx, dword [esp + 0x48]
shr eax, 8
mov byte [esi + 0x24], al
pop ebp
movzx eax, byte [ebx + esi]
xor eax, ecx
shr cx, 8
movzx eax, al
xor cx, word [eax*4 + 0x455398]
inc ebx
movzx ecx, cx
cmp ebx, 0x26
jl 0x413c56
mov eax, ecx
mov byte [esi + 0x27], cl
push 0x28
shr eax, 8
mov byte [esi + 0x26], al
pop eax
pop edi
pop esi
pop ebx
add esp, 0x30
ret
mov eax, dword [edi + 0x7c]
jmp 0x413a33
fstp st(1)
jmp 0x4139e5
mov eax, dword [edi + 0x70]
jmp 0x413a33
mov byte [esp + 0x14], bl
jmp 0x413a4e
mov eax, edx
jmp 0x413a69
mov eax, edx
jmp 0x413a76
or eax, 0x2c00
jmp 0x413a85
fld qword [0x452580]
fld qword [0x460588]
call fcn.00432b80
fmul dword [edi + 0x14eb4]
fmul qword [0x460498]
fadd qword [0x452530]
call fcn.00430da0
cdq
mov cl, bl
xor eax, edx
mov ch, cl
sub eax, edx
mov dword [esp + 0x24], eax
jmp 0x413a98
mov ch, 1
jmp 0x413aaf
mov esi, ebx
jmp 0x413ad8
sub eax, 1
je 0x4397ad
sub eax, 1
jne 0x413afb
mov byte [esp + 0x18], bl
jmp 0x413afb
mov byte [esp + 0x18], 2
jmp 0x413afb
mov byte [esp + 0x18], 1
jmp 0x413afb
mov al, bl
jmp 0x413b22
push 4
pop eax
jmp 0x413b22
cmp dword [edi + 0x3c], 0xffffffff
je 0x4397e8
jmp 0x413b44
cmp dword [edi + 0x7c], 0x140
jge 0x413b50
xor ecx, ecx
inc ecx
jmp 0x413b7c
mov byte [esi + 0x18], 0xff
jmp 0x413c00