Function at 0x51376e
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov eax, 0x86e4
lea ebp, [esp - 0x5c]
call fcn.00521447
push ebx
mov ebx, dword [ebp + 0x64]
push esi
push edi
xor esi, esi
cmp dword [ebp + 0x70], esi
mov edi, ecx
mov dword [ebp + 0x58], edi
je 0x5137b6
push dword [ebp + 0x70]
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.00520c77
mov eax, dword [ebp + 0x74]
cmp eax, esi
pop ecx
pop ecx
mov dword [ebp + 0x50], eax
je 0x5137c6
inc eax
push eax
call fcn.004ccc79
pop ecx
mov ebx, eax
jmp 0x5137c9
cmp byte [ebp + 0x68], 3
jne 0x5137ec
mov byte [ebp - 0x180], 0
mov dword [ebp + 0x50], esi
mov ebx, dword [ebp + 0x64]
mov al, byte [ebx]
cmp al, byte [0x46308c]
mov byte [ebp + 0x77], 0
jne 0x513d3e
inc ebx
mov al, byte [ebx]
cmp al, 0x20
je 0x5137db
cmp al, 9
jne 0x5142f5
jmp 0x5137db
cmp dword [0x4651cc], esi
je 0x513d1d
push 6
push 0x45c024
push ebx
call fcn.0050caab
add esp, 0xc
test eax, eax
jne 0x513815
mov dword [ebp + 0x54], 1
jmp 0x513854
push 5
push 0x45c01c
push ebx
call fcn.0050caab
add esp, 0xc
test eax, eax
jne 0x513835
lea eax, [ebx + 5]
mov dword [ebp + 0x54], 2
jmp 0x513857
push 6
push 0x45c014
push ebx
call fcn.0050caab
add esp, 0xc
test eax, eax
jne 0x513d1d
mov dword [ebp + 0x54], 3
lea eax, [ebx + 6]
mov cl, byte [eax]
test cl, cl
je 0x513ced
cmp cl, 0x20
je 0x51386f
cmp cl, 9
jne 0x513d1d
push eax
call fcn.004ccc79
mov esi, eax
cmp byte [esi], 0
pop ecx
je 0x513ced
mov bl, byte [esi + 1]
push 0
push 0
push esi
mov byte [esi + 1], 0
call fcn.005196f4
add esp, 0xc
test eax, eax
mov byte [esi + 1], bl
je 0x513d1a
cmp byte [edi + 0x3c], 0
mov ebx, dword [0x4651cc]
je 0x513907
cmp byte [ebx + 0x30], 0
jne 0x513907
cmp dword [ebp + 0x54], 2
sete al
inc al
mov byte [ebx + 0x30], al
mov ebx, dword [0x4651cc]
cmp dword [ebp + 0x54], 3
jne 0x5138d4
cmp byte [ebx + 0x30], 2
mov byte [ebp + 0x6f], 0
jne 0x5138d8
mov byte [ebp + 0x6f], 1
mov eax, dword [edi + 4]
mov al, byte [eax]
cmp al, 0xa
jb 0x5138e5
cmp al, 0x21
jbe 0x5138f1
cmp al, 9
je 0x5138f1
cmp al, 0x68
mov byte [ebp + 0x73], 0
jne 0x5138f5
mov byte [ebp + 0x73], 1
cmp byte [esi], 0
mov byte [ebp + 0x6b], 0
mov dword [ebp + 0x78], esi
je 0x514c12
jmp 0x513939
cmp byte [ebx + 0x30], 2
jne 0x513920
cmp dword [ebp + 0x54], 1
jne 0x5138c4
push dword [ebp + 0x64]
push 0x45bfd4
jmp 0x513d13
cmp dword [ebp + 0x54], 2
jne 0x5138c4
push dword [ebp + 0x64]
push 0x45bf94
jmp 0x513d13
mov ebx, dword [0x4651cc]
mov edi, dword [ebp + 0x78]
push 0x45bf8c
push edi
call fcn.0050418c
test eax, eax
pop ecx
pop ecx
mov dword [ebp + 0x4c], eax
jne 0x513962
push edi
call fcn.00520ea7
mov ebx, dword [0x4651cc]
add eax, edi
pop ecx
mov dword [ebp + 0x4c], eax
mov esi, eax
xor eax, eax
sub esi, edi
cmp byte [ebp + 0x6f], al
je 0x513975
cmp byte [ebx + 0x30], 2
sete al
inc eax
mov edi, dword [ebp + 0x58]
lea ecx, [ebp + 0x77]
push ecx
push eax
push esi
push dword [ebp + 0x78]
mov ecx, edi
call fcn.004e73d1
mov ebx, eax
test ebx, ebx
mov dword [ebp + 0x7c], ebx
je 0x514c02
cmp byte [ebp + 0x77], 0
jne 0x513c83
mov al, byte [ebx + 0xf]
test al, al
jne 0x5139ac
mov eax, dword [ebx + 4]
mov al, byte [eax + 0xf]
cmp al, 1
jne 0x513ce3
push 0xffffffffffffffff
push esi
push 0x45b6c0
push dword [ebp + 0x78]
call fcn.00503ef0
add esp, 0x10
test eax, eax
je 0x513ce3
mov eax, dword [0x4651cc]
and dword [ebp + 0x50], 0
cmp dword [eax + 0xc], 0
jle 0x513a1a
xor ebx, ebx
mov eax, dword [0x4651cc]
mov eax, dword [eax + 8]
mov eax, dword [eax + ebx]
push 0xffffffffffffffff
push esi
push dword [eax + 0x10]
push dword [ebp + 0x78]
call fcn.00503ef0
add esp, 0x10
test eax, eax
je 0x513c90
inc dword [ebp + 0x50]
mov eax, dword [0x4651cc]
mov ecx, dword [ebp + 0x50]
add ebx, 0x10
cmp ecx, dword [eax + 0xc]
jl 0x5139e0
mov ebx, dword [ebp + 0x7c]
cmp byte [ebp + 0x6f], 0
je 0x513a37
mov eax, dword [edi + 0x44]
cmp eax, 0x7d0
jge 0x513c9a
mov ecx, dword [edi + 0x40]
mov dword [ecx + eax*4], ebx
inc dword [edi + 0x44]
cmp dword [ebp + 0x54], 3
jne 0x513a46
push 4
mov ecx, ebx
call fcn.004e7b21
push dword [ebp + 0x4c]
call fcn.004ccc79
mov edi, eax
mov al, byte [edi]
test al, al
pop ecx
je 0x513c4e
cmp al, 0x2c
je 0x513c41
cmp al, 0x3a
je 0x513a72
cmp al, 0x3d
jne 0x513a82
inc edi
mov byte [ebp + 0x67], 1
jmp 0x513a82
cmp byte [edi + 1], 0x3d
jne 0x513ca4
inc edi
inc edi
mov byte [ebp + 0x67], 0
mov al, byte [edi]
xor cl, cl
xor edx, edx
test al, al
mov dword [ebp + 0x4c], edi
je 0x513ae0
cmp al, 0x2c
jne 0x513a9e
test cl, cl
jne 0x513ac9
cmp edx, 1
jl 0x513ad0
jmp 0x513ac9
movsx eax, al
sub eax, 0x22
je 0x513ac4
sub eax, 6
je 0x513abd
dec eax
jne 0x513ac9
test cl, cl
jne 0x513ac9
test edx, edx
je 0x513cb1
dec edx
jmp 0x513ac9
test cl, cl
jne 0x513ac9
inc edx
jmp 0x513ac9
test cl, cl
sete cl
inc edi
mov al, byte [edi]
test al, al
jne 0x513a8f
test edx, edx
jne 0x513cbe
test cl, cl
jne 0x513ccb
mov ebx, dword [ebp + 0x78]
lea eax, [edi - 1]
push eax
push ebx
call fcn.005040d8
mov esi, eax
inc esi
cmp dword [ebp + 0x54], 3
mov al, byte [esi]
pop ecx
pop ecx
mov byte [ebp + 0x7b], al
mov byte [esi], 0
jne 0x513bbf
push dword [ebp + 0x4c]
call fcn.004ccc79
mov ebx, eax
mov dword [esp], 0x45a4f8
push ebx
call fcn.0050ca68
test eax, eax
pop ecx
pop ecx
jne 0x513b2d
push 1
push eax
push 0xffffffffffffffff
push 0x45871c
jmp 0x513b48
push 0x45a500
push ebx
call fcn.0050ca68
test eax, eax
pop ecx
pop ecx
jne 0x513b55
push 1
push eax
push 0xffffffffffffffff
push 0x459f14
mov ecx, dword [ebp + 0x7c]
call fcn.004cc7e9
jmp 0x513c37
cmp byte [ebx], 0x22
jne 0x513b94
cmp byte [esi - 1], 0x22
jne 0x513b94
xor eax, eax
mov byte [esi - 1], 0
mov al, byte [0x46308e]
push 0
inc ebx
push eax
push ebx
call fcn.00502ed7
push 0
push 0
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
push 0x45bddc
push 0x45bdd8
push ebx
call fcn.004e589c
add esp, 0x2c
jmp 0x513bad
push 0
push 1
push 0
push 1
push ebx
call fcn.004ccd74
add esp, 0x14
test eax, eax
je 0x513cd8
cmp byte [ebx], 0
je 0x513c37
push 1
push 0
push 0xffffffffffffffff
push ebx
jmp 0x513b48
cmp byte [ebp + 0x67], 0
je 0x513bf7
push 0
push 0
push 0xffffffffffffffff
push 1
push 1
push 0x4596c4
push 0x4596c8
lea eax, reloc.WINMM.dll_midiStreamOut
push ebx
push eax
call fcn.00520c77
pop ecx
pop ecx
push eax
call fcn.004e589c
add esp, 0x20
lea ebx, reloc.WINMM.dll_midiStreamOut
cmp byte [ebp + 0x73], 0
je 0x513c1e
cmp byte [ebp + 0x6b], 0
jne 0x513c1e
mov ecx, dword [ebp + 0x58]
xor eax, eax
push eax
push eax
push eax
push 0x6b
call fcn.00514ca3
test eax, eax
je 0x514c02
mov byte [ebp + 0x6b], 1
mov ecx, dword [ebp + 0x58]
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push eax
push ebx
call fcn.0051376e
test eax, eax
je 0x514c02
mov al, byte [ebp + 0x7b]
mov byte [esi], al
cmp byte [edi], 0x2c
jne 0x513c4e
inc edi
push edi
call fcn.004ccc79
pop ecx
mov dword [ebp + 0x78], eax
jmp 0x513c51
mov dword [ebp + 0x78], edi
mov eax, dword [ebp + 0x78]
cmp byte [eax], 0
jne 0x513933
cmp byte [ebp + 0x6b], 0
je 0x514c12
mov ecx, dword [ebp + 0x58]
xor eax, eax
push eax
push eax
push eax
push 0x6c
call fcn.00514ca3
test eax, eax
jne 0x514c12
jmp 0x514c02
push dword [ebp + 0x78]
push 0x45bf74
jmp 0x513d13
push dword [ebp + 0x78]
push 0x45bf50
jmp 0x513d13
push dword [ebp + 0x78]
push 0x45bf38
jmp 0x513d13
push dword [ebp + 0x78]
push 0x45b660
jmp 0x514885
push dword [ebp + 0x78]
push 0x45bdcc
jmp 0x514885
push dword [ebp + 0x78]
push 0x45b8e8
jmp 0x514885
push dword [ebp + 0x78]
push 0x45bb20
jmp 0x514885
push ebx
push 0x45bf18
jmp 0x514885
push dword [ebp + 0x78]
push 0x45beec
jmp 0x513d13
cmp dword [ebp + 0x54], 1
jne 0x513d0d
cmp byte [edi + 0x3c], 0
je 0x513d0d
mov eax, dword [0x4651cc]
cmp byte [eax + 0x30], 0
jne 0x513d0d
mov byte [eax + 0x30], 2
jmp 0x514c12
push ebx
push 0x45b660
mov ecx, edi
jmp 0x514888
mov ebx, dword [ebp + 0x64]
push 1
push ebx
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
mov ecx, edi
call fcn.00516610
test eax, eax
mov dword [ebp + 0x50], eax
jne 0x5137aa
jmp 0x514c02
cmp byte [ebp + 0x68], 0
jne 0x514065
cmp byte [ebp + 0x6c], 0
jne 0x51441f
lea eax, reloc.WINMM.dll_midiStreamOut
push 0x45a4b4
push eax
call fcn.0050ca68
test eax, eax
pop ecx
pop ecx
jne 0x5140d3
cmp byte [ebx], 0x28
je 0x513f13
mov al, byte [0x46308c]
mov byte [ebp + 0x29], al
lea eax, [ebp + 0x28]
push eax
push ebx
mov byte [ebp + 0x28], 0x20
mov byte [ebp + 0x2a], 0x28
mov byte [ebp + 0x2b], 9
mov byte [ebp + 0x2c], 0x3c
mov byte [ebp + 0x2d], 0x3e
mov byte [ebp + 0x2e], 0x3a
mov byte [ebp + 0x2f], 0x3d
mov byte [ebp + 0x30], 0x2b
mov byte [ebp + 0x31], 0x2d
mov byte [ebp + 0x32], 0x2a
mov byte [ebp + 0x33], 0x2f
mov byte [ebp + 0x34], 0x21
mov byte [ebp + 0x35], 0x7e
mov byte [ebp + 0x36], 0x26
mov byte [ebp + 0x37], 0x7c
mov byte [ebp + 0x38], 0x5e
mov byte [ebp + 0x39], 0
call fcn.0050418c
test eax, eax
pop ecx
pop ecx
jne 0x513dde
push ebx
call fcn.00520ea7
mov esi, eax
add esi, ebx
jmp 0x513de6
push eax
call fcn.004ccc79
mov esi, eax
pop ecx
push 3
push 0x459f28
push ebx
call fcn.0050caab
add esp, 0xc
test eax, eax
jne 0x513e13
movsx eax, byte [ebx + 3]
push eax
lea eax, [ebp + 0x28]
push eax
call fcn.00520fd7
test eax, eax
pop ecx
pop ecx
mov byte [ebp + 0x73], 1
jne 0x513e17
mov byte [ebp + 0x73], 0
movsx eax, byte [esi]
cmp eax, 0x49
jg 0x513edc
je 0x513f1c
sub eax, 0x21
je 0x513ecc
sub eax, 0x1b
je 0x513eb4
dec eax
je 0x513eae
dec eax
je 0x513e7d
sub eax, 4
je 0x513f8c
dec eax
jne 0x513f13
cmp byte [ebp + 0x73], 0
jne 0x513f13
push 8
push 0x459678
push esi
call fcn.0050caab
add esp, 0xc
test eax, eax
jne 0x513f13
mov byte [ebp + 0x68], 0xe
push 8
push 0x20
push esi
jmp 0x514003
cmp byte [esi + 1], 0x3d
jne 0x513e89
mov byte [ebp + 0x68], 0x16
jmp 0x513ed6
mov byte [ebp + 0x68], 0x15
cmp byte [ebp + 0x68], 0xa
mov al, byte [0x46308c]
mov byte [esi], al
je 0x513ea4
cmp byte [ebp + 0x68], 0xb
jne 0x5142f5
mov edi, 0x45bee8
jmp 0x5140a3
mov byte [ebp + 0x68], 0x13
jmp 0x513e8d
movsx eax, byte [esi + 1]
sub eax, 0x3d
je 0x513ec6
dec eax
je 0x513ed2
mov byte [ebp + 0x68], 0x17
jmp 0x513e8d
mov byte [ebp + 0x68], 0x18
jmp 0x513ed6
cmp byte [esi + 1], 0x3d
jne 0x513f13
mov byte [ebp + 0x68], 0x14
mov byte [esi + 1], 0x20
jmp 0x513e8d
sub eax, 0x4e
je 0x513efb
sub eax, 0x14
je 0x513f8c
dec eax
je 0x513e4d
sub eax, 6
je 0x513f1c
sub eax, 5
jne 0x513f13
push 3
push 0x45bee4
push esi
call fcn.0050caab
add esp, 0xc
test eax, eax
je 0x513fb5
mov byte [ebp + 0x68], 0x12
jmp 0x514043
movsx eax, byte [esi + 1]
push eax
call fcn.0050cef6
cmp eax, 0x4e
pop ecx
je 0x513f80
cmp eax, 0x53
je 0x513f3b
cmp eax, 0x6e
je 0x513f80
cmp eax, 0x73
jne 0x513f13
cmp byte [ebp + 0x73], 0
jne 0x513f13
lea eax, [esi + 2]
push eax
call fcn.004ccc79
push 3
mov edi, eax
push 0x45bee4
push edi
call fcn.0050caab
add esp, 0x10
test eax, eax
je 0x513f66
mov byte [ebp + 0x68], 0x10
jmp 0x513f77
push 3
push 0x20
push edi
mov byte [ebp + 0x68], 0x11
call fcn.00520d77
add esp, 0xc
mov byte [esi + 1], 0x20
jmp 0x514039
cmp byte [ebp + 0x73], 0
jne 0x513f13
mov byte [ebp + 0x68], 0xc
jmp 0x513f77
cmp byte [ebp + 0x73], 0
jne 0x513f13
push 7
push 0x45969c
push esi
call fcn.0050caab
add esp, 0xc
test eax, eax
jne 0x513f13
mov byte [ebp + 0x68], 0xa
push 7
jmp 0x513e75
push 3
push 0x20
push esi
call fcn.00520d77
lea eax, [esi + 3]
push eax
call fcn.004ccc79
push 2
mov edi, eax
push 0x45968c
push edi
call fcn.0050caab
add esp, 0x1c
test eax, eax
jne 0x513fe6
mov byte [ebp + 0x68], 0xd
push 2
jmp 0x514000
push 7
push 0x45969c
push edi
call fcn.0050caab
add esp, 0xc
test eax, eax
jne 0x514010
mov byte [ebp + 0x68], 0xb
push 7
push 0x20
push edi
call fcn.00520d77
add esp, 0xc
jmp 0x513e8d
push 8
push 0x459678
push edi
call fcn.0050caab
add esp, 0xc
test eax, eax
jne 0x513e8d
push 8
push 0x20
push edi
mov byte [ebp + 0x68], 0xf
call fcn.00520d77
add esp, 0xc
cmp byte [ebp + 0x68], 0x12
jne 0x513e8d
push ebx
call fcn.00520ea7
lea eax, [eax + ebx - 1]
cmp byte [eax], 0x7b
pop ecx
jne 0x514065
mov byte [eax], 0
sub eax, ebx
push eax
push ebx
call fcn.004d4e50
pop ecx
pop ecx
mov byte [ebp + 0x77], 1
movzx eax, byte [ebp + 0x68]
imul eax, eax, 0xe
add eax, 0x463110
jmp 0x51442b
movsx eax, byte [esi - 1]
push eax
push 0x459be0
call fcn.00520fd7
test eax, eax
pop ecx
pop ecx
je 0x5140a0
movsx eax, byte [esi + 3]
push eax
push 0x459be0
call fcn.00520fd7
test eax, eax
pop ecx
pop ecx
jne 0x5140bf
add esi, 3
push edi
push esi
call fcn.00503db2
mov esi, eax
test esi, esi
pop ecx
pop ecx
jne 0x514076
push dword [ebp + 0x64]
push 0x45bec4
jmp 0x514885
mov al, byte [0x46308c]
mov byte [esi], al
mov byte [esi + 1], 0x20
mov byte [esi + 2], 0x20
jmp 0x5142f5
mov cl, byte [ebx]
movsx eax, cl
cmp eax, 0x3a
lea esi, [ebx + 1]
mov dl, byte [esi]
mov dword [ebp + 0x4c], esi
mov byte [ebp + 0x73], 0
jg 0x5141c1
je 0x5141af
sub eax, 0x26
je 0x5141da
sub eax, 4
je 0x51419d
dec eax
je 0x514172
dec eax
dec eax
je 0x514144
dec eax
je 0x5141da
dec eax
jne 0x514305
cmp dl, 0x3d
jne 0x514128
mov byte [ebp + 0x68], 7
jmp 0x514266
cmp dl, 0x2f
jne 0x514305
cmp byte [ebx + 2], 0x3d
jne 0x514305
mov byte [ebp + 0x68], 3
jmp 0x5142f2
cmp byte [ebp - 0x180], 0x2d
jne 0x51415c
cmp byte [ebp - 0x17f], 0
jne 0x51415c
mov byte [ebp + 0x73], 1
jmp 0x514169
cmp dl, 0x3d
mov byte [ebp + 0x73], 0
jne 0x514305
mov byte [ebp + 0x68], 5
jmp 0x514201
cmp byte [ebp - 0x180], 0x2b
jne 0x51418a
cmp byte [ebp - 0x17f], 0
jne 0x51418a
mov byte [ebp + 0x73], 1
jmp 0x514197
cmp dl, 0x3d
mov byte [ebp + 0x73], 0
jne 0x514305
mov byte [ebp + 0x68], 4
jmp 0x514201
cmp dl, 0x3d
jne 0x514305
mov byte [ebp + 0x68], 6
jmp 0x514266
cmp dl, 0x3d
jne 0x514305
mov byte [ebp + 0x68], 2
jmp 0x514266
sub eax, 0x3c
je 0x5141eb
dec eax
je 0x5141e2
dec eax
je 0x5141eb
sub eax, 0x20
je 0x5141da
sub eax, 0x1e
jne 0x514305
cmp dl, 0x3d
jmp 0x514135
mov byte [ebp + 0x68], 1
jmp 0x5142e2
cmp dl, cl
jne 0x514305
cmp byte [ebx + 2], 0x3d
jne 0x514305
mov byte [ebp + 0x68], 3
cmp byte [ebp + 0x73], 0
je 0x514256
push esi
call fcn.004ccc79
mov ebx, eax
mov dword [esp], 0x45beac
push ebx
call fcn.0050418c
test eax, eax
pop ecx
pop ecx
jne 0x51413b
push ebx
call fcn.00520ea7
mov esi, eax
lea edi, [esi + 1]
push edi
push ebx
mov ebx, dword [ebp + 0x64]
push ebx
call fcn.00521097
mov al, byte [0x46308c]
mov byte [esi + ebx], al
lea eax, [edi + ebx]
mov byte [eax], 0x31
add esp, 0x10
mov byte [eax + 1], 0
jmp 0x5142f2
cmp byte [ebp + 0x68], 3
je 0x5142f2
cmp byte [ebp + 0x68], 1
je 0x5142d9
xor dl, dl
xor edi, edi
lea esi, [ebx + 2]
jmp 0x5142a4
movsx ecx, al
sub ecx, 0x22
je 0x51428d
sub ecx, 6
je 0x514286
dec ecx
jne 0x514292
test dl, dl
jne 0x514292
dec edi
jmp 0x514292
test dl, dl
jne 0x514292
inc edi
jmp 0x514292
test dl, dl
sete dl
cmp al, byte [0x46308c]
jne 0x5142a3
test dl, dl
jne 0x5142a3
cmp edi, 1
jl 0x5142ac
inc esi
mov al, byte [esi]
test al, al
jne 0x51426f
jmp 0x5142d9
cmp byte [ebp + 0x68], 4
je 0x5142bc
cmp byte [ebp + 0x68], 5
jne 0x51413b
push 0x45beac
inc esi
push esi
call fcn.004ccc79
pop ecx
push eax
call fcn.0050418c
test eax, eax
pop ecx
pop ecx
je 0x5142d9
mov byte [ebp + 0x68], 3
cmp byte [ebp + 0x68], 3
je 0x5142f2
mov esi, dword [ebp + 0x4c]
cmp byte [ebp + 0x68], 1
mov al, byte [0x46308c]
mov byte [ebx], al
je 0x5142f2
mov byte [esi], 0x20
mov ebx, dword [ebp + 0x64]
cmp byte [ebp + 0x68], 0
jne 0x514065
cmp byte [ebp + 0x6c], 0
jne 0x51432d
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.00516532
test al, al
pop ecx
mov byte [ebp + 0x68], al
jne 0x514065
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.0051656a
pop ecx
mov byte [ebp + 0x6c], al
cmp byte [ebp + 0x68], 0
jne 0x514065
cmp byte [ebp + 0x6c], 0
jne 0x51441f
lea eax, reloc.WINMM.dll_midiStreamOut
push 0x45bea4
push eax
call fcn.0050ca68
test eax, eax
pop ecx
pop ecx
jne 0x514365
cmp byte [ebx], al
jne 0x514365
mov byte [ebp + 0x68], 0x68
jmp 0x514061
mov cl, byte [ebx]
cmp cl, 0x3f
jne 0x514377
mov al, byte [ebx + 1]
cmp al, 0x20
je 0x51438b
cmp al, 9
je 0x51438b
movsx eax, cl
push eax
push 0x45beac
call fcn.00520fd7
test eax, eax
pop ecx
pop ecx
je 0x5143e8
mov al, byte [ebx]
cmp al, 0x2b
je 0x514395
cmp al, 0x2d
jne 0x5143b5
cmp byte [ebx + 1], al
jne 0x5143b5
cmp byte [ebx + 2], 0
jne 0x5143d8
mov cl, byte [0x46308c]
cmp al, 0x2b
setne al
add al, 4
mov byte [ebx], cl
mov byte [ebx + 1], 0x31
jmp 0x5143da
cmp al, 0x3f
je 0x5143d8
push 0x45b984
push ebx
call fcn.00520f37
test eax, eax
pop ecx
pop ecx
je 0x5143e8
push 0x3a
push eax
call fcn.00520fd7
test eax, eax
pop ecx
pop ecx
je 0x5143e8
mov al, 3
test al, al
mov ebx, dword [ebp + 0x64]
mov byte [ebp + 0x68], al
jne 0x514065
cmp byte [ebx], 0x28
jne 0x5143f9
mov ebx, dword [ebp + 0x64]
mov byte [ebp + 0x68], 3
jmp 0x514065
push 0x45bea0
push dword [ebp + 0x64]
call fcn.00520f37
pop ecx
test eax, eax
pop ecx
mov eax, 0x45be90
jne 0x514881
mov eax, 0x45b660
jmp 0x514881
movzx eax, byte [ebp + 0x6c]
imul eax, eax, 0xe
add eax, 0x463cd8
push 0x4001
mov dword [ebp + 0x54], eax
lea eax, reloc.WINMM.dll_midiStreamOut
push 0
push eax
call fcn.00520d77
mov edx, dword [ebp + 0x78]
add esp, 0xc
test edx, edx
je 0x5144c6
mov eax, dword [ebp + 0x7c]
mov ecx, ebx
sub ecx, dword [ebp + 0x50]
sub eax, ecx
test eax, eax
jle 0x51446c
push eax
add ecx, edx
push ecx
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.005208a7
add esp, 0xc
and dword [ebp + 0x70], 0
cmp byte [ebp + 0x68], 0x22
jne 0x5145e0
xor edi, edi
xor edx, edx
cmp byte [ebx], dl
mov dword [ebp + 0x78], edi
je 0x5145e0
cmp edi, 0x14
jge 0x51455e
lea ecx, [edx + ebx]
mov al, byte [ecx]
test al, al
je 0x514554
lea esi, reloc.WINMM.dll_midiStreamOut
sub esi, ebx
cmp al, byte [0x46308c]
jne 0x5144b9
cmp byte [esi + ecx], 0
je 0x514548
inc edx
inc ecx
mov al, byte [ecx]
test al, al
jne 0x5144a7
jmp 0x514554
xor edi, edi
jmp 0x5144d6
mov al, byte [edi + ebx]
cmp al, byte [0x46308e]
je 0x5144dc
inc edi
cmp byte [edi + ebx], 0
jne 0x5144ca
cmp byte [edi + ebx], 0
je 0x51446c
lea esi, [edi + ebx + 1]
movsx eax, byte [esi]
sub eax, 0x61
je 0x514526
dec eax
je 0x514521
sub eax, 4
je 0x51451c
sub eax, 8
je 0x514517
sub eax, 4
je 0x514512
dec eax
dec eax
je 0x51450d
dec eax
dec eax
jne 0x514529
mov byte [esi], 0xb
jmp 0x514529
mov byte [esi], 9
jmp 0x514529
mov byte [esi], 0xd
jmp 0x514529
mov byte [esi], 0xa
jmp 0x514529
mov byte [esi], 0xc
jmp 0x514529
mov byte [esi], 8
jmp 0x514529
mov byte [esi], 7
push esi
call fcn.00520ea7
inc eax
push eax
lea eax, [edi + ebx]
push esi
push eax
call fcn.00521097
add esp, 0x10
mov byte [ebp + edi - 0x4684], 1
jmp 0x5144d5
lea eax, [edx + ebx]
mov dword [ebp + edi*4 - 0x78], eax
inc edi
mov dword [ebp + 0x78], edi
inc edx
cmp byte [edx + ebx], 0
jne 0x514489
test edi, edi
je 0x5145e0
xor eax, eax
inc eax
cmp edi, eax
jg 0x51456e
mov dword [ebp + 0x70], eax
jmp 0x5145e0
mov esi, dword [ebp - 0x78]
xor edi, edi
push edi
push edi
push 1
push edi
push ebx
mov byte [esi], 0
call fcn.004ccd74
add esp, 0x14
test eax, eax
jne 0x51458f
mov dword [ebp + 0x70], 1
cmp dword [ebp + 0x70], edi
mov al, byte [0x46308c]
mov byte [esi], al
jne 0x5145e0
push 3
pop edi
cmp dword [ebp + 0x78], edi
jne 0x5145db
mov esi, dword [ebp - 0x70]
push 0
push 1
push 1
inc esi
push 0
push esi
call fcn.004ccd74
add esp, 0x14
test eax, eax
jne 0x5145e0
push esi
call fcn.004ccc79
pop ecx
mov cl, byte [eax]
cmp cl, byte [0x46308d]
jne 0x5145dd
sub eax, ebx
cmp byte [ebp + eax - 0x4684], 0
je 0x5145e0
jmp 0x5145dd
jle 0x5145e0
mov dword [ebp + 0x70], edi
mov eax, dword [ebp + 0x70]
xor esi, esi
cmp eax, esi
mov byte [ebp + 0x44], 0
mov byte [ebp + 0x48], 0
mov dword [ebp + 0x40], esi
mov dword [ebp + 0x4c], esi
jne 0x514613
mov eax, dword [ebp + 0x58]
cmp byte [eax + 0x4af], 0
mov eax, dword [ebp + 0x54]
je 0x51460f
movsx eax, byte [eax + 6]
and eax, 0x7f
jmp 0x514613
movsx eax, byte [eax + 5]
cmp byte [ebx], 0
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x7c], esi
je 0x5147e9
mov eax, dword [ebp + 0x50]
cmp dword [ebp + 0x7c], eax
jge 0x5147e9
cmp dword [ebp + 0x7c], 2
jne 0x514696
cmp byte [ebp + 0x68], 0x19
jb 0x51468a
cmp byte [ebp + 0x68], 0x1c
ja 0x51468a
mov ecx, dword [ebp + 0x58]
lea eax, [esi + ebx]
xor edi, edi
push edi
push eax
mov dword [ebp + 0x4c], eax
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.00516610
cmp eax, edi
mov dword [ebp + 0x40], eax
je 0x51468c
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.00516532
test al, al
pop ecx
mov byte [ebp + 0x44], al
jne 0x5147eb
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.0051656a
pop ecx
mov byte [ebp + 0x48], al
jmp 0x51468c
xor edi, edi
cmp byte [ebp + 0x48], 0
jne 0x5147eb
mov edx, dword [ebp + 0x7c]
shl edx, 2
lea ecx, [ebp + edx - 0x28]
lea eax, [esi + ebx]
mov dword [ebp - 0x80], ecx
mov dword [ecx], eax
lea ecx, reloc.WINMM.dll_midiStreamOut
mov dword [ebp + edx - 0x78], ecx
mov edx, dword [ebp + 0x50]
dec edx
cmp dword [ebp + 0x7c], edx
je 0x5147e6
mov dl, byte [0x46308d]
cmp byte [eax], dl
jne 0x5146e2
cmp byte [ecx], 0
jne 0x5146e2
mov cl, byte [eax + 1]
cmp cl, 0x20
je 0x5146dc
cmp cl, 9
jne 0x5146e2
mov byte [ebp + 0x7b], 1
jmp 0x5146e6
mov byte [ebp + 0x7b], 0
and dword [ebp + 0x3c], 0
cmp byte [eax], 0
mov byte [ebp + 0x73], 0
je 0x5147d7
mov edi, eax
lea eax, reloc.WINMM.dll_midiStreamOut
sub eax, ebx
mov dword [ebp - 0x7c], eax
mov cl, byte [edi]
movsx eax, cl
sub eax, 0x22
je 0x51472c
sub eax, 6
je 0x514721
dec eax
jne 0x514736
cmp byte [ebp + 0x73], 0
jne 0x514736
dec dword [ebp + 0x3c]
jmp 0x514736
cmp byte [ebp + 0x73], 0
jne 0x514736
inc dword [ebp + 0x3c]
jmp 0x514736
cmp byte [ebp + 0x73], 0
sete al
mov byte [ebp + 0x73], al
cmp cl, byte [0x46308c]
jne 0x5147ac
mov eax, dword [ebp - 0x7c]
cmp byte [edi + eax], 0
jne 0x5147ac
cmp byte [ebp + 0x73], 0
jne 0x514753
cmp dword [ebp + 0x3c], 0
jle 0x5147b9
cmp byte [ebp + 0x7b], 0
jne 0x5147ac
cmp byte [ebp + 0x68], 0x2b
jne 0x514787
cmp dword [ebp + 0x7c], 2
je 0x51476b
cmp dword [ebp + 0x7c], 3
jne 0x514787
push dword [ebp - 0x24]
call fcn.004dfa8c
test eax, eax
pop ecx
jl 0x5147ac
cmp eax, 1
jle 0x514787
cmp eax, 2
jle 0x5147ac
cmp eax, 5
jg 0x5147ac
mov eax, dword [ebp + 0x54]
add eax, 7
je 0x5147b9
mov edx, dword [ebp + 0x7c]
mov cl, byte [eax]
inc edx
test cl, cl
je 0x5147b9
movzx ecx, cl
cmp ecx, edx
je 0x5147a7
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x514799
cmp byte [eax], 0
je 0x5147b9
inc esi
inc edi
cmp byte [edi], 0
jne 0x514704
jmp 0x5147d7
mov eax, dword [ebp - 0x80]
push 0xffffffffffffffff
push dword [eax]
mov byte [esi + ebx], 0
call fcn.004d4e50
pop ecx
pop ecx
inc esi
mov al, byte [esi + ebx]
cmp al, 0x20
je 0x5147cb
cmp al, 9
je 0x5147cb
inc dword [ebp + 0x7c]
cmp byte [esi + ebx], 0
jne 0x514622
jmp 0x5147e9
inc dword [ebp + 0x7c]
xor edi, edi
mov eax, dword [ebp + 0x54]
mov al, byte [eax + 4]
movsx ecx, al
cmp dword [ebp + 0x7c], ecx
jge 0x514829
cmp al, 1
mov eax, 0x45be8c
jg 0x514807
mov eax, 0x4585d8
push eax
mov eax, dword [ebp + 0x54]
push ecx
push dword [eax]
lea eax, reloc.WINMM.dll_midiStreamOut
push 0x45be64
push 0x400
push eax
call fcn.004d4eb6
add esp, 0x18
jmp 0x51487b
xor eax, eax
cmp ecx, edi
jle 0x51483d
mov edx, dword [ebp + eax*4 - 0x28]
inc eax
cmp byte [edx], 0
je 0x51485c
cmp eax, ecx
jl 0x51482f
mov cl, byte [ebp + 0x6c]
test cl, cl
je 0x514aa7
movzx eax, cl
dec eax
cmp eax, 0x13
ja 0x514aa7
jmp dword [eax*4 + 0x4499fc]
push eax
mov eax, dword [ebp + 0x54]
push dword [eax]
lea eax, reloc.WINMM.dll_midiStreamOut
push 0x45be34
push 0x400
push eax
call fcn.004d4eb6
add esp, 0x14
lea eax, reloc.WINMM.dll_midiStreamOut
push dword [ebp + 0x64]
push eax
mov ecx, dword [ebp + 0x58]
call fcn.00515a24
jmp 0x514c49
cmp dword [ebp + 0x7c], edi
je 0x514b93
cmp byte [ebp + 0x44], 0
jne 0x514b93
cmp byte [ebp + 0x48], 0
jne 0x514b93
cmp byte [ebp + 0x68], 0x13
jb 0x514b93
cmp byte [ebp + 0x68], 0x21
ja 0x514b93
cmp byte [ebp + 0x68], 0x18
ja 0x514af2
cmp byte [ebp + 0x6c], 6
jb 0x514b93
cmp byte [ebp + 0x6c], 0xb
ja 0x514b93
mov eax, dword [ebp + 0x7c]
mov eax, dword [ebp + eax*4 - 0x2c]
mov dword [ebp + 0x6c], eax
sub eax, ebx
lea ecx, [eax + ebx]
mov dl, byte [ecx]
test dl, dl
je 0x514b93
lea edi, reloc.WINMM.dll_midiStreamOut
mov esi, ecx
sub edi, ebx
cmp dl, byte [0x46308c]
jne 0x514b23
cmp byte [esi + edi], 0
je 0x514b2d
inc eax
inc esi
mov dl, byte [esi]
test dl, dl
jne 0x514b15
jmp 0x514b93
lea esi, [eax + ebx]
inc eax
mov cl, byte [eax + ebx]
cmp cl, 0x20
je 0x514b30
cmp cl, 9
je 0x514b30
mov ecx, dword [ebp + 0x58]
add eax, ebx
push 0
push eax
mov dword [ebp + 0x4c], eax
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.00516610
test eax, eax
mov dword [ebp + 0x40], eax
je 0x514b93
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.00516532
test al, al
pop ecx
mov byte [ebp + 0x44], al
jne 0x514b84
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
call fcn.0051656a
test al, al
pop ecx
mov byte [ebp + 0x48], al
je 0x514b93
push 0xffffffffffffffff
push dword [ebp + 0x6c]
mov byte [esi], 0
call fcn.004d4e50
pop ecx
pop ecx
cmp byte [ebp + 0x68], 0x68
jne 0x514bcf
cmp dword [ebp + 0x7c], 1
jne 0x514bcf
mov esi, dword [ebp - 0x28]
cmp byte [esi], 0
je 0x514bcf
push esi
call fcn.00520ea7
lea eax, [eax + esi - 1]
cmp byte [eax], 0x7b
pop ecx
jne 0x514bcf
push 0xffffffffffffffff
push esi
mov byte [ebp + 0x77], 1
mov byte [eax], 0
call fcn.004d4e50
test eax, eax
pop ecx
pop ecx
jne 0x514bcf
and dword [ebp + 0x7c], eax
mov ecx, dword [ebp + 0x58]
lea eax, [ebp - 0x78]
push eax
push dword [ebp + 0x7c]
lea eax, [ebp - 0x28]
push eax
push dword [ebp + 0x68]
call fcn.00514ca3
test eax, eax
je 0x514c02
cmp byte [ebp + 0x77], 0
je 0x514c06
mov ecx, dword [ebp + 0x58]
xor eax, eax
push eax
push eax
push eax
push 0x6b
call fcn.00514ca3
test eax, eax
jne 0x514c06
xor eax, eax
jmp 0x514c49
cmp byte [ebp + 0x44], 0
jne 0x514c17
cmp byte [ebp + 0x48], 0
jne 0x514c17
xor eax, eax
inc eax
jmp 0x514c49
push dword [ebp + 0x40]
call fcn.00520ea7
pop ecx
mov ecx, dword [ebp + 0x58]
push eax
mov eax, dword [ebp + 0x40]
sub eax, ebx
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
push dword [ebp + 0x40]
lea eax, reloc.WINMM.dll_midiStreamOut
push eax
push dword [ebp + 0x48]
push dword [ebp + 0x44]
push dword [ebp + 0x4c]
call fcn.0051376e
pop edi
pop esi
pop ebx
add ebp, 0x5c
leave
ret 0x1c