Function at 0x10004cd0
Capabilities:
Contain obfuscated stackstrings
Read file on windows
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x1000a298
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1a4
push ebx
push ebp
mov ebp, ecx
push esi
push edi
mov dword [esp + 0x60], ebp
mov dword [esp + 0x1bc], 0
call fcn.10003880
mov eax, dword [esp + 0x1c8]
mov byte [esp + 0x1bc], 1
test eax, eax
mov dword [ebp], 0x1000b298
jne 0x10004d24
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push 0x1000e754
push eax
call dword [sym.imp.MSVCRT.dll_fopen]
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x10005d39
mov dword [esp + 0x98], ebx
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 2
mov byte [ebp + 0x14], 1
mov byte [esp + 0x18], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, str.type
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.type
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c0], 3
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [esp + 0x24]
lea eax, [esp + 0x14]
push edx
push eax
lea ecx, [esp + 0x70]
mov byte [esp + 0x1c4], 4
call fcn.10005f00
lea ecx, [esp + 0x3c]
add ebp, 0x18
push eax
push ecx
mov ecx, ebp
mov byte [esp + 0x1c4], 5
call fcn.10005e00
mov edi, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 4
call fcn.10004c10
push 1
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c0], 3
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [edi + 0x1c]
mov edi, str.audio
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.audio
mov ecx, edx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov dl, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], dl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, str.subtype
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.subtype
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c0], 6
mov byte [esp + 0x28], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea ecx, [esp + 0x24]
lea edx, [esp + 0x14]
push ecx
push edx
lea ecx, [esp + 0x70]
mov byte [esp + 0x1c4], 7
call fcn.10005f00
push eax
lea eax, [esp + 0x40]
push eax
mov ecx, ebp
mov byte [esp + 0x1c4], 8
call fcn.10005e00
mov edi, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 7
call fcn.10004c10
push 1
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c0], 6
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [edi + 0x1c]
mov edi, 0x1000e738
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x1000e738
mov ecx, edx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 2
push 0xffffffffffffff80
push ebx
call dword [sym.imp.MSVCRT.dll_fseek]
push ebx
push 1
lea ecx, [esp + 0x148]
push 0x80
push ecx
call dword [sym.imp.MSVCRT.dll_fread]
push 3
lea edx, [esp + 0x154]
push 0x1000e734
push edx
call dword [sym.imp.MSVCRT.dll_strncmp]
add esp, 0x28
test eax, eax
jne case.default.0x10005783
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, str.title
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.title
lea ecx, [esp + 0x2c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 9
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [esp + 0x137]
push 0x1e
push edx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0xa
mov byte [esp + 0x48], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea ecx, [esp + 0x44]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x70]
mov byte [esp + 0x1c4], 0xb
call fcn.10005f00
push eax
lea eax, [esp + 0x40]
push eax
mov ecx, ebp
mov byte [esp + 0x1c4], 0xc
call fcn.10005e00
mov edi, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 0xb
call fcn.10004c10
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0xa
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [edi + 0x1c]
mov eax, dword [edx]
lea edx, [esp + 0x14]
push eax
push 0
push edx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 9
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
or ecx, 0xffffffff
mov edi, str.artist
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.artist
lea ecx, [esp + 0x2c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 0xd
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [esp + 0x155]
push 0x1e
push edx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0xe
mov byte [esp + 0x48], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea ecx, [esp + 0x44]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x70]
mov byte [esp + 0x1c4], 0xf
call fcn.10005f00
push eax
lea eax, [esp + 0x40]
push eax
mov ecx, ebp
mov byte [esp + 0x1c4], 0x10
call fcn.10005e00
mov edi, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 0xf
call fcn.10004c10
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0xe
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [edi + 0x1c]
mov eax, dword [edx]
lea edx, [esp + 0x14]
push eax
push 0
push edx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 0xd
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, str.album
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.album
lea ecx, [esp + 0x2c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 0x11
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [esp + 0x173]
push 0x1e
push edx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x12
mov byte [esp + 0x48], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea ecx, [esp + 0x44]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x70]
mov byte [esp + 0x1c4], 0x13
call fcn.10005f00
push eax
lea eax, [esp + 0x40]
push eax
mov ecx, ebp
mov byte [esp + 0x1c4], 0x14
call fcn.10005e00
mov edi, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 0x13
call fcn.10004c10
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x12
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [edi + 0x1c]
mov eax, dword [edx]
lea edx, [esp + 0x14]
push eax
push 0
push edx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 0x11
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, str.year
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.year
lea ecx, [esp + 0x2c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 0x15
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 4
lea edx, [esp + 0x195]
push edx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x16
mov byte [esp + 0x48], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea ecx, [esp + 0x44]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x70]
mov byte [esp + 0x1c4], 0x17
call fcn.10005f00
push eax
lea eax, [esp + 0x40]
push eax
mov ecx, ebp
mov byte [esp + 0x1c4], 0x18
call fcn.10005e00
mov edi, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 0x17
call fcn.10004c10
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x16
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [edi + 0x1c]
mov eax, dword [edx]
lea edx, [esp + 0x14]
push eax
push 0
push edx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 0x15
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, str.time
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x38], ecx
push ecx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x10005404
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x18]
mov ecx, eax
mov esi, str.time
mov edx, ecx
push eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x19
mov byte [esp + 0x48], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea ecx, [esp + 0x44]
lea edx, [esp + 0x14]
push ecx
push edx
lea ecx, [esp + 0x70]
mov byte [esp + 0x1c4], 0x1a
call fcn.10005f00
push eax
lea eax, [esp + 0x40]
push eax
mov ecx, ebp
mov byte [esp + 0x1c4], 0x1b
call fcn.10005e00
mov edi, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 0x1a
call fcn.10004c10
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x19
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [edi + 0x1c]
mov edi, 0x1000e124
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov dword [esp + 0x60], ecx
push ecx
mov ecx, edx
mov dword [esp + 0x3c], edx
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x100054c9
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x34]
mov edx, ecx
mov esi, 0x1000e124
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, edx
push ecx
mov ecx, eax
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov dl, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], dl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, str.bitrate
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x38], ecx
push ecx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x1000553d
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x18]
mov ecx, eax
mov esi, str.bitrate
mov edx, ecx
push eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x1c
mov byte [esp + 0x48], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea ecx, [esp + 0x44]
lea edx, [esp + 0x14]
push ecx
push edx
lea ecx, [esp + 0x70]
mov byte [esp + 0x1c4], 0x1d
call fcn.10005f00
push eax
lea eax, [esp + 0x40]
push eax
mov ecx, ebp
mov byte [esp + 0x1c4], 0x1e
call fcn.10005e00
mov edi, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 0x1d
call fcn.10004c10
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x1c
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [edi + 0x1c]
mov edi, 0x1000e124
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x1000e124
mov ecx, edx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
xor esi, esi
push esi
push esi
push ebx
call dword [sym.imp.MSVCRT.dll_fseek]
push ebx
push 1
lea ecx, [esp + 0xa0]
push 0xa
push ecx
call dword [sym.imp.MSVCRT.dll_fread]
push 3
lea edx, [esp + 0xac]
push 0x1000e700
push edx
call dword [sym.imp.MSVCRT.dll_strncmp]
add esp, 0x28
test eax, eax
jne 0x10005639
xor eax, eax
xor ecx, ecx
mov cl, byte [esp + eax + 0x92]
mov edx, ecx
shl esi, 7
add esi, edx
inc eax
cmp eax, 3
jle 0x10005620
add esi, 0xa
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x58], esi
push eax
call dword [sym.imp.MSVCRT.dll__filelength]
mov ecx, 0xffffff80
add esp, 4
sub ecx, esi
add eax, ecx
xor edi, edi
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], edi
lea edx, [edi + esi]
push 0
push edx
push ebx
call dword [sym.imp.MSVCRT.dll_fseek]
push ebx
push 1
lea eax, [esp + 0x38]
push 4
push eax
call dword [sym.imp.MSVCRT.dll_fread]
add esp, 0x1c
cmp eax, 1
jne 0x100056f0
mov al, byte [esp + 0x24]
cmp al, 0xff
mov eax, dword [esp + 0x25]
jne 0x100056ae
mov cl, al
and cl, 0xe0
cmp cl, 0xe0
jne 0x100056ae
mov cl, ah
and cl, 0xf0
je 0x100056ae
cmp cl, 0xf0
je 0x100056ae
mov dl, ah
and dl, 0xc
cmp dl, 0xc
jne 0x100056b7
inc edi
cmp edi, 0x400
jl 0x1000565d
cmp edi, 0x400
mov dword [esp + 0x54], edi
je case.default.0x10005783
and eax, 0xff
mov edx, eax
shr edx, 3
and edx, 3
cmp edx, 3
ja case.default.0x10005783
jmp dword [edx*4 + 0x10005d80]
mov dword [esp + 0x38], 3
xor ecx, ecx
jmp 0x10005710
mov dword [esp + 0x54], edi
jmp case.default.0x10005783
mov dword [esp + 0x38], 2
jmp 0x1000570b
mov dword [esp + 0x38], 0
mov ecx, 1
shr eax, 1
mov esi, eax
and esi, 3
mov eax, esi
dec eax
je 0x10005726
dec eax
je 0x10005726
dec eax
jne case.default.0x10005783
mov eax, dword [esp + 0x26]
lea ecx, [ecx + ecx*2]
and eax, 0xff
sub ecx, esi
mov esi, eax
shl ecx, 4
shr esi, 4
add ecx, esi
mov ecx, dword [ecx*4 + 0x1000e5f8]
cmp ecx, 0xffffffff
mov dword [esp + 0x5c], ecx
je case.default.0x10005783
shr eax, 2
and eax, 3
lea edx, [eax + edx*4]
mov eax, dword [edx*4 + 0x1000e6b8]
test eax, eax
mov dword [esp + 0x3c], eax
je case.default.0x10005783
mov eax, dword [esp + 0x27]
and eax, 0xff
shr eax, 6
cmp eax, 3
ja case.default.0x10005783
jmp dword [eax*4 + 0x10005d90]
mov eax, 3
jmp 0x100057a1
mov eax, 2
jmp 0x100057a1
mov eax, 1
jmp 0x100057a1
xor eax, eax
cmp dword [esp + 0x38], 3
jne 0x100057b7
sub eax, 3
neg eax
sbb eax, eax
and eax, 0xf
add eax, 0x11
jmp 0x100057c4
sub eax, 3
neg eax
sbb eax, eax
and eax, 8
add eax, 9
mov esi, dword [sym.imp.MSVCRT.dll_fseek]
push 1
push eax
push ebx
mov dword [esp + 0x44], eax
call esi
add esp, 0xc
test edi, edi
je 0x10005908
mov ecx, dword [esp + 0x58]
push 0
push ecx
push ebx
call esi
mov dl, byte [esp + 0x1f]
xor eax, eax
add esp, 0xc
mov byte [esp + 0x24], dl
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
cmp edi, eax
mov byte [esp + 0x1bc], 0x1f
mov byte [esp + 0x13], al
jbe 0x10005823
lea eax, [esp + 0x13]
lea ecx, [esp + 0x24]
push eax
push edi
push 0
call fcn.10006030
mov ecx, dword [esp + 0x28]
push ebx
push 1
push edi
push ecx
call dword [sym.imp.MSVCRT.dll_fread]
mov edx, dword [esp + 0x38]
mov al, byte [esp + 0x23]
add esp, 0x10
lea ecx, [esp + 0x14]
mov dword [esp + 0x64], edx
mov byte [esp + 0x14], al
push 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
push edi
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x1000588f
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x18]
mov ecx, eax
mov edx, ecx
push eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov esi, dword [sym.imp.MSVCRT.dll_fseek]
mov edi, str.Xing
or ecx, 0xffffffff
xor eax, eax
mov byte [esp + 0x1bc], 0x20
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str.Xing
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_char_const___unsigned_int__unsigned_int_const]
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
push 0
cmp eax, dword [ecx]
je 0x100058cc
mov edx, dword [esp + 0x5c]
add eax, edx
push eax
jmp 0x100058d9
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x5c]
lea edx, [eax + ecx + 4]
push edx
push ebx
call esi
add esp, 0xc
lea ecx, [esp + 0x14]
mov byte [esp + 0x1bc], 0x1f
push 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [esp + 0x28]
mov byte [esp + 0x1bc], 2
push eax
call fcn.100098f0
add esp, 4
push ebx
push 1
lea ecx, [esp + 0xa4]
push 8
push ecx
mov dword [esp + 0x64], 0
call dword [sym.imp.MSVCRT.dll_fread]
mov al, byte [esp + 0xac]
add esp, 0x10
cmp al, 0x58
mov byte [esp + 0xa4], 0
jne 0x10005a6c
cmp byte [esp + 0x9d], 0x69
jne 0x10005a6c
cmp byte [esp + 0x9e], 0x6e
jne 0x10005a6c
cmp byte [esp + 0x9f], 0x67
jne 0x10005a6c
lea edx, [esp + 0xa0]
push edx
call fcn.10005db0
lea ecx, [esp + 0xa8]
mov edx, eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x28], eax
mov esi, eax
mov ecx, eax
and edx, 4
and esi, 1
shr eax, 1
and ecx, 2
mov dword [esp + 0x8c], edx
and eax, 4
mov dword [esp + 0x5c], ecx
neg edx
lea ecx, [ecx + esi*2 + 4]
push ebx
sbb edx, edx
push 1
lea edi, [eax + ecx*2]
and edx, 0x64
add edi, edx
lea eax, [esp + 0xb0]
lea edx, [edi - 8]
push edx
push eax
call dword [sym.imp.MSVCRT.dll_fread]
add esp, 0x14
mov byte [esp + edi + 0x9c], 0
test esi, esi
je 0x100059f3
lea ecx, [esp + 0xa4]
push ecx
call fcn.10005db0
add esp, 4
mov dword [esp + 0x38], eax
lea esi, [esp + 0xa8]
jmp 0x100059ff
mov esi, dword [esp + 0x64]
mov dword [esp + 0x38], 0
mov eax, dword [esp + 0x58]
test eax, eax
je 0x10005a17
push esi
call fcn.10005db0
add esp, 4
mov edi, eax
add esi, 4
jmp 0x10005a1b
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x88]
test eax, eax
je 0x10005a29
add esi, 0x64
test byte [esp + 0x24], 8
je 0x10005a39
push esi
call fcn.10005db0
add esp, 4
mov ecx, dword [esp + 0x38]
test ecx, ecx
jle 0x10005a6c
test edi, edi
mov eax, edi
jne 0x10005a4b
mov eax, dword [esp + 0x34]
cdq
idiv ecx
mov ecx, eax
mov eax, 0x38e38e39
imul ecx, dword [esp + 0x3c]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
je 0x10005a6c
mov dword [esp + 0x5c], edx
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x10005a9b
fild dword [esp + 0x34]
cdq
and edx, 7
push ecx
add eax, edx
sar eax, 3
mov dword [esp + 0x40], eax
fidiv dword [esp + 0x40]
fstp dword [esp]
call fcn.10004c80
add esp, 4
mov dword [esp + 0x34], eax
jmp 0x10005aa3
mov dword [esp + 0x34], 0
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, str.time
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x40], ecx
push ecx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x10005b04
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x18]
mov ecx, eax
mov esi, str.time
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
mov byte [ecx + eax], 0
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x68]
push edx
push eax
mov byte [esp + 0x1c4], 0x21
call fcn.100091f0
add esp, 8
mov edi, eax
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x48], cl
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x22
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [esp + 0x44]
lea eax, [esp + 0x14]
push edx
push eax
lea ecx, [esp + 0x11c]
mov byte [esp + 0x1c4], 0x23
call fcn.10005f00
lea ecx, [esp + 0x3c]
push eax
push ecx
mov ecx, ebp
mov byte [esp + 0x1c4], 0x24
call fcn.10006200
lea edx, [esp + 0x40]
lea eax, [esp + 0x3c]
push edx
push eax
lea ecx, [esp + 0x2c]
call fcn.10006450
mov esi, dword [esp + 0x24]
lea ecx, [esp + 0x114]
mov byte [esp + 0x1bc], 0x23
call fcn.10004c10
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x22
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [esi + 0x1c]
xor esi, esi
mov eax, dword [edx]
push eax
push esi
push edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [esp + 0x6c]
mov byte [esp + 0x1c0], 0x21
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov cl, byte [esp + 0x13]
mov edi, str.bitrate
mov byte [esp + 0x14], cl
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x18], esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x1c], esi
push ecx
push str.bitrate
lea ecx, [esp + 0x1c]
mov dword [esp + 0x28], esi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov edx, dword [esp + 0x5c]
mov byte [esp + 0x1bc], 0x25
push edx
lea eax, [esp + 0x28]
push eax
call fcn.100091f0
add esp, 8
mov edi, eax
mov cl, byte [esp + 0x13]
push esi
mov byte [esp + 0x48], cl
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x26
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [esp + 0x14]
lea ecx, [esp + 0x68]
push edx
mov byte [esp + 0x1c0], 0x27
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea eax, [esp + 0x44]
lea ecx, [esp + 0x78]
push eax
mov byte [esp + 0x1c0], 0x28
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea ecx, [esp + 0x68]
lea edx, [esp + 0x3c]
push ecx
push edx
mov ecx, ebp
mov byte [esp + 0x1c4], 0x29
call fcn.10005e00
mov ebp, dword [eax]
lea ecx, [esp + 0x68]
mov byte [esp + 0x1bc], 0x27
call fcn.10004c10
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0x26
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, dword [eax]
push ecx
push esi
push edi
lea ecx, [ebp + 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [esp + 0x28]
cmp eax, esi
je 0x10005cfc
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10005cf3
cmp al, 0xff
je 0x10005cf3
dec al
mov byte [ecx], al
jmp 0x10005cfc
push ecx
call fcn.100098f0
add esp, 4
mov eax, dword [esp + 0x18]
xor ecx, ecx
cmp eax, ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], ecx
je case.default.0x10005783
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10005d26
cmp al, 0xff
je 0x10005d26
dec al
mov byte [ecx], al
jmp case.default.0x10005783
push ecx
call fcn.100098f0
add esp, 4
push ebx
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
mov ecx, dword [esp + 0x1c8]
pop edi
pop esi
pop ebp
test ecx, ecx
pop ebx
je 0x10005d64
mov al, byte [ecx - 1]
test al, al
je 0x10005d5a
cmp al, 0xff
je 0x10005d5a
dec al
mov byte [ecx - 1], al
jmp 0x10005d64
dec ecx
push ecx
call fcn.100098f0
add esp, 4
mov ecx, dword [esp + 0x1a4]
mov eax, dword [esp + 0x50]
mov dword fs:[0], ecx
add esp, 0x1b0
ret 0x10