Function at 0x444880
Capabilities:
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46dcd9
mov eax, dword fs:[0]
push eax
sub esp, 0x5f8
mov eax, dword [0x490540]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [0x491b20]
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x5c8], edi
test byte [esi + 0x15bec5c], 0x80
je 0x444db8
mov edx, dword [ebp + 0x10]
cmp edx, 0xffffffff
je 0x444cbf
cmp edx, 0xfffffffe
je 0x444cbf
lea eax, [esi + 0xdbdfc0]
mov dword [ebp - 0x5d0], eax
lea eax, [ebp - 0x5d0]
push edx
push eax
push ecx
call fcn.00439970
add esp, 0xc
test eax, eax
jne 0x44491d
push eax
push str.ERROR
push str.sound_file_read_failed
push eax
call fcn.00439f60
add esp, 0x10
xor eax, eax
jmp 0x444c02
sub edi, 0
je 0x44499d
dec edi
je 0x44496c
sub edi, 2
jne 0x444958
mov ecx, dword [esi + 0xd597f4]
lea edi, [esi + 0xd597e4]
mov eax, dword [edi]
lea edx, [esi + 0x96f7d8]
add eax, ecx
add edx, eax
lea eax, [ecx + 1]
mov dword [ebp - 0x5bc], edx
and eax, 0x1fff
mov dword [esi + 0xd597f4], eax
jmp 0x4449ce
mov ecx, dword [ebp - 0x5c0]
mov edi, dword [ebp - 0x5c0]
mov dword [ebp - 0x5bc], ecx
jmp 0x4449ce
mov eax, dword [esi + 0xd597dc]
lea edi, [esi + 0xd597dc]
mov ecx, dword [esi + 0xd597ec]
add eax, 0x5857d8
add eax, ecx
add eax, esi
mov dword [ebp - 0x5bc], eax
lea eax, [ecx + 1]
and eax, 0x1fff
mov dword [esi + 0xd597ec], eax
jmp 0x4449ce
mov edx, dword [esi + 0xd597e8]
lea edi, [esi + 0xd597d8]
mov eax, dword [edi]
lea ecx, [esi + 0x19b3b0]
add eax, 0x428
add ecx, edx
add eax, ecx
mov dword [ebp - 0x5bc], eax
lea eax, [edx + 1]
and eax, 0x1fff
mov dword [esi + 0xd597e8], eax
mov edx, dword [ebp - 0x5d0]
xor ecx, ecx
mov dword [ebp - 0x5d4], ecx
movsx eax, byte [edx]
mov dword [ebp - 0x5c0], eax
test eax, eax
jle 0x444bfd
lea ecx, [ecx]
mov eax, dword [0x491b20]
add eax, 0x11bdfc0
mov dword [ebp - 0x5dc], eax
lea eax, [ebp - 0x5c4]
push eax
lea eax, [ebp - 0x5dc]
push eax
push ecx
push edx
call fcn.004395e0
add esp, 0x10
test eax, eax
je 0x444ca2
mov eax, dword [ebp - 0x5c8]
cmp eax, 3
ja case.default.0x444a2b
jmp dword [eax*4 + 0x444e3c]
mov eax, dword [edi]
add eax, dword [ebp - 0x5c4]
cmp eax, 0x3ea000
jb case.default.0x444a2b
push 0
push str.ERROR
push str.BGM_Buffer_Overflow
jmp 0x444bf3
mov eax, dword [edi]
add eax, dword [ebp - 0x5c4]
cmp eax, 0x3ea000
jb case.default.0x444a2b
push 0
push str.ERROR
push str.SE_Buffer_Overflow
jmp 0x444bf3
mov eax, dword [edi]
add eax, dword [ebp - 0x5c4]
cmp eax, 0x3ea000
jae 0x444be7
lea ecx, [ebp - 0x5b8]
call fcn.00443d80
push dword [ebp - 0x5c4]
lea ecx, [ebp - 0x5b8]
mov dword [ebp - 4], 1
push dword [ebp - 0x5dc]
call fcn.00443f20
test eax, eax
js 0x444c71
mov eax, dword [ebp - 0x5b8]
lea ecx, [ebp - 0x5b8]
mov dword [ebp - 0x5e0], eax
call fcn.00443f10
lea ecx, [ebp - 0x5d8]
mov dword [ebp - 0x5d8], eax
push ecx
push eax
push dword [ebp - 0x5bc]
lea ecx, [ebp - 0x5b8]
call fcn.004441c0
push 0
test eax, eax
js 0x444c65
mov ecx, dword [esi + 0xd59804]
mov eax, dword [ebp - 0x5c8]
push 0
push 0
push ecx
mov dword [esp], 0x40000000
add eax, 0x356603
push 0
push dword [ebp - 0x5e0]
lea edx, [esi + eax*4]
mov eax, dword [ecx]
push edx
push ecx
mov dword [ebp - 0x5cc], edx
call dword [eax + 0x20]
push 0
test eax, eax
js 0x444c59
mov eax, dword [ebp - 0x5bc]
lea edx, [ebp - 0x604]
cmp dword [ebp - 0x5c8], 0
xorps xmm0, xmm0
movdqu xmmword [ebp - 0x600], xmm0
mov dword [ebp - 0x5fc], eax
mov ecx, 0xff
mov eax, dword [ebp - 0x5d8]
movdqu xmmword [ebp - 0x5f0], xmm0
mov dword [ebp - 0x600], eax
psrldq xmm0, 8
movd eax, xmm0
mov dword [ebp - 0x604], 0x40
push edx
cmove eax, ecx
mov dword [ebp - 0x5e8], eax
mov eax, dword [ebp - 0x5cc]
mov eax, dword [eax]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x54]
mov dword [ebp - 0x5cc], eax
test eax, eax
js 0x444c1d
mov eax, dword [ebp - 0x5c4]
lea ecx, [ebp - 0x5b8]
add dword [ebp - 0x5bc], eax
add dword [edi], eax
mov dword [ebp - 4], 0xffffffff
call fcn.00443db0
mov ecx, dword [ebp - 0x5d4]
inc ecx
mov dword [ebp - 0x5d4], ecx
cmp ecx, dword [ebp - 0x5c0]
jge 0x444bfd
mov edx, dword [ebp - 0x5d0]
jmp 0x4449f0
push 0
push str.ERROR
push str.VOICE_Buffer_Overflow
push 0
call fcn.00439f60
add esp, 0x10
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00456922
mov esp, ebp
pop ebp
ret
push 0
push str.ERROR
push str.submitting_source_buffer
push 0
call fcn.00439f60
mov edi, dword [ebp - 0x5c8]
add esp, 0x10
mov eax, dword [esi + edi*4 + 0xd5980c]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov dword [esi + edi*4 + 0xd5980c], 0
mov esi, dword [ebp - 0x5cc]
jmp 0x444c89
push str.ERROR
push str.creating_source_voice
jmp 0x444c7d
push str.ERROR
push str.sound_read_error
jmp 0x444c7d
push 0
push str.ERROR
push 0x470580
push 0
call fcn.00439f60
add esp, 0x10
xor esi, esi
lea ecx, [ebp - 0x5b8]
mov dword [ebp - 4], 0xffffffff
call fcn.00443db0
mov eax, esi
jmp 0x444c02
push 0
push str.ERROR
push str.sound_file_decode_failed
push 0
call fcn.00439f60
add esp, 0x10
xor eax, eax
jmp 0x444c02
lea edx, [ebp - 0x114]
sub edx, ecx
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx + ecx - 1], al
test al, al
jne 0x444cc7
push 0x208
lea eax, [ebp - 0x31c]
push 0
push eax
call fcn.00456940
mov edi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [ebp - 0x31c]
add esp, 0xc
push 0x104
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0x114]
push eax
push 0
push 0
call edi
mov edx, dword [0x491b20]
add edx, 0x15be7fc
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x5c0], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x444d22
sub ecx, dword [ebp - 0x5c0]
lea eax, [ebp - 0x524]
push 0x104
push eax
push ecx
push edx
push 8
push 0
call edi
cmp dword [ebp + 0x10], 0xffffffff
jne 0x444d56
lea eax, [ebp - 0x524]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push 0x94
call fcn.00456558
add esp, 4
mov dword [ebp - 0x5c0], eax
mov dword [ebp - 4], 0
test eax, eax
je 0x444d7d
mov ecx, eax
call fcn.00443d80
jmp 0x444d7f
xor eax, eax
push 1
push 0
lea ecx, [ebp - 0x31c]
mov dword [ebp - 4], 0xffffffff
push ecx
mov ecx, eax
mov dword [esi + 0xd89838], eax
call fcn.00443fd0
test eax, eax
jns 0x444dbf
push 0
push str.ERROR
push 0x470580
push 0
call fcn.00439f60
add esp, 0x10
xor eax, eax
jmp 0x444c02
mov ecx, dword [esi + 0xd89838]
mov edi, dword [ecx]
call fcn.00443f10
mov dword [esi + 0xd89820], eax
mov eax, dword [0x49456c]
test al, 1
jne 0x444ded
or eax, 1
mov dword [0x494568], 0x470564
mov dword [0x49456c], eax
mov ecx, dword [esi + 0xd59804]
lea eax, [esi + 0xd5980c]
push 0
push 0
push 0x494568
mov edx, dword [ecx]
push ecx
mov dword [esp], 0x40000000
push 0
push edi
push eax
push ecx
call dword [edx + 0x20]
test eax, eax
jns 0x444bfd
push 0
push str.ERROR
push str.creating_source_voice
push 0
call fcn.00439f60
add esp, 0x10
xor eax, eax
jmp 0x444c02