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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x114
mov eax, dword [0x5b3480]
xor eax, esp
mov dword [esp + 0x110], eax
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
push ebx
push esi
mov esi, dword [ebp + 0x18]
mov dword [esp + 0x4c], eax
lea eax, [edx + 0x70]
mov dword [esp + 0x40], ecx
mov ecx, dword [ebp + 0x14]
push edi
push dword [ebp + 0x1c]
mov edi, dword [edx + 0xc]
add edi, dword [edx + 4]
mov dword [esp + 0x44], eax
lea eax, [ecx + esi]
mov dword [esp + 0x4c], eax
add eax, 0xfffffff8
push edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x6c], eax
call fcn.00506a20
mov dword [esp + 0xb0], eax
mov ecx, 0xfff
mov eax, dword [edx + 0xcc]
xorps xmm0, xmm0
cmp eax, ecx
mov ebx, dword [edx + 0x84]
movaps xmmword [esp + 0xd8], xmm0
cmovb ecx, eax
mov dword [esp + 0x1c], ebx
xor eax, eax
mov dword [esp + 0xa4], ecx
cmp dword [edx + 0xc8], 3
mov ecx, 0x59ac78
movups xmmword [esp + 0xbc], xmm0
setne al
mov dword [esp + 0xa0], 0
add eax, 3
mov dword [esp + 0x104], 0
mov dword [esp + 0x54], eax
mov eax, dword [edx + 0x1c]
mov dword [esp + 0xac], eax
mov eax, dword [edx + 0x80]
mov dword [esp + 0x40], eax
mov eax, dword [edx + 0xd4]
test eax, eax
push esi
cmovne ecx, eax
mov dword [esp + 0x100], 0
push 0
mov dword [esp + 0x108], 0
mov eax, dword [ecx + 0x10]
movups xmm0, xmmword [ecx]
mov dword [esp + 0x100], eax
lea eax, [esp + 0xf0]
push eax
movups xmmword [esp + 0xf4], xmm0
call fcn.00506340
push 2
push esi
mov esi, dword [esp + 0x78]
push esi
push dword [esp + 0x60]
call fcn.00506420
xor ecx, ecx
add esp, 0x24
cmp esi, edi
sete cl
add ecx, esi
mov dword [esp + 0x24], ecx
cmp ecx, dword [esp + 0x64]
jae 0x505c80
mov edi, dword [esp + 0x18]
push dword [esp + 0x4c]
mov esi, dword [esp + 0x3c]
mov eax, ecx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x20], eax
mov eax, 0
sete al
push eax
push dword [esp + 0x58]
lea eax, [esp + 0xb0]
push dword [esp + 0x54]
push ecx
push eax
push edi
push esi
call dword [esp + 0xc8]
mov edx, dword [esp + 0x44]
sub edx, dword [esp + 0x7c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x68]
sub eax, dword [esp + 0x44]
push eax
push edx
lea eax, [esp + 0x38]
mov dword [esp + 0xbc], edx
push eax
lea eax, [esp + 0x10c]
push esi
push eax
call fcn.00506230
mov esi, dword [esp + 0x44]
add esp, 0x34
test esi, esi
jne 0x505084
mov ecx, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x24], ecx
jmp 0x505c76
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx]
mov dword [ebx + 0x10], eax
mov eax, dword [ecx + 4]
mov dword [ebx + 0x14], eax
mov eax, dword [ecx + 8]
mov dword [ebx + 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 8], 0
add ebx, 0xc
mov dword [esp + 0x30], ebx
mov dword [ebx], eax
cmp dword [edi + 0xa8], 1
jne 0x5050c8
lea edx, [eax + 1]
bsr ecx, edx
shl edx, 8
shr edx, cl
shl ecx, 8
add edx, ecx
jmp 0x505125
cmp eax, 0x20000
jne 0x5050ea
push 2
lea eax, [edi + 0x70]
push eax
push 0x1ffff
call fcn.00506180
add esp, 0xc
lea edx, [eax + 0x100]
jmp 0x505121
cmp eax, 0x3f
jbe 0x5050f7
bsr edx, eax
add edx, 0x13
jmp 0x5050fe
movzx edx, byte [eax + 0x59ac90]
mov eax, dword [edi + 0x74]
mov eax, dword [eax + edx*4]
movzx edx, byte [edx + 0x59ab20]
inc eax
bsr ecx, eax
shl eax, 8
sub edx, ecx
shr eax, cl
shl edx, 8
sub edx, eax
add edx, dword [edi + 0x9c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov dword [ecx], edx
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + esi*8 - 4]
cmp ecx, dword [esp + 0x9c]
jbe 0x5051e9
movaps xmm2, xmmword [esp + 0xd0]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xbc], ecx
mov edx, dword [eax + esi*8 - 8]
mov dword [esp + 0xb8], edx
movups xmm1, xmmword [esp + 0xb4]
xor esi, esi
mov dword [esp + 0x20], esi
lea eax, [esi*8]
sub eax, esi
mov esi, dword [esp + 0x14]
movq xmm0, qword [esi + eax*4 + 0x10]
lea eax, [esi + eax*4]
test ecx, ecx
je 0x505a01
mov ecx, dword [eax + 0x18]
movq qword [esp + 0x80], xmm0
mov dword [esp + 0x88], ecx
cmp edx, 3
jbe 0x5059a9
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x84], eax
lea eax, [edx - 3]
mov dword [esp + 0x80], eax
movq xmm0, qword [esp + 0x80]
movq qword [ebx], xmm0
mov dword [ebx + 8], ecx
jmp 0x505a0f
cmp dword [edi + 0xa8], 1
jne 0x50520a
mov eax, 1
bsr ecx, eax
mov eax, 0x100
mov esi, ecx
shr eax, cl
shl esi, 8
add esi, eax
jmp 0x505226
mov eax, dword [edi + 0x74]
mov eax, dword [eax]
inc eax
bsr ecx, eax
shl eax, 8
imul esi, ecx, 0xffffff00
shr eax, cl
sub esi, eax
add esi, dword [edi + 0x9c]
lea eax, [esi + edx]
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
mov edi, esi
mov dword [esp + 0x58], eax
lea ecx, [esi - 1]
lea eax, [edx + 0x1c]
nop dword [eax]
mov dword [eax], 0x40000000
lea eax, [eax + 0x1c]
sub ecx, 1
jne 0x505240
xor eax, eax
mov dword [esp + 0x28], eax
cmp dword [esp + 0x10], eax
jbe 0x505364
mov ebx, dword [esp + 0x38]
mov ecx, dword [ebx + eax*8]
mov eax, dword [ebx + eax*8 + 4]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x54], eax
cmp edi, eax
ja 0x50534d
lea ebx, [edi*8]
sub ebx, edi
inc ebx
lea ebx, [edx + ebx*4]
nop word [eax + eax]
mov edx, dword [esp + 0x18]
bsr esi, ecx
cmp dword [edx + 0xa8], 1
jne 0x5052b7
lea edx, [edi - 2]
bsr ecx, edx
shl edx, 8
shr edx, cl
lea eax, [ecx + 0x10]
add eax, esi
shl eax, 8
add edx, eax
jmp 0x50531e
mov eax, dword [edx + 0x7c]
mov eax, dword [eax + esi*4]
inc eax
bsr ecx, eax
shl eax, 8
sub esi, ecx
shr eax, cl
shl esi, 8
sub esi, eax
lea eax, [edi - 3]
add esi, dword [edx + 0xa4]
cmp eax, 0x7f
jbe 0x5052e3
bsr ecx, eax
add ecx, 0x24
jmp 0x5052ea
movzx ecx, byte [edi + 0x59accd]
mov eax, dword [edx + 0x78]
mov dword [esp + 0x3c], ecx
mov edx, dword [eax + ecx*4]
mov eax, dword [esp + 0x3c]
inc edx
bsr ecx, edx
movzx eax, byte [eax + 0x59ab90]
sub eax, ecx
shl edx, 8
shr edx, cl
mov ecx, dword [esp + 0x18]
shl eax, 8
sub eax, edx
add eax, dword [ecx + 0xa0]
lea edx, [eax + 0x33]
add edx, esi
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x34]
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x58]
add eax, edx
mov dword [ebx + 4], edi
mov dword [ebx], ecx
inc edi
mov dword [ebx - 4], eax
add ebx, 0x1c
cmp edi, dword [esp + 0x54]
jbe 0x505290
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x10]
jb 0x505262
mov ebx, dword [esp + 0x30]
lea esi, [edi - 1]
mov dword [esp + 0x10], 1
mov dword [esp + 0x20], esi
cmp esi, 1
jb 0x505944
nop dword [eax]
cmp dword [ebx - 4], 0
jne 0x50538b
mov edi, dword [ebx]
inc edi
jmp 0x505390
mov edi, 1
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 0xb0], 2
jne 0x5053a7
mov dword [esp + 0x1c], 0x800
jmp 0x505400
cmp dword [ecx + 0xa8], 1
jne 0x5053ba
mov dword [esp + 0x1c], 0x600
jmp 0x505400
mov esi, dword [ecx + 0x98]
mov eax, dword [esp + 0x94]
add eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x10]
lea edx, [esi - 0x100]
movzx ecx, byte [eax + ecx - 1]
mov eax, dword [esp + 0x40]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
inc eax
bsr ecx, eax
shl eax, 8
shr eax, cl
shl ecx, 8
add eax, ecx
mov ecx, dword [esp + 0x18]
cmp eax, edx
cmovbe edx, eax
sub esi, edx
mov dword [esp + 0x1c], esi
cmp dword [ecx + 0xa8], 1
jne 0x50541f
lea esi, [edi + 1]
bsr ecx, esi
shl esi, 8
shr esi, cl
shl ecx, 8
add esi, ecx
mov ecx, dword [esp + 0x18]
jmp 0x505481
cmp edi, 0x20000
jne 0x505446
push 2
push dword [esp + 0x44]
push 0x1ffff
call fcn.00506180
mov ecx, dword [esp + 0x24]
add esp, 0xc
lea esi, [eax + 0x100]
jmp 0x505481
cmp edi, 0x3f
jbe 0x505453
bsr edx, edi
add edx, 0x13
jmp 0x50545a
movzx edx, byte [edi + 0x59ac90]
mov eax, dword [ecx + 0x74]
movzx esi, byte [edx + 0x59ab20]
mov eax, dword [eax + edx*4]
inc eax
bsr ecx, eax
shl eax, 8
sub esi, ecx
shr eax, cl
mov ecx, dword [esp + 0x18]
shl esi, 8
sub esi, eax
add esi, dword [ecx + 0x9c]
cmp dword [ecx + 0xa8], 1
lea eax, [edi - 1]
jne 0x50549e
bsr ecx, edi
mov edx, edi
shl edx, 8
shr edx, cl
shl ecx, 8
add edx, ecx
jmp 0x5054fb
cmp eax, 0x20000
jne 0x5054c0
push 2
push dword [esp + 0x44]
push 0x1ffff
call fcn.00506180
add esp, 0xc
lea edx, [eax + 0x100]
jmp 0x5054fb
cmp eax, 0x3f
jbe 0x5054cd
bsr edx, eax
add edx, 0x13
jmp 0x5054d4
movzx edx, byte [eax + 0x59ac90]
mov eax, dword [ecx + 0x74]
mov eax, dword [eax + edx*4]
movzx edx, byte [edx + 0x59ab20]
inc eax
bsr ecx, eax
shl eax, 8
sub edx, ecx
shr eax, cl
shl edx, 8
sub edx, eax
mov eax, dword [esp + 0x18]
add edx, dword [eax + 0x9c]
mov eax, dword [ebx - 0xc]
mov ecx, dword [ebx + 0x10]
sub eax, edx
add eax, dword [esp + 0x1c]
add eax, esi
mov dword [esp + 0x28], ecx
lea esi, [ebx + 0x1c]
mov dword [esp + 0x3c], esi
cmp eax, ecx
jg 0x50552f
mov dword [ebx + 0x18], 0
mov dword [ebx + 0x14], 0
mov dword [esi], edi
mov dword [esp + 0x28], eax
mov dword [ebx + 0x10], eax
mov edi, dword [ebx + 0x18]
test edi, edi
je 0x5055cb
mov ecx, dword [esp + 0x10]
mov edx, dword [ebx + 0x14]
sub ecx, edi
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [esp + 0x14]
movq xmm0, qword [ecx + eax*4 + 0x10]
mov ecx, dword [ecx + eax*4 + 0x18]
movq qword [esp + 0x70], xmm0
mov dword [esp + 0x78], ecx
cmp edx, 3
jbe 0x50558c
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x74], eax
lea eax, [edx - 3]
mov dword [esp + 0x70], eax
movq xmm0, qword [esp + 0x70]
movq qword [ebx + 0x20], xmm0
mov dword [ebx + 0x28], ecx
jmp 0x5055db
xor eax, eax
cmp dword [esi], eax
sete al
dec eax
add eax, edx
je 0x5055bb
mov esi, dword [esp + 0x70]
cmp eax, 3
jne 0x5055a6
lea edx, [esi - 1]
jmp 0x5055af
mov edx, dword [esp + eax*4 + 0x70]
cmp eax, 2
jb 0x5055b3
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], edx
movq xmm0, qword [esp + 0x70]
movq qword [ebx + 0x20], xmm0
mov dword [ebx + 0x28], ecx
jmp 0x5055db
movq xmm0, qword [ebx + 4]
mov eax, dword [ebx + 0xc]
movq qword [ebx + 0x20], xmm0
mov dword [ebx + 0x28], eax
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
add esi, eax
cmp esi, dword [esp + 0x64]
ja 0x5058be
cmp eax, dword [esp + 0x20]
je 0x505940
xor ebx, ebx
test edi, edi
setne bl
test edi, edi
jne 0x505610
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov dword [esp + 0x1c], eax
jmp 0x505618
mov dword [esp + 0x1c], 0
mov edi, dword [esp + 0x18]
cmp dword [edi + 0xa8], 1
jne 0x50563d
mov eax, 1
bsr ecx, eax
mov eax, 0x100
mov edx, ecx
shr eax, cl
shl edx, 8
add edx, eax
jmp 0x505659
mov eax, dword [edi + 0x74]
mov eax, dword [eax]
inc eax
bsr ecx, eax
shl eax, 8
imul edx, ecx, 0xffffff00
shr eax, cl
sub edx, eax
add edx, dword [edi + 0x9c]
push dword [esp + 0x4c]
mov eax, dword [esp + 0x2c]
add eax, edx
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x34]
push ebx
mov ebx, dword [esp + 0x50]
add eax, 0x20
push eax
push ebx
push esi
lea eax, [esp + 0xb8]
push eax
push edi
mov edi, dword [esp + 0x54]
push edi
call dword [esp + 0xc8]
mov dword [esp + 0x50], eax
sub ebx, esi
mov eax, dword [esp + 0xb4]
mov esi, dword [esp + 0x30]
add eax, esi
push ebx
push eax
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x10c]
push edi
push eax
call fcn.00506230
mov ebx, dword [esp + 0x64]
add esp, 0x34
test ebx, ebx
je 0x5058be
mov ecx, dword [edi + ebx*8 - 4]
cmp ecx, dword [esp + 0x9c]
ja 0x5058dd
lea eax, [ecx + esi]
cmp eax, 0x1000
jae 0x5058dd
xor edx, edx
mov dword [esp + 0x34], edx
test ebx, ebx
je 0x5058be
lea eax, [edi - 4]
mov ecx, dword [eax + 4]
lea ebx, [eax + 8]
mov dword [esp + 0x6c], ebx
mov ebx, dword [ebx]
mov dword [esp + 0x28], ecx
mov dword [esp + 0xa0], ebx
test edx, edx
je 0x505712
mov eax, dword [eax]
inc eax
jmp 0x505716
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x58], eax
cmp ebx, eax
jb 0x5058ab
mov ecx, dword [esp + 0x14]
lea edi, [ebx + esi]
lea eax, [edi*8]
sub eax, edi
lea edx, [ebx + 0x59accd]
mov dword [esp + 0x54], edx
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x60], eax
mov eax, 0xfffffffe
sub eax, esi
mov dword [esp + 0xac], eax
mov eax, 0xfffffffd
sub eax, esi
mov dword [esp + 0xb0], eax
nop dword [eax]
nop word [eax + eax]
mov eax, dword [esp + 0x18]
bsr esi, ecx
cmp dword [eax + 0xa8], 1
jne 0x50579d
mov edx, dword [esp + 0xac]
add edx, edi
bsr ecx, edx
shl edx, 8
shr edx, cl
lea eax, [ecx + 0x10]
add eax, esi
shl eax, 8
add edx, eax
jmp 0x505809
mov eax, dword [eax + 0x7c]
mov eax, dword [eax + esi*4]
inc eax
bsr ecx, eax
shl eax, 8
sub esi, ecx
shr eax, cl
mov ecx, dword [esp + 0x18]
shl esi, 8
sub esi, eax
mov eax, dword [esp + 0xb0]
add eax, edi
add esi, dword [ecx + 0xa4]
cmp eax, 0x7f
jbe 0x5057d3
bsr ebx, eax
add ebx, 0x24
jmp 0x5057d6
movzx ebx, byte [edx]
mov eax, dword [ecx + 0x78]
mov edx, dword [eax + ebx*4]
movzx eax, byte [ebx + 0x59ab90]
inc edx
bsr ecx, edx
mov ebx, dword [esp + 0xa0]
sub eax, ecx
shl edx, 8
shr edx, cl
mov ecx, dword [esp + 0x18]
shl eax, 8
sub eax, edx
add eax, dword [ecx + 0xa0]
lea edx, [eax + 0x33]
add edx, esi
add edx, dword [esp + 0x68]
mov esi, dword [esp + 0x20]
cmp edi, esi
ja 0x50581f
mov ecx, dword [esp + 0x60]
cmp edx, dword [ecx]
jge 0x50587c
jmp 0x50584e
lea ecx, [esi + 1]
mov dword [esp + 0x20], edi
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax*4]
mov ecx, edi
sub ecx, esi
nop word [eax + eax]
mov dword [eax], 0x40000000
lea eax, [eax + 0x1c]
sub ecx, 1
jne 0x505840
mov esi, dword [esp + 0x14]
lea eax, [edi*8]
mov ecx, dword [esp + 0x14]
sub eax, edi
mov dword [esi + eax*4 + 8], ebx
mov esi, dword [esp + 0x28]
mov dword [ecx + eax*4 + 4], esi
mov esi, dword [esp + 0x1c]
mov dword [ecx + eax*4 + 0xc], esi
mov esi, ecx
mov ecx, dword [esp + 0x60]
mov dword [esi + eax*4], edx
mov edx, dword [esp + 0x54]
sub ecx, 0x1c
dec ebx
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x28]
dec edx
dec edi
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x54], edx
cmp ebx, dword [esp + 0x58]
jae 0x505770
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
inc edx
mov dword [esp + 0x34], edx
cmp edx, dword [esp + 0x30]
jb 0x5056f2
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
inc edi
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x10], edi
mov dword [esp + 0x30], ebx
cmp edi, esi
jbe 0x505380
jmp 0x505944
mov edx, dword [edi + ebx*8 - 8]
lea eax, [esi*8]
mov edi, dword [esp + 0x14]
sub eax, esi
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xb8], edx
cmp dword [edi + eax*4 + 8], 0
mov dword [esp + 0xc0], ebx
jne 0x505914
mov eax, dword [edi + eax*4 + 0xc]
jmp 0x505916
xor eax, eax
movups xmm1, xmmword [esp + 0xb4]
sub esi, eax
movaps xmm2, xmmword [esp + 0xd0]
mov dword [esp + 0x10], esi
xor esi, esi
cmp dword [esp + 0x10], 0x1000
cmovbe esi, dword [esp + 0x10]
jmp 0x505173
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
lea eax, [esi*8]
sub eax, esi
movups xmm1, xmmword [ecx + eax*4]
movq xmm2, qword [ecx + eax*4 + 0x10]
mov eax, dword [ecx + eax*4 + 0x18]
movaps xmm0, xmm1
psrldq xmm0, 8
movd ecx, xmm0
movaps xmm0, xmm1
psrldq xmm0, 0xc
movd ebx, xmm0
mov dword [esp + 0x98], eax
movups xmmword [esp + 0xb4], xmm1
mov edx, dword [esp + 0xb8]
movaps xmmword [esp + 0xd0], xmm2
lea eax, [ecx + ebx]
cmp esi, eax
jbe 0x505171
sub esi, ecx
sub esi, ebx
jmp 0x505173
xor eax, eax
test ebx, ebx
sete al
dec eax
add eax, edx
je 0x5059eb
mov esi, dword [esp + 0x80]
cmp eax, 3
jne 0x5059c6
lea edx, [esi - 1]
jmp 0x5059d2
mov edx, dword [esp + eax*4 + 0x80]
cmp eax, 2
jb 0x5059d9
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x80], edx
mov ebx, dword [esp + 0x50]
movq xmm0, qword [esp + 0x80]
movq qword [ebx], xmm0
mov dword [ebx + 8], ecx
jmp 0x505a0f
mov ecx, dword [esp + 0x50]
movq qword [ecx], xmm0
mov eax, dword [eax + 0x18]
mov dword [ecx + 8], eax
mov edx, dword [esp + 0x20]
lea ecx, [edx + 1]
lea eax, [ecx*8]
mov dword [esp + 0x10], ecx
sub eax, ecx
mov edi, ecx
lea esi, [esi + eax*4]
mov eax, dword [esp + 0x98]
movups xmmword [esi], xmm1
movq qword [esi + 0x10], xmm2
mov dword [esi + 0x18], eax
test edx, edx
je 0x505ab5
nop
mov ecx, dword [esp + 0x14]
lea eax, [edx*8]
sub eax, edx
lea esi, [esi - 0x1c]
movups xmm1, xmmword [ecx + eax*4]
lea edx, [ecx + eax*4]
dec edi
movq xmm0, qword [edx + 0x10]
mov ebx, edi
movq qword [esp + 0x110], xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
movd ecx, xmm0
movups xmm0, xmmword [edx]
psrldq xmm1, 0xc
movups xmmword [esi], xmm0
movq xmm0, qword [edx + 0x10]
movd eax, xmm1
movq qword [esi + 0x10], xmm0
add ecx, eax
mov eax, dword [edx + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x20]
sub eax, ecx
cmp ecx, dword [esp + 0x20]
sbb edx, edx
and edx, eax
mov dword [esp + 0x20], edx
ja 0x505a40
mov ecx, dword [esp + 0x10]
cmp ebx, ecx
ja 0x505bf9
mov edx, dword [esp + 0x14]
lea ebx, [edi*8]
sub ebx, edi
add edx, 8
sub ecx, edi
inc ecx
mov dword [esp + 0x10], ecx
lea ebx, [edx + ebx*4]
nop
mov edi, dword [ebx]
mov esi, dword [ebx + 4]
mov eax, dword [ebx - 4]
mov dword [esp + 0x34], edi
mov dword [esp + 0x6c], eax
lea edx, [edi + esi]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x2c]
add edx, esi
mov dword [esp + 0x24], edx
test edi, edi
je 0x505be9
push edi
push eax
push dword [esp + 0x34]
push esi
push dword [esp + 0x50]
call fcn.00506b70
mov ecx, dword [esp + 0x5c]
add esp, 0x14
mov edx, dword [esp + 0x44]
add ecx, 0xffffffe0
mov eax, dword [edx + 0xc]
cmp dword [esp + 0x24], ecx
ja 0x505c9d
mov ecx, dword [esp + 0x2c]
movups xmm0, xmmword [ecx]
movups xmmword [eax], xmm0
cmp esi, 0x10
jbe 0x505b80
movups xmm0, xmmword [ecx + 0x10]
lea edx, [ecx + 0x10]
mov ecx, dword [esp + 0x44]
lea eax, [esi - 0x10]
mov ecx, dword [ecx + 0xc]
add ecx, 0x10
lea edi, [ecx + eax]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x505b78
add ecx, 0x10
add edx, 0x10
nop dword [eax + eax]
movups xmm0, xmmword [edx]
lea edx, [edx + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [edx - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, edi
jb 0x505b60
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x44]
add dword [edx + 0xc], esi
cmp esi, 0xffff
jbe 0x505b9d
mov eax, dword [edx + 4]
sub eax, dword [edx]
sar eax, 3
mov dword [edx + 0x24], 1
mov dword [edx + 0x28], eax
mov eax, dword [edx + 4]
add edi, 0xfffffffd
mov ecx, dword [esp + 0x6c]
mov word [eax + 4], si
mov eax, dword [edx + 4]
mov dword [eax], ecx
cmp edi, 0xffff
jbe 0x505bca
mov eax, dword [edx + 4]
sub eax, dword [edx]
sar eax, 3
mov dword [edx + 0x24], 2
mov dword [edx + 0x28], eax
mov eax, dword [edx + 4]
mov ecx, dword [esp + 0x10]
mov word [eax + 6], di
mov eax, dword [esp + 0x2c]
add dword [edx + 4], 8
add eax, dword [esp + 0x68]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], eax
add ebx, 0x1c
sub ecx, 1
mov dword [esp + 0x10], ecx
jne 0x505ad0
mov edi, dword [esp + 0x18]
cmp dword [edi + 0xb0], 2
je 0x505c20
mov eax, dword [edi + 0x88]
inc eax
bsr ecx, eax
shl eax, 8
shr eax, cl
shl ecx, 8
add eax, ecx
mov dword [edi + 0x98], eax
mov eax, dword [edi + 0x8c]
inc eax
mov ebx, dword [esp + 0x14]
bsr ecx, eax
shl eax, 8
shr eax, cl
shl ecx, 8
add eax, ecx
mov dword [edi + 0x9c], eax
mov eax, dword [edi + 0x90]
inc eax
bsr ecx, eax
shl eax, 8
shr eax, cl
shl ecx, 8
add eax, ecx
mov dword [edi + 0xa0], eax
mov eax, dword [edi + 0x94]
inc eax
bsr ecx, eax
shl eax, 8
shr eax, cl
shl ecx, 8
add eax, ecx
mov ecx, dword [esp + 0x24]
mov dword [edi + 0xa4], eax
cmp ecx, dword [esp + 0x64]
jb 0x505006
mov ecx, dword [esp + 0x11c]
mov eax, dword [esp + 0x48]
sub eax, dword [esp + 0x2c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004913e0
mov esp, ebp
pop ebp
ret
push ecx
push dword [esp + 0x28]
push dword [esp + 0x34]
push eax
call fcn.004c8430
add esp, 0x10
jmp 0x505b7c