Function at 0x418360
Capabilities:
Create thread
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4c2d9e
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x570f20]
xor eax, esp
push eax
lea eax, [esp + 0x40]
mov dword fs:[0], eax
mov esi, ecx
lea eax, [esi + 0x990]
xor ebx, ebx
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x4183a0
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi + 0x4c]
xor ecx, ecx
mov dword [esp + 0x48], ebx
cmp eax, ebx
jle 0x4183d5
mov edx, dword [esi + 0x64]
mov edi, eax
mov eax, dword [edx]
test eax, eax
js 0x4183cd
mov ebp, dword [esi + 0xb8]
imul eax, eax, 0x118
cmp byte [eax + ebp], 0
je 0x4183cd
lea ebx, [ecx + 1]
inc ecx
add edx, 4
cmp ecx, edi
jl 0x4183b2
mov eax, dword [0x57012c]
mov ecx, dword [esi + 0x6c]
xorps xmm0, xmm0
xorps xmm1, xmm1
movsd xmm6, qword [0x4c5bf8]
add eax, 0xfffffffe
cvtsi2ss xmm0, eax
cvtps2pd xmm0, xmm0
add ecx, 2
cvtsi2ss xmm1, ecx
cvtps2pd xmm1, xmm1
divsd xmm0, xmm1
movsd xmm1, qword [0x4c5bf0]
cvtpd2ps xmm0, xmm0
xorps xmm2, xmm2
cvtss2sd xmm2, xmm0
movsd xmm0, qword [0x4c5be8]
andpd xmm0, xmm2
movapd xmm3, xmm0
movapd xmm0, xmm2
xorpd xmm0, xmm3
cmpltsd xmm0, xmm1
andpd xmm1, xmm0
orpd xmm1, xmm3
movapd xmm0, xmm2
addsd xmm0, xmm1
subsd xmm0, xmm1
movapd xmm1, xmm0
subsd xmm1, xmm2
cmpnlesd xmm1, xmm3
andpd xmm1, xmm6
subsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si edi, xmm0
mov eax, ebx
cdq
idiv edi
xorps xmm0, xmm0
mov eax, dword [esi + 0x70]
xorps xmm1, xmm1
cvtsi2ss xmm0, ebx
cvtsi2ss xmm1, edi
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
divsd xmm0, xmm1
movsd xmm1, qword [0x4c5bf0]
cvtpd2ps xmm0, xmm0
xorps xmm2, xmm2
cvtss2sd xmm2, xmm0
movsd xmm0, qword [0x4c5be8]
andpd xmm0, xmm2
movapd xmm3, xmm0
movapd xmm0, xmm2
xorpd xmm0, xmm3
cmpltsd xmm0, xmm1
andpd xmm1, xmm0
orpd xmm1, xmm3
movapd xmm0, xmm2
addsd xmm0, xmm1
subsd xmm0, xmm1
movapd xmm1, xmm0
subsd xmm1, xmm2
cmpnlesd xmm1, xmm3
imul edx, ecx
add edx, 2
andpd xmm1, xmm6
subsd xmm0, xmm1
mov dword [esi + 0x74], edx
xorps xmm1, xmm1
lea edx, [eax + 2]
cvtsi2ss xmm1, edx
cvtpd2ps xmm0, xmm0
cvtps2pd xmm1, xmm1
cvtss2sd xmm0, xmm0
mulsd xmm1, xmm0
addsd xmm1, qword [0x4c6040]
lea ebp, [ebx + 1]
cvttsd2si edx, xmm1
mov dword [esi + 0x78], edx
cmp ebp, edi
jge 0x418517
mov edi, ebp
imul ecx, edi
add ecx, 2
mov dword [esi + 0x7c], ecx
mov ecx, dword [esi + 0x4c]
xor edi, edi
lea eax, [edx + eax + 2]
xor ebp, ebp
mov dword [esi + 0x80], eax
cmp ecx, edi
jle 0x41854f
mov eax, dword [esi + 0xb8]
jmp 0x418540
cmp byte [eax], 0
je 0x4185b6
inc ebp
add eax, 0x118
cmp ebp, ecx
jl 0x418540
mov eax, dword [0x570124]
cmp ecx, eax
jl 0x41875b
cmp eax, 5
lea eax, [esi + 0x990]
mov ebp, eax
mov dword [esp + 0x18], ebp
jle 0x4186da
cmp eax, edi
je 0x41857c
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea ebx, [esi + 0x9a8]
push 0xff
mov byte [esp + 0x4c], 2
mov dword [ebx], 2
call fcn.004a5f16
add esp, 4
mov dword [esi + 0x9ac], eax
mov ecx, str.Cannot_add_track__nRich_maximum_numbers.
mov edx, eax
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x4185a7
jmp 0x41871a
push 0x168
call fcn.004a8502
add esp, 4
mov dword [esp + 0x18], eax
mov byte [esp + 0x48], 1
cmp eax, edi
je 0x41864a
mov eax, dword [esi + 0x78]
mov edx, dword [esi + 0x70]
mov ecx, dword [esi + 0x74]
mov edi, dword [esi + 0x6c]
add edx, eax
add edi, ecx
sub esp, 0x24
mov dword [esp + 0x5c], edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], edx
mov edx, esp
mov dword [esp + 0x44], eax
movq xmm0, qword [esp + 0x40]
movq qword [edx], xmm0
mov dword [esp + 0x50], ecx
mov dword [esp + 0x48], edi
movq xmm0, qword [esp + 0x48]
movq qword [edx + 8], xmm0
mov dword [esp + 0x54], eax
movq xmm0, qword [esp + 0x50]
movq qword [edx + 0x10], xmm0
mov dword [esp + 0x58], edi
movq xmm0, qword [esp + 0x58]
mov byte [esp + 0x60], 1
mov ecx, dword [esp + 0x60]
movq qword [edx + 0x18], xmm0
mov dword [edx + 0x20], ecx
mov ecx, dword [esp + 0x3c]
push ebp
call fcn.00407d30
xor edi, edi
jmp 0x41864c
xor eax, eax
mov edx, dword [esi + 0xb8]
mov ecx, ebp
imul ecx, ecx, 0x118
mov dword [edx + ecx + 0x114], eax
mov eax, dword [esi + 0xb8]
mov byte [ecx + eax], 1
mov edx, dword [esi + 0xb8]
mov dword [edx + ecx + 0x110], edi
mov eax, dword [esi + 0xb8]
mov byte [eax + ecx + 2], 0
mov edx, dword [esi + 0xb8]
mov byte [edx + ecx + 1], 0
mov eax, dword [esi + 0xb8]
mov dword [eax + ecx + 4], ebx
mov edx, dword [esi + 0x64]
mov dword [edx + ebx*4], ebp
mov eax, dword [esi + 0xb8]
mov dword [eax + ecx + 8], edi
push edi
mov ecx, esi
mov byte [esp + 0x4c], 0
call fcn.004082f0
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x4186c4
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, ebp
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
cmp eax, edi
je 0x4186e5
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea ebx, [esi + 0x9a8]
push 0xff
mov byte [esp + 0x4c], 3
mov dword [ebx], 2
call fcn.004a5f16
add esp, 4
mov dword [esi + 0x9ac], eax
mov ecx, str.Cannot_add_track__nRich_maximum_numbers._Buy_the_product_to_unlock.
mov edx, eax
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x418710
push edi
push edi
push ebx
push 0x415b20
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
cmp ebp, edi
je 0x418735
push ebp
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x418744
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
or eax, 0xffffffff
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
push 0x168
call fcn.004a8502
mov ecx, eax
add esp, 4
mov dword [esp + 0x18], ecx
mov byte [esp + 0x48], 4
cmp ecx, edi
je 0x4187f0
mov ebp, dword [esi + 0x78]
mov edx, dword [esi + 0x70]
mov eax, dword [esi + 0x74]
mov edi, dword [esi + 0x6c]
add edx, ebp
mov dword [esp + 0x38], edx
mov dword [esp + 0x28], edx
sub esp, 0x24
mov edx, esp
add edi, eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ebp
movq xmm0, qword [esp + 0x40]
movq qword [edx], xmm0
mov dword [esp + 0x50], eax
mov dword [esp + 0x48], edi
movq xmm0, qword [esp + 0x48]
movq qword [edx + 8], xmm0
mov dword [esp + 0x54], ebp
movq xmm0, qword [esp + 0x50]
movq qword [edx + 0x10], xmm0
mov dword [esp + 0x58], edi
movq xmm0, qword [esp + 0x58]
mov byte [esp + 0x60], 1
mov eax, dword [esp + 0x60]
movq qword [edx + 0x18], xmm0
mov dword [edx + 0x20], eax
mov edx, dword [esi + 0x4c]
push edx
call fcn.00407d30
xor edi, edi
jmp 0x4187f2
xor eax, eax
mov ecx, dword [esi + 0x4c]
mov edx, dword [esi + 0xb8]
imul ecx, ecx, 0x118
mov dword [ecx + edx + 0x114], eax
mov eax, dword [esi + 0x4c]
mov ecx, dword [esi + 0xb8]
imul eax, eax, 0x118
mov byte [eax + ecx], 1
mov edx, dword [esi + 0x4c]
mov eax, dword [esi + 0xb8]
imul edx, edx, 0x118
mov dword [edx + eax + 0x110], edi
mov ecx, dword [esi + 0x4c]
mov edx, dword [esi + 0xb8]
imul ecx, ecx, 0x118
mov byte [ecx + edx + 2], 0
mov eax, dword [esi + 0x4c]
mov ecx, dword [esi + 0xb8]
imul eax, eax, 0x118
mov byte [eax + ecx + 1], 0
mov edx, dword [esi + 0x4c]
mov eax, dword [esi + 0xb8]
imul edx, edx, 0x118
mov dword [edx + eax + 4], ebx
mov ecx, dword [esi + 0x64]
mov edx, dword [esi + 0x4c]
mov dword [ecx + ebx*4], edx
mov eax, dword [esi + 0x4c]
mov ecx, dword [esi + 0xb8]
imul eax, eax, 0x118
mov dword [eax + ecx + 8], edi
push edi
mov ecx, esi
mov byte [esp + 0x4c], 0
call fcn.004082f0
mov ebx, dword [esi + 0x4c]
mov eax, dword [esp + 0x14]
lea edx, [ebx + 1]
mov dword [esi + 0x4c], edx
cmp eax, edi
je 0x4188ad
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, ebx
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret