Function at 0x401010
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov eax, dword [esp + 0x10]
sub esp, 0x54
mov eax, dword [eax]
push ebx
push ebp
push esi
cmp eax, 0x20
push edi
jge 0x40102c
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x54
ret
mov ebx, dword [esp + 0x68]
add eax, 0xffffffe0
push 0
push eax
push ebx
call fcn.0040d6f3
add esp, 0xc
test eax, eax
je 0x40104d
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x54
ret
push ebx
push 0x20
lea ecx, [esp + 0x4c]
push 1
push ecx
call fcn.0040d60b
add esp, 0x10
cmp eax, 0x20
je 0x40106e
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x54
ret
mov ecx, 2
mov edi, str.APETAGEX
lea esi, [esp + 0x44]
xor edx, edx
repe cmpsd dword [esi], dword es:[edi]
je 0x40108c
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x54
ret
mov eax, dword [esp + 0x4f]
mov ecx, dword [esp + 0x4e]
mov edx, dword [esp + 0x4d]
and eax, 0xff
shl eax, 8
and ecx, 0xff
and edx, 0xff
or eax, ecx
mov ecx, dword [esp + 0x4c]
shl eax, 8
or eax, edx
and ecx, 0xff
shl eax, 8
or eax, ecx
cmp eax, 0x3e8
je 0x4010da
cmp eax, 0x7d0
je 0x4010da
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x54
ret
mov ebp, dword [esp + 0x53]
mov edx, dword [esp + 0x52]
mov eax, dword [esp + 0x51]
and ebp, 0xff
mov ecx, dword [esp + 0x50]
and edx, 0xff
shl ebp, 8
or ebp, edx
and eax, 0xff
shl ebp, 8
or ebp, eax
and ecx, 0xff
shl ebp, 8
or ebp, ecx
cmp ebp, 0x20
mov dword [esp + 0x30], ebp
jae 0x401123
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x54
ret
mov edx, dword [esp + 0x74]
push 0
mov eax, dword [edx]
sub eax, ebp
push eax
push ebx
call fcn.0040d6f3
add esp, 0xc
test eax, eax
je 0x401145
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x54
ret
push ebp
call fcn.0040d568
lea esi, [ebp - 0x20]
push ebx
mov edi, eax
push esi
push 1
push edi
mov dword [esp + 0x30], edi
call fcn.0040d60b
add esp, 0x14
cmp eax, esi
je 0x401178
push edi
call fcn.0040d5dc
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret
mov ebx, dword [esp + 0x70]
xor edi, edi
mov eax, dword [ebx]
cmp eax, edi
je 0x40119f
mov eax, dword [eax + 0x48]
cmp eax, edi
je 0x401194
push eax
call fcn.0040d5dc
add esp, 4
mov ecx, dword [ebx]
push ecx
call fcn.0040d5dc
add esp, 4
push 0x50
call fcn.0040d568
mov dword [ebx], eax
push esi
mov dword [eax + 4], edi
call fcn.0040d568
mov edx, dword [ebx]
mov ecx, 8
lea esi, [esp + 0x4c]
add esp, 8
mov dword [edx + 0x48], eax
mov eax, dword [ebx]
mov dword [esp + 0x20], 0
mov dword [eax + 0x4c], edi
mov edi, dword [ebx]
add edi, 0x28
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x57]
mov ecx, dword [esp + 0x56]
mov edx, dword [esp + 0x55]
and eax, 0xff
shl eax, 8
and ecx, 0xff
and edx, 0xff
or eax, ecx
mov ecx, dword [esp + 0x54]
shl eax, 8
or eax, edx
mov edx, dword [esp + 0x1c]
shl eax, 8
and ecx, 0xff
or eax, ecx
lea ecx, [edx + ebp - 0x20]
cmp edx, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x28], ecx
mov ebp, edx
jae 0x401596
jmp 0x401234
mov ebx, dword [esp + 0x70]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x2c], eax
je 0x401596
mov eax, ecx
sub eax, ebp
cmp eax, 8
jl 0x401596
xor edx, edx
xor eax, eax
mov dh, byte [ebp + 3]
mov al, byte [ebp + 1]
mov dl, byte [ebp + 2]
add ebp, 8
shl edx, 8
or edx, eax
xor eax, eax
mov al, byte [ebp - 8]
xor ebx, ebx
shl edx, 8
or edx, eax
mov eax, ecx
mov cl, byte [ebp]
sub eax, ebp
test cl, cl
mov dword [esp + 0x18], edx
je 0x401291
cmp ebx, eax
jae 0x401592
mov cl, byte [ebx + ebp + 1]
inc ebx
test cl, cl
jne 0x401280
cmp ebx, eax
jae 0x401592
cmp edx, 0x100000
ja 0x401592
lea ecx, [ebx + edx]
mov dword [esp + 0x24], ecx
inc ecx
cmp ecx, eax
ja 0x401592
lea ecx, [ebx + 1]
push ecx
call fcn.0040d568
mov ecx, ebx
mov esi, ebp
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x18], eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x1c]
mov byte [ebx + eax], 0
lea eax, [esi + 1]
push eax
call fcn.0040d568
mov ecx, esi
lea esi, [ebx + ebp + 1]
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push str.REPLAYGAIN_TRACK_GAIN
and ecx, 3
mov dword [esp + 0x1c], eax
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x20]
mov ecx, edx
push edi
mov byte [eax + ecx], 0
call fcn.0040d870
add esp, 0x10
test eax, eax
jne 0x40133c
mov esi, dword [esp + 0x6c]
mov edx, dword [esp + 0x10]
push edx
mov dword [esi], 1
call fcn.0040d815
fstp qword [esi + 0x20]
add esp, 4
jmp 0x40156b
push str.REPLAYGAIN_TRACK_PEAK
push edi
call fcn.0040d870
add esp, 8
test eax, eax
jne 0x40136e
mov esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
push eax
mov dword [esi + 4], 1
call fcn.0040d815
fstp qword [esi + 0x28]
add esp, 4
jmp 0x40156b
push str.REPLAYGAIN_ALBUM_GAIN
push edi
call fcn.0040d870
add esp, 8
test eax, eax
jne 0x4013a0
mov esi, dword [esp + 0x6c]
mov ecx, dword [esp + 0x10]
push ecx
mov dword [esi + 8], 1
call fcn.0040d815
fstp qword [esi + 0x30]
add esp, 4
jmp 0x40156b
push str.REPLAYGAIN_ALBUM_PEAK
push edi
call fcn.0040d870
add esp, 8
test eax, eax
jne 0x4013d2
mov esi, dword [esp + 0x6c]
mov edx, dword [esp + 0x10]
push edx
mov dword [esi + 0xc], 1
call fcn.0040d815
fstp qword [esi + 0x38]
add esp, 4
jmp 0x40156b
push str.MP3GAIN_UNDO
push edi
call fcn.0040d870
add esp, 8
test eax, eax
jne 0x40144b
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x10]
mov edi, 1
lea ecx, [esp + 0x38]
mov dword [ebx + 0x10], edi
mov eax, dword [esi]
push ecx
mov dword [esp + 0x3c], eax
mov byte [esp + 0x40], 0
call fcn.0040d80a
add esi, 5
mov dword [ebx + 0x40], eax
lea eax, [esp + 0x3c]
mov edx, dword [esi]
push eax
mov dword [esp + 0x40], edx
mov byte [esp + 0x44], 0
call fcn.0040d80a
add esi, 5
mov dword [ebx + 0x44], eax
add esp, 8
mov al, byte [esi]
cmp al, 0x77
je 0x401443
cmp al, 0x57
je 0x401443
mov dword [ebx + 0x48], 0
jmp 0x401567
mov dword [ebx + 0x48], edi
jmp 0x401567
push str.MP3GAIN_MINMAX
push edi
call fcn.0040d870
add esp, 8
test eax, eax
jne 0x4014bb
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x6c]
mov ecx, ebx
mov dword [esi + 0x14], 1
mov dx, word [ecx]
mov word [esp + 0x38], dx
mov al, byte [ecx + 2]
lea ecx, [esp + 0x38]
push ecx
mov byte [esp + 0x3e], al
mov byte [esp + 0x3f], 0
call fcn.0040d80a
add ebx, 4
mov byte [esi + 0x4c], al
lea ecx, [esp + 0x3c]
mov dx, word [ebx]
push ecx
mov word [esp + 0x40], dx
mov al, byte [ebx + 2]
mov byte [esp + 0x43], 0
mov byte [esp + 0x42], al
call fcn.0040d80a
add esp, 8
mov byte [esi + 0x4d], al
jmp 0x40156b
push str.MP3GAIN_ALBUM_MINMAX
push edi
call fcn.0040d870
add esp, 8
test eax, eax
jne 0x401528
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x6c]
mov edx, ebx
mov dword [esi + 0x18], 1
mov ax, word [edx]
mov word [esp + 0x38], ax
mov cl, byte [edx + 2]
lea edx, [esp + 0x38]
push edx
mov byte [esp + 0x3e], cl
mov byte [esp + 0x3f], 0
call fcn.0040d80a
add ebx, 4
mov byte [esi + 0x4e], al
lea edx, [esp + 0x3c]
mov ax, word [ebx]
push edx
mov word [esp + 0x40], ax
mov cl, byte [ebx + 2]
mov byte [esp + 0x43], 0
mov byte [esp + 0x42], cl
call fcn.0040d80a
add esp, 8
mov byte [esi + 0x4f], al
jmp 0x40156b
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x24]
add ecx, 9
lea esi, [ebp - 8]
mov eax, dword [edx]
mov edi, dword [eax + 0x4c]
add edi, dword [eax + 0x48]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov eax, dword [edx]
lea edx, [ebx + ecx + 9]
mov ecx, dword [eax + 0x4c]
add ecx, edx
mov dword [eax + 0x4c], ecx
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push eax
call fcn.0040d5dc
push edi
call fcn.0040d5dc
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
add esp, 8
lea ebp, [ecx + ebp + 1]
cmp ebp, eax
jb 0x401228
mov ebx, dword [esp + 0x70]
mov edx, dword [esp + 0x1c]
push edx
call fcn.0040d5dc
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x34]
add esp, 4
mov ebp, dword [eax]
sub ebp, ecx
mov dword [eax], ebp
mov edx, dword [ebx]
mov dword [edx], ecx
mov ecx, dword [esp + 0x5b]
mov edx, dword [esp + 0x5a]
and ecx, 0xff
and ecx, 0xffffff80
and edx, 0xff
shl ecx, 8
and edx, 0xffff8000
or ecx, edx
mov edx, dword [esp + 0x59]
and edx, 0xff
shl ecx, 8
and edx, 0xff800000
or ecx, edx
mov edx, dword [esp + 0x58]
and edx, 0xff
shl ecx, 8
and edx, 0x80000000
or ecx, edx
je 0x40163a
mov edx, dword [eax]
mov esi, dword [esp + 0x68]
add edx, 0xffffffe0
push 0
mov dword [eax], edx
mov eax, edx
push eax
push esi
call fcn.0040d6f3
mov eax, dword [ebx]
push esi
push 0x20
add eax, 8
push 1
push eax
call fcn.0040d60b
mov ecx, dword [ebx]
add esp, 0x1c
mov dword [ecx + 4], 1
mov eax, dword [ebx]
add dword [eax], 0x20
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
cmp ecx, eax
je 0x4016da
mov esi, dword [ebx]
mov eax, dword [esi + 0x4c]
add eax, 0x20
mov edx, eax
mov byte [esi + 0x34], al
shr edx, 8
mov byte [esi + 0x35], dl
mov edx, eax
shr edx, 0x10
shr eax, 0x18
mov byte [esi + 0x36], dl
mov byte [esi + 0x37], al
mov eax, dword [ebx]
mov edx, ecx
add eax, 0x38
shr edx, 8
mov dword [esp + 0x6c], edx
mov byte [eax + 1], dl
mov edx, ecx
mov byte [eax], cl
shr edx, 0x10
mov dword [esp + 0x70], edx
mov byte [eax + 2], dl
mov edx, ecx
shr edx, 0x18
mov byte [eax + 3], dl
mov esi, dword [ebx]
mov dword [esp + 0x74], edx
mov eax, dword [esi + 4]
test eax, eax
je 0x4016da
mov eax, dword [esi + 0x4c]
add eax, 0x20
mov edx, eax
mov byte [esi + 0x14], al
shr edx, 8
mov byte [esi + 0x15], dl
mov edx, eax
shr edx, 0x10
shr eax, 0x18
mov byte [esi + 0x16], dl
mov dl, byte [esp + 0x74]
mov byte [esi + 0x17], al
mov ebx, dword [ebx]
mov al, byte [esp + 0x6c]
add ebx, 0x18
mov byte [ebx], cl
mov cl, byte [esp + 0x70]
mov byte [ebx + 1], al
mov byte [ebx + 2], cl
mov byte [ebx + 3], dl
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x54
ret