Function at 0x404460
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push ebx
push ebp
push esi
push edi
mov bl, cl
call fcn.00402200
mov ecx, 0x1b2
mov esi, 0x4f60a0
mov edi, 0x5524c0
rep movsd dword es:[edi], dword [esi]
test bl, bl
je 0x404492
mov dword [0x5524e5], 0xbb80
jmp 0x4044aa
mov eax, dword [0x5524e5]
mov ecx, 0x17700
cmp dword [0x4f60c5], ecx
cmova eax, ecx
mov dword [0x5524e5], eax
xor edx, edx
mov esi, 0x55273c
xor edi, edi
mov ecx, 0x118
nop dword [eax + eax]
movzx eax, byte [esi]
lea esi, [esi + 1]
or ax, dx
add ax, cx
xor ax, cx
add ecx, 0xffff
movzx edx, ax
add edi, edx
shl edx, 8
test cx, cx
jne 0x4044c0
cmp edi, dword [0x55285b]
je 0x4044fb
mov ecx, 0x46
mov esi, 0x4be574
mov edi, 0x55273c
rep movsd dword es:[edi], dword [esi]
movzx ecx, byte [0x55273c]
mov edx, 0x15
cmp byte [0x55273c], dl
mov bl, byte [0x552512]
cmova ecx, edx
mov byte [0x552752], 0
cmp byte [0x552758], dl
lea esi, [edx - 5]
mov byte [0x55273c], cl
lea edi, [edx + 0x2a]
movzx ecx, byte [0x552758]
cmova ecx, edx
mov byte [0x55276e], 0
cmp byte [0x552774], dl
mov byte [0x552758], cl
movzx ecx, byte [0x552774]
cmova ecx, edx
mov byte [0x55278a], 0
cmp byte [0x552790], dl
mov byte [0x552774], cl
movzx ecx, byte [0x552790]
cmova ecx, edx
mov byte [0x5527a6], 0
cmp byte [0x5527ac], dl
mov byte [0x552790], cl
movzx ecx, byte [0x5527ac]
cmova ecx, edx
mov byte [0x5527c2], 0
cmp byte [0x5527c8], dl
mov byte [0x5527ac], cl
movzx ecx, byte [0x5527c8]
cmova ecx, edx
mov byte [0x5527de], 0
cmp byte [0x5527e4], dl
mov byte [0x5527c8], cl
movzx ecx, byte [0x5527e4]
cmova ecx, edx
mov byte [0x5527fa], 0
cmp byte [0x552800], dl
mov byte [0x5527e4], cl
movzx ecx, byte [0x552800]
cmova ecx, edx
mov byte [0x552816], 0
cmp byte [0x55281c], dl
mov byte [0x552800], cl
movzx ecx, byte [0x55281c]
cmova ecx, edx
mov byte [0x552832], 0
cmp byte [0x552838], dl
mov byte [0x55281c], cl
movzx ecx, byte [0x552838]
cmova ecx, edx
mov byte [0x55284e], 0
mov dl, byte [0x552511]
mov byte [0x552838], cl
mov cl, byte [0x552510]
nop word [eax + eax]
movzx eax, cl
cmp eax, 0x3f
mov ecx, eax
movzx eax, dl
cmova ecx, edi
mov edx, eax
cmp eax, 0x3f
mov byte [0x552510], cl
movzx eax, bl
cmova edx, edi
mov ebx, eax
cmp eax, 0x3f
mov byte [0x552511], dl
cmova ebx, edi
mov byte [0x552512], bl
sub esi, 1
jne 0x404640
movups xmm0, xmmword [0x552510]
mov al, byte [0x5525a0]
mov esi, 0x50
mov byte [0x5525f0], 0
mov byte [0x552641], 0
mov byte [0x552692], 0
mov byte [0x5526e3], 0
mov byte [0x552734], 0
movups xmmword [0x4ec720], xmm0
movups xmm0, xmmword [0x552520]
movups xmmword [0x4ec730], xmm0
movups xmm0, xmmword [0x552530]
movups xmmword [0x4ec740], xmm0
cmp al, 0x50
jae 0x4046ec
movzx ecx, al
mov eax, esi
sub eax, ecx
push eax
push 0
lea eax, [ecx + 0x5525a1]
push eax
call fcn.00484500
add esp, 0xc
mov al, byte [0x5525f1]
cmp al, 0x50
jae 0x40470e
movzx ecx, al
mov eax, esi
sub eax, ecx
push eax
push 0
lea eax, [ecx + 0x5525f2]
push eax
call fcn.00484500
add esp, 0xc
mov al, byte [0x552642]
cmp al, 0x50
jae 0x404730
movzx ecx, al
mov eax, esi
sub eax, ecx
push eax
push 0
lea eax, [ecx + 0x552643]
push eax
call fcn.00484500
add esp, 0xc
mov al, byte [0x552693]
cmp al, 0x50
jae 0x404752
movzx ecx, al
mov eax, esi
sub eax, ecx
push eax
push 0
lea eax, [ecx + 0x552694]
push eax
call fcn.00484500
add esp, 0xc
mov al, byte [0x5526e4]
cmp al, 0x50
jae 0x404772
movzx eax, al
sub esi, eax
push esi
push 0
lea eax, [eax + 0x5526e5]
push eax
call fcn.00484500
add esp, 0xc
mov ax, word [0x552867]
mov edi, 1
cmp ax, 0x20
jle 0x404790
mov eax, 0x20
mov word [0x552867], ax
jmp 0x40479d
cmp ax, 1
jge 0x40479d
mov word [0x552867], di
mov ax, word [0x5524eb]
mov ebp, 0x100
cmp ax, bp
jle 0x4047b6
mov word [0x5524eb], bp
jmp 0x4047c3
test ax, ax
jns 0x4047c3
xor eax, eax
mov word [0x5524eb], ax
mov ax, word [0x552b5f]
mov ecx, 3
cmp ax, cx
jle 0x4047dc
mov word [0x552b5f], cx
jmp 0x4047e9
test ax, ax
jns 0x4047e9
xor eax, eax
mov word [0x552b5f], ax
mov ax, word [0x55250c]
cmp ax, 3
jle 0x4047fe
mov word [0x55250c], cx
jmp 0x40480b
test ax, ax
jns 0x40480b
xor eax, eax
mov word [0x55250c], ax
mov ax, word [0x55285f]
cmp ax, 3
jle 0x404820
mov word [0x55285f], cx
jmp 0x40482d
test ax, ax
jns 0x40482d
xor eax, eax
mov word [0x55285f], ax
mov ax, word [0x552737]
cmp ax, 0xb
jle 0x404840
mov eax, 0xb
jmp 0x404847
test ax, ax
jns 0x40484d
xor eax, eax
mov word [0x552737], ax
mov ax, word [0x552b82]
cmp ax, 1
jle 0x404862
mov word [0x552b82], di
jmp 0x40486f
test ax, ax
jns 0x40486f
xor eax, eax
mov word [0x552b82], ax
mov ax, word [0x552854]
cmp ax, 1
jle 0x404884
mov word [0x552854], di
jmp 0x404891
test ax, ax
jns 0x404891
xor eax, eax
mov word [0x552854], ax
mov ax, word [0x552856]
cmp ax, 3
jle 0x4048a6
mov word [0x552856], cx
jmp 0x4048b3
test ax, ax
jns 0x4048b3
xor eax, eax
mov word [0x552856], ax
mov ax, word [0x552598]
mov ecx, 0xc8
cmp ax, cx
jle 0x4048cc
mov word [0x552598], cx
jmp 0x4048d9
test ax, ax
jns 0x4048d9
xor eax, eax
mov word [0x552598], ax
mov ax, word [0x552590]
mov edx, 0x10
cmp ax, dx
jle 0x4048f2
mov word [0x552590], dx
jmp 0x4048ff
cmp ax, 1
jge 0x4048ff
mov word [0x552590], di
cmp byte [0x5524f1], 4
mov al, byte [0x55258f]
movzx ebx, byte [0x5524f1]
cmova ebx, edi
movzx ecx, al
cmp al, 1
mov byte [0x5524f1], bl
mov ax, word [0x552861]
cmova ecx, edi
mov byte [0x55258f], cl
test ax, ax
je 0x404942
cmp ax, 2
je 0x404942
xor eax, eax
mov word [0x552861], ax
mov ax, word [0x55258d]
cmp ax, 1
je 0x40496d
cmp ax, 2
je 0x40496d
cmp ax, 4
je 0x40496d
cmp ax, 8
je 0x40496d
cmp ax, 0x10
je 0x40496d
mov word [0x55258d], dx
mov eax, dword [0x5524e5]
cmp eax, 0xac44
je 0x404992
cmp eax, 0xbb80
je 0x404992
cmp eax, 0x17700
mov ecx, 0xbb80
cmovne eax, ecx
mov dword [0x5524e5], eax
cmp byte [0x552b87], 1
mov edx, 4
movzx ecx, byte [0x552b87]
cmovbe ecx, edx
cmp byte [0x55259e], 0x40
movzx edx, byte [0x55259e]
mov byte [0x552b87], cl
mov ecx, 0x12
cmove edx, ecx
mov byte [0x55259e], dl
test dl, 0x40
je 0x4049db
and dl, 0xaf
or dl, 0x20
mov byte [0x55259e], dl
mov al, byte [0x55259f]
test al, al
movzx ecx, al
cmove ecx, edi
mov byte [0x55259f], cl
test dl, 2
je 0x404a01
test dl, 4
je 0x404a01
and dl, 0xfb
mov byte [0x55259e], dl
cmp dword [0x78b4d8], 0
je 0x404a15
call fcn.00401790
mov bl, byte [0x5524f1]
mov cl, bl
call fcn.004019d0
mov bl, byte [0x55259e]
not bl
and bl, 1
cmp byte [0x789f64], 0
jne 0x404a4a
mov eax, dword [0x78b4d8]
test eax, eax
je 0x404a43
push eax
call dword [sym.imp.SDL2.dll_SDL_LockAudioDevice]
add esp, 4
mov byte [0x789f64], 1
mov byte [0x789f65], 1
call fcn.00436720
xorps xmm0, xmm0
movlpd qword [0x77ac2f], xmm0
mov dword [0x77ac20], 0
mov dword [0x77ac24], 0
movlpd qword [0x552e28], xmm0
mov dword [0x552c04], 0
mov dword [0x552c00], 0
mov byte [0x789f66], bl
call fcn.00436720
cmp byte [0x789f64], 0
mov esi, dword [sym.imp.SDL2.dll_SDL_UnlockAudioDevice]
je 0x404ac1
mov eax, dword [0x78b4d8]
test eax, eax
je 0x404aba
push eax
call esi
add esp, 4
mov byte [0x789f64], 0
movzx ecx, word [0x552867]
movzx eax, word [0x5524eb]
cmp cx, 0x20
jle 0x404adc
mov ecx, 0x20
jmp 0x404ae3
cmp cx, 1
cmovl ecx, edi
cmp ax, bp
jle 0x404aec
mov eax, ebp
jmp 0x404af4
xor edx, edx
test ax, ax
cmovs eax, edx
movsx ecx, cx
cwde
imul ecx, eax
test byte [0x55259e], 4
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x4e2a80]
jne 0x404b1c
mulsd xmm0, qword [0x4e2bf0]
mov cx, word [0x55285f]
cvtpd2ps xmm0, xmm0
movss dword [0x4ee0ac], xmm0
call fcn.00422da0
cmp byte [0x552735], 0
mov byte [0x4e93cd], 1
jne 0x404b55
mov eax, dword [0x552bbc]
mov dword [0x4e93d0], eax
add eax, 0x1340
jmp 0x404b6c
mov ecx, dword [0x552bbc]
lea eax, [ecx + 0x2680]
mov dword [0x4e93d0], eax
lea eax, [ecx + 0x39c0]
cmp byte [0x4e93ce], 0
mov dword [0x4e93d4], eax
je 0x404b84
mov ecx, 0x4e93b0
call fcn.0042dae0
cmp byte [0x552736], 0
mov byte [0x4e93f5], 1
jne 0x404ba5
mov eax, dword [0x552bc0]
mov dword [0x4e93f8], eax
add eax, 0x320
jmp 0x404bbc
mov ecx, dword [0x552bc0]
lea eax, [ecx + 0x640]
mov dword [0x4e93f8], eax
lea eax, [ecx + 0x960]
cmp byte [0x4e93f6], 0
mov dword [0x4e93fc], eax
je 0x404bd4
mov ecx, 0x4e93d8
call fcn.0042dae0
mov al, byte [0x552b5f]
mov dl, 1
add al, 2
add al, al
mov byte [0x54e645], al
movsx eax, word [0x552737]
lea ecx, [eax + eax*2]
shl ecx, 4
add ecx, 0x4ec510
call fcn.004264b0
movsx eax, word [0x55250c]
mov ecx, dword [0x552bac]
imul edx, eax, 0x1380
lea eax, [edx + ecx]
mov dword [0x527bf8], eax
lea eax, [ecx + 0x4e00]
add eax, edx
mov dword [0x527bfc], eax
call fcn.00436720
cmp byte [0x789f64], 0
je 0x404c48
mov eax, dword [0x78b4d8]
test eax, eax
je 0x404c41
push eax
call esi
add esp, 4
mov byte [0x789f64], 0
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret