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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x74
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x18], edx
mov edx, dword [ebp + 0xc]
mov ebx, edx
push edi
mov edi, 1
mov eax, dword [esi + 0x5c]
mov ecx, dword [esi + 0xb8]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0xc0]
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 0x64]
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0xbc]
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
sub ebx, eax
add ebx, dword [ebp + 0x10]
mov dword [esp + 0x10], eax
mov eax, ebx
shl edi, cl
mov ecx, dword [esi + 0xc]
sub eax, ecx
cmp eax, edi
jbe 0x5ab2b1
sub ebx, edi
jmp 0x5ab2b3
mov ebx, ecx
cmp dword [esi + 0x18], 0
mov edi, dword [ebp + 8]
cmovne ebx, ecx
mov ecx, dword [ebp + 0x10]
add ecx, edx
mov dword [esp + 0xc], ebx
add ebx, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
lea eax, [ecx - 8]
mov dword [esp + 0x40], eax
mov eax, dword [edi]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 4]
mov dword [esp + 0x44], eax
mov eax, dword [esi + 0xb4]
mov esi, dword [eax + 0x5c]
mov edi, dword [eax + 4]
mov dword [esp + 0x64], esi
mov esi, dword [eax + 0x64]
mov dword [esp + 0x6c], esi
mov esi, dword [eax + 0xc]
add esi, edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x18], esi
mov esi, dword [eax]
sub edi, esi
add edi, dword [esp + 0xc]
mov dword [esp + 0x20], esi
mov esi, dword [eax + 0xc0]
mov dword [esp + 0x34], edi
add esi, 8
mov edi, dword [eax + 0xbc]
mov eax, dword [esp + 0x20]
add edi, 8
sub eax, dword [esp + 0x18]
sub eax, ebx
mov ebx, 0
add eax, edx
lea eax, [ecx - 8]
sete bl
add ebx, edx
cmp ebx, eax
jae 0x5ab98d
mov eax, 0x20
sub eax, dword [esp + 0x60]
mov dword [esp + 0x50], eax
mov eax, 0x40
sub eax, dword [esp + 0x5c]
mov dword [esp + 0x4c], eax
mov eax, 0x40
sub eax, esi
mov dword [esp + 0x60], eax
mov eax, 0x20
sub eax, edi
mov dword [esp + 0x68], eax
lea esp, [esp]
push 0xcf1bbcdc
push 0xb7a56463
push dword [ebx + 4]
push dword [ebx]
call fcn.00620b50
mov ecx, dword [esp + 0x4c]
call fcn.00622f20
imul esi, dword [ebx], 0x9e3779b1
mov edi, eax
mov ecx, dword [esp + 0x50]
push 0xcf1bbcdc
push 0xb7a56463
push dword [ebx + 4]
mov eax, esi
push dword [ebx]
shr eax, cl
mov dword [esp + 0x6c], eax
call fcn.00620b50
mov ecx, dword [esp + 0x60]
call fcn.00622f20
mov ecx, dword [esp + 0x68]
mov edx, eax
mov eax, dword [esp + 0x64]
shr esi, cl
mov ecx, edx
shr ecx, 8
mov eax, dword [eax + ecx*4]
mov ecx, esi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x6c]
shr ecx, 8
mov ecx, dword [eax + ecx*4]
mov eax, dword [esp + 0x24]
xor eax, edx
mov dword [esp + 0x7c], ecx
xor edx, edx
test al, al
mov eax, ecx
sete dl
xor eax, esi
mov esi, dword [esp + 0x10]
xor ecx, ecx
test al, al
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x3c]
mov eax, ebx
sete cl
sub eax, esi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x2c]
lea eax, [eax + edi*4]
mov dword [esp + 0x78], ecx
mov ecx, dword [eax]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x70], ecx
add ecx, esi
mov dword [esp + 0x5c], ecx
mov edx, dword [edx + eax*4]
mov dword [esp + 0x48], edx
lea edi, [edx + esi]
mov esi, dword [esp + 0x28]
sub esi, dword [esp + 0x30]
inc esi
mov dword [esp + 0x54], esi
cmp esi, dword [esp + 0xc]
jae 0x5ab46a
mov edx, esi
sub edx, dword [esp + 0x34]
add edx, dword [esp + 0x38]
jmp 0x5ab470
mov edx, dword [esp + 0x10]
add edx, esi
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x28]
mov dword [ecx + eax*4], esi
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [eax], esi
mov eax, dword [esp + 0xc]
sub eax, dword [esp + 0x54]
dec eax
cmp eax, 3
jb 0x5ab6d0
lea eax, [ebx + 1]
mov dword [esp + 0x58], eax
mov esi, eax
mov eax, dword [edx]
cmp eax, dword [esi]
mov esi, dword [esp + 0x54]
jne 0x5ab6d0
cmp esi, dword [esp + 0xc]
lea ecx, [edx + 4]
mov edi, dword [esp + 0x14]
mov edx, ecx
mov eax, edi
mov dword [esp + 0x54], ecx
cmovb eax, dword [esp + 0x20]
mov esi, edi
add ebx, 5
mov dword [esp + 0x48], eax
mov eax, ebx
sub eax, ecx
mov ecx, ebx
add eax, dword [esp + 0x48]
cmp eax, edi
cmovb esi, eax
mov dword [esp + 0x5c], esi
add esi, 0xfffffffd
cmp ebx, esi
jae 0x5ab520
mov ecx, dword [ebx]
mov eax, edx
xor ecx, dword [eax]
je 0x5ab4ff
bsf eax, ecx
mov esi, eax
mov dword [esp + 0x5c], eax
shr esi, 3
jmp 0x5ab548
lea ecx, [ebx + 4]
lea edx, [eax + 4]
cmp ecx, esi
jae 0x5ab520
lea esp, [esp]
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x5ab582
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x5ab510
mov esi, dword [esp + 0x5c]
lea eax, [esi - 1]
cmp ecx, eax
jae 0x5ab539
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x5ab539
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x5ab544
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x5ab544
inc ecx
mov esi, ecx
sub esi, ebx
mov eax, dword [esp + 0x54]
add eax, esi
cmp eax, dword [esp + 0x48]
jne 0x5ab5e2
mov eax, dword [esp + 0xc]
lea ecx, [esi + ebx]
add eax, dword [esp + 0x10]
lea ebx, [edi - 3]
mov dword [esp + 0x54], ecx
mov edx, eax
cmp ecx, ebx
jae 0x5ab5ba
mov eax, dword [eax]
xor eax, dword [ecx]
je 0x5ab594
bsf eax, eax
mov dword [esp + 0x5c], eax
shr eax, 3
jmp 0x5ab5e0
bsf eax, eax
mov esi, eax
mov dword [esp + 0x5c], eax
shr esi, 3
sub esi, ebx
add esi, ecx
jmp 0x5ab548
mov edx, dword [esp + 0x10]
add ecx, 4
add edx, 4
add edx, dword [esp + 0xc]
cmp ecx, ebx
jae 0x5ab5ba
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x5ab66e
add ecx, 4
add edx, 4
cmp ecx, ebx
jb 0x5ab5a6
lea eax, [edi - 1]
cmp ecx, eax
jae 0x5ab5cf
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x5ab5cf
add ecx, 2
add edx, 2
cmp ecx, edi
jae 0x5ab5da
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x5ab5da
inc ecx
mov eax, ecx
sub eax, dword [esp + 0x54]
add esi, eax
mov ebx, dword [esp + 0x58]
add edi, 0xffffffe0
mov ecx, dword [ebp + 0xc]
mov eax, ebx
sub eax, ecx
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], eax
add esi, 4
add eax, ecx
cmp eax, edi
ja 0x5ab683
mov edx, dword [esp + 0x1c]
movdqu xmm0, xmmword [ecx]
mov eax, dword [edx + 0xc]
movdqu xmmword [eax], xmm0
mov eax, dword [esp + 0x58]
cmp eax, 0x10
jbe 0x5ab69a
movdqu xmm0, xmmword [ecx + 0x10]
lea edi, [ecx + 0x10]
add eax, 0xfffffff0
mov ecx, dword [edx + 0xc]
add ecx, 0x10
lea edx, [ecx + eax]
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x1c]
movdqu xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x5ab69a
mov eax, dword [esp + 0x5c]
add ecx, 0x10
add edi, 0x10
movdqu xmm0, xmmword [edi]
lea edi, [edi + 0x20]
movdqu xmmword [ecx], xmm0
movdqu xmm0, xmmword [edi - 0x10]
movdqu xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x5ab650
jmp 0x5ab69a
bsf eax, eax
mov dword [esp + 0x5c], eax
shr eax, 3
sub eax, dword [esp + 0x54]
add eax, ecx
jmp 0x5ab5e0
mov edx, ecx
mov ecx, dword [esp + 0x1c]
push edi
push eax
mov ecx, dword [ecx + 0xc]
call fcn.0059a610
mov edx, dword [esp + 0x24]
add esp, 8
mov ecx, dword [esp + 0x58]
add dword [edx + 0xc], ecx
cmp ecx, 0xffff
jbe 0x5ab6bb
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 word [eax + 4], cx
mov eax, dword [edx + 4]
mov dword [eax], 1
jmp 0x5abeb2
mov esi, dword [esp + 0xc]
cmp dword [esp + 0x70], esi
jbe 0x5ab7f3
mov eax, dword [ecx]
mov edx, dword [ebx + 4]
cmp eax, dword [ebx]
jne 0x5ab960
cmp dword [ecx + 4], edx
jne 0x5ab960
mov esi, dword [esp + 0x14]
lea ecx, [ebx + 8]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x5c], ecx
lea eax, [esi - 3]
lea edx, [edi + 8]
cmp ecx, eax
jae 0x5ab757
mov esi, dword [ecx]
xor esi, dword [edx]
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x14]
je 0x5ab72d
mov eax, dword [esp + 0x70]
bsf eax, eax
mov esi, eax
mov dword [esp + 0x70], eax
shr esi, 3
jmp 0x5ab77d
add ecx, 4
add edx, 4
cmp ecx, eax
jae 0x5ab757
jmp 0x5ab740
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x5ab7df
add ecx, 4
lea eax, [esi - 3]
add edx, 4
cmp ecx, eax
jb 0x5ab740
lea eax, [esi - 1]
cmp ecx, eax
jae 0x5ab76c
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x5ab76c
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x5ab777
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x5ab777
inc ecx
mov esi, ecx
sub esi, dword [esp + 0x5c]
mov edx, dword [ebp + 0xc]
mov eax, ebx
sub eax, edi
add esi, 8
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x10]
cmp eax, edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
je 0x5abdeb
jmp 0x5ab7b0
mov al, byte [ebx - 1]
cmp al, byte [edi - 1]
jne 0x5abdeb
mov eax, dword [esp + 0xc]
dec edi
add eax, dword [esp + 0x10]
dec ebx
mov edx, dword [ebp + 0xc]
inc esi
cmp eax, edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
jne 0x5ab7b0
jmp 0x5abdeb
bsf eax, eax
mov esi, eax
mov dword [esp + 0x70], eax
shr esi, 3
sub esi, dword [esp + 0x5c]
add esi, ecx
jmp 0x5ab77d
cmp dword [esp + 0x74], 0
mov edx, dword [esp + 0x18]
je 0x5ab964
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
shr eax, 8
add ecx, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x74], ecx
cmp ecx, edx
jbe 0x5ab964
mov eax, dword [ecx]
mov edx, dword [ebx + 4]
cmp eax, dword [ebx]
jne 0x5ab960
cmp dword [ecx + 4], edx
jne 0x5ab960
mov eax, dword [esp + 0x20]
lea esi, [ebx + 8]
mov edx, dword [esp + 0x14]
mov edi, ecx
lea ecx, [edi + 8]
sub eax, ecx
mov ecx, esi
add eax, esi
cmp eax, edx
cmovb edx, eax
mov dword [esp + 0x48], edx
lea edx, [edi + 8]
mov eax, dword [esp + 0x48]
add eax, 0xfffffffd
cmp esi, eax
jae 0x5ab8a4
mov ecx, dword [edi + 8]
xor ecx, dword [esi]
je 0x5ab87a
bsf eax, ecx
lea edx, [ebx + 8]
mov esi, eax
mov dword [esp + 0x74], eax
shr esi, 3
jmp 0x5ab8cf
lea ecx, [esi + 4]
mov esi, dword [esp + 0x48]
add esi, 0xfffffffd
lea edx, [edi + 0xc]
cmp ecx, esi
jae 0x5ab8a4
jmp 0x5ab890
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x5ab948
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x5ab890
mov esi, dword [esp + 0x48]
lea eax, [esi - 1]
cmp ecx, eax
jae 0x5ab8bd
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x5ab8bd
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x5ab8c8
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x5ab8c8
inc ecx
mov esi, ecx
lea edx, [ebx + 8]
sub esi, edx
lea eax, [edi + 8]
add eax, esi
cmp eax, dword [esp + 0x20]
jne 0x5ab8fe
push dword [esp + 0x14]
lea ecx, [esi + edx]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x14]
lea edx, [edx + ecx]
mov ecx, dword [esp + 0x78]
call fcn.0059fed0
add esp, 4
add esi, eax
mov eax, dword [esp + 0x28]
add esi, 8
sub eax, dword [esp + 0x24]
sub eax, dword [esp + 0x34]
mov edx, dword [ebp + 0xc]
cmp edx, ebx
mov dword [esp + 0x24], eax
sbb eax, eax
neg eax
test al, 1
je 0x5abdeb
mov al, byte [ebx - 1]
cmp al, byte [edi - 1]
jne 0x5abdeb
dec edi
dec ebx
inc esi
cmp dword [esp + 0x18], edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
jne 0x5ab922
jmp 0x5abdeb
bsf eax, eax
lea edx, [ebx + 8]
mov esi, eax
mov dword [esp + 0x74], eax
shr esi, 3
sub esi, edx
add esi, ecx
jmp 0x5ab8cf
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x48], esi
jbe 0x5ab9a8
mov eax, dword [edi]
cmp eax, dword [ebx]
je 0x5ab9ce
mov edx, dword [ebp + 0xc]
mov eax, ebx
sub eax, edx
sar eax, 8
inc eax
add ebx, eax
mov eax, dword [esp + 0x40]
cmp ebx, eax
jb 0x5ab380
mov ecx, dword [esp + 0x14]
mov ebx, dword [ebp + 8]
sub ecx, edx
mov eax, dword [esp + 0x30]
pop edi
pop esi
mov dword [ebx], eax
mov eax, dword [esp + 0x3c]
mov dword [ebx + 4], eax
mov eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [esp + 0x78], 0
je 0x5ab970
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x38]
shr eax, 8
add edi, eax
add eax, dword [esp + 0x34]
mov dword [esp + 0x48], eax
cmp edi, edx
jbe 0x5ab970
mov eax, dword [edi]
cmp eax, dword [ebx]
jne 0x5ab970
push 0xcf1bbcdc
lea eax, [ebx + 1]
push 0xb7a56463
push dword [eax + 4]
mov dword [esp + 0x30], eax
push dword [eax]
call fcn.00620b50
mov ecx, dword [esp + 0x4c]
call fcn.00622f20
mov esi, eax
mov eax, dword [esp + 0x24]
push 0xcf1bbcdc
push 0xb7a56463
push dword [eax + 4]
push dword [eax]
call fcn.00620b50
mov ecx, dword [esp + 0x60]
call fcn.00622f20
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + esi*4]
mov eax, ecx
shr eax, 8
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x64]
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x44], eax
xor eax, ecx
xor ecx, ecx
test al, al
mov eax, dword [esp + 0x28]
sete cl
inc eax
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x5c]
add ecx, dword [esp + 0x10]
mov dword [edx + esi*4], eax
mov esi, dword [esp + 0xc]
mov dword [esp + 0x7c], ecx
cmp dword [esp + 0x5c], esi
jbe 0x5abb62
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x24]
cmp eax, dword [ecx]
jne 0x5abc55
cmp edx, dword [ecx + 4]
jne 0x5abc55
mov edx, dword [esp + 0x14]
add ebx, 9
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x5c], ebx
lea esi, [edx - 3]
lea ecx, [edi + 8]
cmp ebx, esi
jae 0x5abaca
mov eax, dword [ebx]
xor eax, dword [ecx]
je 0x5abaac
bsf eax, eax
mov esi, eax
mov dword [esp + 0x7c], eax
shr esi, 3
jmp 0x5abaf0
add ebx, 4
add ecx, 4
cmp ebx, esi
jae 0x5abaca
mov eax, dword [ebx]
xor eax, dword [ecx]
jne 0x5abb4e
add ebx, 4
add ecx, 4
cmp ebx, esi
jb 0x5abab6
lea eax, [edx - 1]
cmp ebx, eax
jae 0x5abadf
mov ax, word [ecx]
cmp ax, word [ebx]
jne 0x5abadf
add ebx, 2
add ecx, 2
cmp ebx, edx
jae 0x5abaea
mov al, byte [ecx]
cmp al, byte [ebx]
jne 0x5abaea
inc ebx
mov esi, ebx
sub esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x24]
add esi, 8
mov edx, dword [ebp + 0xc]
mov eax, ebx
sub eax, edi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x10]
cmp eax, edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
je 0x5abdeb
mov edi, edi
mov al, byte [ebx - 1]
dec edi
cmp al, byte [edi]
jne 0x5abdeb
mov eax, dword [esp + 0xc]
dec ebx
add eax, dword [esp + 0x10]
inc esi
mov edx, dword [ebp + 0xc]
cmp eax, edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
jne 0x5abb20
jmp 0x5abdeb
bsf eax, eax
mov esi, eax
mov dword [esp + 0x7c], eax
shr esi, 3
sub esi, dword [esp + 0x5c]
add esi, ebx
jmp 0x5abaf0
cmp dword [esp + 0x78], 0
je 0x5abc55
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x38]
shr eax, 8
add ecx, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x7c], ecx
cmp ecx, dword [esp + 0x18]
jbe 0x5abc55
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x24]
cmp eax, dword [ecx]
jne 0x5abc55
cmp edx, dword [ecx + 4]
jne 0x5abc55
mov edi, dword [esp + 0x7c]
lea eax, [ebx + 9]
mov ebx, dword [esp + 0x14]
mov ecx, ebx
mov dword [esp + 0x5c], eax
lea esi, [edi + 8]
sub eax, esi
mov edx, esi
add eax, dword [esp + 0x20]
cmp eax, ebx
cmovb ecx, eax
push ecx
mov ecx, dword [esp + 0x60]
call fcn.0059fed0
mov ecx, eax
add esp, 4
mov dword [esp + 0x7c], ecx
lea eax, [ecx + esi]
cmp eax, dword [esp + 0x20]
jne 0x5abc04
mov edx, dword [esp + 0xc]
add ecx, dword [esp + 0x5c]
push ebx
mov ebx, dword [esp + 0x14]
lea edx, [edx + ebx]
call fcn.0059fed0
mov ecx, dword [esp + 0x80]
add esp, 4
add ecx, eax
mov eax, dword [esp + 0x28]
lea esi, [ecx + 8]
sub eax, dword [esp + 0x44]
sub eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x24]
inc eax
mov edx, dword [ebp + 0xc]
cmp edx, ebx
mov dword [esp + 0x24], eax
sbb eax, eax
neg eax
test al, 1
je 0x5abdeb
lea ecx, [ecx]
mov al, byte [ebx - 1]
dec edi
cmp al, byte [edi]
jne 0x5abdeb
dec ebx
inc esi
cmp dword [esp + 0x18], edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
jne 0x5abc30
jmp 0x5abdeb
cmp dword [esp + 0x48], esi
jae 0x5abd8e
mov edx, dword [esp + 0x14]
lea esi, [ebx + 4]
lea ecx, [edi + 4]
mov eax, esi
sub eax, ecx
mov ecx, esi
add eax, dword [esp + 0x20]
cmp eax, edx
cmovb edx, eax
mov dword [esp + 0x44], edx
lea edx, [edi + 4]
mov eax, dword [esp + 0x44]
add eax, 0xfffffffd
cmp esi, eax
jae 0x5abcc7
mov ecx, dword [esi]
xor ecx, dword [edi + 4]
je 0x5abca2
bsf eax, ecx
lea edx, [ebx + 4]
mov esi, eax
mov dword [esp + 0x7c], eax
shr esi, 3
jmp 0x5abcf2
lea ecx, [esi + 4]
mov esi, dword [esp + 0x44]
add esi, 0xfffffffd
lea edx, [edi + 8]
cmp ecx, esi
jae 0x5abcc7
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x5abd76
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x5abcb3
mov esi, dword [esp + 0x44]
lea eax, [esi - 1]
cmp ecx, eax
jae 0x5abce0
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x5abce0
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x5abceb
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x5abceb
inc ecx
mov esi, ecx
lea edx, [ebx + 4]
sub esi, edx
lea eax, [edi + 4]
add eax, esi
cmp eax, dword [esp + 0x20]
jne 0x5abd27
push dword [esp + 0x14]
lea ecx, [esi + edx]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x14]
lea edx, [edx + ecx]
mov ecx, dword [esp + 0x80]
call fcn.0059fed0
add esp, 4
add esi, eax
mov eax, dword [esp + 0x28]
add esi, 4
sub eax, dword [esp + 0x48]
cmp dword [esp + 0x18], edi
mov edx, dword [ebp + 0xc]
sbb ecx, ecx
mov dword [esp + 0x24], eax
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
je 0x5abdeb
nop
mov al, byte [ebx - 1]
cmp al, byte [edi - 1]
jne 0x5abdeb
dec edi
dec ebx
inc esi
cmp dword [esp + 0x18], edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
jne 0x5abd50
jmp 0x5abdeb
bsf eax, eax
lea edx, [ebx + 4]
mov esi, eax
mov dword [esp + 0x7c], eax
shr esi, 3
sub esi, edx
add esi, ecx
jmp 0x5abcf2
push dword [esp + 0x14]
lea edx, [edi + 4]
lea ecx, [ebx + 4]
call fcn.0059fed0
mov edx, dword [ebp + 0xc]
add esp, 4
lea esi, [eax + 4]
mov eax, ebx
sub eax, edi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x10]
cmp eax, edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
je 0x5abdeb
mov al, byte [ebx - 1]
dec edi
cmp al, byte [edi]
jne 0x5abdeb
mov eax, dword [esp + 0xc]
dec ebx
add eax, dword [esp + 0x10]
inc esi
mov edx, dword [ebp + 0xc]
cmp eax, edi
sbb ecx, ecx
neg ecx
cmp edx, ebx
sbb eax, eax
neg eax
test eax, ecx
jne 0x5abdc6
mov eax, dword [esp + 0x30]
mov ecx, ebx
mov edi, dword [esp + 0x24]
sub ecx, edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x5c], ecx
add eax, 0xffffffe0
add ecx, edx
mov dword [esp + 0x30], edi
mov dword [esp + 0x54], eax
cmp ecx, eax
ja 0x5abfa6
mov edx, dword [esp + 0x1c]
mov ecx, dword [ebp + 0xc]
mov eax, dword [edx + 0xc]
movdqu xmm0, xmmword [ecx]
movdqu xmmword [eax], xmm0
mov eax, dword [esp + 0x5c]
cmp eax, 0x10
jbe 0x5abe82
movdqu xmm0, xmmword [ecx + 0x10]
lea edi, [ecx + 0x10]
add eax, 0xfffffff0
mov ecx, dword [edx + 0xc]
add ecx, 0x10
lea edx, [ecx + eax]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x1c]
movdqu xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x5abe7e
mov eax, dword [esp + 0x7c]
add ecx, 0x10
add edi, 0x10
movdqu xmm0, xmmword [edi]
lea edi, [edi + 0x20]
movdqu xmmword [ecx], xmm0
movdqu xmm0, xmmword [edi - 0x10]
movdqu xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x5abe62
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x5c]
add dword [edx + 0xc], ecx
cmp ecx, 0xffff
jbe 0x5abea3
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 word [eax + 4], cx
lea ecx, [edi + 3]
mov eax, dword [edx + 4]
mov dword [eax], ecx
lea ecx, [esi - 3]
cmp ecx, 0xffff
jbe 0x5abecf
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]
add ebx, esi
mov word [eax + 6], cx
add dword [edx + 4], 8
mov edx, ebx
mov eax, dword [esp + 0x40]
mov dword [ebp + 0xc], edx
cmp ebx, eax
ja 0x5ab989
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
add edi, 2
push 0xcf1bbcdc
push 0xb7a56463
push dword [edi + eax + 4]
push dword [edi + eax]
call fcn.00620b50
mov ecx, dword [esp + 0x4c]
call fcn.00622f20
mov ecx, dword [esp + 0x2c]
push 0xcf1bbcdc
push 0xb7a56463
mov dword [ecx + eax*4], edi
push dword [ebx + 2]
push dword [ebx - 2]
call fcn.00620b50
mov ecx, dword [esp + 0x4c]
call fcn.00622f20
mov edx, dword [esp + 0x2c]
mov ecx, eax
mov esi, ebx
sub esi, dword [esp + 0x10]
lea eax, [esi - 2]
mov dword [edx + ecx*4], eax
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x50]
imul eax, dword [edi + edx], 0x9e3779b1
mov edx, dword [esp + 0x3c]
shr eax, cl
mov dword [edx + eax*4], edi
lea eax, [esi - 1]
imul edx, dword [ebx - 1], 0x9e3779b1
shr edx, cl
mov ecx, dword [esp + 0x3c]
mov dword [ecx + edx*4], eax
mov edx, ebx
jmp 0x5abf80
mov esi, dword [esp + 0x10]
mov eax, ebx
sub eax, esi
mov ecx, eax
mov dword [esp + 0x78], eax
sub ecx, dword [esp + 0x44]
mov eax, dword [esp + 0xc]
cmp ecx, eax
jae 0x5abfc0
mov esi, ecx
sub esi, dword [esp + 0x34]
add esi, dword [esp + 0x38]
jmp 0x5abfc2
push eax
push ecx
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + 0xc]
call fcn.0059a610
mov edx, dword [esp + 0x24]
add esp, 8
jmp 0x5abe82
add esi, ecx
sub eax, ecx
dec eax
cmp eax, 3
jb 0x5ab97d
mov eax, dword [esi]
cmp eax, dword [ebx]
jne 0x5ab97d
cmp ecx, dword [esp + 0xc]
lea eax, [ebx + 4]
mov edx, dword [esp + 0x14]
mov edi, edx
cmovb edi, dword [esp + 0x20]
mov ecx, edx
add esi, 4
sub eax, esi
add eax, edi
cmp eax, edx
mov edx, esi
cmovb ecx, eax
push ecx
lea ecx, [ebx + 4]
call fcn.0059fed0
mov ecx, eax
add esp, 4
mov dword [esp + 0x7c], ecx
lea eax, [ecx + esi]
cmp eax, edi
jne 0x5ac038
mov edx, dword [esp + 0xc]
lea eax, [ebx + 4]
mov esi, dword [esp + 0x10]
add ecx, eax
push dword [esp + 0x14]
lea edx, [edx + esi]
call fcn.0059fed0
mov ecx, dword [esp + 0x80]
add esp, 4
add ecx, eax
mov eax, dword [esp + 0x44]
lea edi, [ecx + 4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x1c]
cmp ebx, eax
ja 0x5ac064
mov eax, dword [ecx + 0xc]
movdqu xmm0, xmmword [ebx]
movdqu xmmword [eax], xmm0
jmp 0x5ac077
mov ecx, dword [ecx + 0xc]
mov edx, ebx
push eax
push ebx
call fcn.0059a610
mov ecx, dword [esp + 0x24]
add esp, 8
mov eax, dword [ecx + 4]
xor edx, edx
mov word [eax + 4], dx
lea edx, [edi - 3]
mov eax, dword [ecx + 4]
mov dword [eax], 1
cmp edx, 0xffff
jbe 0x5ac0a6
mov eax, dword [ecx + 4]
sub eax, dword [ecx]
sar eax, 3
mov dword [ecx + 0x24], 2
mov dword [ecx + 0x28], eax
mov eax, dword [ecx + 4]
mov esi, dword [esp + 0x78]
push 0xcf1bbcdc
push 0xb7a56463
mov word [eax + 6], dx
add dword [ecx + 4], 8
imul eax, dword [ebx], 0x9e3779b1
mov ecx, dword [esp + 0x58]
shr eax, cl
mov ecx, dword [esp + 0x44]
mov dword [ecx + eax*4], esi
push dword [ebx + 4]
push dword [ebx]
call fcn.00620b50
mov ecx, dword [esp + 0x4c]
call fcn.00622f20
mov ecx, dword [esp + 0x2c]
add ebx, edi
mov edx, ebx
mov dword [ebp + 0xc], edx
mov dword [ecx + eax*4], esi
mov eax, dword [esp + 0x40]
cmp ebx, eax
jbe 0x5abf80
jmp 0x5ab981