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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
mov esi, ecx
mov eax, dword [0x54a010]
xor eax, ebp
mov dword [esp + 0x98], eax
xor ebx, ebx
dec ebx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x90], ebx
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebx
mov ecx, 0xffffff9a
test esi, esi
jne 0x507690
mov esi, ecx
mov ecx, dword [esp + 0x98]
xor ecx, ebp
call fcn.004a0403
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x20], edx
mov eax, dword [esi + 0x48]
add eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
adc ecx, dword [esi + 0x5c]
push 0
push ecx
push eax
push dword [esi + 0x30]
push esi
call fcn.00512720
add esp, 0x14
mov ecx, ebx
test eax, eax
jne 0x5076e0
mov edx, dword [esi + 0x30]
lea eax, [esp + 0x34]
mov ecx, esi
push eax
call fcn.00508840
add esp, 4
mov ecx, ebx
test eax, eax
jne 0x5076e0
xor eax, eax
cmp dword [esp + 0x34], 0x2014b50
mov ecx, 0xffffff99
cmove ecx, eax
mov dword [esp + 0xc], ecx
mov edx, dword [esi + 0x30]
lea eax, [esp + 0x40]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
mov dword [esp + 8], eax
lea eax, [esp + 0x44]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
mov edi, eax
or edi, dword [esp + 8]
lea eax, [esp + 0x48]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
mov dword [esp + 8], eax
lea eax, [esp + 0x4c]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
or eax, dword [esp + 8]
or eax, edi
mov dword [esp + 8], eax
lea edi, [esp + 0x50]
mov edx, dword [esi + 0x30]
mov ecx, esi
push edi
call fcn.00508840
add esp, 4
mov dword [esp + 0x14], eax
mov eax, dword [edi]
mov ecx, eax
shr ecx, 0x10
and ecx, 0x1f
mov dword [edi + 0x3c], ecx
mov ecx, eax
shr ecx, 0x15
and ecx, 0xf
dec ecx
mov dword [edi + 0x40], ecx
mov ecx, eax
shr ecx, 0x19
add ecx, 0x7bc
mov dword [edi + 0x44], ecx
mov ecx, eax
shr ecx, 0xb
and ecx, 0x1f
mov dword [edi + 0x38], ecx
mov ecx, eax
shr ecx, 5
and ecx, 0x3f
mov dword [edi + 0x34], ecx
add eax, eax
and eax, 0x3e
mov dword [edi + 0x30], eax
lea eax, [esp + 0x54]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508840
add esp, 4
mov edi, eax
or edi, dword [esp + 0x14]
mov edx, dword [esi + 0x30]
lea eax, [esp + 0x30]
mov ecx, esi
push eax
call fcn.00508840
add esp, 4
or eax, edi
or eax, dword [esp + 8]
mov dword [esp + 8], eax
lea edi, [esp + 0x30]
mov eax, dword [edi]
lea ecx, [esp + 0x54]
mov dword [ecx + 4], eax
xor eax, eax
mov dword [ecx + 8], eax
mov edx, dword [esi + 0x30]
mov ecx, esi
push edi
call fcn.00508840
add esp, 4
mov dword [esp + 0x14], eax
mov eax, dword [edi]
xor ecx, ecx
lea edx, [esp + 0x54]
mov dword [edx + 0x10], ecx
mov dword [edx + 0xc], eax
lea eax, [esp + 0x68]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
or eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x6c]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
mov edi, eax
or edi, dword [esp + 0x14]
lea eax, [esp + 0x70]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
or eax, edi
or eax, dword [esp + 8]
mov dword [esp + 8], eax
lea eax, [esp + 0x74]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
mov dword [esp + 0x14], eax
lea eax, [esp + 0x78]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508de0
add esp, 4
mov edi, eax
or edi, dword [esp + 0x14]
or edi, dword [esp + 8]
lea eax, [esp + 0x7c]
mov edx, dword [esi + 0x30]
mov ecx, esi
push eax
call fcn.00508840
add esp, 4
mov dword [esp + 8], eax
mov edx, dword [esi + 0x30]
mov dword [esp + 0x10], esi
mov ecx, esi
lea esi, [esp + 0x30]
push esi
call fcn.00508840
add esp, 4
or eax, dword [esp + 8]
or eax, edi
cmove ebx, dword [esp + 0xc]
xor eax, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esi]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x7c]
mov edi, dword [eax - 0x14]
cmp dword [ebp + 0xc], 0
je 0x507927
test ebx, ebx
jne 0x507927
mov eax, dword [ebp + 0x10]
mov esi, eax
cmp edi, eax
jae 0x5078eb
mov eax, dword [ebp + 0xc]
mov byte [eax + edi], 0
mov esi, edi
xor ebx, ebx
cmp dword [ebp + 0x10], 0
je 0x507925
test edi, edi
je 0x507925
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x30]
mov dword [esp + 0xc], ecx
mov ecx, dword [eax + 4]
mov ebx, dword [eax + 0x1c]
call dword [section..00cfg]
push esi
push dword [ebp + 0xc]
push dword [esp + 0x14]
push ebx
call ecx
add esp, 0x10
xor ebx, ebx
cmp eax, esi
setne bl
neg ebx
sub edi, esi
mov ecx, dword [esp + 0x6c]
cmp dword [ebp + 0x14], 0
je 0x5079ca
test ebx, ebx
jne 0x5079ca
mov edx, dword [ebp + 0x18]
cmp ecx, edx
mov esi, edx
cmovb esi, ecx
test edi, edi
je 0x507c5f
mov eax, edi
sar eax, 0x1f
push 1
push eax
push edi
mov eax, dword [esp + 0x1c]
push dword [eax + 0x30]
push eax
mov ebx, ecx
call fcn.00512720
mov edx, dword [ebp + 0x18]
mov ecx, ebx
add esp, 0x14
xor ebx, ebx
test eax, eax
setne bl
cmove edi, eax
neg ebx
mov eax, edi
test edx, edx
je 0x5079c2
test ecx, ecx
je 0x5079c2
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x30]
mov dword [esp + 0x14], edx
mov dword [esp + 8], ecx
mov ecx, dword [eax + 4]
mov edi, dword [eax + 0x1c]
call dword [section..00cfg]
push esi
push dword [ebp + 0x14]
push dword [esp + 0x1c]
push edi
call ecx
add esp, 0x10
xor ecx, ecx
dec ecx
cmp eax, esi
mov eax, dword [esp + 0xc]
cmovne ebx, ecx
mov ecx, dword [esp + 8]
mov edi, ecx
sub edi, esi
add edi, eax
jmp 0x5079cc
add edi, ecx
mov eax, dword [ebp + 0x1c]
test ebx, ebx
jne 0x507b94
test ecx, ecx
je 0x507b94
xor ebx, ebx
mov dword [esp + 0xc], 0
mov eax, 0
sub edi, ecx
je 0x507a21
mov eax, edi
sar eax, 0x1f
push 1
push eax
push edi
mov eax, dword [esp + 0x1c]
push dword [eax + 0x30]
push eax
mov esi, ecx
call fcn.00512720
mov ecx, esi
add esp, 0x14
xor edx, edx
test eax, eax
setne dl
cmove edi, eax
neg edx
mov dword [esp + 0xc], edx
mov eax, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 8], ecx
mov dword [esp + 0x14], ebx
xor esi, esi
dec esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], esi
mov ebx, dword [esp + 0x10]
mov edx, dword [ebx + 0x30]
mov ecx, ebx
lea eax, [esp + 0x2c]
push eax
call fcn.00508de0
add esp, 4
mov edi, eax
mov edx, dword [ebx + 0x30]
mov ecx, ebx
lea eax, [esp + 0x28]
push eax
call fcn.00508de0
add esp, 4
or eax, edi
mov edi, dword [esp + 0xc]
cmovne edi, esi
mov eax, dword [esp + 0x2c]
cmp eax, 0x7075
je 0x507acb
cmp eax, 1
jne 0x507b13
mov eax, dword [esp + 0x60]
not eax
or eax, dword [esp + 0x64]
je 0x507c6f
mov eax, dword [esp + 0x58]
not eax
or eax, dword [esp + 0x5c]
je 0x507c93
mov eax, dword [esp + 0x38]
not eax
or eax, dword [esp + 0x3c]
je 0x507cb7
cmp dword [esp + 0x74], 0xffffffff
je 0x507cdb
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0xc], edi
jmp 0x507b76
mov dword [esp + 0xc], edi
mov esi, dword [esp + 0x10]
mov edi, dword [esi + 0x30]
mov byte [esp + 0x24], 0xff
mov ecx, dword [esi + 4]
mov ebx, dword [esi + 0x1c]
call dword [section..00cfg]
push 1
lea eax, [esp + 0x28]
push eax
mov dword [esp + 0x20], edi
push edi
push ebx
call ecx
add esp, 0x10
cmp eax, 1
jne 0x507b26
cmp byte [esp + 0x24], 1
mov edi, dword [esp + 0xc]
je 0x507cff
mov esi, dword [esp + 0x10]
jmp 0x507b4b
mov ebx, dword [esp + 0x28]
push 1
push 0
push ebx
mov eax, dword [esp + 0x1c]
push dword [eax + 0x30]
push eax
jmp 0x507b5b
mov ecx, dword [esi + 0x18]
mov ebx, dword [esi + 0x1c]
call dword [section..00cfg]
push dword [esp + 0x18]
push ebx
call ecx
add esp, 8
neg eax
mov eax, 0
sbb eax, eax
mov edi, dword [esp + 0xc]
or edi, eax
mov ebx, dword [esp + 0x28]
lea eax, [ebx - 1]
push 1
push 0
push eax
push dword [esi + 0x30]
push esi
call fcn.00512720
add esp, 0x14
neg eax
mov eax, 0
sbb eax, eax
or eax, edi
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x14]
add ebx, eax
add ebx, 4
cmp ebx, ecx
jb 0x507a25
mov edi, dword [esp + 0x1c]
mov eax, dword [ebp + 0x1c]
mov ecx, dword [esp + 0xc]
jmp 0x507b96
mov ecx, ebx
test eax, eax
je 0x507c20
test ecx, ecx
jne 0x507c20
mov esi, dword [ebp + 0x20]
mov ebx, dword [esp + 0x70]
mov eax, esi
cmp ebx, esi
jae 0x507bb8
mov eax, dword [ebp + 0x1c]
mov byte [eax + ebx], 0
mov eax, ebx
mov dword [esp + 0xc], eax
test edi, edi
je 0x507c68
mov eax, edi
sar eax, 0x1f
push 1
push eax
push edi
mov eax, dword [esp + 0x1c]
push dword [eax + 0x30]
push eax
call fcn.00512720
add esp, 0x14
xor ecx, ecx
neg eax
sbb ecx, ecx
test esi, esi
je 0x507c20
test ebx, ebx
je 0x507c20
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x30]
mov dword [esp + 8], edx
mov ebx, ecx
mov ecx, dword [eax + 4]
mov edi, dword [eax + 0x1c]
call dword [section..00cfg]
mov esi, dword [esp + 0xc]
push esi
push dword [ebp + 0x1c]
push dword [esp + 0x10]
push edi
call ecx
add esp, 0x10
xor ecx, ecx
dec ecx
cmp eax, esi
cmovne ebx, ecx
mov ecx, ebx
mov eax, dword [ebp + 8]
mov edi, dword [esp + 0x20]
test edi, edi
je 0x507c3e
test ecx, ecx
jne 0x507c3e
lea esi, [esp + 0x40]
mov edx, ecx
mov ecx, 0x16
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
test eax, eax
je 0x507676
test ecx, ecx
jne 0x507676
movq xmm0, qword [esp + 0x38]
movq qword [eax], xmm0
xor ecx, ecx
jmp 0x507676
xor ebx, ebx
xor eax, eax
jmp 0x50797d
xor ecx, ecx
jmp 0x507be3
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx + 0x30]
lea eax, [esp + 0x60]
push eax
call fcn.00508a10
add esp, 4
neg eax
mov eax, 0
sbb eax, eax
or edi, eax
jmp 0x507a8f
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx + 0x30]
lea eax, [esp + 0x58]
push eax
call fcn.00508a10
add esp, 4
neg eax
mov eax, 0
sbb eax, eax
or edi, eax
jmp 0x507a9f
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx + 0x30]
lea eax, [esp + 0x38]
push eax
call fcn.00508a10
add esp, 4
neg eax
mov eax, 0
sbb eax, eax
or edi, eax
jmp 0x507aaf
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx + 0x30]
lea eax, [esp + 0x24]
push eax
call fcn.00508840
add esp, 4
neg eax
mov eax, 0
sbb eax, eax
or edi, eax
jmp 0x507aba
mov dword [esp + 0x24], 0xffffffff
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx + 0x30]
lea eax, [esp + 0x24]
push eax
call fcn.00508840
add esp, 4
neg eax
mov esi, 0
sbb esi, esi
or esi, edi
push dword [esp + 0x68]
push dword [ebp + 0xc]
push 0
call fcn.0042cac0
add esp, 0xc
mov ebx, dword [esp + 0x28]
lea ecx, [ebx - 5]
cmp eax, dword [esp + 0x24]
jne 0x507da8
mov dword [esp + 0xc], esi
mov eax, dword [ebp + 0x10]
mov edi, eax
cmp ecx, eax
jae 0x507d5a
mov eax, dword [ebp + 0xc]
mov byte [eax + ecx], 0
mov edi, ecx
cmp dword [ebp + 0x10], 0
je 0x507b72
test ecx, ecx
je 0x507b72
mov eax, dword [esp + 0x10]
mov esi, dword [eax + 0x30]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x18], eax
call dword [section..00cfg]
push edi
push dword [ebp + 0xc]
push esi
push dword [esp + 0x24]
call ecx
add esp, 0x10
cmp eax, edi
mov eax, 0xffffffff
mov ecx, dword [esp + 0xc]
cmovne ecx, eax
mov dword [esp + 0xc], ecx
jmp 0x507b72
push 1
push 0
push ecx
mov eax, dword [esp + 0x1c]
push dword [eax + 0x30]
push eax
call fcn.00512720
add esp, 0x14
neg eax
mov eax, 0
sbb eax, eax
or esi, eax
mov dword [esp + 0xc], esi
jmp 0x507b72