Function at 0x5c87dc
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
call fcn.005c80f5
pushal
mov dword [esp + 0x1c], ebp
push esp
pushal
mov dword [esp + 0xa], eax
push word [esp + 0xc]
pop word [esp + 0x1f]
jmp 0x5c8802
lea ecx, [esi + 8]
mov eax, dword [edx - 8]
mov edi, dword [ecx - 8]
add dword [ebp - 4], 4
mov dword [ecx - 8], eax
mov eax, dword [edx - 4]
mov dword [edx - 8], edi
mov edi, dword [ecx - 4]
mov dword [ecx - 4], eax
mov eax, dword [edx]
mov dword [edx - 4], edi
mov edi, dword [ecx]
jmp 0x5c87d2
cmp eax, 1
jle 0x60865c
lea ecx, [eax - 1]
jmp 0x60863d
add ecx, 0x10
sub edx, 0x10
cmp dword [ebp - 4], ebx
jl 0x5c8764
push edx
mov edx, ebp
lea edx, [edx - 8]
jmp 0x6092ef
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [edx], edi
mov edi, dword [ecx + 4]
push esi
mov esi, ecx
lea esi, [esi + 4]
mov dword [esi], eax
pop esi
push ebx
mov ebx, edx
lea ebx, [ebx + 4]
mov dword [ebx], edi
pop ebx
sub ebx, 4
jmp 0x5c87b0
mov dword [esp + 0x18], edi
push dword [esp + 3]
lea esp, [esp + 0x44]
mov ebp, esp
push ecx
pushfd
mov word [esp], dx
lea esp, [esp + 2]
push word [esp]
mov dword [esp], ecx
pushal
pop dword [esp + 0x13]
pop word [esp + 1]
pop word [esp + 0x10]
mov byte [esp + 9], al
pop word [esp + 0xa]
pop dword [esp + 4]
lea esp, [esp + 8]
lea esp, [esp + 2]
lea esp, [esp + 8]
pushal
mov dword [esp + 0x1c], ebx
pushal
push word [esp + 0x1a]
pop word [esp + 0x13]
pop word [esp + 0x11]
push word [esp + 0x19]
pop word [esp]
mov dword [esp + 1], ecx
pop dword [esp + 0xa]
lea esp, [esp + 2]
lea esp, [esp + 0x34]
push esi
push edi
mov esi, ecx
call fcn.005f4846
and dword [ebp - 4], 0
mov ebx, eax
shl ebx, 2
mov dword [ebp - 8], eax
test ebx, ebx
jle 0x5c8794
lea edx, [esi + ebx*4 + 8]
jmp 0x5c8761
jmp 0x5c8727
mov edi, edx
shr edi, 0x18
mov edi, dword [edi*4 + reloc.WINMM.dll_midiStreamOut]
and edi, ecx
push edx
mov edx, edi
lea edx, [edx*4]
lea edx, reloc.WINMM.dll_midiStreamOut
mov edi, dword [edx]
pop edx
and ebx, ecx
xor edi, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
jmp 0x608ccb
mov ebp, ebx
lea ebp, [ebp*4]
lea ebp, reloc.WINMM.dll_midiStreamOut
mov ebx, dword [ebp]
pop ebp
add esi, 0x10
push edi
mov edi, esi
mov edx, dword [edi]
pop edi
jmp 0x6085da
mov dword [ebp - 4], ecx
mov ecx, 0xff
movzx ebx, byte [esi + 0x11]
push ebp
jmp 0x608612
pop edi
bswap esi
mov esi, dword [esp]
lea esp, [esp + 4]
pop ebx
leave
ret
movzx ebx, byte [esi + 2]
mov ebx, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
and ebx, ecx
xor edi, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
movzx ebx, byte [esi + 5]
and edx, ecx
mov edx, dword [edx*4 + reloc.WINMM.dll_midiStreamOut]
and edx, ecx
xor edi, dword [edx*4 + reloc.WINMM.dll_midiStreamOut]
mov edx, dword [esi + 4]
mov dword [esi], edi
push ecx
pushal
mov cl, ah
mov dword [esp + 0x18], ebx
push ecx
mov word [esp + 1], si
push word [esp]
lea esp, [esp + 1]
mov byte [esp + 3], cl
mov dword [esp], edx
mov byte [esp + 3], ah
mov word [esp], sp
push edx
lea esp, [esp + 1]
lea esp, [esp + 8]
popal
lea ecx, [ecx*4]
lea ecx, reloc.WINMM.dll_midiStreamOut
mov ebx, dword [ecx]
pop ecx
pushal
xchg si, ax
not ax
xchg ch, bl
mov si, 0x24b3
xchg ebp, esi
lea ebx, [ebx + ebx]
push bx
bswap esi
lea esp, [esp + 2]
mov dword [esp], edx
push esp
lea esp, [esp + 4]
popal
shr edi, 0x18
push ebx
mov ebx, edi
lea ebx, [ebx*4]
lea ebx, reloc.WINMM.dll_midiStreamOut
mov edi, dword [ebx]
pop ebx
and edi, ecx
mov edi, dword [edi*4 + reloc.WINMM.dll_midiStreamOut]
and ebx, ecx
xor edi, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
movzx ebx, byte [esi + 6]
mov ebx, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
and ebx, ecx
xor edi, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
movzx ebx, byte [esi + 9]
push ebx
push word [esp + 1]
lea esp, [esp + 1]
push word [esp + 1]
lea esp, [esp + 3]
and edx, ecx
push eax
push word [esp]
pop word [esp]
mov dword [esp], ebx
push word [esp]
lea esp, [esp + 2]
lea esp, [esp + 8]
mov edx, dword [edx*4 + reloc.WINMM.dll_midiStreamOut]
cmc
sub esp, 0x1a
mov word [esp + 3], si
pop dword [esp + 6]
pop word [esp + 0xb]
lea esp, [esp + 0xb]
pop dword [esp]
push dword [esp + 1]
stc
lea esp, [esp + 1]
and edx, ecx
push dx
lea esp, [esp + 1]
pushfd
lea esp, [esp + 1]
lea esp, [esp + 0xc]
xor edi, dword [edx*4 + reloc.WINMM.dll_midiStreamOut]
mov edx, dword [esi + 8]
mov dword [esi + 4], edi
mov ebx, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
mov edi, edx
push bx
push word [esp + 1]
shr edi, 0x18
lea esp, [esp + 4]
push esi
mov esi, edi
lea esi, [esi*4]
lea esi, reloc.WINMM.dll_midiStreamOut
mov edi, dword [esi]
pop esi
cmc
pushfd
push dword [esp]
mov byte [esp + 5], dl
pushfd
lea esp, [esp + 1]
stc
lea esp, [esp + 3]
and edi, ecx
lea esp, [esp + 8]
mov edi, dword [edi*4 + reloc.WINMM.dll_midiStreamOut]
and ebx, ecx
xor edi, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
movzx ebx, byte [esi + 0xa]
mov ebx, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
sub esp, 9
mov dword [esp + 3], ebp
add esp, 6
mov byte [esp], ch
push eax
lea esp, [esp + 3]
and ebx, ecx
pushfd
lea esp, [esp + 2]
lea esp, [esp + 2]
lea esp, [esp + 4]
xor edi, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
movzx ebx, byte [esi + 0xd]
and edx, ecx
mov edx, dword [edx*4 + reloc.WINMM.dll_midiStreamOut]
and edx, ecx
xor edi, dword [edx*4 + reloc.WINMM.dll_midiStreamOut]
mov edx, dword [esi + 0xc]
mov dword [esi + 8], edi
push edi
pushal
xchg edx, eax
pushal
push word [esp + 0x1f]
mov eax, dword [esp + 0x15]
mov ah, byte [esp + 0x16]
xchg cx, ax
lea esi, reloc.WINMM.dll_midiStreamOut
pop esi
mov dword [esp + 0xa], eax
lea esp, [esp + 2]
mov dword [esp + 0x1c], ebx
lea esp, [esp + 0x1c]
popal
lea edi, [edi*4]
lea edi, reloc.WINMM.dll_midiStreamOut
mov ebx, dword [edi]
pop edi
mov edi, edx
pushal
lea esp, [esp + 0x19]
pop word [esp]
push dword [esp]
mov dword [esp + 3], esp
pop dword [esp]
lea esp, [esp]
push dword [esp]
push ax
lea esp, [esp + 3]
shr edi, 0x18
pushfd
mov word [esp + 1], dx
push dword [esp + 1]
pop word [esp + 3]
mov byte [esp + 4], bh
lea esp, [esp + 1]
lea esp, [esp + 3]
push word [esp]
lea esp, [esp + 0xc]
mov edi, dword [edi*4 + reloc.WINMM.dll_midiStreamOut]
push ebp
mov dword [esp], esi
clc
lea esp, [esp]
stc
sub esp, 0x10
push word [esp + 7]
push dword [esp + 0x13]
lea esp, [esp + 2]
and edi, ecx
pushfd
pop word [esp]
lea esp, [esp + 1]
lea esp, [esp]
lea esp, [esp]
mov byte [esp], bl
pushal
lea esp, [esp + 1]
lea esp, [esp + 0x38]
mov edi, dword [edi*4 + reloc.WINMM.dll_midiStreamOut]
and ebx, ecx
xor edi, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
movzx ebx, byte [esi + 0xe]
push edx
mov edx, ebx
lea edx, [edx*4]
lea edx, reloc.WINMM.dll_midiStreamOut
mov ebx, dword [edx]
pop edx
and edx, ecx
push ebx
mov ebx, edx
lea ebx, [ebx*4]
lea ebx, reloc.WINMM.dll_midiStreamOut
mov edx, dword [ebx]
pop ebx
and ebx, ecx
xor edi, dword [ebx*4 + reloc.WINMM.dll_midiStreamOut]
clc
sub esp, 0xf
lea esp, [esp + 0xe]
mov byte [esp], al
push edi
lea esp, [esp + 1]
and edx, ecx
push eax
push dword [esp + 3]
pop word [esp]
lea esp, [esp + 2]
lea esp, [esp + 8]
xor edi, dword [edx*4 + reloc.WINMM.dll_midiStreamOut]
dec dword [ebp - 4]
mov dword [esi + 0xc], edi
jne 0x608646
je 0x60865c
push 0x3e
mov eax, dword [esp]
pushfd
pop word [esp]
mov word [esp], bx
mov word [esp], ax
jmp 0x60909a
mov ecx, dword [ebp + 8]
mov byte [ecx], dl
cmp esi, 0x1a
jae 0x6090c2
lea ecx, [esi + 0x41]
jmp 0x60913a
cmp ecx, 0x34
jae 0x6090b9
lea edx, [ecx + 0x47]
jmp 0x60904c
xor edx, edx
cmp ecx, eax
setne dl
lea edx, [edx*4 + 0x2b]
jmp 0x60904c
mov word [esp], bp
pushfd
mov word [esp + 3], bx
push dword [esp]
lea esp, [esp + 2]
lea esp, [esp + 0xc]
cmp ecx, 0x1a
jae 0x609070
lea edx, [ecx + 0x41]
jmp 0x60904c
cmp ecx, eax
jae 0x60907a
lea edx, [ecx - 4]
jmp 0x60904c
cmp esi, 0x34
jae 0x609106
lea ecx, [esi + 0x47]
jmp 0x60913a
cmp esi, eax
jmp 0x609156
pushfd
cmc
xor ecx, ecx
lea esp, [esp + 4]
cmp esi, eax
setne cl
lea ecx, [ecx*4 + 0x2b]
jmp 0x60913a
cmp dword [ebp + 0xc], 2
mov edx, dword [ebp + 8]
mov byte [edx + 1], cl
jb 0x60915d
jmp 0x609245
jae 0x609118
lea ecx, [esi - 4]
jmp 0x60913a
mov byte [edx + 2], 0x3d
jmp 0x6091c0
cmp edi, eax
jae 0x60920b
lea ecx, [edi - 4]
jmp 0x6091ae
mov byte [edx + 2], cl
jmp 0x6091c0
cmp dword [ebp + 0xc], 3
jne 0x6091ef
cmp ebx, 0x1a
jae 0x60921b
lea ecx, [ebx + 0x41]
jmp 0x6092c7
cmp edi, 0x34
jae 0x60918a
lea ecx, [edi + 0x47]
jmp 0x6091ae
mov byte [edx + 3], 0x3d
jmp 0x6094c9
xor ecx, ecx
cmp edi, eax
setne cl
lea ecx, [ecx*4 + 0x2b]
jmp 0x6091ae
cmp ebx, 0x34
jae 0x60929b
lea ecx, [ebx + 0x47]
jmp 0x6092c7
cmp ebx, eax
pushfd
mov word [esp + 1], bx
push word [esp + 2]
jmp 0x60927d
cmp edi, 0x1a
jae 0x6091e5
lea ecx, [edi + 0x41]
jmp 0x6091ae
xor ecx, ecx
cmp ebx, eax
setne cl
lea ecx, [ecx*4 + 0x2b]
jmp 0x6092c7
lea esp, [esp + 2]
lea esp, [esp + 0x34]
jae 0x609252
lea ecx, [ebx - 4]
jmp 0x6092c7
pushfd
push word [esp + 1]
push bp
pushal
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x1a], edi
push dword [esp + 0x13]
mov byte [esp + 0x25], dh
push dword [esp + 0x1c]
jmp 0x609228
mov byte [edx + 3], cl
jmp 0x6094c9
mov eax, dword [edx]
pop edx
jmp 0x5c8794
mov di, word [esp]
mov di, 0x3a5b
mov edi, dword [esp]
pushal
push word [esp]
lea esp, [esp + 2]
lea esp, [esp + 0x24]
mov si, 0x1f3c
mov si, 0x3b04
lea esi, [edi + ebp]
lea esi, [edx*4]
lea esi, reloc.WINMM.dll_midiStreamOut
bswap esi
mov si, word [esp]
mov esi, dword [esp]
lea esp, [esp + 4]
pop ebx
pop ebp
ret