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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x160
mov dword [esp + 0x5c], edx
mov dword [esp + 0x3c], ecx
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
xorps xmm0, xmm0
movaps xmmword [esp + 0xb0], xmm0
movaps xmmword [esp + 0xa0], xmm0
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x60], xmm0
movaps xmmword [esp + 0xe0], xmm0
movaps xmmword [esp + 0xd0], xmm0
movaps xmmword [esp + 0x140], xmm0
movaps xmmword [esp + 0x130], xmm0
lea ecx, [esp + 0xa0]
call fcn.00505410
lea esi, [esp + 0x60]
mov ecx, esi
mov edx, edi
call fcn.00505410
lea ecx, [esp + 0xd0]
mov edx, ebx
push esi
call fcn.00503f40
add esp, 4
mov edi, dword [ebx]
mov dword [esp + 0x2c], edi
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x18], ecx
sub edi, ecx
mov eax, 0
sbb eax, eax
neg al
movzx ecx, al
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x1c], edx
xor eax, eax
add ecx, edx
setb al
mov edx, dword [ebx + 4]
mov dword [esp + 0x14], edx
sub edx, ecx
mov dword [esp + 0x48], edx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
mov edx, dword [esp + 0xa8]
mov dword [esp + 0xc], edx
xor eax, eax
add ecx, edx
setb al
mov edx, dword [ebx + 8]
mov dword [esp + 0x38], edx
sub edx, ecx
mov dword [esp + 0x10], edx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
mov edx, dword [esp + 0xac]
mov dword [esp + 0x24], edx
xor eax, eax
add ecx, edx
setb al
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x58], edx
sub edx, ecx
mov dword [esp + 0x44], edx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x20], edx
xor eax, eax
add ecx, edx
setb al
mov edx, dword [ebx + 0x10]
mov dword [esp + 0x94], edx
sub edx, ecx
mov dword [esp + 0x40], edx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x28], edx
xor eax, eax
add ecx, edx
setb al
mov edx, dword [ebx + 0x14]
mov dword [esp + 0x90], edx
sub edx, ecx
mov dword [esp + 0x4c], edx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
mov edx, dword [esp + 0xb8]
mov dword [esp + 8], edx
xor eax, eax
add ecx, edx
setb al
mov edx, dword [ebx + 0x18]
mov dword [esp + 0x8c], edx
sub edx, ecx
mov dword [esp + 0x54], edx
mov ecx, 0
sbb ecx, eax
neg cl
mov esi, dword [ebx + 0x1c]
mov dword [esp + 0x88], esi
movzx ecx, cl
mov edx, dword [esp + 0xbc]
mov dword [esp + 4], edx
xor eax, eax
add ecx, edx
setb al
mov edx, esi
sub edx, ecx
mov dword [esp + 0x30], edx
mov ecx, 0
sbb ecx, eax
xor eax, eax
test cl, 0xff
setne al
mov dword [esp + 0xcc], eax
mov ebx, eax
neg ebx
mov ecx, dword [esp + 0x10]
sub ecx, eax
add edi, ebx
mov dword [esp + 0x9c], edi
adc dword [esp + 0x48], ebx
setb byte [esp + 0x53]
adc ecx, 0
mov dword [esp + 0x98], ecx
mov ecx, dword [esp + 0x18]
mov esi, ecx
mov edx, dword [esp + 0x2c]
add esi, edx
mov eax, dword [esp + 0x1c]
mov esi, eax
mov edi, dword [esp + 0x14]
adc esi, edi
mov dword [esp + 0x34], esi
add ecx, edx
mov dword [esp + 0x18], ecx
adc eax, edi
mov eax, dword [esp + 0x38]
adc dword [esp + 0xc], eax
mov eax, dword [esp + 0x58]
adc dword [esp + 0x24], eax
mov eax, dword [esp + 0x94]
adc dword [esp + 0x20], eax
mov esi, dword [esp + 0x28]
adc esi, dword [esp + 0x90]
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x8c]
adc dword [esp + 8], eax
mov eax, dword [esp + 0x88]
adc dword [esp + 4], eax
setb byte [esp + 0x38]
add byte [esp + 0x53], 0xff
adc ebx, dword [esp + 0x10]
adc dword [esp + 0x44], 0
adc dword [esp + 0x40], 0
adc dword [esp + 0x4c], 0
mov eax, dword [esp + 0xcc]
adc dword [esp + 0x54], eax
mov edi, dword [esp + 0x30]
adc edi, 0
sub edi, eax
mov dword [esp + 0x30], edi
mov eax, ecx
add eax, 1
mov dword [esp + 0x2c], eax
mov cl, 0xff
adc cl, 0
neg cl
mov edx, dword [esp + 0x34]
add edx, 1
mov eax, 0
adc eax, 0xffffffff
movzx ecx, cl
sub edx, ecx
mov dword [esp + 0x10], edx
sbb eax, 0
neg al
movzx ecx, al
mov edx, dword [esp + 0xc]
add edx, 1
mov eax, 0
adc eax, 0xffffffff
sub edx, ecx
mov dword [esp + 0x14], edx
sbb eax, 0
neg al
movzx eax, al
mov ebx, dword [esp + 0x24]
sub ebx, eax
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov edx, dword [esp + 0x20]
sub edx, eax
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov edi, esi
sub edi, eax
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
not eax
add eax, dword [esp + 8]
mov dword [esp + 0x1c], eax
mov ecx, 0
adc cl, 0xff
neg cl
mov esi, dword [esp + 4]
add esi, 1
mov eax, 0
adc eax, 0xffffffff
movzx ecx, cl
sub esi, ecx
sbb eax, 0
neg al
movzx eax, al
movzx ecx, byte [esp + 0x38]
cmp ecx, eax
mov eax, 0
sbb eax, eax
test al, al
mov eax, dword [esp + 0x2c]
cmovne eax, dword [esp + 0x18]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x10]
cmovne eax, dword [esp + 0x34]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
cmovne eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
cmovne ebx, dword [esp + 0x24]
mov dword [esp + 0x90], ebx
cmovne edx, dword [esp + 0x20]
cmovne edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
cmovne ecx, dword [esp + 8]
mov dword [esp + 0x1c], ecx
cmovne esi, dword [esp + 4]
mov ecx, ebx
shld ecx, eax, 1
mov dword [esp + 8], ecx
mov dword [esp + 0x94], edx
mov eax, edx
shld eax, ebx, 1
mov ebx, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x58], edi
mov eax, edi
shld eax, edx, 1
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x1c]
mov eax, ecx
shld eax, edi, 1
mov edi, eax
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x10]
shr eax, 0x1f
mov dword [esp + 0x24], eax
mov dword [esp + 0x38], esi
mov eax, esi
shr eax, 0x1f
mov dword [esp + 0x28], eax
shld esi, ecx, 1
mov dword [esp + 0x88], esi
mov eax, dword [esp + 8]
add eax, 0xffffffff
mov dword [esp + 0xc], eax
mov eax, 0
adc al, 0xff
neg al
movzx eax, al
mov ecx, ebx
sub ecx, eax
mov dword [esp + 0x20], ecx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov edx, dword [esp + 4]
sub edx, eax
mov esi, edx
mov eax, 0
sbb eax, eax
neg al
movzx ecx, al
not ecx
add ecx, edi
mov eax, 0
adc al, 0xff
neg al
movzx ebx, al
mov edi, dword [esp + 0x88]
mov edx, edi
add edx, 1
mov eax, 0
adc eax, 0xffffffff
sub edx, ebx
sbb eax, 0
neg al
movzx eax, al
cmp dword [esp + 0x28], eax
mov eax, 0
sbb eax, eax
xor ebx, ebx
test al, al
mov eax, dword [esp + 0xc]
cmovne eax, dword [esp + 8]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x20]
cmovne eax, dword [esp + 0x18]
mov dword [esp + 0x20], eax
cmovne esi, dword [esp + 4]
mov dword [esp + 0x34], esi
cmovne ecx, dword [esp + 0x8c]
mov dword [esp + 0x28], ecx
cmovne edx, edi
sete bl
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x2c]
shld eax, edi, 1
mov dword [esp + 0x18], eax
xor ecx, ecx
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
add esi, eax
lea eax, [eax + eax]
setb cl
add esi, eax
mov dword [esp + 0x24], esi
adc ecx, 0
xor eax, eax
mov esi, dword [esp + 0xc]
add esi, dword [esp + 0x90]
lea ebx, [ebx + edi*2]
setb al
mov dword [esp + 0x14], eax
xor eax, eax
mov edi, dword [esp + 0x20]
add edi, dword [esp + 0x94]
mov dword [esp + 0x20], edi
setb al
mov dword [esp + 8], eax
xor eax, eax
mov edi, dword [esp + 0x34]
add edi, dword [esp + 0x58]
mov dword [esp + 0x34], edi
setb al
mov dword [esp + 4], eax
xor eax, eax
mov edi, dword [esp + 0x28]
add edi, dword [esp + 0x1c]
mov dword [esp + 0x28], edi
setb al
mov dword [esp + 0x1c], eax
xor eax, eax
add edx, dword [esp + 0x38]
setb al
mov dword [esp + 0x38], eax
add ebx, dword [esp + 0x2c]
mov eax, ebx
mov dword [esp + 0x2c], ebx
mov edi, dword [esp + 0x18]
adc edi, dword [esp + 0x10]
mov dword [esp + 0x18], edi
mov ebx, dword [esp + 0x24]
adc ebx, 0
mov dword [esp + 0x24], ebx
adc esi, ecx
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x14]
adc esi, dword [esp + 0x20]
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x34]
adc dword [esp + 8], ecx
mov ecx, dword [esp + 0x28]
adc dword [esp + 4], ecx
adc dword [esp + 0x1c], edx
adc dword [esp + 0x38], 0
add eax, 1
mov dword [esp + 0x10], eax
mov cl, 0xff
adc cl, 0
neg cl
add edi, 1
mov eax, 0
adc eax, 0xffffffff
movzx ecx, cl
sub edi, ecx
mov dword [esp + 0x20], edi
sbb eax, 0
neg al
movzx ecx, al
add ebx, 1
mov eax, 0
adc eax, 0xffffffff
sub ebx, ecx
mov dword [esp + 0x34], ebx
sbb eax, 0
neg al
movzx eax, al
mov ecx, dword [esp + 0xc]
sub ecx, eax
mov dword [esp + 0x28], ecx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov edx, esi
sub edx, eax
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov ecx, dword [esp + 8]
sub ecx, eax
mov eax, 0
sbb eax, eax
neg al
movzx edi, al
not edi
add edi, dword [esp + 4]
mov eax, 0
adc al, 0xff
neg al
movzx ebx, al
mov esi, dword [esp + 0x1c]
add esi, 1
mov eax, 0
adc eax, 0xffffffff
sub esi, ebx
sbb eax, 0
neg al
movzx eax, al
cmp dword [esp + 0x38], eax
mov eax, 0
sbb eax, eax
test al, al
cmovne edx, dword [esp + 0x14]
mov dword [esp + 0x14], edx
cmovne ecx, dword [esp + 8]
mov dword [esp + 8], ecx
cmovne edi, dword [esp + 4]
cmovne esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0xfc], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x108], eax
mov ebx, dword [esp + 0x10]
cmovne ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
cmovne ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x34]
cmovne edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0x28]
cmovne eax, dword [esp + 0xc]
mov dword [esp + 0x110], ebx
mov dword [esp + 0x114], ecx
mov dword [esp + 0x118], edx
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], edi
mov dword [esp + 0x12c], esi
lea eax, [esp + 0x110]
lea esi, [esp + 0x130]
lea edx, [esp + 0xf0]
mov ecx, esi
push eax
call fcn.00503f40
add esp, 4
mov ecx, dword [esp + 0x3c]
mov edx, esi
call fcn.00505410
mov eax, dword [esp + 0xd8]
mov ecx, eax
mov edx, dword [esp + 0xdc]
shrd eax, edx, 0x1f
mov esi, eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xe0]
shrd edx, eax, 0x1f
mov edi, edx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0xe4]
shld edx, eax, 1
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0xd4]
shld ecx, eax, 1
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xd0]
mov dword [esp + 8], ecx
shld eax, ecx, 1
mov dword [esp + 0x20], eax
movsd xmm1, qword [esp + 0xe8]
movaps xmm0, xmm1
shufps xmm1, xmm1, 0x55
movd eax, xmm1
shr eax, 0x1f
mov dword [esp + 4], eax
add esi, 0xffffffff
mov dword [esp + 0x30], esi
mov eax, 0
adc al, 0xff
neg al
movzx eax, al
mov ecx, edi
sub ecx, eax
mov dword [esp + 0xc], ecx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
sub edx, eax
unpcklps xmm0, xmmword [0x56f550]
movss xmm1, dword [esp + 0xe4]
movlhps xmm1, xmm0
psrlq xmm1, 0x1f
paddq xmm0, xmm0
por xmm0, xmm1
mov eax, 0
sbb eax, eax
neg al
movzx edi, al
not edi
movd eax, xmm0
add edi, eax
mov ebx, 0
adc ebx, 0xffffffff
mov eax, ebx
neg al
pshufd xmm1, xmm0, 0xee
movd esi, xmm1
add esi, 1
mov ecx, 0
adc ecx, 0xffffffff
movzx eax, al
sub esi, eax
sbb ecx, 0
mov eax, ecx
neg al
movzx eax, al
cmp dword [esp + 4], eax
movd xmm1, ebx
movd xmm2, ecx
mov eax, 0
sbb eax, eax
xor ecx, ecx
test al, al
mov ebx, dword [esp + 0x30]
cmovne ebx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
cmovne eax, dword [esp + 0x24]
mov dword [esp + 0xc], eax
cmovne edx, dword [esp + 0x2c]
movd xmm3, edi
movd xmm4, esi
sete cl
mov dword [esp + 4], ecx
mov eax, dword [esp + 8]
lea ecx, [eax + eax]
mov eax, dword [esp + 0x20]
shrd ecx, eax, 0x1f
mov dword [esp + 0x2c], ecx
mov edi, dword [esp + 0x1c]
shrd eax, edi, 0x1f
mov dword [esp + 0x20], eax
shrd edi, ebx, 0x1f
mov dword [esp + 0x1c], edi
mov esi, dword [esp + 0xc]
shrd ebx, esi, 0x1f
mov dword [esp + 0x30], ebx
mov eax, edx
shld edx, esi, 1
mov dword [esp + 0x14], edx
punpckldq xmm3, xmm1
movd xmm1, dword [esp + 4]
pshufd xmm1, xmm1, 0x44
psllq xmm1, 0x3f
psrad xmm1, 0x1f
pshufd xmm1, xmm1, 0xf5
punpckldq xmm4, xmm2
punpcklqdq xmm3, xmm4
pand xmm3, xmm1
pandn xmm1, xmm0
por xmm1, xmm3
paddq xmm1, xmm1
pand xmm1, xmmword [0x56f540]
shr eax, 0x1f
movd ecx, xmm1
or ecx, eax
mov dword [esp + 0x34], ecx
pshufd xmm0, xmm1, 0x55
pshufd xmm2, xmm1, 0xee
movd eax, xmm0
movd esi, xmm2
or esi, eax
mov dword [esp + 0x18], esi
add edi, 0xffffffff
mov dword [esp + 0x10], edi
mov eax, 0
adc al, 0xff
neg al
movzx eax, al
sub ebx, eax
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
sub edx, eax
mov dword [esp + 0x24], edx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
not eax
add eax, ecx
mov dword [esp + 0xc], eax
mov eax, 0
adc al, 0xff
neg al
movzx edx, al
mov esi, dword [esp + 0x18]
add esi, 1
mov eax, 0
adc eax, 0xffffffff
sub esi, edx
pshufd xmm0, xmm1, 0xff
sbb eax, 0
neg al
movzx eax, al
movd edx, xmm0
cmp edx, eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
lea edi, [ecx + eax*2]
mov dword [esp + 0x28], edi
mov eax, 0
sbb eax, eax
xor ecx, ecx
test al, al
mov edx, dword [esp + 0x10]
cmovne edx, dword [esp + 0x1c]
mov dword [esp + 0x10], edx
cmovne ebx, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x24]
cmovne eax, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
cmovne eax, dword [esp + 0x34]
mov dword [esp + 0xc], eax
cmovne esi, dword [esp + 0x18]
sete cl
mov dword [esp + 0x44], ecx
lea eax, [edi + edi]
mov ebx, dword [esp + 0x2c]
shrd eax, ebx, 0x1f
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x20]
mov eax, ecx
shld eax, ebx, 1
mov dword [esp + 0x48], eax
mov ebx, edx
shld ebx, ecx, 1
mov dword [esp + 0x4c], ebx
mov edi, dword [esp + 0x1c]
mov eax, edi
shld eax, edx, 1
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x24]
mov eax, ecx
shld eax, edi, 1
mov dword [esp + 0x14], eax
mov edi, dword [esp + 0xc]
mov eax, edi
shld eax, ecx, 1
mov dword [esp + 0x38], eax
mov edx, esi
mov dword [esp + 0x34], esi
shr esi, 0x1f
shld edx, edi, 1
add ebx, 0xffffffff
mov dword [esp + 4], ebx
mov eax, 0
adc al, 0xff
neg al
movzx eax, al
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov dword [esp + 8], ecx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov ecx, dword [esp + 0x14]
sub ecx, eax
mov dword [esp + 0x54], ecx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
not eax
mov ebx, dword [esp + 0x38]
add eax, ebx
mov dword [esp + 0x18], eax
mov ecx, 0
adc cl, 0xff
neg cl
mov edi, edx
add edi, 1
mov eax, 0
adc eax, 0xffffffff
movzx ecx, cl
sub edi, ecx
sbb eax, 0
neg al
movzx eax, al
cmp esi, eax
mov eax, 0
sbb eax, eax
xor ecx, ecx
test al, al
mov eax, dword [esp + 4]
cmovne eax, dword [esp + 0x4c]
mov dword [esp + 4], eax
mov eax, dword [esp + 8]
cmovne eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov esi, dword [esp + 0x54]
cmovne esi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
cmovne eax, ebx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x44]
lea eax, [ebx + eax*2]
mov dword [esp + 0x30], eax
cmovne edi, edx
mov dword [esp + 0x44], edi
sete cl
lea eax, [ecx + eax*2]
mov edx, dword [esp + 0x3c]
mov ecx, dword [edx]
sub ecx, eax
mov dword [esp + 0x28], ecx
mov eax, 0
sbb eax, eax
neg al
movzx ecx, al
xor eax, eax
add ecx, dword [esp + 0x40]
setb al
mov edi, dword [edx + 4]
sub edi, ecx
mov dword [esp + 0x14], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x48]
setb al
mov edi, dword [edx + 8]
sub edi, ecx
mov dword [esp + 0x48], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 4]
setb al
mov edi, dword [edx + 0xc]
sub edi, ecx
mov dword [esp + 0x40], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 8]
setb al
mov edi, dword [edx + 0x10]
sub edi, ecx
mov dword [esp + 0x4c], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, esi
setb al
mov esi, dword [edx + 0x14]
sub esi, ecx
mov dword [esp + 8], esi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x18]
setb al
mov esi, dword [edx + 0x18]
sub esi, ecx
mov dword [esp + 4], esi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x44]
setb al
mov esi, dword [edx + 0x1c]
sub esi, ecx
mov edx, 0
sbb edx, eax
xor ecx, ecx
test dl, 0xff
setne cl
mov eax, ecx
neg eax
mov edi, dword [esp + 0x48]
mov edx, edi
sub edx, ecx
add dword [esp + 0x28], eax
adc dword [esp + 0x14], eax
setb bl
adc edx, 0
add bl, 0xff
adc eax, edi
mov edi, dword [esp + 0x40]
adc edi, 0
mov ebx, dword [esp + 0x4c]
adc ebx, 0
adc dword [esp + 8], 0
adc dword [esp + 4], ecx
adc esi, 0
sub esi, ecx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
mov dword [eax], ecx
mov ecx, dword [esp + 0x14]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], ebx
mov ecx, dword [esp + 8]
mov dword [eax + 0x14], ecx
mov ecx, dword [esp + 4]
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], esi
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0xa0]
mov edx, edi
add edx, eax
mov edx, dword [esp + 0xa4]
mov esi, dword [esp + 0x64]
mov ecx, edx
adc ecx, esi
mov dword [esp + 0x38], ecx
add edi, eax
mov dword [esp + 0x4c], edi
adc edx, esi
mov eax, dword [esp + 0xa8]
adc eax, dword [esp + 0x68]
mov edx, eax
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xac]
adc eax, dword [esp + 0x6c]
mov esi, eax
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xb0]
adc eax, dword [esp + 0x70]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xb4]
adc eax, dword [esp + 0x74]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb8]
adc eax, dword [esp + 0x78]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xbc]
adc eax, dword [esp + 0x7c]
mov dword [esp + 0x98], eax
setb byte [esp + 0x54]
mov eax, edi
add eax, 1
mov dword [esp + 0x14], eax
mov al, 0xff
adc al, 0
neg al
add ecx, 1
mov ebx, 0
adc ebx, 0xffffffff
movzx eax, al
sub ecx, eax
mov dword [esp + 0x28], ecx
sbb ebx, 0
neg bl
movzx ecx, bl
mov ebx, edx
add ebx, 1
mov eax, 0
adc eax, 0xffffffff
sub ebx, ecx
sbb eax, 0
neg al
movzx eax, al
mov ecx, esi
sub ecx, eax
mov dword [esp + 0x18], ecx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov ecx, dword [esp + 0x48]
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov ecx, dword [esp + 0x44]
sub ecx, eax
mov dword [esp + 8], ecx
mov eax, 0
sbb eax, eax
neg al
movzx esi, al
not esi
add esi, dword [esp + 0x40]
mov ecx, 0
adc cl, 0xff
neg cl
mov edi, dword [esp + 0x98]
mov edx, edi
add edx, 1
mov eax, 0
adc eax, 0xffffffff
movzx ecx, cl
sub edx, ecx
sbb eax, 0
neg al
movzx eax, al
movzx ecx, byte [esp + 0x54]
cmp ecx, eax
mov eax, 0
sbb eax, eax
test al, al
mov eax, dword [esp + 0x14]
cmovne eax, dword [esp + 0x4c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
cmovne eax, dword [esp + 0x38]
mov dword [esp + 0x28], eax
cmovne ebx, dword [esp + 0x9c]
mov eax, dword [esp + 0x18]
cmovne eax, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 4]
cmovne eax, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 8]
cmovne eax, dword [esp + 0x44]
mov dword [esp + 8], eax
cmovne esi, dword [esp + 0x40]
mov dword [esp + 0x40], esi
cmovne edx, edi
mov dword [esp + 0x48], edx
mov esi, dword [ebp + 8]
lea edi, [esp + 0xf0]
mov ecx, edi
mov edx, dword [ebp + 0x10]
push dword [ebp + 0x14]
call fcn.00507ec0
add esp, 4
mov ecx, esi
mov edx, edi
call fcn.00505410
mov eax, dword [esi]
sub eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, 0
sbb eax, eax
neg al
movzx ecx, al
xor eax, eax
add ecx, dword [esp + 0x28]
setb al
mov edi, dword [esi + 4]
sub edi, ecx
mov dword [esp + 0x28], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, ebx
setb al
mov edi, dword [esi + 8]
sub edi, ecx
mov ebx, edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x18]
setb al
mov edi, dword [esi + 0xc]
sub edi, ecx
mov dword [esp + 0x18], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 4]
setb al
mov edi, dword [esi + 0x10]
sub edi, ecx
mov dword [esp + 0x44], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 8]
setb al
mov edi, dword [esi + 0x14]
sub edi, ecx
mov dword [esp + 8], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x40]
setb al
mov edx, esi
mov esi, dword [esi + 0x18]
sub esi, ecx
mov dword [esp + 4], esi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x48]
setb al
mov esi, dword [edx + 0x1c]
sub esi, ecx
mov edx, 0
sbb edx, eax
xor ecx, ecx
test dl, 0xff
setne cl
mov eax, ecx
neg eax
mov edx, ebx
mov edi, ebx
sub edx, ecx
add dword [esp + 0x14], eax
adc dword [esp + 0x28], eax
setb bl
adc edx, 0
add bl, 0xff
adc eax, edi
mov ebx, dword [esp + 0x18]
adc ebx, 0
mov edi, dword [esp + 0x44]
adc edi, 0
adc dword [esp + 8], 0
adc dword [esp + 4], ecx
adc esi, 0
sub esi, ecx
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x14]
mov dword [eax], ecx
mov ecx, dword [esp + 0x28]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], edi
mov ecx, dword [esp + 8]
mov dword [eax + 0x14], ecx
mov ecx, dword [esp + 4]
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], esi
mov ebx, dword [esp + 0x30]
mov edx, dword [esp + 0x3c]
sub ebx, dword [edx]
mov eax, 0
sbb eax, eax
neg al
movzx ecx, al
xor eax, eax
add ecx, dword [edx + 4]
setb al
mov esi, dword [esp + 0x2c]
sub esi, ecx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [edx + 8]
setb al
mov edi, dword [esp + 0x20]
sub edi, ecx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [edx + 0xc]
setb al
sub dword [esp + 0x10], ecx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [edx + 0x10]
setb al
sub dword [esp + 0x1c], ecx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [edx + 0x14]
setb al
sub dword [esp + 0x24], ecx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [edx + 0x18]
setb al
sub dword [esp + 0xc], ecx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [edx + 0x1c]
setb al
sub dword [esp + 0x34], ecx
mov ecx, 0
sbb ecx, eax
xor eax, eax
test cl, 0xff
setne al
mov edx, eax
neg edx
mov ecx, edi
sub ecx, eax
add ebx, edx
mov dword [esp + 0x30], ebx
adc esi, edx
mov dword [esp + 0x2c], esi
setb bl
adc ecx, 0
add bl, 0xff
adc edx, edi
adc dword [esp + 0x10], 0
mov edi, dword [esp + 0x1c]
adc edi, 0
mov ebx, dword [esp + 0x24]
adc ebx, 0
adc dword [esp + 0xc], eax
mov edx, dword [esp + 0x34]
adc edx, 0
sub edx, eax
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
mov dword [eax], esi
mov esi, dword [esp + 0x2c]
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x10]
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], edi
mov dword [eax + 0x14], ebx
mov ecx, dword [esp + 0xc]
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x64]
mov esi, dword [esp + 0x68]
mov ecx, esi
shld ecx, eax, 1
mov dword [esp + 0x20], ecx
shld eax, edx, 1
mov dword [esp + 0x3c], eax
mov edi, dword [esp + 0x6c]
shrd esi, edi, 0x1f
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x70]
shrd edi, ecx, 0x1f
mov dword [esp + 8], edi
mov eax, dword [esp + 0x74]
shrd ecx, eax, 0x1f
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x78]
shrd eax, ecx, 0x1f
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x7c]
shrd ecx, eax, 0x1f
mov dword [esp + 0x24], ecx
shr eax, 0x1f
mov dword [esp + 4], eax
add esi, 0xffffffff
mov dword [esp + 0x30], esi
mov eax, 0
adc al, 0xff
neg al
movzx eax, al
sub edi, eax
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov ebx, dword [esp + 0xc]
sub ebx, eax
mov eax, 0
sbb eax, eax
neg al
movzx esi, al
not esi
add esi, dword [esp + 0x10]
mov ecx, 0
adc cl, 0xff
neg cl
mov edx, dword [esp + 0x24]
add edx, 1
mov eax, 0
adc eax, 0xffffffff
movzx ecx, cl
sub edx, ecx
sbb eax, 0
neg al
movzx eax, al
cmp dword [esp + 4], eax
mov eax, 0
sbb eax, eax
xor ecx, ecx
test al, al
sete cl
mov eax, dword [esp + 0x2c]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x30]
cmovne ecx, dword [esp + 0x1c]
cmovne edi, dword [esp + 8]
cmovne ebx, dword [esp + 0xc]
cmovne esi, dword [esp + 0x10]
cmovne edx, dword [esp + 0x24]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], edx
lea ecx, [esp + 0x60]
mov edx, ecx
call fcn.00505410
mov ecx, dword [esp + 0x5c]
lea edx, [esp + 0x130]
push ecx
call fcn.00503f40
add esp, 4
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x68]
mov eax, edx
shld eax, ecx, 1
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 8], eax
shld ecx, eax, 1
mov dword [esp + 0x30], ecx
mov esi, dword [esp + 0x6c]
shrd edx, esi, 0x1f
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x70]
shrd esi, ecx, 0x1f
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0x74]
shrd ecx, eax, 0x1f
mov dword [esp + 0x20], ecx
mov ebx, dword [esp + 0x78]
shrd eax, ebx, 0x1f
mov dword [esp + 0x3c], eax
mov edi, dword [esp + 0x7c]
shrd ebx, edi, 0x1f
shr edi, 0x1f
mov eax, edx
add eax, 0xffffffff
mov dword [esp + 4], eax
mov eax, 0
adc al, 0xff
neg al
movzx eax, al
sub esi, eax
mov dword [esp + 0x10], esi
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
mov ecx, dword [esp + 0x20]
sub ecx, eax
mov dword [esp + 0xc], ecx
mov eax, 0
sbb eax, eax
neg al
movzx eax, al
not eax
add eax, dword [esp + 0x3c]
mov dword [esp + 0x24], eax
mov ecx, 0
adc cl, 0xff
neg cl
mov edx, ebx
add edx, 1
mov eax, 0
adc eax, 0xffffffff
movzx ecx, cl
sub edx, ecx
sbb eax, 0
neg al
movzx eax, al
cmp edi, eax
mov ecx, 0
sbb ecx, ecx
xor eax, eax
test cl, cl
mov esi, dword [esp + 4]
cmovne esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
cmovne ecx, dword [esp + 0x18]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xc]
cmovne ecx, dword [esp + 0x20]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x24]
cmovne ecx, dword [esp + 0x3c]
mov dword [esp + 0x24], ecx
cmovne edx, ebx
mov dword [esp + 0x1c], edx
sete al
mov ecx, dword [esp + 8]
lea eax, [eax + ecx*2]
mov edx, dword [esp + 0x5c]
mov ecx, dword [edx]
sub ecx, eax
mov dword [esp + 0x3c], ecx
mov eax, 0
sbb eax, eax
neg al
movzx ecx, al
xor eax, eax
add ecx, dword [esp + 0x30]
setb al
mov edi, dword [edx + 4]
sub edi, ecx
mov dword [esp + 0x20], edi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x2c]
setb al
mov edi, dword [edx + 8]
sub edi, ecx
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, esi
setb al
mov esi, dword [edx + 0xc]
sub esi, ecx
mov dword [esp + 0x2c], esi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x10]
setb al
mov esi, dword [edx + 0x10]
sub esi, ecx
mov dword [esp + 0x30], esi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0xc]
setb al
mov esi, dword [edx + 0x14]
sub esi, ecx
mov dword [esp + 0xc], esi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x24]
setb al
mov esi, dword [edx + 0x18]
sub esi, ecx
mov dword [esp + 0x10], esi
mov ecx, 0
sbb ecx, eax
neg cl
movzx ecx, cl
xor eax, eax
add ecx, dword [esp + 0x1c]
setb al
mov esi, dword [edx + 0x1c]
sub esi, ecx
mov edx, 0
sbb edx, eax
xor ecx, ecx
test dl, 0xff
setne cl
mov eax, ecx
neg eax
mov edx, edi
sub edx, ecx
add dword [esp + 0x3c], eax
adc dword [esp + 0x20], eax
setb bl
adc edx, 0
add bl, 0xff
adc eax, edi
mov edi, dword [esp + 0x2c]
adc edi, 0
mov ebx, dword [esp + 0x30]
adc ebx, 0
adc dword [esp + 0xc], 0
adc dword [esp + 0x10], ecx
adc esi, 0
sub esi, ecx
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x3c]
mov dword [eax], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], ebx
mov ecx, dword [esp + 0xc]
mov dword [eax + 0x14], ecx
mov ecx, dword [esp + 0x10]
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret