Function at 0x51bec2
Capabilities:
Authenticate hmac
Encode data using base64
Parse credit card information
Parse pe header

Disassembly:
push ebp
lea ebp, [esp - 0x54]
sub esp, 0xc4
mov eax, dword [ebp + 0x5c]
mov ecx, dword [eax]
mov eax, dword [ebp + 0x60]
push ebx
mov ebx, dword [eax]
mov eax, dword [ebp + 0x64]
mov eax, dword [eax]
mov dword [ebp + 0x50], eax
mov eax, ecx
shr eax, 9
and eax, 1
push esi
mov dword [ebp - 0x48], eax
xor eax, 1
push edi
mov edi, dword [ebp + 0x78]
mov dword [ebp - 0x4c], eax
push 0xfffffffffffffffe
pop eax
xor esi, esi
mov dword [ebp + 0xc], eax
mov dword [ebp + 0x10], eax
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x2c], eax
mov eax, ecx
and eax, 1
shl eax, 8
mov dword [ebp + 0x20], esi
mov dword [ebp + 0x30], esi
mov dword [ebp + 0x28], ecx
mov dword [ebp + 8], esi
mov dword [ebp - 8], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp + 0x14], esi
mov dword [ebp - 0x44], esi
mov dword [ebp + 0x4c], esi
mov dword [ebp], esi
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0x50]
movzx edx, byte [eax]
mov eax, dword [ebp + 0x7c]
cmp eax, esi
mov dword [ebp + 0x48], edx
je 0x51bfb3
mov ecx, dword [edi + 0x10]
add ecx, 0x1000
cmp ebx, ecx
ja 0x51dd06
cmp ebx, dword [ebp - 8]
jae 0x51bf59
mov ebx, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, ebx
sub ecx, dword [ebp - 8]
mov edx, 0x7fffffeb
sub edx, eax
cmp edx, ecx
jl 0x51de54
sub eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x7c]
add eax, ebx
mov dword [ecx], eax
mov eax, dword [ebp + 0x4c]
cmp eax, esi
je 0x51bfa8
cmp eax, dword [ebp - 0x3c]
jbe 0x51bfab
mov eax, ebx
sub eax, dword [ebp + 0x4c]
push eax
push dword [ebp + 0x4c]
push dword [ebp - 0x3c]
call fcn.00521097
mov eax, dword [ebp - 0x3c]
mov ecx, eax
sub ecx, dword [ebp + 0x4c]
add esp, 0xc
add ebx, ecx
mov dword [ebp + 0x4c], eax
jmp 0x51bfab
mov ebx, dword [ebp - 0x3c]
mov edx, dword [ebp + 0x48]
mov dword [ebp - 8], ebx
jmp 0x51bfc4
mov eax, dword [edi + 0x10]
add eax, 0x1000
cmp dword [edi + 0x20], eax
ja 0x51dd06
cmp dword [ebp + 0x14], esi
je 0x51bfec
cmp edx, esi
je 0x51bfec
cmp edx, 0x5c
jne 0x51caf4
mov eax, dword [ebp + 0x50]
inc eax
cmp byte [eax], 0x45
jne 0x51caf4
and dword [ebp + 0x14], 0
jmp 0x51cb88
cmp edx, 0x2a
je 0x51c012
cmp edx, 0x2b
je 0x51c012
cmp edx, 0x3f
je 0x51c012
cmp edx, 0x7b
jne 0x51c00d
mov eax, dword [ebp + 0x50]
inc eax
call fcn.0051b17b
test eax, eax
jne 0x51c012
mov dword [ebp + 0x34], esi
jmp 0x51c019
mov dword [ebp + 0x34], 1
test byte [ebp + 0x28], 8
je 0x51c0a6
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp + 0x48]
test byte [ecx + eax], 1
jne 0x51dcfc
mov edx, ecx
cmp edx, 0x23
jne 0x51c0a9
mov eax, dword [ebp + 0x50]
jmp 0x51c09a
mov edx, dword [edi + 0x4c]
test edx, edx
je 0x51c07c
mov ecx, dword [edi + 0x1c]
cmp eax, ecx
jae 0x51c09a
push 0
lea esi, [edi + 0x50]
push esi
push ecx
push edx
push eax
call fcn.004e3d78
add esp, 0x14
test eax, eax
mov eax, dword [ebp + 0x50]
je 0x51c09a
mov ecx, dword [edi + 0x50]
lea eax, [eax + ecx - 1]
mov dword [ebp + 0x50], eax
cmp byte [eax], 0
jne 0x51dcfc
xor edx, edx
jmp 0x51c0a9
mov edx, dword [edi + 0x50]
mov esi, dword [edi + 0x1c]
sub esi, edx
cmp eax, esi
ja 0x51c09a
cmp cl, byte [edi + 0x54]
jne 0x51c09a
cmp edx, 1
je 0x51c065
mov cl, byte [eax + 1]
cmp cl, byte [edi + 0x55]
je 0x51c065
inc eax
mov dword [ebp + 0x50], eax
mov cl, byte [eax]
test cl, cl
jne 0x51c03f
jmp 0x51c078
mov edx, dword [ebp + 0x48]
mov esi, dword [ebp + 0x50]
xor ecx, ecx
cmp edx, 0x2e
jg 0x51ca7e
je 0x51ca5d
mov eax, edx
sub eax, ecx
je 0x51caa9
sub eax, 0x24
je 0x51ca52
sub eax, 4
je 0x51c0ff
dec eax
je 0x51caa9
dec eax
je 0x51c0f6
dec eax
jne 0x51caf4
or dword [ebp + 0x30], reloc.WINMM.dll_midiStreamOut
mov dword [ebp + 0x20], 1
jmp 0x51d58c
or dword [ebp + 0x30], reloc.WINMM.dll_midiStreamOut
jmp 0x51d589
mov eax, dword [ebp + 0x28]
mov dword [ebp + 0x34], eax
mov eax, dword [edi + 0x20]
inc esi
mov dword [ebp], eax
mov dword [ebp + 0x50], esi
mov al, byte [esi]
cmp al, 0x2a
mov dword [ebp + 0x3c], ecx
mov dword [ebp + 0x40], 0x5e
mov dword [ebp - 0x10], ecx
jne 0x51c1f1
mov ecx, dword [edi + 0xc]
lea edx, [esi + 1]
mov dword [ebp + 0x44], edx
movzx edx, byte [edx]
test byte [edx + ecx], 2
je 0x51c1f1
mov eax, dword [ebp + 0x44]
and dword [ebp + 0x4c], 0
mov dword [ebp + 0x3c], 0x45e980
mov dword [ebp + 0x40], eax
inc eax
mov dword [ebp + 0x50], eax
movzx edx, byte [eax]
test byte [edx + ecx], 2
jne 0x51c14d
mov al, byte [eax]
cmp al, 0x3a
je 0x51dd14
cmp al, 0x29
jne 0x51c1e3
mov esi, dword [ebp + 0x50]
sub esi, dword [ebp + 0x40]
and dword [ebp + 0x44], 0
cmp dword [0x46454c], 0
jle 0x51c1e3
mov eax, dword [ebp + 0x44]
cmp esi, dword [eax*8 + reloc.WINMM.dll_midiStreamOut]
jne 0x51c19a
push esi
push dword [ebp + 0x3c]
push dword [ebp + 0x40]
call fcn.00521717
add esp, 0xc
test eax, eax
je 0x51c1bc
mov eax, dword [ebp + 0x44]
mov ecx, dword [eax*8 + reloc.WINMM.dll_midiStreamOut]
mov edx, dword [ebp + 0x3c]
inc eax
cmp eax, dword [0x46454c]
lea ecx, [edx + ecx + 1]
mov dword [ebp + 0x3c], ecx
mov dword [ebp + 0x44], eax
jl 0x51c17b
jmp 0x51c1d4
mov eax, dword [ebp + 0x44]
mov al, byte [eax*8 + 0x464518]
mov byte [ebx], al
inc ebx
cmp al, 0x6d
jne 0x51c1d4
mov dword [edi + 0x48], 1
mov eax, dword [ebp + 0x44]
cmp eax, dword [0x46454c]
jl 0x51dcfc
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x3c
jmp 0x51de5d
cmp al, 0x3f
jne 0x51c8e0
inc esi
mov dword [ebp + 0x50], esi
mov cl, byte [esi]
movzx eax, cl
cmp eax, 0x39
jg 0x51c524
cmp eax, 0x30
jge 0x51c56f
sub eax, 0x21
je 0x51c4dc
dec eax
dec eax
je 0x51c4ad
push 3
pop edx
sub eax, edx
je 0x51c49e
dec eax
je 0x51c780
dec eax
je 0x51c24f
sub eax, edx
je 0x51c56f
dec eax
dec eax
je 0x51c56f
jmp 0x51c59e
cmp byte [esi + 1], 0x3f
mov dword [ebp + 0x40], 0x5f
jne 0x51c277
mov al, byte [esi + 2]
cmp al, 0x3d
je 0x51c8be
cmp al, 0x21
je 0x51c8be
cmp al, 0x3c
je 0x51c8be
or dword [ebp + 0x4c], reloc.WINMM.dll_midiStreamOut
mov byte [ebx + 3], 0x63
mov dword [ebp + 0x3c], edx
mov edx, dword [ebp + 0x50]
lea eax, [edx + 1]
mov cl, byte [eax]
cmp cl, 0x52
jne 0x51c2a4
add edx, 2
cmp byte [edx], 0x26
jne 0x51c2a4
or dword [ebp + 0x44], reloc.WINMM.dll_midiStreamOut
mov dword [ebp + 0x50], edx
mov byte [ebx + 3], 0x64
jmp 0x51c2da
cmp cl, 0x3c
jne 0x51c2b5
mov dword [ebp + 0x44], 0x3e
mov dword [ebp + 0x50], eax
jmp 0x51c2da
cmp cl, 0x27
jne 0x51c2c3
mov dword [ebp + 0x44], 0x27
jmp 0x51c2b0
and dword [ebp + 0x44], 0
cmp cl, 0x2d
je 0x51c2d1
cmp cl, 0x2b
jne 0x51c2da
mov dword [ebp + 0x50], eax
movzx eax, byte [eax]
mov dword [ebp + 0x4c], eax
mov esi, dword [ebp + 0x50]
mov ecx, dword [edi + 0xc]
inc esi
movzx eax, byte [esi]
test byte [eax + ecx], 0x10
je 0x51dd22
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
xor edx, edx
test byte [ecx + eax], 0x10
mov dword [ebp + 0x48], edx
mov dword [ebp + 0x38], esi
je 0x51c32b
test edx, edx
jl 0x51c31b
test byte [eax + 0x45f378], 4
je 0x51c318
lea edx, [edx + edx*4]
lea edx, [eax + edx*2 - 0x30]
jmp 0x51c31b
or edx, reloc.WINMM.dll_midiStreamOut
inc esi
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
test byte [ecx + eax], 0x10
jne 0x51c302
mov dword [ebp + 0x48], edx
mov eax, esi
sub eax, dword [ebp + 0x38]
cmp dword [ebp + 0x44], 0
mov dword [ebp + 0x24], eax
jle 0x51c349
movzx eax, byte [esi]
inc esi
cmp eax, dword [ebp + 0x44]
mov dword [ebp + 0x50], esi
jne 0x51dd33
mov al, byte [esi]
inc esi
cmp al, 0x29
mov dword [ebp + 0x50], esi
jne 0x51dd33
cmp dword [ebp + 0x7c], 0
jne 0x51c8be
cmp dword [ebp + 0x4c], 0
jle 0x51c39f
test edx, edx
jle 0x51dd65
cmp dword [ebp + 0x4c], 0x2d
jne 0x51c38f
mov eax, dword [edi + 0x30]
sub eax, edx
inc eax
mov edx, eax
test edx, edx
jg 0x51c392
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xf
jmp 0x51de5d
add edx, dword [edi + 0x30]
mov eax, edx
sar eax, 8
mov byte [ebx + 5], dl
jmp 0x51c8bb
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x51c3d0
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x38]
call fcn.00521717
add esp, 0xc
test eax, eax
je 0x51c3d0
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x51c3ac
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jge 0x51c3ee
movzx eax, byte [esi + 1]
mov ah, byte [esi]
mov ecx, eax
sar ecx, 8
mov byte [ebx + 4], cl
mov byte [ebx + 5], al
jmp 0x51c8be
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x50]
shr eax, 3
xor esi, esi
inc esi
and eax, esi
push eax
push dword [ebp + 0x24]
mov eax, dword [edi + 0x30]
push dword [ebp + 0x38]
call fcn.0051b272
add esp, 0xc
test eax, eax
jg 0x51c3de
xor eax, eax
cmp dword [ebp + 0x44], eax
jne 0x51c381
mov edx, dword [ebp + 0x38]
cmp byte [edx], 0x52
jne 0x51c457
cmp dword [ebp + 0x24], esi
jle 0x51c44c
movzx ecx, byte [esi + edx]
test byte [ecx + 0x45f378], 4
je 0x51c381
inc esi
cmp esi, dword [ebp + 0x24]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
jl 0x51c42a
test eax, eax
jne 0x51c451
mov eax, 0xffff
mov byte [ebx + 3], 0x64
jmp 0x51c3de
cmp dword [ebp + 0x24], 6
jne 0x51c47f
push 6
push 0x45f480
push dword [ebp + 0x38]
call fcn.00521717
add esp, 0xc
test eax, eax
jne 0x51c47f
mov byte [ebx + 3], 0x65
mov dword [ebp + 0x3c], esi
jmp 0x51c8be
mov eax, dword [ebp + 0x48]
test eax, eax
jg 0x51c3de
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
mov ecx, dword [ebp + 0x68]
mov dword [ecx], eax
jmp 0x51de5d
push 0x29
pop ecx
mov dword [ebp + 0x3c], 1
jmp 0x51cc09
inc esi
mov dword [ebp + 0x50], esi
mov al, byte [esi]
test al, al
je 0x51c4ce
cmp al, 0x29
je 0x51c4c5
inc esi
mov dword [ebp + 0x50], esi
mov al, byte [esi]
test al, al
jne 0x51c4b7
cmp byte [esi], 0
jne 0x51dcfc
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x12
jmp 0x51de5d
inc esi
mov dword [ebp + 0x50], esi
cmp byte [esi], 0x29
jne 0x51c4ee
mov byte [ebx], 0x6c
inc ebx
jmp 0x51c68b
mov dword [ebp + 0x40], 0x58
and dword [ebp + 0x4c], 0
mov eax, dword [ebp + 0x40]
mov byte [ebx], al
mov ecx, dword [edi + 0x44]
and dword [ebp + 8], 0
cmp eax, 0x59
mov dword [ebp + 0x1c], ebx
mov dword [ebp + 0x44], ecx
je 0x51c8ef
cmp eax, 0x5a
je 0x51c8ef
xor eax, eax
jmp 0x51c8f2
sub eax, 0x3a
je 0x51c55b
push 2
pop edx
sub eax, edx
je 0x51c75d
dec eax
je 0x51c750
dec eax
je 0x51c744
sub eax, 0x12
je 0x51c70f
sub eax, edx
je 0x51c56b
sub eax, 0x2a
jne 0x51c59e
mov dword [ebp - 0x10], 1
mov dword [ebp + 0x40], 0x5d
inc esi
mov dword [ebp + 0x50], esi
jmp 0x51c8be
inc esi
mov dword [ebp + 0x50], esi
mov cl, byte [esi]
movzx edx, cl
cmp edx, 0x2b
mov dword [ebp + 0x4c], edx
jne 0x51c582
inc esi
jmp 0x51c699
cmp edx, 0x2d
jne 0x51c69c
lea eax, [esi + 1]
movzx edx, byte [eax]
test byte [edx + 0x45f378], 4
jne 0x51c694
and dword [ebp + 0x40], 0
and dword [ebp + 0x44], 0
lea eax, [ebp + 0x44]
jmp 0x51c617
cmp cl, 0x3a
je 0x51c61c
movzx ecx, cl
inc esi
cmp ecx, 0x69
mov dword [ebp + 0x50], esi
jg 0x51c5f5
je 0x51c5f0
cmp ecx, 0x2d
je 0x51c5eb
cmp ecx, 0x4a
je 0x51c5e1
cmp ecx, 0x55
je 0x51c5db
cmp ecx, 0x58
jne 0x51dd45
or dword [eax], 0x40
jmp 0x51c615
or byte [eax + 1], 2
jmp 0x51c615
or byte [eax + 2], 8
or dword [edi + 0x40], 0x10
jmp 0x51c615
lea eax, [ebp + 0x40]
jmp 0x51c615
or dword [eax], 1
jmp 0x51c615
cmp ecx, 0x6d
je 0x51c612
cmp ecx, 0x73
je 0x51c60d
cmp ecx, 0x78
jne 0x51dd45
or dword [eax], 8
jmp 0x51c615
or dword [eax], 4
jmp 0x51c615
or dword [eax], 2
mov cl, byte [esi]
cmp cl, 0x29
jne 0x51c5ab
mov eax, dword [ebp + 0x44]
or eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x40]
not ecx
and eax, ecx
cmp byte [esi], 0x29
mov dword [ebp + 0x34], eax
jne 0x51c55b
mov ecx, dword [edi + 0x14]
add ecx, 3
cmp ebx, ecx
jne 0x51c653
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x51c64b
cmp dword [ecx], 6
jne 0x51c653
mov dword [edi + 0x3c], eax
mov dword [ebp + 0x28], eax
jmp 0x51c68b
mov ecx, eax
xor ecx, dword [ebp + 0x28]
test cl, 7
je 0x51c669
mov byte [ebx], 0x18
mov cl, al
inc ebx
and cl, 7
mov byte [ebx], cl
inc ebx
mov ecx, dword [ebp + 0x5c]
mov dword [ecx], eax
mov ecx, eax
shr ecx, 9
and ecx, 1
mov dword [ebp + 0x28], eax
mov dword [ebp - 0x48], ecx
xor ecx, 1
and eax, 1
shl eax, 8
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x38], eax
and dword [ebp + 0x4c], 0
jmp 0x51dcfc
mov edx, dword [ebp + 0x4c]
mov esi, eax
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
xor ecx, ecx
test byte [eax + 0x45f378], 4
mov dword [ebp + 0x48], ecx
je 0x51c6c7
inc esi
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
test byte [eax + 0x45f378], 4
jne 0x51c6ad
mov dword [ebp + 0x48], ecx
cmp byte [esi], 0x29
jne 0x51dd57
cmp edx, 0x2d
jne 0x51c6f3
test ecx, ecx
je 0x51dd65
mov eax, dword [edi + 0x30]
sub eax, ecx
inc eax
test eax, eax
mov dword [ebp + 0x48], eax
jle 0x51c381
jmp 0x51ccca
cmp edx, 0x2b
jne 0x51ccca
test ecx, ecx
je 0x51dd65
add ecx, dword [edi + 0x30]
mov dword [ebp + 0x48], ecx
jmp 0x51ccca
inc esi
mov dword [ebp + 0x50], esi
mov cl, byte [esi]
cmp cl, 0x3d
je 0x51c732
cmp cl, 0x3e
je 0x51c732
cmp cl, 0x3c
je 0x51c780
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x29
jmp 0x51de5d
xor eax, eax
cmp cl, 0x3e
sete al
push 0x29
mov dword [ebp + 0x3c], eax
jmp 0x51cbf8
mov dword [ebp + 0x40], 0x5c
jmp 0x51c562
mov dword [ebp + 0x40], 0x57
inc esi
jmp 0x51c8d8
mov al, byte [esi + 1]
cmp al, 0x21
je 0x51c8cf
cmp al, 0x3d
je 0x51c8c6
mov edx, dword [edi + 0xc]
movzx eax, al
test byte [eax + edx], 0x10
je 0x51dd81
mov edx, dword [edi + 0xc]
xor eax, eax
cmp cl, 0x3c
setne al
dec eax
and eax, 0x17
add eax, 0x27
inc esi
mov dword [ebp + 0x50], esi
mov ecx, eax
movzx eax, byte [esi]
test byte [eax + edx], 0x10
mov dword [ebp + 0x38], esi
je 0x51c7b3
mov eax, edx
inc esi
mov dword [ebp + 0x50], esi
movzx edx, byte [esi]
test byte [edx + eax], 0x10
jne 0x51c7a6
mov eax, esi
sub eax, dword [ebp + 0x38]
cmp dword [ebp + 0x7c], 0
mov dword [ebp + 0x24], eax
je 0x51c7ff
movzx edx, byte [esi]
cmp edx, ecx
jne 0x51ddbd
cmp dword [edi + 0x28], reloc.WINMM.dll_midiStreamOut
jge 0x51dd73
lea ecx, [eax + 3]
cmp ecx, dword [edi + 0x2c]
jle 0x51c89e
cmp eax, 0x20
mov dword [edi + 0x2c], ecx
jle 0x51c89e
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x30
jmp 0x51de5d
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x51c870
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x38]
call fcn.00521757
add esp, 0xc
test eax, eax
jne 0x51c845
mov eax, dword [ebp + 0x24]
cmp byte [esi + eax + 2], 0
jne 0x51c840
test byte [ebp + 0x2a], 8
jne 0x51c847
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2b
jmp 0x51de5d
or eax, reloc.WINMM.dll_midiStreamOut
test eax, eax
jl 0x51c857
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x51c80c
jmp 0x51c870
mov ecx, dword [edi + 0x28]
mov eax, dword [edi + 0x2c]
sub ecx, dword [ebp + 0x4c]
imul ecx, eax
push ecx
add eax, esi
push esi
push eax
call fcn.00521097
add esp, 0xc
mov eax, dword [edi + 0x30]
push dword [ebp + 0x24]
inc eax
push dword [ebp + 0x38]
sar eax, 8
mov byte [esi], al
mov al, byte [edi + 0x30]
inc al
mov byte [esi + 1], al
lea eax, [esi + 2]
push eax
call fcn.005208a7
mov eax, dword [ebp + 0x24]
mov byte [esi + eax + 2], 0
mov esi, dword [ebp + 0x50]
add esp, 0xc
inc esi
inc dword [edi + 0x28]
mov dword [ebp + 0x50], esi
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
sar eax, 8
mov byte [ebx + 3], al
mov al, byte [edi + 0x30]
mov dword [ebp + 0x3c], 2
mov byte [ebx + 4], al
mov dword [ebp + 0x4c], ebx
jmp 0x51c4f9
mov dword [ebp + 0x40], 0x59
jmp 0x51c8d6
mov dword [ebp + 0x40], 0x5a
add esi, edx
mov dword [ebp + 0x50], esi
jmp 0x51c4f5
test byte [ebp + 0x29], 0x10
je 0x51c8a5
mov dword [ebp + 0x40], 0x5d
jmp 0x51c8be
xor eax, eax
inc eax
mov ecx, dword [ebp + 0x7c]
neg ecx
sbb ecx, ecx
lea edx, [ebp + 8]
and ecx, edx
push ecx
push edi
push dword [ebp + 0x74]
lea ecx, [ebp - 0xc]
push ecx
lea ecx, [ebp - 0x40]
push ecx
push dword [ebp + 0x3c]
push dword [ebp - 0x10]
push eax
push dword [ebp + 0x68]
lea eax, [ebp + 0x50]
push eax
lea eax, [ebp + 0x1c]
push eax
mov eax, dword [ebp + 0x28]
and eax, 7
push eax
push dword [ebp + 0x34]
call fcn.0051de6f
add esp, 0x34
test eax, eax
je 0x51de5d
mov edx, dword [ebp + 0x40]
cmp edx, 0x5f
jne 0x51c96a
xor esi, esi
cmp dword [ebp + 0x7c], esi
jne 0x51c96a
mov eax, ebx
xor ecx, ecx
mov ch, byte [eax + 1]
inc esi
mov cl, byte [eax + 2]
add eax, ecx
cmp byte [eax], 0x54
jne 0x51c948
cmp byte [ebx + 3], 0x65
jne 0x51c9bf
cmp esi, 1
jg 0x51dd93
push 0x65
pop edx
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp + 0x50]
cmp byte [ecx], 0x29
jne 0x51ddaf
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x51c9d8
mov eax, dword [ecx]
mov ecx, dword [ebp + 8]
mov edx, 0x7fffffeb
sub edx, eax
lea esi, [ecx - 6]
cmp edx, esi
jl 0x51de54
lea eax, [eax + ecx - 6]
mov ecx, dword [ebp + 0x7c]
mov dword [ecx], eax
mov byte [ebx], 0x5d
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
inc ebx
inc ebx
mov byte [ebx], 0x54
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
inc ebx
inc ebx
jmp 0x51dcfc
cmp esi, 2
jg 0x51dda1
cmp esi, 1
jne 0x51c96a
or eax, reloc.WINMM.dll_midiStreamOut
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x40], eax
jmp 0x51c96d
cmp edx, 0x65
mov ebx, dword [ebp + 0x1c]
je 0x51dcfc
mov ecx, dword [ebp + 0x18]
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebp + 0x2c]
xor esi, esi
cmp edx, 0x5c
mov dword [ebp + 0x10], ecx
mov dword [ebp - 0x44], esi
jl 0x51ca3c
cmp ecx, 0xfffffffe
jne 0x51ca19
cmp eax, esi
jl 0x51ca0f
mov dword [ebp + 0x2c], eax
mov dword [ebp - 0x44], 1
jmp 0x51ca13
or dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
or dword [ebp + 0x10], reloc.WINMM.dll_midiStreamOut
jmp 0x51ca28
cmp eax, esi
jl 0x51ca28
cmp dword [ebp - 0xc], esi
jge 0x51ca31
or eax, dword [ebp + 0x44]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], esi
jl 0x51dcfc
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0x18], eax
jmp 0x51dcfc
cmp edx, 0x57
jne 0x51dcfc
mov eax, dword [ebp - 0xc]
cmp eax, esi
jl 0x51dcfc
jmp 0x51ca34
mov dword [ebp + 0x4c], ecx
mov byte [ebx], 0x1a
jmp 0x51d4cc
cmp dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
jne 0x51ca67
or dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0xc], eax
mov dword [ebp + 0x4c], ebx
mov byte [ebx], 0xc
jmp 0x51d4cc
mov eax, edx
sub eax, 0x3f
je 0x51d582
sub eax, 0x1c
je 0x51ce5d
dec eax
je 0x51cb3f
dec eax
dec eax
je 0x51cb24
sub eax, 0x1d
je 0x51caef
dec eax
jne 0x51caf4
mov eax, dword [ebp + 0x6c]
mov edx, dword [ebp + 0x2c]
mov dword [eax], edx
mov eax, dword [ebp + 0x70]
mov edx, dword [ebp + 0x18]
mov dword [eax], edx
mov eax, dword [ebp + 0x60]
mov edx, dword [ebp + 0x7c]
cmp edx, ecx
mov dword [eax], ebx
mov eax, dword [ebp + 0x64]
mov dword [eax], esi
je 0x51cae7
mov eax, dword [edx]
mov ecx, ebx
sub ecx, dword [ebp - 8]
mov esi, 0x7fffffeb
sub esi, eax
cmp esi, ecx
jl 0x51de54
sub eax, dword [ebp - 8]
add eax, ebx
mov dword [edx], eax
xor eax, eax
inc eax
jmp 0x51de67
cmp dword [ebp + 0x34], ecx
jne 0x51cafb
mov al, dl
jmp 0x51d4d5
mov esi, dword [ebp + 0x68]
push esi
lea eax, [ebp + 0x30]
push eax
lea eax, [ebp + 0x20]
push eax
mov eax, dword [ebp + 0x50]
inc eax
call fcn.0051b1dd
add esp, 0xc
cmp dword [esi], 0
mov dword [ebp + 0x50], eax
jne 0x51de5d
jmp 0x51d58c
test byte [ebp + 0x28], 2
je 0x51cb34
cmp dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
jne 0x51cb34
or dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
mov dword [ebp + 0x4c], ecx
mov byte [ebx], 0x19
jmp 0x51d4cc
mov eax, dword [ebp + 0x50]
mov esi, dword [ebp + 0x68]
push 0
push dword [ebp + 0x28]
mov dword [ebp - 0x34], eax
push dword [edi + 0x30]
lea eax, [ebp + 0x50]
push esi
push eax
call fcn.0051ae82
add esp, 0x14
cmp dword [esi], 0
jne 0x51de5d
test eax, eax
jge 0x51d4d5
mov esi, eax
neg esi
cmp esi, 0x19
jne 0x51cb9c
mov eax, dword [ebp + 0x50]
cmp byte [eax + 1], 0x5c
jne 0x51cb90
add eax, 2
cmp byte [eax], 0x45
jne 0x51cb90
mov dword [ebp + 0x50], eax
jmp 0x51dcfc
mov dword [ebp + 0x14], 1
jmp 0x51dcfc
cmp esi, 0x18
je 0x51dcfc
cmp dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
jne 0x51cbb9
cmp esi, 5
jle 0x51cbb9
cmp esi, 0x16
jge 0x51cbb9
or dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
cmp esi, 0x1a
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp + 0xc], ecx
jne 0x51cddd
mov ecx, dword [ebp + 0x50]
inc ecx
mov dl, byte [ecx]
cmp dl, 0x3c
je 0x51cbe7
cmp dl, 0x27
je 0x51cbe7
cmp dl, 0x7b
jne 0x51cddd
and dword [ebp + 0x3c], 0
mov dword [ebp + 0x50], ecx
mov al, byte [ecx]
cmp al, 0x3c
mov esi, ecx
jne 0x51cbfb
push 0x3e
pop ecx
jmp 0x51cc09
xor ecx, ecx
cmp al, 0x27
setne cl
dec ecx
and ecx, 0xffffffaa
add ecx, 0x7d
mov edx, dword [edi + 0xc]
inc esi
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
test byte [eax + edx], 0x10
mov dword [ebp + 0x38], esi
je 0x51cc2b
mov eax, edx
inc esi
mov dword [ebp + 0x50], esi
movzx edx, byte [esi]
test byte [edx + eax], 0x10
jne 0x51cc1e
mov eax, esi
sub eax, dword [ebp + 0x38]
cmp dword [ebp + 0x7c], 0
mov dword [ebp + 0x24], eax
je 0x51cc53
movzx edx, byte [esi]
cmp edx, ecx
jne 0x51ddbd
cmp eax, 0x20
jg 0x51c7f1
and dword [ebp + 0x48], 0
jmp 0x51ccc0
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x51cc84
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x38]
call fcn.00521717
add esp, 0xc
test eax, eax
je 0x51cc84
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x51cc60
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jge 0x51cc97
movzx eax, byte [esi + 1]
mov ah, byte [esi]
mov dword [ebp + 0x48], eax
jmp 0x51ccc0
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x50]
shr eax, 3
and eax, 1
push eax
push dword [ebp + 0x24]
mov eax, dword [edi + 0x30]
push dword [ebp + 0x38]
call fcn.0051b272
add esp, 0xc
test eax, eax
mov dword [ebp + 0x48], eax
jle 0x51c381
cmp dword [ebp + 0x3c], 0
je 0x51cdea
mov eax, dword [edi + 0x14]
xor esi, esi
cmp dword [ebp + 0x7c], esi
mov dword [ebp + 0x4c], ebx
mov dword [ebp + 0x44], eax
jne 0x51cd4b
cmp dword [ebp + 0x48], esi
mov byte [ebx], 0
je 0x51ccf1
push dword [ebp + 0x48]
mov eax, dword [edi + 0x14]
call fcn.0051b5d6
pop ecx
mov dword [ebp + 0x44], eax
cmp eax, esi
jne 0x51cd98
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x50]
shr eax, 3
and eax, 1
push eax
push dword [ebp + 0x48]
mov eax, dword [edi + 0x30]
push esi
call fcn.0051b272
add esp, 0xc
test eax, eax
jl 0x51c381
mov eax, dword [edi + 0x14]
mov ecx, dword [ebp + 0x48]
add ecx, eax
mov dword [ebp + 0x44], ecx
mov ecx, ebx
sub ecx, eax
mov eax, dword [edi + 0x20]
add ecx, 4
sar ecx, 8
mov byte [eax], cl
mov ecx, dword [edi + 0x20]
mov al, bl
sub al, byte [edi + 0x14]
add al, 4
mov byte [ecx + 1], al
add dword [edi + 0x20], 2
mov eax, dword [ebp + 0x44]
mov byte [ebx], 0x5c
mov byte [ebx + 1], 0
mov byte [ebx + 2], 6
add ebx, 3
mov byte [ebx], 0x51
mov ecx, eax
sub ecx, dword [edi + 0x14]
add ebx, 3
sar ecx, 8
mov byte [ebx - 2], cl
sub al, byte [edi + 0x14]
mov byte [ebx - 1], al
mov byte [ebx], 0x54
mov byte [ebx + 1], 0
mov byte [ebx + 2], 6
add ebx, 3
cmp dword [ebp + 0x2c], 0xfffffffe
mov dword [ebp + 8], 9
jne 0x51dcfc
or dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
jmp 0x51dcfc
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x51cd4b
mov esi, dword [ebp + 0x74]
test esi, esi
je 0x51ddcb
mov ecx, dword [esi + 4]
cmp ecx, eax
jb 0x51ddcb
push 0
push ebx
push ecx
call fcn.0051b643
add esp, 0xc
test eax, eax
je 0x51cd48
mov esi, dword [esi]
test esi, esi
je 0x51ddcb
mov eax, dword [ebp + 0x44]
jmp 0x51cdaf
cmp esi, 0x1b
jl 0x51ce28
push 0xffffffffffffffe5
pop ecx
sub ecx, eax
mov dword [ebp + 0x48], ecx
cmp dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
jne 0x51cdf4
or dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
mov ecx, dword [ebp + 0x48]
mov byte [ebx], 0x50
mov dword [ebp + 0x4c], ebx
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
inc ebx
xor eax, eax
inc ebx
inc eax
cmp ecx, 0x20
jge 0x51ce14
shl eax, cl
or dword [edi + 0x38], eax
cmp ecx, dword [edi + 0x34]
jle 0x51dcfc
mov dword [edi + 0x34], ecx
jmp 0x51dcfc
cmp esi, 0x15
je 0x51ddd9
cmp esi, 0xe
je 0x51ddd9
cmp esi, 0xf
je 0x51ddd9
cmp esi, 5
jle 0x51ce52
cmp esi, 0x16
jge 0x51ce52
mov dword [ebp + 0x4c], ebx
jmp 0x51ce56
and dword [ebp + 0x4c], 0
neg al
jmp 0x51d4ca
mov al, byte [esi + 1]
cmp al, 0x3a
mov dword [ebp + 0x4c], ebx
je 0x51ce6f
cmp al, 0x2e
je 0x51ce6f
cmp al, 0x3d
jne 0x51ce86
lea eax, [ebp - 0x34]
push eax
mov eax, dword [ebp + 0x50]
mov ecx, edi
call fcn.0051b7d6
test eax, eax
pop ecx
jne 0x51dde4
and dword [ebp + 0x38], 0
mov eax, dword [ebp + 0x50]
inc eax
mov dword [ebp + 0x50], eax
movzx esi, byte [eax]
cmp esi, 0x5c
mov dword [ebp + 0x48], esi
jne 0x51cec1
inc eax
cmp byte [eax], 0x45
jne 0x51cea7
mov dword [ebp + 0x50], eax
jmp 0x51ce8a
push 3
push 0x45f47c
push eax
call fcn.00521717
add esp, 0xc
test eax, eax
jne 0x51ced5
add dword [ebp + 0x50], 3
jmp 0x51ce8a
cmp dword [ebp + 0x38], 0
jne 0x51ced5
cmp esi, 0x5e
jne 0x51ced5
mov dword [ebp + 0x38], 1
jmp 0x51ce8a
and dword [ebp + 0x40], 0
or dword [ebp + 0x3c], 0xffffffff
push 0x20
lea eax, [ebp - 0x30]
push 0
push eax
call fcn.00520d77
add esp, 0xc
test esi, esi
je 0x51de28
cmp dword [ebp + 0x14], 0
je 0x51cf1a
cmp esi, 0x5c
jne 0x51d28b
mov eax, dword [ebp + 0x50]
inc eax
cmp byte [eax], 0x45
jne 0x51d28b
and dword [ebp + 0x14], 0
jmp 0x51d0b5
cmp esi, 0x5b
jne 0x51d04b
mov edx, dword [ebp + 0x50]
mov al, byte [edx + 1]
cmp al, 0x3a
je 0x51cf39
cmp al, 0x2e
je 0x51cf39
cmp al, 0x3d
jne 0x51d28b
lea eax, [ebp - 0x34]
push eax
mov ecx, edi
mov eax, edx
call fcn.0051b7d6
test eax, eax
pop ecx
je 0x51d28b
mov eax, dword [edi + 8]
and dword [ebp + 0x34], 0
mov dword [ebp + 0x44], eax
mov eax, dword [ebp + 0x50]
cmp byte [eax + 1], 0x3a
jne 0x51ddfc
inc eax
inc eax
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5e
jne 0x51cf7b
inc eax
mov dword [ebp + 0x34], 1
mov dword [ebp + 0x50], eax
mov ecx, dword [ebp - 0x34]
sub ecx, eax
push ecx
push eax
call fcn.0051b80c
test eax, eax
pop ecx
pop ecx
jl 0x51de07
test byte [ebp + 0x28], 1
je 0x51cf9e
cmp eax, 2
jg 0x51cf9e
xor eax, eax
lea eax, [eax + eax*2]
mov esi, eax
shl esi, 2
mov eax, dword [esi + reloc.WINMM.dll_midiStreamOut]
add eax, dword [ebp + 0x44]
push 0x20
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.005208a7
mov eax, dword [esi + reloc.WINMM.dll_midiStreamOut]
mov edx, dword [esi + reloc.WINMM.dll_midiStreamOut]
add esp, 0xc
test eax, eax
jl 0x51cff7
mov esi, dword [ebp + 0x44]
xor ecx, ecx
add esi, eax
test edx, edx
jl 0x51cfe8
mov al, byte [ecx + esi]
or byte [ebp + ecx - 0x70], al
inc ecx
cmp ecx, 0x20
jl 0x51cfd9
jmp 0x51cff7
mov al, byte [ecx + esi]
not al
and byte [ebp + ecx - 0x70], al
inc ecx
cmp ecx, 0x20
jl 0x51cfe8
xor eax, eax
cmp edx, eax
jge 0x51cfff
neg edx
cmp edx, 1
jne 0x51d00a
and byte [ebp - 0x6f], 0xc3
jmp 0x51d013
cmp edx, 2
jne 0x51d013
and byte [ebp - 0x65], 0x7f
cmp dword [ebp + 0x34], eax
je 0x51d02a
mov cl, byte [ebp + eax - 0x70]
not cl
or byte [ebp + eax - 0x30], cl
inc eax
cmp eax, 0x20
jl 0x51d018
jmp 0x51d038
mov cl, byte [ebp + eax - 0x70]
or byte [ebp + eax - 0x30], cl
inc eax
cmp eax, 0x20
jl 0x51d02a
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x40], 0xa
jmp 0x51d476
cmp esi, 0x5c
jne 0x51d28b
push 1
push dword [ebp + 0x28]
lea eax, [ebp + 0x50]
push dword [edi + 0x30]
push dword [ebp + 0x68]
push eax
call fcn.0051ae82
mov esi, eax
mov eax, dword [ebp + 0x68]
add esp, 0x14
cmp dword [eax], 0
mov dword [ebp + 0x48], esi
jne 0x51de5d
mov edx, esi
neg edx
cmp edx, 5
jne 0x51d089
push 8
jmp 0x51d099
cmp edx, 0x15
jne 0x51d092
push 0x58
jmp 0x51d099
cmp edx, 0x10
jne 0x51d09f
push 0x52
pop esi
jmp 0x51d288
cmp edx, 0x19
jne 0x51d0c9
mov eax, dword [ebp + 0x50]
cmp byte [eax + 1], 0x5c
jne 0x51d0bd
add eax, 2
cmp byte [eax], 0x45
jne 0x51d0bd
mov dword [ebp + 0x50], eax
jmp 0x51d476
mov dword [ebp + 0x14], 1
jmp 0x51d476
cmp edx, 0x18
je 0x51d476
test esi, esi
jge 0x51d28b
add dword [ebp + 0x40], 2
cmp dword [ebp + 0x7c], 0
mov eax, dword [edi + 8]
jne 0x51d1af
mov ecx, edx
sub ecx, 6
je 0x51d198
dec ecx
je 0x51d183
dec ecx
je 0x51d162
dec ecx
je 0x51d143
dec ecx
je 0x51d129
dec ecx
je 0x51d111
sub ecx, 0xd
jmp 0x51d1df
xor esi, esi
mov cl, byte [eax + esi + 0xa0]
or byte [ebp + esi - 0x30], cl
inc esi
cmp esi, 0x20
jl 0x51d113
jmp 0x51d476
xor esi, esi
mov cl, byte [eax + esi + 0xa0]
not cl
or byte [ebp + esi - 0x30], cl
inc esi
cmp esi, 0x20
jl 0x51d12b
jmp 0x51d476
lea ecx, [ebp - 0x30]
xor esi, esi
sub eax, ecx
lea ecx, [ebp + esi - 0x30]
mov dl, byte [eax + ecx]
or byte [ecx], dl
inc esi
cmp esi, 0x20
jl 0x51d14a
and byte [ebp - 0x2f], 0xf7
jmp 0x51d476
lea ecx, [ebp - 0x30]
xor esi, esi
sub eax, ecx
lea ecx, [ebp + esi - 0x30]
mov dl, byte [eax + ecx]
not dl
or byte [ecx], dl
inc esi
cmp esi, 0x20
jl 0x51d169
or byte [ebp - 0x2f], 8
jmp 0x51d476
xor esi, esi
mov cl, byte [eax + esi + 0x40]
or byte [ebp + esi - 0x30], cl
inc esi
cmp esi, 0x20
jl 0x51d185
jmp 0x51d476
xor esi, esi
mov cl, byte [eax + esi + 0x40]
not cl
or byte [ebp + esi - 0x30], cl
inc esi
cmp esi, 0x20
jl 0x51d19a
jmp 0x51d476
cmp esi, 0xfffffff9
je 0x51d476
cmp esi, 0xfffffffa
je 0x51d476
cmp esi, 0xfffffff5
je 0x51d476
cmp esi, 0xfffffff6
je 0x51d476
cmp esi, 0xfffffff7
je 0x51d476
cmp esi, 0xfffffff8
je 0x51d476
cmp edx, 0x12
jne 0x51d1fb
or byte [ebp - 0x2f], 2
or byte [ebp - 0x2c], 1
or byte [ebp - 0x1c], 1
jmp 0x51d476
cmp edx, 0x11
jne 0x51d233
xor ecx, ecx
mov esi, 0xfe
mov eax, ecx
dec eax
mov edx, 0xff
je 0x51d21f
sub eax, 3
je 0x51d21b
sub eax, 0x10
jne 0x51d224
mov edx, esi
jmp 0x51d224
mov edx, 0xfd
or byte [ebp + ecx - 0x30], dl
inc ecx
cmp ecx, 0x20
jl 0x51d207
jmp 0x51d476
cmp edx, 0x14
jne 0x51d245
or byte [ebp - 0x2f], 0x3c
or byte [ebp - 0x20], 0x20
jmp 0x51d476
cmp edx, 0x13
jne 0x51d274
xor eax, eax
mov edx, eax
dec edx
mov ecx, 0xff
je 0x51d260
sub edx, 0xf
jne 0x51d265
add ecx, 0xffffffe0
jmp 0x51d265
mov ecx, 0xc3
or byte [ebp + eax - 0x30], cl
inc eax
cmp eax, 0x20
jl 0x51d24c
jmp 0x51d476
test byte [ebp + 0x28], 0x40
jne 0x51de12
mov eax, dword [ebp + 0x50]
sub dword [ebp + 0x40], 2
movzx esi, byte [eax]
mov dword [ebp + 0x48], esi
mov edx, dword [ebp + 0x50]
jmp 0x51d2a1
lea eax, [edx + 2]
cmp byte [eax], 0x45
jne 0x51d2a7
and dword [ebp + 0x14], 0
mov edx, eax
mov dword [ebp + 0x50], edx
cmp byte [edx + 1], 0x5c
je 0x51d290
cmp esi, 0xd
mov ecx, edx
mov dword [ebp + 0x34], ecx
je 0x51d2b6
cmp esi, 0xa
jne 0x51d2ba
or dword [edi + 0x40], 0x20
cmp dword [ebp + 0x14], 0
jne 0x51d42d
cmp byte [edx + 1], 0x2d
jne 0x51d42d
push 2
pop eax
add edx, eax
mov dword [ebp + 0x50], edx
cmp byte [edx], 0x5c
jne 0x51d316
cmp byte [edx + 1], 0x45
jne 0x51d308
add edx, eax
mov dword [ebp + 0x50], edx
cmp byte [edx], 0x5c
je 0x51d2db
jmp 0x51d308
cmp byte [edx + 1], 0x51
jne 0x51d316
add edx, eax
mov dword [ebp + 0x50], edx
cmp byte [edx], 0x5c
jne 0x51d30f
cmp byte [edx + 1], 0x45
jne 0x51d30f
add edx, eax
mov dword [ebp + 0x50], edx
cmp byte [edx], 0x5c
je 0x51d2ed
jmp 0x51d316
mov dword [ebp + 0x14], 1
mov al, byte [edx]
test al, al
je 0x51d42a
cmp dword [ebp + 0x14], 0
jne 0x51d32e
cmp al, 0x5d
je 0x51d42a
cmp dword [ebp + 0x14], 0
movzx eax, al
mov dword [ebp + 0x44], eax
jne 0x51d378
cmp eax, 0x5c
jne 0x51d378
push 1
push dword [ebp + 0x28]
lea eax, [ebp + 0x50]
push dword [edi + 0x30]
push dword [ebp + 0x68]
push eax
call fcn.0051ae82
mov ecx, dword [ebp + 0x68]
add esp, 0x14
cmp dword [ecx], 0
mov dword [ebp + 0x44], eax
jne 0x51de5d
test eax, eax
jge 0x51d378
cmp eax, 0xfffffffb
jne 0x51d40a
push 8
pop eax
mov dword [ebp + 0x44], eax
cmp eax, esi
jl 0x51de1d
je 0x51d42d
cmp eax, 0xd
je 0x51d390
cmp eax, 0xa
jne 0x51d394
or dword [edi + 0x40], 0x20
mov edx, dword [ebp + 0x40]
mov ecx, eax
sub ecx, esi
cmp dword [ebp + 0x7c], 0
lea ecx, [edx + ecx + 1]
mov dword [ebp + 0x40], ecx
mov dword [ebp + 0x3c], eax
jne 0x51d476
cmp esi, eax
jg 0x51d476
mov eax, dword [ebp + 0x28]
and eax, 1
mov dword [ebp + 0x34], eax
mov ecx, dword [ebp + 0x48]
mov eax, ecx
cdq
push 8
pop esi
idiv esi
and ecx, 7
lea esi, [ebp + eax - 0x30]
mov al, 1
shl al, cl
or byte [esi], al
cmp dword [ebp + 0x34], 0
je 0x51d3fd
mov eax, dword [edi + 4]
mov ecx, dword [ebp + 0x48]
movzx ecx, byte [eax + ecx]
mov eax, ecx
cdq
push 8
pop esi
idiv esi
and ecx, 7
lea esi, [ebp + eax - 0x30]
mov al, 1
shl al, cl
or byte [esi], al
inc dword [ebp + 0x48]
mov eax, dword [ebp + 0x48]
cmp eax, dword [ebp + 0x44]
jle 0x51d3c0
jmp 0x51d476
cmp eax, 0xffffffeb
jne 0x51d416
push 0x58
jmp 0x51d374
cmp eax, 0xfffffff0
jne 0x51d422
push 0x52
jmp 0x51d374
mov eax, dword [ebp + 0x34]
mov dword [ebp + 0x50], eax
jmp 0x51d42d
mov dword [ebp + 0x50], ecx
mov ecx, dword [ebp + 0x48]
mov eax, ecx
cdq
push 8
pop esi
idiv esi
and ecx, 7
lea esi, [ebp + eax - 0x30]
mov al, 1
shl al, cl
or byte [esi], al
test byte [ebp + 0x28], 1
je 0x51d46d
mov eax, dword [edi + 4]
mov ecx, dword [ebp + 0x48]
movzx ecx, byte [eax + ecx]
mov eax, ecx
cdq
push 8
pop esi
idiv esi
mov dword [ebp + 0x48], ecx
and ecx, 7
lea esi, [ebp + eax - 0x30]
mov al, 1
shl al, cl
or byte [esi], al
mov eax, dword [ebp + 0x48]
inc dword [ebp + 0x40]
mov dword [ebp + 0x3c], eax
inc dword [ebp + 0x50]
mov eax, dword [ebp + 0x50]
movzx esi, byte [eax]
test esi, esi
mov dword [ebp + 0x48], esi
je 0x51de28
cmp esi, 0x5d
jne 0x51cef5
xor eax, eax
cmp dword [ebp + 0x14], eax
jne 0x51cef5
cmp dword [ebp + 0x40], 1
jne 0x51d52c
cmp dword [ebp + 0x38], eax
mov ecx, dword [ebp + 0x18]
mov dword [ebp + 0xc], ecx
je 0x51d4d2
cmp dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
jne 0x51d4bd
or dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x10], eax
mov al, byte [ebp + 0x3c]
mov byte [ebx], 0x1d
inc ebx
mov byte [ebx], al
inc ebx
jmp 0x51dcfc
mov al, byte [ebp + 0x3c]
test byte [ebp + 0x28], 1
mov dword [ebp + 0x4c], ebx
setne cl
add cl, 0x1b
mov byte [ebx], cl
inc ebx
mov byte [ebx], al
inc ebx
cmp al, 0xd
je 0x51d4f0
cmp al, 0xa
jne 0x51d4f4
or dword [edi + 0x40], 0x20
mov ecx, dword [ebp + 0x2c]
cmp ecx, 0xfffffffe
jne 0x51d514
or dword [ebp + 0x10], reloc.WINMM.dll_midiStreamOut
mov ecx, dword [ebp + 0x18]
movzx eax, al
or eax, dword [ebp - 0x38]
mov dword [ebp + 0xc], ecx
mov dword [ebp + 0x2c], eax
jmp 0x51dcfc
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0xc], eax
movzx eax, byte [ebx - 1]
or eax, dword [edi + 0x44]
mov dword [ebp + 0x10], ecx
or eax, dword [ebp - 0x38]
jmp 0x51ca34
cmp dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
jne 0x51d536
or dword [ebp + 0x2c], reloc.WINMM.dll_midiStreamOut
cmp dword [ebp + 0x38], eax
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp + 0xc], ecx
je 0x51d567
mov byte [ebx], 0x4e
inc ebx
cmp dword [ebp + 0x7c], eax
jne 0x51d57a
lea eax, [ebp - 0x30]
push 0x20
mov esi, ebx
sub eax, ebx
pop ecx
mov dl, byte [eax + esi]
not dl
mov byte [esi], dl
inc esi
dec ecx
jne 0x51d55a
jmp 0x51d57a
push 0x20
lea eax, [ebp - 0x30]
mov byte [ebx], 0x4d
push eax
inc ebx
push ebx
call fcn.005208a7
add esp, 0xc
add ebx, 0x20
jmp 0x51dcfc
mov dword [ebp + 0x30], 1
mov dword [ebp + 0x20], ecx
cmp dword [ebp + 0x4c], 0
je 0x51de33
mov eax, dword [ebp + 0x20]
test eax, eax
jne 0x51d5a9
mov ecx, dword [ebp + 0x10]
mov dword [ebp + 0x2c], ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp + 0x18], ecx
sub eax, dword [ebp + 0x30]
mov edx, dword [ebp + 0x4c]
mov ecx, dword [ebp + 0x50]
neg eax
sbb eax, eax
and dword [ebp + 0x3c], 0
and dword [ebp + 0x24], 0
and eax, 0x200
mov esi, edx
inc ecx
mov dword [ebp - 0x50], eax
mov dword [ebp + 0x1c], esi
mov al, byte [ecx]
cmp al, 0x2b
jne 0x51d5e0
xor eax, eax
mov dword [ebp + 0x24], 1
mov dword [ebp + 0x50], ecx
jmp 0x51d5ef
cmp al, 0x3f
jne 0x51d5ec
mov eax, dword [ebp - 0x4c]
mov dword [ebp + 0x50], ecx
jmp 0x51d5ef
mov eax, dword [ebp - 0x48]
mov cl, byte [edx]
cmp cl, 0x1b
mov dword [ebp + 0x38], eax
je 0x51da7a
cmp cl, 0x1c
je 0x51da7a
cmp cl, 0x1d
jne 0x51d63f
cmp dword [ebp + 0x24], 0
movzx eax, byte [edx + 1]
mov dword [ebp + 0x3c], 0xd
mov dword [ebp + 0x48], eax
jne 0x51dac6
cmp dword [ebp + 0x30], 0
jge 0x51dac6
push dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
inc eax
push eax
push dword [ebp + 0x48]
push 0x1d
jmp 0x51daad
cmp cl, 0x16
jae 0x51d677
cmp dword [ebp + 0x24], 0
movzx eax, cl
mov dword [ebp + 0x3c], 0x1a
mov dword [ebp + 0x48], eax
jne 0x51dac6
cmp dword [ebp + 0x30], 0
jge 0x51dac6
push dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
inc eax
push eax
push 0
push dword [ebp + 0x48]
jmp 0x51daad
cmp cl, 0x4d
je 0x51da03
cmp cl, 0x4e
je 0x51da03
cmp cl, 0x50
je 0x51da03
cmp cl, 0x5d
je 0x51d6aa
cmp cl, 0x5e
je 0x51d6aa
cmp cl, 0x5c
je 0x51d6aa
cmp cl, 0x5f
jne 0x51de3e
and dword [ebp - 0x10], 0
and dword [ebp + 0x48], 0
mov eax, ebx
sub eax, edx
cmp cl, 0x5f
mov dword [ebp + 0x40], eax
jne 0x51d6c8
cmp byte [edx + 3], 0x65
je 0x51de49
cmp dword [ebp + 0x30], reloc.WINMM.dll_midiStreamOut
jne 0x51d6e6
mov eax, edx
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
add eax, ecx
cmp byte [eax], 0x54
jne 0x51d6d0
mov ecx, ebx
sub ecx, eax
mov dword [ebp - 0x10], ecx
cmp dword [ebp + 0x20], 0
jne 0x51d776
cmp dword [ebp + 0x30], 0
jne 0x51d6fd
mov ebx, edx
jmp 0x51dcef
cmp dword [ebp + 0x30], 1
push dword [ebp]
mov esi, dword [ebp + 0x4c]
mov byte [ebx], 0
push edi
jg 0x51d732
push 1
push esi
call fcn.0051b856
push dword [ebp + 0x40]
inc esi
push dword [ebp + 0x4c]
push esi
call fcn.00521097
mov al, byte [ebp + 0x38]
mov ecx, dword [ebp + 0x4c]
add esp, 0x1c
inc ebx
add al, 0x66
mov byte [ecx], al
jmp 0x51d765
push 4
push esi
call fcn.0051b856
push dword [ebp + 0x40]
lea eax, [esi + 4]
push esi
push eax
call fcn.00521097
mov al, byte [ebp + 0x38]
add al, 0x66
mov byte [esi], al
add esp, 0x1c
add ebx, 4
inc esi
mov byte [esi], 0x5d
inc esi
mov dword [ebp + 0x48], esi
mov byte [esi], 0
mov byte [esi + 1], 0
inc esi
inc esi
dec dword [ebp + 0x30]
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x4c], esi
mov esi, dword [ebp + 0x1c]
jmp 0x51d847
cmp dword [ebp + 0x20], 1
jle 0x51d83a
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x51d7c7
mov eax, dword [ebp + 0x20]
dec eax
mov dword [ebp + 0x3c], eax
imul eax, dword [ebp + 8]
fild dword [ebp + 0x3c]
fimul dword [ebp + 8]
mov dword [ebp + 0x34], eax
fcomp qword [0x45add0]
fnstsw ax
test ah, 0x41
je 0x51de54
mov eax, dword [ecx]
mov edx, 0x7fffffeb
sub edx, eax
cmp edx, dword [ebp + 0x34]
jl 0x51de54
mov edx, dword [ebp + 0x34]
add eax, edx
mov dword [ecx], eax
jmp 0x51d83a
cmp dword [ebp - 0x44], 0
je 0x51d7d9
cmp dword [ebp + 0x18], 0
jge 0x51d7d9
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x18], eax
cmp dword [ebp + 0x20], 1
jle 0x51d83a
mov eax, dword [ebp + 0x20]
mov esi, dword [ebp]
dec eax
mov dword [ebp + 0x34], eax
push dword [ebp + 0x40]
mov eax, dword [edi + 0x20]
push dword [ebp + 0x4c]
mov dword [ebp + 0x3c], eax
push ebx
call fcn.005208a7
add esp, 0xc
jmp 0x51d824
mov ecx, dword [edi + 0x20]
xor eax, eax
mov ah, byte [esi]
mov al, byte [esi + 1]
add eax, dword [ebp + 0x40]
sar eax, 8
mov byte [ecx], al
mov al, byte [esi + 1]
add al, byte [ebp + 0x40]
mov ecx, dword [edi + 0x20]
mov byte [ecx + 1], al
add dword [edi + 0x20], 2
inc esi
inc esi
cmp esi, dword [ebp + 0x3c]
jb 0x51d800
mov esi, dword [ebp + 0x3c]
add ebx, dword [ebp + 0x40]
dec dword [ebp + 0x34]
mov dword [ebp], esi
jne 0x51d7e9
mov esi, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x30]
test ecx, ecx
jle 0x51d849
sub ecx, dword [ebp + 0x20]
mov dword [ebp + 0x30], ecx
test ecx, ecx
jl 0x51d9a1
mov edx, dword [ebp + 0x7c]
test edx, edx
je 0x51d89c
test ecx, ecx
jle 0x51d89c
mov eax, dword [ebp + 8]
add eax, 7
mov dword [ebp + 0x34], eax
imul eax, ecx
fild dword [ebp + 0x34]
fimul dword [ebp + 0x30]
sub eax, 6
mov ecx, eax
fcomp qword [0x45add0]
fnstsw ax
test ah, 0x41
je 0x51de54
mov eax, dword [edx]
mov edi, 0x7fffffeb
sub edi, eax
cmp edi, ecx
jl 0x51de54
add eax, ecx
mov dword [edx], eax
jmp 0x51d959
lea eax, [ecx - 1]
test eax, eax
mov dword [ebp + 0x44], eax
jl 0x51d959
mov al, byte [ebp + 0x38]
add al, 0x66
mov byte [ebp + 7], al
mov esi, dword [edi + 0x20]
mov al, byte [ebp + 7]
mov byte [ebx], al
inc ebx
cmp dword [ebp + 0x44], 0
mov dword [ebp + 0x34], esi
je 0x51d8e4
mov eax, dword [ebp + 0x48]
mov byte [ebx], 0x5d
inc ebx
mov ecx, ebx
sub ecx, eax
neg eax
sbb eax, eax
and eax, ecx
mov ecx, eax
sar ecx, 8
mov dword [ebp + 0x48], ebx
mov byte [ebx], cl
mov byte [ebx + 1], al
inc ebx
inc ebx
push dword [ebp + 0x40]
push dword [ebp + 0x4c]
push ebx
call fcn.005208a7
mov eax, dword [ebp]
add esp, 0xc
cmp eax, esi
jae 0x51d947
mov esi, dword [ebp + 0x44]
neg esi
sbb esi, esi
and esi, 3
inc esi
cmp dword [ebp + 0x44], 0
sete cl
dec cl
and cl, 3
inc cl
mov byte [ebp - 1], cl
mov edx, dword [edi + 0x20]
xor ecx, ecx
mov ch, byte [eax]
mov cl, byte [eax + 1]
add ecx, dword [ebp + 0x40]
add ecx, esi
sar ecx, 8
mov byte [edx], cl
mov cl, byte [ebp - 1]
add cl, byte [ebp + 0x40]
mov edx, dword [edi + 0x20]
add cl, byte [eax + 1]
mov byte [edx + 1], cl
add dword [edi + 0x20], 2
inc eax
inc eax
cmp eax, dword [ebp + 0x34]
jb 0x51d916
mov esi, dword [ebp + 0x34]
add ebx, dword [ebp + 0x40]
dec dword [ebp + 0x44]
mov dword [ebp], esi
jns 0x51d8b2
mov esi, dword [ebp + 0x1c]
cmp dword [ebp + 0x48], 0
je 0x51dbff
mov esi, dword [ebp + 0x48]
xor edx, edx
mov ecx, ebx
sub ecx, esi
inc ecx
mov eax, ebx
sub eax, ecx
mov dh, byte [eax + 1]
mov dl, byte [eax + 2]
mov byte [ebx], 0x54
mov byte [ebx + 2], cl
sub esi, edx
mov dword [ebp + 0x34], edx
neg edx
sbb edx, edx
and esi, edx
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
inc ebx
inc ebx
test esi, esi
mov byte [eax + 1], dl
mov byte [eax + 2], cl
jne 0x51d966
jmp 0x51dbfc
xor eax, eax
mov esi, ebx
sub esi, dword [ebp - 0x10]
mov ah, byte [esi + 1]
mov edi, esi
mov al, byte [esi + 2]
sub edi, eax
mov al, byte [ebp + 0x38]
add al, 0x55
cmp dword [ebp + 0x7c], 0
mov byte [esi], al
jne 0x51dbfc
cmp byte [edi], 0x5c
je 0x51dbfc
mov dword [ebp + 0x3c], edi
push 0
push esi
push dword [ebp + 0x3c]
call fcn.0051b643
add esp, 0xc
test eax, eax
jne 0x51d9fb
mov eax, dword [ebp + 0x3c]
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
add eax, ecx
cmp byte [eax], 0x53
mov dword [ebp + 0x3c], eax
je 0x51d9cf
jmp 0x51dbfc
add byte [edi], 3
jmp 0x51dbfc
cmp dword [ebp + 0x30], 0
je 0x51d6f6
mov ecx, dword [ebp + 0x30]
cmp ecx, 1
je 0x51da19
or dword [edi + 0x40], 1
cmp dword [ebp + 0x20], 0
jne 0x51da2b
cmp ecx, reloc.WINMM.dll_midiStreamOut
jne 0x51da3d
add al, 0x45
jmp 0x51dbf9
cmp dword [ebp + 0x20], 1
jne 0x51da49
cmp ecx, reloc.WINMM.dll_midiStreamOut
jne 0x51da49
add al, 0x47
jmp 0x51dbf9
cmp ecx, 1
jne 0x51da49
add al, 0x49
jmp 0x51dbf9
add al, 0x4b
mov byte [ebx], al
mov eax, dword [ebp + 0x20]
inc ebx
mov edx, eax
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], al
inc ebx
inc ebx
cmp ecx, reloc.WINMM.dll_midiStreamOut
jne 0x51da69
and dword [ebp + 0x30], 0
mov ecx, dword [ebp + 0x30]
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
inc ebx
inc ebx
jmp 0x51dbfc
cmp dword [ebp + 0x20], 1
movzx esi, byte [ebx - 1]
mov dword [ebp + 0x48], esi
jle 0x51da92
mov eax, dword [edi + 0x44]
or eax, esi
or eax, dword [ebp - 0x38]
mov dword [ebp + 0x18], eax
cmp dword [ebp + 0x24], 0
jne 0x51dac6
cmp dword [ebp + 0x30], 0
jge 0x51dac6
push dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
inc eax
push eax
push dword [ebp + 0x48]
movzx eax, cl
push eax
mov esi, edi
call fcn.0051b928
add esp, 0x10
test eax, eax
je 0x51dac6
and dword [ebp + 0x38], 0
mov dword [ebp + 0x24], 1
mov eax, dword [ebp + 0x4c]
mov cl, byte [eax]
cmp cl, 0xf
je 0x51dadf
cmp cl, 0xe
je 0x51dadf
or dword [ebp + 0x40], reloc.WINMM.dll_midiStreamOut
or dword [ebp + 0x44], 0xffffffff
jmp 0x51daed
movzx ecx, byte [eax + 1]
mov dword [ebp + 0x44], ecx
movzx ecx, byte [eax + 2]
mov dword [ebp + 0x40], ecx
cmp dword [ebp + 0x30], 0
mov esi, ebx
mov ebx, eax
je 0x51dcef
mov edx, dword [ebp + 0x30]
cmp edx, 1
je 0x51db07
or dword [edi + 0x40], 1
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x3c]
add eax, ecx
cmp dword [ebp + 0x20], 0
mov dword [ebp + 0x38], eax
jne 0x51db3c
cmp edx, reloc.WINMM.dll_midiStreamOut
jne 0x51db21
add al, 0x1e
jmp 0x51db49
cmp edx, 1
mov ebx, dword [ebp + 0x4c]
je 0x51dbde
add al, 0x24
mov byte [ebx], al
inc ebx
mov eax, edx
mov byte [ebx + 1], dl
jmp 0x51dbef
cmp dword [ebp + 0x20], 1
jne 0x51db7b
cmp edx, reloc.WINMM.dll_midiStreamOut
jne 0x51db54
add al, 0x20
mov ebx, dword [ebp + 0x4c]
mov byte [ebx], al
inc ebx
jmp 0x51dbf6
cmp edx, 1
mov ebx, esi
je 0x51dcef
mov al, byte [ebp + 0x38]
add al, 0x24
mov byte [esi], al
mov eax, dword [ebp + 0x30]
lea ecx, [eax - 1]
sar ecx, 8
lea ebx, [esi + 1]
dec al
mov byte [ebx], cl
mov byte [ebx + 1], al
jmp 0x51dbf4
mov ebx, dword [ebp + 0x4c]
add cl, 0x26
mov byte [ebx], cl
mov ecx, dword [ebp + 0x20]
inc ebx
sar ecx, 8
mov byte [ebx], cl
mov cl, byte [ebp + 0x20]
mov byte [ebx + 1], cl
inc ebx
inc ebx
test edx, edx
jge 0x51dbb2
mov cl, byte [ebp + 0x48]
mov byte [ebx], cl
mov ecx, dword [ebp + 0x44]
inc ebx
test ecx, ecx
jl 0x51dbae
mov byte [ebx], cl
mov cl, byte [ebp + 0x40]
inc ebx
mov byte [ebx], cl
inc ebx
add al, 0x1e
jmp 0x51db4c
mov ecx, dword [ebp + 0x20]
cmp dword [ebp + 0x30], ecx
je 0x51dbf6
mov cl, byte [ebp + 0x48]
mov byte [ebx], cl
mov ecx, dword [ebp + 0x44]
inc ebx
test ecx, ecx
jl 0x51dbd0
mov byte [ebx], cl
mov cl, byte [ebp + 0x40]
inc ebx
mov byte [ebx], cl
inc ebx
mov ecx, dword [ebp + 0x30]
sub ecx, dword [ebp + 0x20]
cmp ecx, 1
mov dword [ebp + 0x30], ecx
jne 0x51dbe5
add al, 0x22
jmp 0x51db4c
add al, 0x24
mov byte [ebx], al
inc ebx
mov eax, ecx
mov byte [ebx + 1], cl
sar eax, 8
mov byte [ebx], al
inc ebx
inc ebx
mov al, byte [ebp + 0x48]
mov byte [ebx], al
inc ebx
mov esi, dword [ebp + 0x1c]
cmp dword [ebp + 0x24], 0
je 0x51dcef
mov al, byte [esi]
cmp al, 0x26
je 0x51dc17
cmp al, 0x40
je 0x51dc17
cmp al, 0x33
jne 0x51dc26
movzx eax, al
movzx eax, byte [eax + 0x45f4e0]
add esi, eax
mov dword [ebp + 0x1c], esi
mov eax, ebx
sub eax, esi
test eax, eax
mov dword [ebp + 0x34], eax
jle 0x51dcef
movzx eax, byte [esi]
cmp eax, 0x2f
jg 0x51dc85
je 0x51dc80
sub eax, 0x1e
je 0x51dc7b
push 2
pop ecx
sub eax, ecx
je 0x51dc76
sub eax, ecx
je 0x51dc71
sub eax, ecx
je 0x51dc6c
sub eax, 7
je 0x51dc64
sub eax, ecx
jne 0x51dc9b
mov byte [esi], 0x35
jmp 0x51dcef
mov byte [esi], 0x34
jmp 0x51dcef
mov byte [esi], 0x2a
jmp 0x51dcef
mov byte [esi], 0x29
jmp 0x51dcef
mov byte [esi], 0x28
jmp 0x51dcef
mov byte [esi], 0x27
jmp 0x51dcef
mov byte [esi], 0x36
jmp 0x51dcef
sub eax, 0x31
je 0x51dcec
sub eax, 7
je 0x51dce7
dec eax
dec eax
je 0x51dce2
dec eax
dec eax
je 0x51dcdd
dec eax
dec eax
je 0x51dcd8
push dword [ebp + 0x34]
push esi
add esi, 3
push esi
call fcn.00521097
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x34]
mov byte [eax], 0x5c
add ecx, 3
add ebx, 3
mov byte [ebx], 0x54
add esp, 0xc
inc ebx
mov byte [ebx + 1], cl
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov edx, dword [ebp + 0x1c]
mov byte [edx + 1], al
mov eax, dword [ebp + 0x1c]
inc ebx
inc ebx
mov byte [eax + 2], cl
jmp 0x51dcef
mov byte [esi], 0x44
jmp 0x51dcef
mov byte [esi], 0x43
jmp 0x51dcef
mov byte [esi], 0x42
jmp 0x51dcef
mov byte [esi], 0x41
jmp 0x51dcef
mov byte [esi], 0x37
mov eax, dword [ebp - 0x50]
mov edi, dword [ebp + 0x78]
and dword [ebp + 0x4c], 0
or dword [edi + 0x44], eax
inc dword [ebp + 0x50]
xor esi, esi
jmp 0x51bf30
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x34
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x3b
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
inc dword [ebp + 0x50]
mov dword [eax], 0x1c
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
dec esi
mov dword [ebp + 0x50], esi
mov dword [eax], 0x1a
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
dec esi
mov dword [eax], 0xc
mov dword [ebp + 0x50], esi
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1d
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x3a
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x31
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
inc esi
mov dword [ebp + 0x50], esi
mov dword [eax], 0x18
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x36
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1b
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xe
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2a
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x28
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2d
jmp 0x51de5d
mov ecx, dword [ebp + 0x50]
xor eax, eax
cmp byte [ecx + 1], 0x3a
setne al
dec eax
and eax, 0xffffffee
add eax, 0x1f
jmp 0x51c494
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1f
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1e
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 7
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 8
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 6
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 9
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xb
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x37
jmp 0x51de5d
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x14
mov eax, dword [ebp + 0x50]
mov ecx, dword [ebp + 0x64]
mov dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
add ebp, 0x54
leave
ret