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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xfc
mov ebp, dword [eax + 0x2ff0]
mov dword [esp + 0x78], 0x10
mov edi, dword [eax + 0x1170]
mov dword [esp + 0xb8], ecx
mov dword [esp + 0x7c], eax
mov ecx, ebp
mov ebx, dword [ebp*4 + 0x1240248]
sar dword [esp + 0x78], cl
mov esi, dword [esp + 0x78]
mov dword [esp + 0x68], edi
mov dword [esp + 0xcc], ebx
mov ebx, dword [eax + 0x1160]
mov dword [esp + 0xb4], edx
mov edx, dword [eax + 0x2fcc]
add esi, esi
mov dword [esp + 0x80], esi
mov esi, dword [eax + 0x1040]
mov dword [esp + 0xa4], ebx
mov ebx, dword [eax + 0x2ff8]
mov dword [esp + 0xc8], esi
mov esi, dword [eax + 0x2fe8]
mov dword [esp + 0xac], ebx
mov edi, esi
shl edi, cl
mov ecx, dword [eax + 0x2fd0]
mov dword [esp + 0xec], edi
mov edi, dword [eax + 0x2ffc]
mov eax, dword [eax + 4]
mov dword [esp + 0xa8], edi
movzx eax, byte [eax + 0x1b0]
cmp eax, 0xe
jbe switch.0x0085381e
sar edx, 7
mov dword [esp + 0xe0], edx
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x68]
mov dword [esp + 0xdc], 0x10
mov ebx, dword [esp + 0x80]
mov dword [esp + 0xc0], 0
shr eax, 0x1f
add eax, dword [esp + 0x78]
mov dword [esp + 0x84], 0
mov dword [esp + 0x4c], ebp
sar eax, 1
cmp dword [esp + 0x78], 8
mov dword [esp + 0xbc], eax
sete al
cmp dword [esp + 0x78], 0x10
sete byte [esp + 0xc7]
shl edx, 4
or byte [esp + 0xc7], al
movzx eax, al
cmp dword [esp + 0x68], 0x6f
cmovg edx, dword [esp + 0xdc]
add eax, 0xf0
sar ebx, 1
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x7c]
lea edi, [edx + edx*2]
mov dword [esp + 0xe8], edi
mov edi, dword [esp + 0x80]
mov dword [esp + 0xe4], ebx
add eax, 0x20c8b0
mov dword [esp + 0xdc], edx
imul edi, ebx
mov ebx, dword [esp + 0xc8]
sub ebx, dword [esp + 0xa4]
mov dword [esp + 0xd4], eax
mov dword [esp + 0x88], edi
mov edi, dword [esp + 0x68]
imul edi, dword [esp + 0xa8]
mov dword [esp + 0x64], ebx
mov dword [esp + 0xd8], edi
mov eax, dword [esp + 0x84]
mov edx, 0x55555556
mov ebp, dword [esp + 0x84]
mov edi, dword [esp + 0xb8]
movzx ecx, byte [esp + 0x4c]
imul edx
mov eax, dword [esp + 0x84]
sar eax, 0x1f
sub edx, eax
lea eax, [edx + edx*2]
add edi, edx
mov edx, dword [esp + 0x78]
sub ebp, eax
add ebp, dword [esp + 0xb4]
lea eax, [edi - 1]
lea ebx, [ebp - 1]
imul edx, ebx
add edx, dword [esp + 0xbc]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x78]
imul edx, eax
add edx, dword [esp + 0xbc]
mov dword [esp + 0x6c], edx
mov edx, esi
mov esi, dword [esp + 0x7c]
shl edx, cl
mov ecx, eax
imul ecx, edx
mov esi, dword [esi + 0x2fec]
add ecx, ebx
mov dword [esp + 0x50], esi
lea esi, [ecx + ecx*4]
mov ecx, dword [esp + 0x7c]
add esi, esi
add esi, dword [ecx + 0x20b888]
lea ecx, [esi + 0xa]
mov dword [esp + 0x48], ecx
lea ecx, [edx + edx*4]
lea ecx, [esi + ecx*2]
mov dword [esp + 0x40], ecx
add ecx, 0xa
test ebx, ebx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x7c]
mov ecx, dword [ecx + 0x20f1f8]
mov dword [esp + 0x54], ecx
js 0x85309e
cmp ebp, edx
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x40]
cmovl ebx, dword [esp + 0x44]
cmovge ebp, esi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebp
test eax, eax
js 0x85308d
mov eax, dword [esp + 0x50]
movzx ecx, byte [esp + 0x4c]
mov ebx, dword [esp + 0x48]
shl eax, cl
cmp edi, eax
mov edi, dword [esp + 0x40]
cmovl ebx, dword [esp + 0x44]
cmovge edi, esi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x74]
test edi, edi
js 0x853066
mov edi, dword [esp + 0x78]
add edi, dword [esp + 0x74]
cmp dword [esp + 0xac], edi
mov dword [esp + 0xb0], edi
jl 0x852b80
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov edi, eax
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0x6c]
test ebx, ebx
js 0x852ba8
mov ebx, dword [esp + 0x78]
add ebx, dword [esp + 0x6c]
mov dword [esp + 0x90], ebx
mov ebx, dword [esp + 0x78]
mov edx, dword [esp + 0x90]
cmp dword [esp + 0xa8], edx
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x6c]
jge 0x8529db
mov ecx, dword [esp + 0xa8]
sub ecx, ebx
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x8c]
test ecx, ecx
jg 0x852bdd
mov eax, dword [esp + 0x6c]
test eax, eax
jns 0x852a2f
mov ebx, dword [esp + 0x68]
imul ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x78]
mov ebp, dword [esp + 0x68]
add ebx, dword [esp + 0x74]
add ebx, dword [esp + 0xa4]
mov eax, dword [esp + 0x64]
mov dword [esp], ebx
mov dword [esp + 8], edi
add eax, ebx
add ebx, ebp
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
add esi, 1
jne 0x852a12
mov edx, dword [esp + 0x90]
cmp dword [esp + 0xa8], edx
jge 0x852a81
mov ebx, dword [esp + 0x74]
mov ebp, edx
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0x78]
add ebx, dword [esp + 0xd8]
add ebx, dword [esp + 0xa4]
nop
mov eax, dword [esp + 0x64]
add esi, 1
mov dword [esp], ebx
mov dword [esp + 8], edi
add eax, ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
add ebx, dword [esp + 0x68]
cmp esi, ebp
jne 0x852a60
mov eax, dword [esp + 0x74]
test eax, eax
js 0x853009
mov ebx, dword [esp + 0xb0]
cmp dword [esp + 0xac], ebx
jge 0x852af1
mov esi, dword [esp + 0x90]
cmp dword [esp + 0x6c], esi
jge 0x852af1
mov edi, ebx
mov ebx, dword [esp + 0x68]
mov ebp, esi
imul ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x6c]
add ebx, dword [esp + 0xac]
sub edi, dword [esp + 0xac]
add ebx, dword [esp + 0xa4]
mov eax, dword [esp + 0x64]
add esi, 1
mov dword [esp], ebx
mov dword [esp + 8], edi
add eax, ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
add ebx, dword [esp + 0x68]
cmp esi, ebp
jne 0x852ad0
cmp byte [esp + 0xc7], 0
je 0x852fe8
mov edi, dword [esp + 0x78]
mov edx, dword [esp + 0x68]
imul edx, dword [esp + 0x6c]
mov eax, dword [esp + 0xa4]
add edx, dword [esp + 0x74]
mov dword [esp + 0x10], edi
mov ebx, dword [esp + 0x68]
mov esi, dword [esp + 0xd4]
mov edi, dword [esp + 0xd0]
add eax, edx
mov ebp, dword [esp + 0x7c]
add edx, dword [esp + 0xc8]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call dword [ebp + edi*4 + 0xc]
add dword [esp + 0x84], 1
add dword [esp + 0xc0], eax
cmp dword [esp + 0x84], 9
je 0x8532fe
mov ecx, dword [ebp + 0x2ff0]
mov esi, dword [ebp + 0x2fe8]
mov dword [esp + 0x4c], ecx
jmp 0x852852
mov ebx, dword [esp + 0x6c]
mov edi, dword [esp + 0xac]
mov eax, dword [esp + 0x74]
sub edi, dword [esp + 0x74]
test ebx, ebx
mov ebp, dword [esp + 0xcc]
mov dword [esp + 0x5c], edi
mov edi, eax
jns 0x85299d
mov ebx, dword [esp + 0x78]
add ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x80]
imul edx, dword [esp + 0x6c]
mov dword [esp + 0x8c], ebx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x90], ebx
xor ebx, ebx
sub ebp, edx
test ecx, ecx
jle 0x8529ea
mov edx, dword [esp + 0x5c]
test edx, edx
jle 0x8529ea
lea eax, [eax + eax + 0x17ba620]
mov edx, dword [esp + 0xa8]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x5c]
imul eax, ebx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x20], esi
mov dword [esp + 0x18], edx
add eax, edi
add eax, dword [esp + 0xa4]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x54]
add eax, dword [esp + 0xe8]
mov dword [esp + 0x10], edi
mov dword [esp + 0x94], eax
mov edx, dword [esp + 0x94]
add eax, dword [esp + 0xdc]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x7c]
mov dword [esp], eax
call fcn.009c5f10
movzx edx, byte [esi + 8]
mov ecx, edx
and ecx, 1
mov byte [esp + 0x4c], dl
mov dword [esp + 0x50], ecx
je 0x8532b1
mov eax, dword [esp + 0x48]
movzx eax, byte [eax + 8]
test al, 1
mov byte [esp + 0x58], al
je 0x8532bd
mov edx, dword [esp + 0x48]
movzx ecx, byte [esi + 6]
movzx eax, byte [edx + 6]
movzx edx, byte [edx + 5]
sub ecx, eax
movzx eax, byte [esi + 5]
sub eax, edx
mov edx, dword [esp + 0x48]
or ecx, eax
movzx eax, byte [esi + 7]
movzx edx, byte [edx + 7]
sub eax, edx
or ecx, eax
sete al
movzx eax, al
mov ecx, dword [esp + 0x94]
test eax, eax
mov dword [esp + 0xa0], ecx
je 0x853428
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x50]
movzx ecx, byte [ecx + 8]
test eax, eax
mov byte [esp + 0x58], cl
je 0x853270
and ecx, 1
je 0x853270
mov edx, dword [esp + 0x40]
movzx ecx, byte [esi + 6]
movzx eax, byte [edx + 6]
movzx edx, byte [edx + 5]
sub ecx, eax
movzx eax, byte [esi + 5]
sub eax, edx
mov edx, dword [esp + 0x40]
or ecx, eax
movzx eax, byte [esi + 7]
movzx edx, byte [edx + 7]
sub eax, edx
or ecx, eax
sete al
movzx eax, al
mov ecx, dword [esp + 0x94]
test eax, eax
mov dword [esp + 0x9c], ecx
jne 0x852de7
mov eax, dword [esp + 0x48]
movzx eax, byte [eax + 8]
test al, 1
mov byte [esp + 0x9c], al
je 0x852d82
test byte [esp + 0x58], 1
jne 0x853872
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x40]
movsx ecx, word [eax + 2]
movsx eax, word [edx + 2]
mov edx, dword [esp + 0x48]
sub ecx, eax
movsx eax, word [edx]
mov edx, dword [esp + 0x40]
movsx edx, word [edx]
sub eax, edx
mov edx, dword [esp + 0x48]
or ecx, eax
movzx eax, byte [edx + 4]
mov edx, dword [esp + 0x40]
movzx edx, byte [edx + 4]
sub eax, edx
or ecx, eax
movzx eax, byte [esp + 0x58]
xor al, byte [esp + 0x9c]
and eax, 1
or ecx, eax
sete al
movzx eax, al
mov ecx, dword [esp + 0xa0]
test eax, eax
mov dword [esp + 0x9c], ecx
je 0x853b12
mov eax, dword [esp + 0x50]
test eax, eax
je 0x8530af
mov ecx, dword [esp + 0x44]
movzx ecx, byte [ecx + 8]
mov byte [esp + 0x50], cl
and ecx, 1
je 0x8530bb
mov edx, dword [esp + 0x44]
movzx ecx, byte [esi + 6]
movzx eax, byte [edx + 6]
movzx edx, byte [edx + 5]
sub ecx, eax
movzx eax, byte [esi + 5]
sub eax, edx
or ecx, eax
movzx eax, byte [esi + 7]
mov esi, dword [esp + 0x44]
movzx edx, byte [esi + 7]
sub eax, edx
or ecx, eax
sete al
movzx eax, al
test eax, eax
jne 0x8530ff
mov eax, dword [esp + 0x48]
movzx esi, byte [eax + 8]
test esi, 1
je 0x852e5b
test byte [esp + 0x50], 1
jne 0x853839
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
movsx ecx, word [eax + 2]
movsx eax, word [edx + 2]
mov edx, dword [esp + 0x48]
sub ecx, eax
movsx eax, word [edx]
mov edx, dword [esp + 0x44]
movsx edx, word [edx]
sub eax, edx
mov edx, dword [esp + 0x48]
or ecx, eax
movzx eax, byte [edx + 4]
mov edx, dword [esp + 0x44]
movzx edx, byte [edx + 4]
sub eax, edx
or ecx, eax
movzx eax, byte [esp + 0x50]
xor esi, eax
mov eax, esi
and eax, 1
or ecx, eax
sete al
movzx eax, al
test eax, eax
jne 0x853800
mov edx, dword [esp + 0x40]
movzx esi, byte [edx + 8]
test esi, 1
je 0x852f18
test byte [esp + 0x50], 1
je 0x852f18
mov esi, dword [esp + 0x44]
movzx ecx, byte [edx + 6]
movzx eax, byte [esi + 6]
sub ecx, eax
movzx eax, byte [edx + 5]
movzx edx, byte [esi + 5]
sub eax, edx
mov edx, dword [esp + 0x40]
or ecx, eax
movzx eax, byte [edx + 7]
movzx edx, byte [esi + 7]
sub eax, edx
or ecx, eax
sete al
movzx eax, al
test eax, eax
je 0x852f66
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0x98], ebx
mov eax, ebx
mov edx, ebx
mov ebx, dword [esp + 0xa0]
jmp 0x85311d
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
movsx ecx, word [eax + 2]
movsx eax, word [edx + 2]
mov edx, dword [esp + 0x40]
sub ecx, eax
movsx eax, word [edx]
mov edx, dword [esp + 0x44]
movsx edx, word [edx]
sub eax, edx
mov edx, dword [esp + 0x40]
or ecx, eax
movzx eax, byte [edx + 4]
mov edx, dword [esp + 0x44]
movzx edx, byte [edx + 4]
sub eax, edx
or ecx, eax
movzx eax, byte [esp + 0x50]
xor eax, esi
and eax, 1
or ecx, eax
sete al
movzx eax, al
test eax, eax
jne 0x852efa
mov esi, dword [esp + 0xa8]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0xac]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x98]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x54]
mov dword [esp + 0x1c], edx
mov dword [esp + 0xc], ebx
mov dword [esp], eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x18], ecx
mov dword [esp + 8], esi
mov dword [esp + 4], edi
call fcn.009c5f10
mov eax, dword [esp + 0x98]
mov edx, dword [esp + 0x9c]
mov ebx, dword [esp + 0xa0]
jmp 0x85311d
mov dword [esp + 8], 0x327
mov dword [esp + 4], str._home_kyle_software_ffmpeg_source_ffmpeg_git_libavcodec_snowenc.c
mov dword [esp], str.block_w_8__block_w16
call fcn.010891c0
jmp 0x852aff
mov ecx, dword [esp + 0x90]
cmp dword [esp + 0x6c], ecx
jge 0x852a8d
mov eax, dword [esp + 0x68]
mov ebp, ecx
mov edi, dword [esp + 0x74]
imul eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0xa4]
add eax, dword [esp + 0x74]
mov esi, dword [esp + 0x6c]
neg edi
add ebx, eax
lea esi, [esi]
mov eax, dword [esp + 0x64]
add esi, 1
mov dword [esp], ebx
mov dword [esp + 8], edi
add eax, ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
add ebx, dword [esp + 0x68]
cmp esi, ebp
jne 0x853040
jmp 0x852a8d
mov ebx, dword [esp + 0x78]
xor eax, eax
xor edi, edi
add ebx, dword [esp + 0x74]
mov ebp, dword [esp + 0xcc]
sub ebp, dword [esp + 0x74]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0xb0], ebx
jmp 0x852991
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x48], ebp
jmp 0x852954
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
mov dword [esp + 0x40], edx
jmp 0x852927
mov eax, dword [esp + 0x44]
movzx eax, byte [eax + 8]
mov byte [esp + 0x50], al
mov edx, dword [esp + 0x44]
movsx ecx, word [esi + 2]
movsx eax, word [edx + 2]
movsx edx, word [edx]
sub ecx, eax
movsx eax, word [esi]
sub eax, edx
or ecx, eax
movzx eax, byte [esi + 4]
mov esi, dword [esp + 0x44]
movzx edx, byte [esi + 4]
sub eax, edx
or ecx, eax
movzx eax, byte [esp + 0x50]
xor al, byte [esp + 0x4c]
and eax, 1
or ecx, eax
sete al
movzx eax, al
test eax, eax
je 0x852e40
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0xa0]
mov dword [esp + 0x98], edx
mov eax, edx
mov edx, dword [esp + 0x9c]
mov edi, dword [esp + 0x70]
mov ecx, dword [esp + 0x94]
mov esi, dword [esp + 0xe4]
mov dword [esp + 0x70], 0
sub eax, edi
sub edx, edi
sub ecx, edi
sub ebx, edi
add esi, ebp
mov dword [esp + 0x40], esi
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
mov dword [esp + 0x94], ecx
mov dword [esp + 0xa0], ebx
mov esi, dword [esp + 0x88]
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x94]
add esi, ebp
mov eax, dword [esp + 0x40]
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0xa0]
add edx, edi
add eax, dword [esp + 0x88]
add ecx, edi
add ebx, edi
mov dword [esp + 0x4c], edx
add esi, edi
mov dword [esp + 0x44], eax
xor eax, eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], esi
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x50]
movzx ebx, byte [ebp + eax]
movzx edx, byte [edi + eax]
mov edi, dword [esp + 0x44]
imul ebx, edx
movzx edx, byte [ecx + eax]
movzx ecx, byte [esi + eax]
mov esi, dword [esp + 0x54]
imul edx, ecx
movzx ecx, byte [edi + eax]
mov edi, dword [esp + 0x48]
add ebx, edx
movzx edx, byte [esi + eax]
imul ecx, edx
movzx edx, byte [edi + eax]
mov edi, dword [esp + 0x58]
movzx esi, byte [edi + eax]
imul edx, esi
add edx, ecx
mov ecx, dword [esp + 0x60]
add ebx, edx
sar ebx, 4
movsx edx, word [ecx + eax*2]
lea ecx, [ebx + edx + 8]
mov edx, ecx
sar edx, 4
test edx, 0xffffff00
je 0x853229
mov edx, ecx
sar edx, 0x1f
not edx
mov ebx, dword [esp + 0x3c]
mov byte [ebx + eax], dl
add eax, 1
cmp dword [esp + 0x5c], eax
jg 0x8531b7
add dword [esp + 0x70], 1
mov edi, ebx
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0x70]
add edi, dword [esp + 0x68]
add ebp, dword [esp + 0x80]
add dword [esp + 0x40], esi
cmp dword [esp + 0x8c], eax
jg 0x853161
jmp 0x8529ea
mov edx, dword [esp + 0x40]
movsx ecx, word [esi + 2]
movsx eax, word [edx + 2]
movsx edx, word [edx]
sub ecx, eax
movsx eax, word [esi]
sub eax, edx
mov edx, dword [esp + 0x40]
or ecx, eax
movzx eax, byte [esi + 4]
movzx edx, byte [edx + 4]
sub eax, edx
or ecx, eax
movzx eax, byte [esp + 0x58]
xor al, byte [esp + 0x4c]
and eax, 1
or ecx, eax
sete al
movzx eax, al
jmp 0x852d4e
mov ecx, dword [esp + 0x48]
movzx ecx, byte [ecx + 8]
mov byte [esp + 0x58], cl
mov edx, dword [esp + 0x48]
movsx ecx, word [esi + 2]
movsx eax, word [edx + 2]
movsx edx, word [edx]
sub ecx, eax
movsx eax, word [esi]
sub eax, edx
mov edx, dword [esp + 0x48]
or ecx, eax
movzx eax, byte [esi + 4]
movzx edx, byte [edx + 4]
sub eax, edx
or ecx, eax
movzx eax, byte [esp + 0x58]
xor al, byte [esp + 0x4c]
and eax, 1
or ecx, eax
sete al
movzx eax, al
jmp 0x852ce7
mov eax, dword [esp + 0x7c]
mov ebp, 1
mov eax, dword [eax + 0x20b888]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xec]
imul eax, dword [esp + 0xb8]
add eax, dword [esp + 0xb4]
mov edx, dword [esp + 0x44]
lea eax, [eax + eax*4]
lea eax, [edx + eax*2]
movzx edi, byte [eax + 8]
movzx ebx, byte [eax + 0x12]
and ebp, edi
je 0x853346
test bl, 1
jne 0x8538f5
movsx ecx, word [eax + 0xc]
xor ebx, edi
movsx edx, word [eax + 2]
movsx esi, word [eax + 0xa]
sub edx, ecx
movsx ecx, word [eax]
sub ecx, esi
movzx esi, byte [eax + 0xe]
or edx, ecx
movzx ecx, byte [eax + 4]
sub ecx, esi
or edx, ecx
mov ecx, ebx
and ecx, 1
or edx, ecx
sete dl
movzx edx, dl
test edx, edx
je 0x8534d1
mov esi, dword [esp + 0xec]
test ebp, ebp
lea edx, [esi + esi*4]
lea edx, [eax + edx*2]
jne 0x8538b7
movzx ebx, byte [edx + 8]
mov byte [esp + 0x40], bl
movsx ebx, word [edx + 2]
movsx ecx, word [eax + 2]
movsx esi, word [edx]
movzx edx, byte [edx + 4]
sub ecx, ebx
movsx ebx, word [eax]
sub ebx, esi
or ecx, ebx
movzx ebx, byte [eax + 4]
sub ebx, edx
movzx edx, byte [esp + 0x40]
or ecx, ebx
xor edx, edi
and edx, 1
or ecx, edx
sete dl
movzx edx, dl
test edx, edx
je 0x8534d1
mov esi, dword [esp + 0xec]
test ebp, ebp
lea edx, [esi + esi*4 + 5]
lea edx, [eax + edx*2]
movzx ebp, byte [edx + 8]
je 0x853922
test ebp, 1
je 0x853922
movzx ebx, byte [edx + 6]
movzx ecx, byte [eax + 6]
movzx esi, byte [edx + 5]
movzx edx, byte [edx + 7]
sub ecx, ebx
movzx ebx, byte [eax + 5]
movzx eax, byte [eax + 7]
sub ebx, esi
sub eax, edx
or ecx, ebx
or ecx, eax
sete al
movzx eax, al
jmp 0x853951
mov eax, dword [esp + 0x98]
add eax, dword [esp + 0xdc]
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x98]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x10], edi
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.009c5f10
movzx edx, byte [esi + 8]
mov eax, dword [esp + 0x98]
mov ecx, edx
mov byte [esp + 0x4c], dl
mov edx, dword [esp + 0x58]
and ecx, 1
mov dword [esp + 0x50], ecx
mov dword [esp + 0xa0], eax
mov dword [esp + 0x98], edx
jmp 0x852cfd
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + 0x2ff0]
mov edx, dword [eax + 0x2fe8]
mov ebx, dword [eax + 0x2fec]
xor eax, eax
mov dword [esp + 0x48], 0
shl edx, cl
shl ebx, cl
mov dword [esp + 0x40], edx
mov dword [esp + 0x54], ebx
shl eax, 3
lea edx, [eax + 0x11c4d04]
jmp 0x8535c8
shr eax, 0x1f
test al, al
jne 0x853665
xor eax, eax
cmp ebx, dword [esp + 0x54]
jge 0x8535b5
mov ebx, dword [esp + 0x44]
lea eax, [esi + esi*4]
lea eax, [ebx + eax*2]
test byte [eax + 8], 1
je 0x853698
movzx esi, byte [eax + 5]
movzx ebx, byte [ecx + 5]
sub ebx, esi
mov esi, ebx
sar esi, 0x1f
xor ebx, esi
sub ebx, esi
movzx esi, byte [eax + 6]
add ebx, ebx
movzx eax, byte [eax + 7]
or ebx, 1
bsr edi, ebx
movzx ebx, byte [ecx + 6]
movzx ecx, byte [ecx + 7]
xor edi, 0x1f
sub ebx, esi
sub ecx, eax
mov esi, ebx
mov eax, ecx
sar esi, 0x1f
sar eax, 0x1f
xor ebx, esi
xor ecx, eax
sub ebx, esi
sub ecx, eax
add ebx, ebx
lea eax, [ecx + ecx]
or ebx, 1
or eax, 1
bsr ebx, ebx
bsr eax, eax
mov ecx, 0x1f
xor eax, 0x1f
sub ecx, edi
xor ebx, 0x1f
mov esi, 0x1f
mov edi, 0x1f
sub esi, ebx
sub edi, eax
add ecx, esi
mov eax, edi
add eax, ecx
lea eax, [eax + eax + 3]
add edx, 8
add dword [esp + 0x48], eax
cmp edx, 0x11c4d4c
je 0x85367a
mov ebx, dword [esp + 0xb8]
mov ecx, 0x11c4ce0
mov esi, dword [esp + 0x40]
add ebx, dword [edx]
mov eax, dword [esp + 0xb4]
add eax, dword [edx - 4]
imul esi, ebx
add esi, eax
test eax, eax
je 0x8535f8
mov edi, dword [esp + 0x44]
lea ecx, [esi + esi*4 - 5]
lea ecx, [edi + ecx*2]
test ebx, ebx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x4c], 0x11c4ce0
je 0x85365b
mov ebp, esi
sub ebp, dword [esp + 0x40]
test eax, eax
lea edi, [ebp + ebp*4]
mov dword [esp + 0x58], ebp
mov ebp, dword [esp + 0x44]
lea ebp, [ebp + edi*2]
mov dword [esp + 0x4c], ebp
je 0x853e14
mov edi, dword [esp + 0x58]
mov ebp, dword [esp + 0x44]
lea edi, [edi + edi*4 - 5]
lea ebp, [ebp + edi*2]
mov dword [esp + 0x6c], ebp
lea ebp, [eax + 1]
cmp ebp, dword [esp + 0x40]
jge 0x85365b
mov ebp, dword [esp + 0x58]
lea edi, [ebp + ebp*4 + 5]
mov ebp, dword [esp + 0x44]
lea edi, [ebp + edi*2]
mov dword [esp + 0x6c], edi
cmp eax, dword [esp + 0x40]
jl 0x853510
add edx, 8
xor eax, eax
add dword [esp + 0x48], eax
cmp edx, 0x11c4d4c
jne 0x8535c8
mov eax, dword [esp + 0xe0]
imul eax, dword [esp + 0x48]
add eax, dword [esp + 0xc0]
add esp, 0xfc
pop ebx
pop esi
pop edi
pop ebp
ret
movzx ebp, byte [eax + 4]
movzx ebx, word [ecx]
mov edi, dword [esp + 0x4c]
movzx esi, word [ecx + 2]
mov dword [esp + 0x50], ebp
mov ebp, dword [esp + 0x4c]
mov word [esp + 0x5c], bx
mov ebx, dword [esp + 0x6c]
movzx edi, word [edi]
mov word [esp + 0x60], si
movzx ebp, word [ebp + 2]
movzx esi, word [ebx]
mov word [esp + 0x58], di
movzx edi, word [ebx + 2]
mov word [esp + 0x64], bp
mov ebp, dword [esp + 0x7c]
mov word [esp + 0x68], di
cmp dword [ebp + 0x2f68], 1
je 0x853bbb
mov edi, dword [esp + 0x50]
movzx ebx, byte [ebx + 4]
movzx ecx, byte [ecx + 4]
shl edi, 5
add edi, 0x1991e00
mov ebp, dword [edi + ebx*4]
movsx ebx, si
mov esi, dword [esp + 0x4c]
mov ecx, dword [edi + ecx*4]
imul ebx, ebp
movzx esi, byte [esi + 4]
sub ebx, 0xffffff80
mov esi, dword [edi + esi*4]
sar ebx, 8
mov dword [esp + 0x4c], esi
movsx esi, word [esp + 0x58]
mov dword [esp + 0x58], ecx
movsx ecx, word [esp + 0x5c]
imul esi, dword [esp + 0x4c]
imul ecx, dword [esp + 0x58]
sub esi, 0xffffff80
sub ecx, 0xffffff80
sar esi, 8
sar ecx, 8
cmp esi, ecx
jl 0x853825
cmp ebx, esi
jge 0x853758
cmp ebx, ecx
mov esi, ecx
cmovge esi, ebx
movsx edi, word [esp + 0x68]
movsx ecx, word [esp + 0x64]
movsx ebx, word [esp + 0x60]
imul ecx, dword [esp + 0x4c]
imul ebx, dword [esp + 0x58]
imul edi, ebp
sub ecx, 0xffffff80
sub ebx, 0xffffff80
sub edi, 0xffffff80
sar ecx, 8
sar ebx, 8
sar edi, 8
cmp ecx, ebx
jge 0x853afe
cmp edi, ecx
jle 0x853799
cmp edi, ebx
mov ecx, ebx
cmovle ecx, edi
movsx ebx, word [eax]
mov edi, 0x20
mov ebp, 0x1f
movsx eax, word [eax + 2]
sub esi, ebx
sub ecx, eax
mov ebx, esi
mov eax, ecx
sar eax, 0x1f
xor ecx, eax
sar ebx, 0x1f
sub ecx, eax
mov eax, dword [esp + 0x50]
xor esi, ebx
add ecx, ecx
sub esi, ebx
or ecx, 1
lea ebx, [esi + esi]
bsr ecx, ecx
or ebx, 1
add eax, eax
bsr ebx, ebx
or eax, 1
xor ebx, 0x1f
xor ecx, 0x1f
bsr eax, eax
sub edi, ebx
xor eax, 0x1f
sub ebp, ecx
mov ebx, 0x1f
mov ecx, ebp
sub ebx, eax
add ecx, edi
mov eax, ebx
add eax, ecx
add eax, eax
jmp 0x8535b5
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x98], ecx
mov eax, ecx
mov ebx, ecx
jmp 0x85311d
jmp dword [eax*4 + 0x11c49f0]
cmp ebx, esi
jle 0x853758
cmp ebx, ecx
mov esi, ecx
cmovle esi, ebx
jmp 0x853758
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
movzx ecx, byte [eax + 6]
movzx eax, byte [edx + 6]
movzx edx, byte [edx + 5]
sub ecx, eax
movzx eax, byte [esi + 5]
sub eax, edx
or ecx, eax
movzx eax, byte [esi + 7]
mov esi, dword [esp + 0x44]
movzx edx, byte [esi + 7]
sub eax, edx
or ecx, eax
sete al
movzx eax, al
jmp 0x852ea7
mov edx, dword [esp + 0x48]
movzx ecx, byte [edx + 6]
mov edx, dword [esp + 0x40]
movzx eax, byte [edx + 6]
mov edx, dword [esp + 0x48]
sub ecx, eax
movzx eax, byte [edx + 5]
mov edx, dword [esp + 0x40]
movzx edx, byte [edx + 5]
sub eax, edx
mov edx, dword [esp + 0x48]
or ecx, eax
movzx eax, byte [edx + 7]
mov edx, dword [esp + 0x40]
movzx edx, byte [edx + 7]
sub eax, edx
or ecx, eax
sete al
movzx eax, al
jmp 0x852dd1
movzx ecx, byte [edx + 8]
mov byte [esp + 0x40], cl
and ecx, 1
je 0x85339b
movzx ebx, byte [edx + 6]
movzx ecx, byte [eax + 6]
movzx esi, byte [edx + 5]
movzx edx, byte [edx + 7]
sub ecx, ebx
movzx ebx, byte [eax + 5]
sub ebx, esi
or ecx, ebx
movzx ebx, byte [eax + 7]
sub ebx, edx
or ecx, ebx
sete dl
movzx edx, dl
jmp 0x8533cd
movzx ecx, byte [eax + 0x10]
movzx edx, byte [eax + 6]
movzx ebx, byte [eax + 0xf]
sub edx, ecx
movzx ecx, byte [eax + 5]
sub ecx, ebx
movzx ebx, byte [eax + 0x11]
or edx, ecx
movzx ecx, byte [eax + 7]
sub ecx, ebx
or edx, ecx
sete dl
movzx edx, dl
jmp 0x853376
movsx ebx, word [edx + 2]
movsx ecx, word [eax + 2]
movsx esi, word [edx]
movzx edx, byte [edx + 4]
sub ecx, ebx
movsx ebx, word [eax]
movzx eax, byte [eax + 4]
sub ebx, esi
sub eax, edx
or ecx, ebx
or ecx, eax
mov eax, ebp
xor eax, edi
and eax, 1
or ecx, eax
sete al
movzx eax, al
test eax, eax
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + 0x2ff0]
je 0x8534db
mov edi, dword [eax + 0x2fe8]
mov edx, dword [eax + 0x2fec]
mov eax, 0x11c4ce0
mov ebp, dword [esp + 0xb4]
shl edi, cl
shl edx, cl
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0x64], edx
imul ecx, edi
add ecx, dword [esp + 0xb4]
test ebp, ebp
je 0x8539a3
mov ebx, dword [esp + 0x44]
lea eax, [ecx + ecx*4 - 5]
lea eax, [ebx + eax*2]
mov esi, dword [esp + 0xb8]
mov ebx, 0x11c4ce0
mov dword [esp + 0x60], eax
test esi, esi
je 0x8539fe
mov edx, dword [esp + 0xb4]
mov esi, ecx
mov ebp, dword [esp + 0x44]
sub esi, edi
lea ebx, [esi + esi*4]
test edx, edx
lea ebx, [ebp + ebx*2]
je 0x853e0b
lea edx, [esi + esi*4 - 5]
lea ebp, [ebp + edx*2]
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0xb4]
add ebp, 2
cmp edi, ebp
jle 0x8539fe
lea edx, [esi + esi*4 + 0xa]
mov esi, dword [esp + 0x44]
lea edx, [esi + edx*2]
mov dword [esp + 0x60], edx
cmp dword [esp + 0xb4], edi
jge 0x853c3f
mov esi, dword [esp + 0xb4]
shr esi, 0x1f
mov edx, esi
test dl, dl
jne 0x853c3f
mov esi, dword [esp + 0x64]
cmp dword [esp + 0xb8], esi
mov dword [esp + 0x48], 0
jge 0x853ac6
mov ebp, dword [esp + 0x44]
lea ecx, [ecx + ecx*4]
lea esi, [ebp + ecx*2]
test byte [esi + 8], 1
je 0x853c4c
movzx ecx, byte [esi + 5]
movzx edx, byte [eax + 5]
sub edx, ecx
mov ecx, edx
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
movzx ecx, byte [esi + 6]
add edx, edx
or edx, 1
bsr ebx, edx
movzx edx, byte [eax + 6]
movzx eax, byte [eax + 7]
xor ebx, 0x1f
sub edx, ecx
mov ecx, edx
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add edx, edx
or edx, 1
bsr ecx, edx
movzx edx, byte [esi + 7]
xor ecx, 0x1f
sub eax, edx
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
mov edx, 0x1f
add eax, eax
mov ebp, edx
or eax, 1
mov esi, edx
bsr eax, eax
sub ebp, ecx
xor eax, 0x1f
sub esi, ebx
mov ecx, ebp
sub edx, eax
add ecx, esi
mov eax, edx
add eax, ecx
lea eax, [eax + eax + 3]
mov dword [esp + 0x48], eax
mov ebp, dword [esp + 0x64]
mov eax, 4
mov dword [esp + 0x40], edi
mov dword [esp + 0x54], ebp
jmp 0x8534fd
cmp ebx, esi
jge 0x853ae7
cmp ebx, ecx
mov esi, ecx
cmovge esi, ebx
movsx ecx, word [esp + 0x64]
movsx ebx, word [esp + 0x60]
movsx edi, word [esp + 0x68]
cmp ecx, ebx
jl 0x85378e
cmp edi, ecx
jge 0x853799
cmp edi, ebx
mov ecx, ebx
cmovge ecx, edi
jmp 0x853799
mov eax, dword [esp + 0x98]
add eax, dword [esp + 0xdc]
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x98]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x10], edi
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.009c5f10
movzx edx, byte [esi + 8]
mov eax, dword [esp + 0x98]
mov ecx, edx
mov byte [esp + 0x4c], dl
mov edx, dword [esp + 0x58]
and ecx, 1
mov dword [esp + 0x50], ecx
mov dword [esp + 0x9c], eax
mov dword [esp + 0x98], edx
jmp 0x852de7
movsx ebx, si
movsx ecx, word [esp + 0x5c]
movsx esi, word [esp + 0x58]
cmp esi, ecx
jge 0x853adc
cmp ebx, esi
jle 0x853ae7
cmp ebx, ecx
mov esi, ecx
cmovle esi, ebx
jmp 0x853ae7
sar ecx, 7
mov dword [esp + 0xe0], ecx
jmp 0x852773
add edx, edx
jmp case.0x85381e.0
lea edx, [edx + edx*2]
sar edx, 8
mov dword [esp + 0xe0], edx
jmp 0x852773
mov dword [esp + 0xe0], 1
jmp 0x852773
shl edx, 2
sar edx, 7
mov dword [esp + 0xe0], edx
jmp 0x852773
add edx, edx
sar edx, 7
mov dword [esp + 0xe0], edx
jmp 0x852773
mov dword [esp + 0x48], 0
jmp 0x853ac6
movzx edx, byte [esi + 4]
movzx ecx, word [eax]
movzx ebp, word [eax + 2]
mov dword [esp + 0x48], edx
movzx edx, word [ebx]
mov word [esp + 0x4c], cx
movzx ecx, word [ebx + 2]
mov word [esp + 0x50], bp
mov ebp, dword [esp + 0x60]
mov word [esp + 0x54], dx
mov word [esp + 0x58], cx
movzx edx, word [ebp + 2]
movzx ecx, word [ebp]
mov ebp, dword [esp + 0x7c]
mov word [esp + 0x5c], dx
cmp dword [ebp + 0x2f68], 1
je 0x853dc4
mov edx, dword [esp + 0x60]
movsx ecx, cx
mov ebp, dword [esp + 0x48]
movzx eax, byte [eax + 4]
movzx ebx, byte [ebx + 4]
movzx edx, byte [edx + 4]
shl ebp, 5
add ebp, 0x1991e00
mov dword [esp + 0x40], ebp
mov ebp, dword [ebp + edx*4]
mov edx, dword [esp + 0x40]
imul ecx, ebp
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0x40]
mov ebx, dword [edx + ebx*4]
movsx edx, word [esp + 0x54]
sub ecx, 0xffffff80
mov ebp, dword [ebp + eax*4]
sar ecx, 8
movsx eax, word [esp + 0x4c]
imul edx, ebx
mov dword [esp + 0x40], ebp
imul eax, ebp
sub edx, 0xffffff80
sar edx, 8
sub eax, 0xffffff80
sar eax, 8
cmp edx, eax
jge 0x853db0
cmp ecx, edx
jle 0x853d0f
cmp ecx, eax
mov edx, eax
cmovle edx, ecx
movsx eax, word [esp + 0x58]
movsx ecx, word [esp + 0x5c]
imul ecx, dword [esp + 0x60]
imul eax, ebx
movsx ebx, word [esp + 0x50]
imul ebx, dword [esp + 0x40]
sub ecx, 0xffffff80
sar ecx, 8
sub eax, 0xffffff80
sub ebx, 0xffffff80
sar eax, 8
sar ebx, 8
cmp eax, ebx
jge 0x853df7
cmp ecx, eax
jle 0x853d50
cmp ecx, ebx
mov eax, ebx
cmovle eax, ecx
movsx ecx, word [esi]
mov ebx, 0x1f
sub edx, ecx
mov ecx, edx
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add edx, edx
or edx, 1
bsr ecx, edx
movsx edx, word [esi + 2]
mov esi, ebx
xor ecx, 0x1f
sub eax, edx
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x48]
add eax, eax
or eax, 1
bsr eax, eax
add edx, edx
xor eax, 0x1f
or edx, 1
sub esi, eax
bsr edx, edx
mov eax, esi
xor edx, 0x1f
sub eax, ecx
sub ebx, edx
lea eax, [eax + ebx + 0x20]
add eax, eax
mov dword [esp + 0x48], eax
jmp 0x853ac6
cmp ecx, edx
jge 0x853d0f
cmp ecx, eax
mov edx, eax
cmovge edx, ecx
jmp 0x853d0f
movsx eax, cx
movsx edx, word [esp + 0x54]
movsx ecx, word [esp + 0x4c]
cmp edx, ecx
jge 0x853e1d
cmp eax, edx
jle 0x853de0
cmp eax, ecx
mov edx, ecx
cmovle edx, eax
movsx eax, word [esp + 0x58]
movsx ebx, word [esp + 0x50]
movsx ecx, word [esp + 0x5c]
cmp eax, ebx
jl 0x853d45
cmp ecx, eax
jge 0x853d50
cmp ecx, ebx
mov eax, ebx
cmovge eax, ecx
jmp 0x853d50
mov dword [esp + 0x60], eax
jmp 0x8539e1
mov dword [esp + 0x6c], ecx
jmp 0x85363e
cmp eax, edx
jge 0x853de0
cmp eax, ecx
mov edx, ecx
cmovge edx, eax
jmp 0x853de0