Function at 0x504170
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 + 0x48], 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 + 0x54], eax
lea eax, [ecx + esi]
mov dword [esp + 0x3c], eax
add eax, 0xfffffff8
push edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x64], eax
call fcn.00506a20
mov dword [esp + 0xac], 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 + 0x50], eax
mov eax, dword [edx + 0x1c]
mov dword [esp + 0xa8], eax
mov eax, dword [edx + 0x80]
mov dword [esp + 0x48], 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 0
push esi
mov esi, dword [esp + 0x7c]
push esi
push dword [esp + 0x70]
call fcn.00506420
xor ecx, ecx
add esp, 0x24
cmp esi, edi
sete cl
add ecx, esi
mov dword [esp + 0x28], ecx
cmp ecx, dword [esp + 0x5c]
jae 0x504e76
mov esi, dword [esp + 0x24]
push dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov eax, ecx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x34], eax
mov eax, 0
sete al
push eax
push dword [esp + 0x54]
lea eax, [esp + 0xac]
push dword [esp + 0x44]
push ecx
push eax
push esi
push edi
call dword [esp + 0xc4]
mov edx, dword [esp + 0x48]
sub edx, dword [esp + 0x80]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x58]
sub eax, dword [esp + 0x48]
push eax
push edx
lea eax, [esp + 0x44]
mov dword [esp + 0xbc], edx
push eax
lea eax, [esp + 0x10c]
push edi
push eax
call fcn.00506230
mov edi, dword [esp + 0x50]
add esp, 0x34
test edi, edi
jne 0x504347
mov ecx, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x28], ecx
jmp 0x504e6c
mov ecx, dword [esp + 0x4c]
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 + 0x30]
mov dword [ebx + 8], 0
add ebx, 0xc
mov dword [esp + 0x18], ebx
mov dword [ebx], eax
cmp dword [esi + 0xa8], 1
jne 0x504382
inc eax
bsr edx, eax
shl edx, 8
jmp 0x5043d4
cmp eax, 0x20000
jne 0x5043a4
push 0
lea eax, [esi + 0x70]
push eax
push 0x1ffff
call fcn.00506180
add esp, 0xc
lea edx, [eax + 0x100]
jmp 0x5043d4
cmp eax, 0x3f
jbe 0x5043b1
bsr ecx, eax
add ecx, 0x13
jmp 0x5043b8
movzx ecx, byte [eax + 0x59ac90]
mov eax, dword [esi + 0x74]
movzx edx, byte [ecx + 0x59ab20]
mov eax, dword [eax + ecx*4]
inc eax
bsr eax, eax
sub edx, eax
shl edx, 8
add edx, dword [esi + 0x9c]
mov eax, dword [esp + 0x14]
mov dword [eax], edx
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + edi*8 - 4]
cmp ecx, dword [esp + 0x9c]
jbe 0x504494
mov ebx, dword [esp + 0x30]
mov edx, dword [eax + edi*8 - 8]
movaps xmm2, xmmword [esp + 0xd0]
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xbc], ecx
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 0x504c1d
mov ecx, dword [eax + 0x18]
movq qword [esp + 0x80], xmm0
mov dword [esp + 0x88], ecx
cmp edx, 3
jbe 0x504bc5
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov ebx, dword [esp + 0x4c]
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 0x504c2b
cmp dword [esi + 0xa8], 1
jne 0x5044aa
mov eax, 1
bsr ecx, eax
shl ecx, 8
jmp 0x5044be
mov eax, dword [esi + 0x74]
mov ecx, dword [esi + 0x9c]
mov eax, dword [eax]
inc eax
bsr eax, eax
shl eax, 8
sub ecx, eax
mov esi, dword [esp + 0x48]
lea eax, [ecx + edx]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x58], eax
lea ecx, [esi - 1]
lea eax, [edx + 0x1c]
mov dword [eax], 0x40000000
lea eax, [eax + 0x1c]
sub ecx, 1
jne 0x5044d3
xor eax, eax
mov dword [esp + 0x3c], eax
test edi, edi
je 0x5045e9
mov ebx, dword [esp + 0x40]
mov ecx, dword [ebx + eax*8]
mov eax, dword [ebx + eax*8 + 4]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x54], eax
cmp esi, eax
ja 0x5045d4
mov ebx, dword [esp + 0x24]
lea edi, [esi*8]
sub edi, esi
inc edi
lea edi, [edx + edi*4]
nop dword [eax + eax]
bsr edx, ecx
cmp dword [ebx + 0xa8], 1
jne 0x50453c
lea eax, [esi - 2]
bsr eax, eax
add eax, 0x10
add eax, edx
shl eax, 8
jmp 0x5045a7
mov eax, dword [ebx + 0x7c]
mov ecx, edx
mov ebx, dword [ebx + 0xa4]
mov eax, dword [eax + edx*4]
inc eax
bsr eax, eax
sub ecx, eax
shl ecx, 8
add ebx, ecx
cmp edx, 0x14
jb 0x504565
shl edx, 9
add ebx, 0xffffda00
add ebx, edx
lea eax, [esi - 3]
cmp eax, 0x7f
jbe 0x504575
bsr ecx, eax
add ecx, 0x24
jmp 0x50457c
movzx ecx, byte [esi + 0x59accd]
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x78]
mov eax, dword [eax + ecx*4]
movzx ecx, byte [ecx + 0x59ab90]
inc eax
bsr eax, eax
sub ecx, eax
shl ecx, 8
add ecx, dword [edx + 0xa0]
lea eax, [ecx + 0x33]
mov ecx, dword [esp + 0x34]
add eax, ebx
mov ebx, edx
add eax, dword [esp + 0x58]
mov edx, dword [esp + 0x30]
mov dword [edi + 4], esi
inc esi
mov dword [edi], ecx
mov dword [edi + 8], edx
mov dword [edi - 4], eax
add edi, 0x1c
cmp esi, dword [esp + 0x54]
jbe 0x504520
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
inc eax
mov dword [esp + 0x3c], eax
cmp eax, edi
jb 0x5044f3
mov ebx, dword [esp + 0x18]
dec esi
mov ecx, 1
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], ecx
cmp esi, ecx
jb 0x504b60
nop
cmp dword [ebx - 4], 0
jne 0x50460b
mov edi, dword [ebx]
inc edi
jmp 0x504610
mov edi, 1
mov edx, dword [esp + 0x24]
cmp dword [edx + 0xb0], 2
jne 0x504627
mov ebx, 0x800
lea esi, [edx + 0x70]
jmp 0x504671
cmp dword [edx + 0xa8], 1
jne 0x50463a
mov ebx, 0x600
lea esi, [edx + 0x70]
jmp 0x504671
mov eax, dword [esp + 0x94]
add eax, dword [esp + 0x60]
mov esi, dword [esp + 0x50]
mov ebx, dword [edx + 0x98]
movzx ecx, byte [eax + ecx - 1]
mov eax, dword [esi]
lea edx, [ebx - 0x100]
mov eax, dword [eax + ecx*4]
inc eax
bsr eax, eax
shl eax, 8
cmp eax, edx
cmovbe edx, eax
sub ebx, edx
mov edx, dword [esp + 0x24]
cmp dword [edx + 0xa8], 1
jne 0x504685
lea eax, [edi + 1]
bsr esi, eax
shl esi, 8
jmp 0x5046d9
cmp edi, 0x20000
jne 0x5046a9
push 0
push esi
push 0x1ffff
call fcn.00506180
mov edx, dword [esp + 0x30]
add esp, 0xc
lea esi, [eax + 0x100]
jmp 0x5046d9
cmp edi, 0x3f
jbe 0x5046b6
bsr ecx, edi
add ecx, 0x13
jmp 0x5046bd
movzx ecx, byte [edi + 0x59ac90]
mov eax, dword [edx + 0x74]
movzx esi, byte [ecx + 0x59ab20]
mov eax, dword [eax + ecx*4]
inc eax
bsr eax, eax
sub esi, eax
shl esi, 8
add esi, dword [edx + 0x9c]
cmp dword [edx + 0xa8], 1
lea eax, [edi - 1]
jne 0x5046ed
bsr ecx, edi
shl ecx, 8
jmp 0x50473f
cmp eax, 0x20000
jne 0x50470f
push 0
push dword [esp + 0x54]
push 0x1ffff
call fcn.00506180
add esp, 0xc
lea ecx, [eax + 0x100]
jmp 0x50473f
cmp eax, 0x3f
jbe 0x50471c
bsr ecx, eax
add ecx, 0x13
jmp 0x504723
movzx ecx, byte [eax + 0x59ac90]
mov eax, dword [edx + 0x74]
mov eax, dword [eax + ecx*4]
movzx ecx, byte [ecx + 0x59ab20]
inc eax
bsr eax, eax
sub ecx, eax
shl ecx, 8
add ecx, dword [edx + 0x9c]
mov edx, dword [esp + 0x18]
mov eax, dword [edx - 0xc]
sub eax, ecx
add eax, ebx
mov ebx, dword [edx + 0x10]
add eax, esi
lea esi, [edx + 0x1c]
mov dword [esp + 0x3c], esi
cmp eax, ebx
jg 0x50476f
mov dword [edx + 0x18], 0
mov ebx, eax
mov dword [edx + 0x14], 0
mov dword [esi], edi
mov dword [edx + 0x10], eax
mov edi, dword [edx + 0x18]
test edi, edi
je 0x504801
mov ecx, dword [esp + 0x1c]
mov edx, dword [edx + 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 0x5047be
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x74], eax
lea eax, [edx - 3]
mov dword [esp + 0x70], eax
jmp 0x5047ed
xor eax, eax
cmp dword [esi], eax
sete al
dec eax
add eax, edx
je 0x5047ed
mov esi, dword [esp + 0x70]
cmp eax, 3
jne 0x5047d8
lea edx, [esi - 1]
jmp 0x5047e1
mov edx, dword [esp + eax*4 + 0x70]
cmp eax, 2
jb 0x5047e5
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x18]
movq xmm0, qword [esp + 0x70]
movq qword [edx + 0x20], xmm0
mov dword [edx + 0x28], ecx
jmp 0x504811
movq xmm0, qword [edx + 4]
mov eax, dword [edx + 0xc]
movq qword [edx + 0x20], xmm0
mov dword [edx + 0x28], eax
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
add esi, ecx
cmp esi, dword [esp + 0x5c]
ja 0x504ae6
cmp ecx, dword [esp + 0x20]
je 0x504b5c
lea eax, [ebx + 0x80]
cmp dword [edx + 0x2c], eax
jle 0x504ae6
xor edx, edx
test edi, edi
setne dl
test edi, edi
jne 0x504855
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov dword [esp + 0x30], eax
jmp 0x50485d
mov dword [esp + 0x30], 0
mov edi, dword [esp + 0x24]
cmp dword [edi + 0xa8], 1
jne 0x504877
mov eax, 1
bsr ecx, eax
shl ecx, 8
jmp 0x50488b
mov eax, dword [edi + 0x74]
mov ecx, dword [edi + 0x9c]
mov eax, dword [eax]
inc eax
bsr eax, eax
shl eax, 8
sub ecx, eax
push dword [esp + 0x48]
lea eax, [ecx + ebx]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x1c]
push edx
add eax, 0x20
push eax
push dword [esp + 0x44]
lea eax, [esp + 0xb0]
push esi
push eax
push edi
push ebx
call dword [esp + 0xc4]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x58]
sub eax, esi
push eax
mov eax, dword [esp + 0xb8]
add eax, edi
push eax
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x10c]
push ebx
push eax
call fcn.00506230
mov edx, dword [esp + 0x9c]
add esp, 0x34
test edx, edx
je 0x504ae2
mov ecx, dword [ebx + edx*8 - 4]
cmp ecx, dword [esp + 0x9c]
ja 0x504b01
lea eax, [ecx + edi]
cmp eax, 0x1000
jae 0x504b01
xor ecx, ecx
mov dword [esp + 0x34], ecx
test edx, edx
je 0x504ae2
lea eax, [ebx - 4]
mov edx, dword [eax + 4]
lea ebx, [eax + 8]
mov dword [esp + 0x6c], ebx
mov ebx, dword [ebx]
mov dword [esp + 0x58], edx
test ecx, ecx
je 0x504949
mov eax, dword [eax]
inc eax
jmp 0x50494d
mov eax, dword [esp + 0x48]
mov dword [esp + 0x54], eax
cmp ebx, eax
jb 0x504acf
mov esi, dword [esp + 0x14]
lea ecx, [ebx + 0x59accd]
add edi, ebx
mov dword [esp + 0x18], ecx
lea eax, [edi*8]
sub eax, edi
lea esi, [esi + eax*4]
mov eax, 0xfffffffe
sub eax, dword [esp + 0x1c]
mov dword [esp + 0xa8], eax
mov eax, 0xfffffffd
sub eax, dword [esp + 0x1c]
mov dword [esp + 0x64], esi
mov dword [esp + 0xac], eax
nop dword [eax]
mov eax, dword [esp + 0x24]
bsr edx, edx
cmp dword [eax + 0xa8], 1
jne 0x5049c6
mov eax, dword [esp + 0xa8]
add eax, edi
bsr eax, eax
add eax, 0x10
add eax, edx
shl eax, 8
jmp 0x504a37
mov eax, dword [eax + 0x7c]
mov esi, edx
mov eax, dword [eax + edx*4]
inc eax
bsr eax, eax
sub esi, eax
mov eax, dword [esp + 0x24]
shl esi, 8
add esi, dword [eax + 0xa4]
cmp edx, 0x14
jb 0x5049f1
shl edx, 9
add esi, 0xffffda00
add esi, edx
mov eax, dword [esp + 0xac]
add eax, edi
cmp eax, 0x7f
jbe 0x504a07
bsr ecx, eax
add ecx, 0x24
jmp 0x504a0e
mov eax, dword [esp + 0x18]
movzx ecx, byte [eax]
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x78]
mov eax, dword [eax + ecx*4]
movzx ecx, byte [ecx + 0x59ab90]
inc eax
bsr eax, eax
sub ecx, eax
lea eax, [esi + 0x33]
mov esi, dword [esp + 0x64]
shl ecx, 8
add ecx, dword [edx + 0xa0]
add eax, ecx
mov edx, dword [esp + 0xb0]
add edx, eax
mov eax, dword [esp + 0x20]
cmp edi, eax
ja 0x504a52
cmp edx, dword [esi]
jge 0x504ac7
jmp 0x504a7e
lea ecx, [eax + 1]
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax*4]
mov ecx, edi
sub ecx, dword [esp + 0x20]
mov dword [esp + 0x20], edi
nop
mov dword [eax], 0x40000000
lea eax, [eax + 0x1c]
sub ecx, 1
jne 0x504a70
mov esi, dword [esp + 0x14]
lea eax, [edi*8]
mov ecx, dword [esp + 0x14]
sub eax, edi
dec dword [esp + 0x18]
dec edi
mov dword [esi + eax*4 + 8], ebx
dec ebx
mov esi, dword [esp + 0x58]
mov dword [ecx + eax*4 + 4], esi
mov esi, dword [esp + 0x30]
mov dword [ecx + eax*4 + 0xc], esi
mov esi, ecx
mov dword [esi + eax*4], edx
mov esi, dword [esp + 0x64]
mov edx, dword [esp + 0x58]
sub esi, 0x1c
mov dword [esp + 0x64], esi
cmp ebx, dword [esp + 0x54]
jae 0x5049a0
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x6c]
inc ecx
mov dword [esp + 0x34], ecx
cmp ecx, dword [esp + 0x68]
jb 0x504930
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
inc ecx
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], ebx
cmp ecx, esi
jbe 0x504600
jmp 0x504b60
mov esi, dword [esp + 0x14]
lea eax, [edi*8]
mov edx, dword [ebx + edx*8 - 8]
sub eax, edi
mov ebx, dword [esp + 0x30]
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xb8], edx
cmp dword [esi + eax*4 + 8], 0
mov dword [esp + 0xc0], ebx
jne 0x504b38
mov eax, dword [esi + eax*4 + 0xc]
jmp 0x504b3a
xor eax, eax
movups xmm1, xmmword [esp + 0xb4]
sub edi, eax
xor esi, esi
movaps xmm2, xmmword [esp + 0xd0]
cmp edi, 0x1000
cmovbe esi, edi
jmp 0x50441e
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 0x50441c
sub esi, ecx
sub esi, ebx
jmp 0x50441e
xor eax, eax
test ebx, ebx
sete al
dec eax
add eax, edx
je 0x504c07
mov esi, dword [esp + 0x80]
cmp eax, 3
jne 0x504be2
lea edx, [esi - 1]
jmp 0x504bee
mov edx, dword [esp + eax*4 + 0x80]
cmp eax, 2
jb 0x504bf5
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x80], edx
mov ebx, dword [esp + 0x4c]
movq xmm0, qword [esp + 0x80]
movq qword [ebx], xmm0
mov dword [ebx + 8], ecx
jmp 0x504c2b
mov ecx, dword [esp + 0x4c]
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 + 0x18], 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 0x504cd5
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 0x504c60
mov ecx, dword [esp + 0x18]
cmp ebx, ecx
ja 0x504e0b
mov edx, dword [esp + 0x14]
lea ebx, [edi*8]
sub ebx, edi
add edx, 8
sub ecx, edi
inc ecx
mov dword [esp + 0x18], ecx
lea ebx, [edx + ebx*4]
nop
mov edx, dword [esp + 0x2c]
mov esi, dword [ebx + 4]
add edx, esi
mov edi, dword [ebx]
mov eax, dword [ebx - 4]
mov dword [esp + 0x34], edi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x28], edx
test edi, edi
je 0x504dfb
push edi
push eax
push dword [esp + 0x34]
push esi
push dword [esp + 0x60]
call fcn.00506b70
mov ecx, dword [esp + 0x4c]
add esp, 0x14
mov edx, dword [esp + 0x44]
add ecx, 0xffffffe0
mov eax, dword [edx + 0xc]
cmp dword [esp + 0x28], ecx
ja 0x504e93
mov ecx, dword [esp + 0x2c]
movups xmm0, xmmword [ecx]
movups xmmword [eax], xmm0
cmp esi, 0x10
jbe 0x504d91
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 0x504d89
add ecx, 0x10
add edx, 0x10
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 0x504d71
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x44]
add dword [edx + 0xc], esi
cmp esi, 0xffff
jbe 0x504dae
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]
mov ecx, dword [esp + 0x6c]
mov word [eax + 4], si
mov eax, dword [edx + 4]
mov dword [eax], ecx
lea ecx, [edi - 3]
cmp ecx, 0xffff
jbe 0x504ddb
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 word [eax + 6], cx
lea eax, [edi + esi]
mov ecx, dword [esp + 0x2c]
add dword [edx + 4], 8
add ecx, eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x18]
add ebx, 0x1c
sub ecx, 1
mov dword [esp + 0x18], ecx
jne 0x504cf0
mov esi, dword [esp + 0x24]
cmp dword [esi + 0xb0], 2
je 0x504e2b
mov eax, dword [esi + 0x88]
inc eax
bsr eax, eax
shl eax, 8
mov dword [esi + 0x98], eax
mov eax, dword [esi + 0x8c]
inc eax
mov ebx, dword [esp + 0x14]
bsr eax, eax
mov ecx, dword [esp + 0x28]
shl eax, 8
mov dword [esi + 0x9c], eax
mov eax, dword [esi + 0x90]
inc eax
bsr eax, eax
shl eax, 8
mov dword [esi + 0xa0], eax
mov eax, dword [esi + 0x94]
inc eax
bsr eax, eax
shl eax, 8
mov dword [esi + 0xa4], eax
cmp ecx, dword [esp + 0x5c]
jb 0x5042c6
mov ecx, dword [esp + 0x11c]
mov eax, dword [esp + 0x38]
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 + 0x2c]
push dword [esp + 0x34]
push eax
call fcn.004c8430
add esp, 0x10
jmp 0x504d8d