Function at 0x46c540
Capabilities:
Read file on windows

Disassembly:
mov eax, 0x4bbc
call fcn.0047e4b0
push ebx
push ebp
mov ebp, dword [esp + 0x4bcc]
xor ebx, ebx
push esi
push edi
cmp byte [ebp], 0
jne 0x46c573
mov eax, dword [esp + 0x4bd0]
pop edi
pop esi
pop ebp
mov byte [eax], bl
mov eax, ebx
pop ebx
add esp, 0x4bbc
ret
push ebp
call fcn.00472340
add esp, 4
cmp eax, 1
je 0x46c5bf
push 0xc4
call fcn.0046b4e0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ebx
mov edx, ecx
mov esi, edi
mov edi, dword [esp + 0x4bd0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4bbc
ret
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0xfc
jbe 0x46c611
push 0xba
call fcn.0046b4e0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x4bd0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4bbc
ret
mov ecx, 0x7d0
xor eax, eax
lea edi, [esp + 0x2c88]
push ebx
rep stosd dword es:[edi], eax
push 0x80
push 3
stosw word es:[edi], ax
push ebx
mov ecx, 0x9c4
xor eax, eax
lea edi, [esp + 0x588]
push ebx
push 0x80000000
rep stosd dword es:[edi], eax
push ebp
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x46c68d
push 0xc4
call fcn.0046b4e0
mov edi, eax
or ecx, esi
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ebx
mov edx, ecx
mov esi, edi
mov edi, dword [esp + 0x4bd0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4bbc
ret
lea eax, [esp + 0x30]
push ebx
push eax
lea ecx, [esp + 0x2c90]
push 0x1f40
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x46d42c
cmp dword [esp + 0x30], 0x1f40
je 0x46d42c
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x3c]
lea edx, [esp + 0x2c88]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x140]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x244]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x244]
mov dword [esp + 0x10], edx
lea ecx, [esp + 0x140]
push eax
lea edx, [esp + 0x40]
push ecx
lea eax, [esp + 0x18]
push edx
push eax
mov byte [esp + 0x588], 0
mov dword [esp + 0x34], ebx
mov dword [esp + 0x28], ebx
call fcn.0046c2c0
add esp, 0x10
test eax, eax
jne 0x46d433
mov al, byte [esp + 0x3c]
test al, al
je 0x46d433
mov esi, str.FILE
lea eax, [esp + 0x3c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46c76b
test cl, cl
je 0x46c767
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46c76b
add eax, 2
add esi, 2
test cl, cl
jne 0x46c747
xor eax, eax
jmp 0x46c770
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x46c7ea
mov esi, str.BINARY
lea eax, [esp + 0x244]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46c7a4
test cl, cl
je 0x46c7a0
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46c7a4
add eax, 2
add esi, 2
test cl, cl
jne 0x46c780
xor eax, eax
jmp 0x46c7a9
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x46c842
mov esi, str.AUDIO
lea eax, [esp + 0x244]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46c7e1
test cl, cl
je 0x46c7dd
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46c7e1
add eax, 2
add esi, 2
test cl, cl
jne 0x46c7bd
xor eax, eax
jmp 0x46c7e6
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x46c842
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x3c]
lea edx, [esp + 0x3c]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x140]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x244]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x244]
lea ecx, [esp + 0x140]
push eax
push ecx
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0046c2c0
add esp, 0x10
test eax, eax
je 0x46c732
jmp 0x46d433
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x44c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x5c
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x450]
push ecx
call fcn.0047e930
mov byte [eax + 1], 0
lea edi, [esp + 0x148]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x454]
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x40]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x458]
push 0x930
push ecx
call fcn.00472610
mov ebx, eax
mov eax, dword [esp + 0x4c]
cdq
mov ecx, 0x930
add esp, 0x14
idiv ecx
mov dword [esp + 0x2c], ebx
test edx, edx
jne 0x46d433
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x3c]
lea edx, [esp + 0x244]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x140]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x244]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x140]
push edx
lea ecx, [esp + 0x40]
push eax
lea edx, [esp + 0x18]
push ecx
push edx
call fcn.0046c2c0
add esp, 0x10
test eax, eax
jne 0x46d433
mov ebp, dword [sym.imp.USER32.dll_wsprintfA]
mov al, byte [esp + 0x3c]
test al, al
je 0x46d2f8
mov esi, str.TRACK
lea eax, [esp + 0x3c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46c974
test cl, cl
je 0x46c970
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46c974
add eax, 2
add esi, 2
test cl, cl
jne 0x46c950
xor eax, eax
jmp 0x46c979
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x46d2a0
lea eax, [esp + 0x34]
lea ecx, [esp + 0x140]
push eax
push 0x49f190
push ecx
call fcn.0047e1c0
add esp, 0xc
cmp eax, 1
jne 0x46d433
mov esi, str.AUDIO
lea eax, [esp + 0x244]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46c9d4
test cl, cl
je 0x46c9d0
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46c9d4
add eax, 2
add esi, 2
test cl, cl
jne 0x46c9b0
xor eax, eax
jmp 0x46c9d9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x46cb67
or ecx, 0xffffffff
lea edi, [esp + 0x140]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x578]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, 0x4ae358
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x44c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae358
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae354
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, 0x4ae358
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.2352
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae358
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, 1
jmp 0x46ce32
mov esi, str.MODE1_2352
lea eax, [esp + 0x244]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46cb97
test cl, cl
je 0x46cb93
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46cb97
add eax, 2
add esi, 2
test cl, cl
jne 0x46cb73
xor eax, eax
jmp 0x46cb9c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x46cc75
or ecx, 0xffffffff
lea edi, [esp + 0x140]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x578]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, 0x4ae358
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x44c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae358
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae344
jmp 0x46cd7e
mov esi, str.MODE2_2352
lea eax, [esp + 0x244]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46cca5
test cl, cl
je 0x46cca1
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46cca5
add eax, 2
add esi, 2
test cl, cl
jne 0x46cc81
xor eax, eax
jmp 0x46ccaa
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x46d433
or ecx, 0xffffffff
lea edi, [esp + 0x140]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x578]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, 0x4ae358
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x44c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae358
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae334
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, 0x4ae358
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.2352
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae358
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor esi, esi
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x3c]
lea edx, [esp + 0x3c]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x140]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x244]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x244]
lea ecx, [esp + 0x140]
push eax
push ecx
lea eax, [esp + 0x18]
push edx
push eax
mov dword [esp + 0x38], esi
call fcn.0046c2c0
add esp, 0x10
test eax, eax
jne 0x46d433
mov al, byte [esp + 0x3c]
test al, al
je 0x46d433
test esi, esi
je 0x46d040
mov esi, str.PREGAP
lea eax, [esp + 0x3c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46ceca
test cl, cl
je 0x46cec6
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46ceca
add eax, 2
add esi, 2
test cl, cl
jne 0x46cea6
xor eax, eax
jmp 0x46cecf
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x46cff8
lea eax, [esp + 0x14]
lea ecx, [esp + 0x20]
push eax
lea edx, [esp + 0x20]
push ecx
push edx
lea eax, [esp + 0x14c]
push str._d:_d:_d
push eax
call fcn.0047e1c0
add esp, 0x14
cmp eax, 3
jne 0x46d433
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
lea eax, [eax + eax*2]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x14]
lea eax, [eax + eax*2]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*4]
add eax, edx
push eax
lea eax, [esp + 0x34c]
push 0x49f190
push eax
call ebp
or ecx, 0xffffffff
lea edi, [esp + 0x354]
xor eax, eax
lea edx, [esp + 0x584]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x584]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae358
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x48]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x41
lea edi, [esp + 0x48]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x14c]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x250]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x250]
lea ecx, [esp + 0x14c]
push eax
push ecx
lea eax, [esp + 0x24]
push edx
push eax
call fcn.0046c2c0
add esp, 0x1c
test eax, eax
jne 0x46d433
mov al, byte [esp + 0x3c]
test al, al
je 0x46d433
jmp 0x46d0da
mov esi, str.INDEX
lea eax, [esp + 0x3c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46d025
test cl, cl
je 0x46d021
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46d025
add eax, 2
add esi, 2
test cl, cl
jne 0x46d001
xor eax, eax
jmp 0x46d02a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x46d433
lea edx, [esp + 0x578]
mov edi, 0x49f1ac
jmp 0x46d086
mov esi, str.INDEX
lea eax, [esp + 0x3c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x46d06d
test cl, cl
je 0x46d069
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x46d06d
add eax, 2
add esi, 2
test cl, cl
jne 0x46d049
xor eax, eax
jmp 0x46d072
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x46d433
lea edx, [esp + 0x578]
mov edi, 0x49f1a8
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae358
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x20]
push eax
lea edx, [esp + 0x20]
push ecx
push edx
lea eax, [esp + 0x250]
push str._d:_d:_d
push eax
call fcn.0047e1c0
add esp, 0x14
cmp eax, 3
jne 0x46d433
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
lea eax, [eax + eax*2]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x14]
lea eax, [eax + eax*2]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*4]
add eax, edx
push eax
lea eax, [esp + 0x34c]
push 0x49f190
push eax
call ebp
or ecx, 0xffffffff
lea edi, [esp + 0x354]
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x578]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4ae358
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.00000000
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x18]
mov ecx, edx
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
jne 0x46d1e7
lea eax, [esp + 0x578]
push 0x7c
push eax
call fcn.0047e930
add esp, 8
jmp 0x46d246
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
lea eax, [eax + eax*2]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*4]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
lea eax, [eax + eax*2]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
sub eax, edx
add eax, ecx
lea ecx, [esp + 0x348]
push eax
push str._08d
push ecx
call ebp
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x354]
push 0x7c
mov dword [eax], edx
mov ecx, dword [esp + 0x35c]
lea edx, [esp + 0x588]
mov dword [eax + 4], ecx
push edx
call fcn.0047e930
add esp, 0x14
inc eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov edi, 0x4ad430
lea eax, [eax + eax*2]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
lea eax, [eax + eax*2]
lea eax, [eax + eax*4]
lea ecx, [edx + eax*4]
lea edx, [esp + 0x578]
add eax, ecx
or ecx, 0xffffffff
mov dword [esp + 0x24], eax
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
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, 0x41
xor eax, eax
lea edi, [esp + 0x3c]
lea edx, [esp + 0x3c]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x140]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x244]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x244]
lea ecx, [esp + 0x140]
push eax
push ecx
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0046c2c0
add esp, 0x10
test eax, eax
je 0x46c93b
jmp 0x46d433
mov ecx, dword [esp + 0x24]
sub ebx, ecx
lea ecx, [esp + 0x348]
push ebx
push str._08d
push ecx
call ebp
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x354]
add esp, 0xc
mov ebx, 1
mov dword [eax], edx
mov ecx, dword [esp + 0x34c]
mov dword [eax + 4], ecx
mov eax, dword [esp + 0x34]
test eax, eax
mov ecx, str.Track
je 0x46d33f
mov ecx, str.Tracks
mov ebp, dword [esp + 0x4bd0]
push 0x49f1a0
push ecx
push eax
push 0x49f1a0
push str.CUE_BIN_Image
push str._s_s_d__s_s
push ebp
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [esp + 0x48]
mov edi, ebp
shl eax, 0xb
cdq
and edx, 0x3ff
or ecx, 0xffffffff
add eax, edx
sar eax, 0xa
push eax
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
add ecx, ebp
push ecx
call fcn.0046e220
mov eax, dword [esp + 0x4c]
add esp, 0x24
test eax, eax
je 0x46d3e4
mov edi, 0x49f520
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x4bd8]
mov ecx, edx
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x30]
mov edi, ebp
push ecx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
add ecx, ebp
push ecx
call fcn.0046e050
add esp, 0xc
lea edi, [esp + 0x578]
or ecx, 0xffffffff
xor eax, eax
lea esi, [esp + 0x578]
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, ebp
mov edx, ecx
or ecx, 0xffffffff
add edx, 2
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [ecx + ebp + 1]
mov ecx, edx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4bbc
ret
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xba
call fcn.0046b4e0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, dword [esp + 0x4bd0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4bbc
ret