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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x170
mov edi, dword [ebp + 0x20]
mov esi, dword [ebp + 0x1c]
cmp dword [ebp + 0x14], 0
je 0x1016f683
test edi, edi
je 0x1016f6e0
push edi
call fcn.1000a320
add esp, 4
push str.We_do_not_support_ROI_in_decoding_HT_codeblocks_n
push 1
push esi
call fcn.1016f44c
add esp, 0xc
push edi
call fcn.1000a320
add esp, 4
jmp 0x1016f6f0
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
movq xmm0, qword [eax + 8]
movq xmm1, qword [eax + 0x10]
psubd xmm1, xmm0
movd eax, xmm1
movdqa xmmword [esp + 0x50], xmm1
pshufd xmm0, xmm1, 0x55
movd ebx, xmm0
imul ebx, eax
mov eax, dword [esi + 0x74]
cmp ebx, dword [esi + 0x84]
jbe 0x1016f6fa
push eax
call fcn.10181add
add esp, 4
lea edi, [ebx*4]
push edi
call fcn.10181ac2
add esp, 4
mov dword [esi + 0x74], eax
test eax, eax
je 0x1016f6f0
mov dword [esi + 0x84], ebx
jmp 0x1016f703
push str.We_do_not_support_ROI_in_decoding_HT_codeblocks_n
push 1
push esi
call fcn.1016f44c
add esp, 0xc
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
test eax, eax
je 0x1016f70f
shl ebx, 2
mov edi, ebx
push edi
push 0
push eax
call fcn.1023e960
add esp, 0xc
mov eax, dword [esi + 0x78]
cmp dword [esi + 0x88], 0xa4f
ja 0x1016f73b
push eax
call fcn.10181add
add esp, 4
push 0x2940
call fcn.10181ac2
add esp, 4
mov dword [esi + 0x78], eax
test eax, eax
je 0x1016f6f0
mov dword [esi + 0x88], 0xa50
push 0x2940
push 0
push eax
call fcn.1023e960
add esp, 0xc
movdqa xmm0, xmmword [esp + 0x50]
movq qword [esi + 0x7c], xmm0
mov edx, dword [ebp + 0xc]
mov ecx, dword [edx + 0x18]
xor eax, eax
inc eax
test ecx, ecx
je 0x1016f6f2
sub ecx, dword [edx + 0x1c]
mov dword [esp + 0xd4], ecx
mov edi, dword [edx + 0x34]
test edi, edi
je 0x1016f7dc
mov ecx, dword [edx + 4]
xor ebx, ebx
xor edx, edx
add ebx, dword [ecx + edx*8 + 4]
inc edx
cmp edi, edx
jne 0x1016f785
cmp edi, 1
ja 0x1016f7a3
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x90], 0
je 0x1016f9c8
mov esi, dword [ebp + 8]
cmp ebx, dword [esi + 0x98]
mov edx, dword [ebp + 0xc]
jbe 0x1016f7e9
push ebx
push dword [esi + 0x94]
call fcn.10181b01
add esp, 8
test eax, eax
je 0x1016f6f0
mov dword [esi + 0x94], eax
mov dword [esi + 0x98], ebx
mov edx, dword [ebp + 0xc]
mov edi, dword [edx + 0x34]
jmp 0x1016f7ef
cmp dword [esi + 0x90], 0
je 0x1016f6f2
mov eax, dword [esi + 0x94]
test edi, edi
mov dword [esp + 0x50], eax
je 0x1016f828
mov esi, edx
mov edx, dword [edx + 4]
xor ebx, ebx
xor edi, edi
mov eax, dword [esp + 0x50]
lea ecx, [eax + ebx]
push dword [edx + edi*8 + 4]
push dword [edx + edi*8]
push ecx
call fcn.1023e3e0
add esp, 0xc
mov edx, dword [esi + 4]
add ebx, dword [edx + edi*8 + 4]
inc edi
cmp edi, dword [esi + 0x34]
jb 0x1016f800
mov edx, esi
jmp 0x1016f82a
xor ebx, ebx
mov ecx, dword [edx + 0x28]
mov dword [esp + 0x1c], 0
mov edi, 0
mov eax, 0
test ecx, ecx
je 0x1016f854
mov eax, dword [edx]
mov edi, dword [eax + 8]
cmp ecx, 1
jne 0x1016f851
xor eax, eax
jmp 0x1016f854
mov eax, dword [eax + 0x20]
add edi, eax
je 0x1016f872
mov ecx, dword [edx]
mov eax, dword [ecx]
mov dword [esp + 0x1c], eax
xor eax, eax
cmp edi, 1
je 0x1016f874
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x10], eax
mov al, 1
jmp 0x1016f87c
xor eax, eax
mov dword [esp + 0x10], 0
inc dword [esp + 0xd4]
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 0x74]
mov dword [esp + 0xb0], ecx
mov ecx, dword [edx + 0x14]
sub ecx, dword [edx + 0xc]
mov dword [esp + 0x114], ecx
mov ecx, dword [edx + 8]
mov dword [esp + 0x144], ecx
mov ecx, dword [esi + 0x78]
mov dword [esp + 0xe4], ecx
mov ecx, dword [edx + 0x10]
mov dword [esp + 0x12c], ecx
test al, al
je 0x1016f8fd
cmp dword [esp + 0x10], 0
jne 0x1016f8fd
mov edi, dword [ebp + 0x20]
test edi, edi
je 0x1016f99c
push edi
call fcn.1000a320
add esp, 4
push str.A_malformed_codeblock_that_has_more_than_one_coding_pass__but_zero_length_for_2nd_and_potentially_the_3rd_pass_in_an_HT_codeblock._n
push 2
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0xc
push edi
call fcn.1000a320
add esp, 4
xor esi, esi
inc esi
mov edx, dword [ebp + 0xc]
jmp 0x1016f923
mov esi, edi
cmp edi, 4
jb 0x1016f920
mov edi, dword [ebp + 0x20]
test edi, edi
je 0x1016fa52
push edi
call fcn.1000a320
add esp, 4
push esi
push str.We_do_not_support_more_than_3_coding_passes_in_an_HT_codeblock__This_codeblocks_has__d_passes._n
jmp 0x1016f94d
mov edi, dword [ebp + 0x20]
mov eax, dword [edx + 0x18]
cmp eax, 0x1e
mov ecx, dword [esp + 0xe4]
jbe 0x1016f95f
test edi, edi
je 0x1016f9bd
push edi
mov esi, edx
call fcn.1000a320
add esp, 4
push dword [esi + 0x18]
push str.32_bits_are_not_enough_to_decode_this_codeblock__since_the_number_of_bitplane___d__is_larger_than_30._n
push 1
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0x10
jmp 0x1016f678
cmp dword [esp + 0xd4], eax
jbe 0x1016f9e2
test edi, edi
je 0x1016fa73
push edi
mov esi, edx
call fcn.1000a320
add esp, 4
push dword [esi + 0x18]
push dword [esp + 0xd8]
push str.Malformed_HT_codeblock._Decoding_this_codeblock_is_stopped._There_are__d_zero_bitplanes_in__d_bitplanes._n
push 1
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0x14
jmp 0x1016f678
push str.A_malformed_codeblock_that_has_more_than_one_coding_pass__but_zero_length_for_2nd_and_potentially_the_3rd_pass_in_an_HT_codeblock._n
push 2
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0xc
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x18]
cmp eax, 0x1e
jbe 0x1016fa6a
push eax
push str.32_bits_are_not_enough_to_decode_this_codeblock__since_the_number_of_bitplane___d__is_larger_than_30._n
jmp 0x1016fa58
cmp edi, 1
mov edx, dword [ebp + 0xc]
jne 0x1016f6f2
mov eax, dword [edx + 4]
mov eax, dword [eax]
mov dword [esp + 0x50], eax
jmp 0x1016f82a
cmp esi, 2
jb 0x1016fa9e
cmp dword [esp + 0xd4], eax
mov edx, dword [esp + 0x1c]
jne 0x1016faa7
xor eax, eax
inc eax
mov dword [esp + 0x120], eax
cmp byte [0x1044aa9c], 0
jne 0x1016fad5
test edi, edi
je 0x1016fab0
push edi
call fcn.1000a320
add esp, 4
cmp byte [0x1044aa9c], 0
jne 0x1016fa47
mov byte [0x1044aa9c], 1
push esi
push str.Malformed_HT_codeblock._When_the_number_of_zero_planes_bitplanes_is_equal_to_the_number_of_bitplanes__only_the_cleanup_pass_makes_sense__but_we_have__d_passes_in_this_codeblock._Therefore__only_the_cleanup_pass_will_be_decoded._This_message_will_not_be_displayed_again._n
push 2
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0x10
push edi
call fcn.1000a320
add esp, 4
jmp 0x1016faca
push esi
push str.We_do_not_support_more_than_3_coding_passes_in_an_HT_codeblock__This_codeblocks_has__d_passes._n
push 1
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0x10
jmp 0x1016f6f0
cmp dword [esp + 0xd4], eax
jbe 0x1016fa92
push eax
push dword [esp + 0xd8]
push str.Malformed_HT_codeblock._Decoding_this_codeblock_is_stopped._There_are__d_zero_bitplanes_in__d_bitplanes._n
push 1
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0x14
jmp 0x1016f6f0
xor eax, eax
inc eax
mov dword [esp + 0x120], eax
jmp 0x1016faca
mov dword [esp + 0x120], esi
jmp 0x1016fad1
mov dword [esp + 0x120], esi
jmp 0x1016fad5
mov byte [0x1044aa9c], 1
push esi
push str.Malformed_HT_codeblock._When_the_number_of_zero_planes_bitplanes_is_equal_to_the_number_of_bitplanes__only_the_cleanup_pass_makes_sense__but_we_have__d_passes_in_this_codeblock._Therefore__only_the_cleanup_pass_will_be_decoded._This_message_will_not_be_displayed_again._n
push 2
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0x10
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0x1c]
cmp edx, 2
jb 0x1016fb3a
cmp edx, ebx
ja 0x1016fb3a
mov eax, dword [esp + 0x10]
add eax, edx
cmp eax, ebx
ja 0x1016fb3a
mov ebx, edx
mov edx, edi
mov eax, dword [esp + 0x50]
movzx esi, byte [ebx + eax - 1]
shl esi, 4
movzx edi, byte [ebx + eax - 2]
mov dword [esp + 0x9c], edi
and edi, 0xf
lea eax, [esi + edi]
cmp eax, 2
jae 0x1016fb5a
test edx, edx
je 0x1016fe27
mov esi, edx
push edx
call fcn.1000a320
add esp, 4
push str.Malformed_HT_codeblock._One_of_the_following_condition_is_not_met:_2___Scup___min_Lcup__4079__n
push 1
push dword [ebp + 0x1c]
call fcn.1016f44c
add esp, 0xc
push esi
jmp 0x1016f679
test edi, edi
je 0x1016fe20
push edi
call fcn.1000a320
add esp, 4
push str.Malformed_HT_codeblock._Invalid_codeblock_length_values._n
push 1
push dword [ebp + 0x1c]
jmp 0x1016f670
mov dword [esp + 0xac], eax
mov eax, ebx
sub eax, dword [esp + 0xac]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xac]
jl 0x1016fb0f
cmp eax, 0xff0
jae 0x1016fb0f
mov eax, dword [esp + 0x12c]
sub eax, dword [esp + 0x144]
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0xf8], eax
inc dword [esp + 0xd4]
mov eax, dword [esp + 0x50]
lea edx, [eax + ebx]
mov dword [esp + 0x78], edx
sub edx, dword [esp + 0xac]
mov ebx, edx
and ebx, 3
mov eax, 4
sub eax, ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x44], esi
mov eax, esi
mov dword [esp + 0x88], edi
or eax, edi
lea esi, [eax + ebx]
add esi, 0xfffffffb
mov dword [esp + 0x34], esi
mov dword [esp + 0x4c], ebx
add eax, ebx
mov dword [esp + 0xc4], eax
lea eax, [ecx + 0x210]
mov dword [esp + 0x118], eax
lea eax, [ecx + 0x420]
mov dword [esp + 0x140], eax
lea eax, [ecx + 0x630]
mov dword [esp + 0x13c], eax
mov eax, edx
mov dword [esp + 0x48], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x24], 0
mov ebx, dword [esp + 0xac]
xor ecx, ecx
test ecx, ecx
je 0x1016fc43
cmp byte [eax], 0x8f
ja 0x1016fe36
mov edi, ecx
mov ecx, 0xff
cmp ebx, 2
jl 0x1016fc52
movzx ecx, byte [eax]
mov edx, ecx
or edx, 0xf
mov dword [esp + 0x7c], eax
xor eax, eax
cmp ebx, 2
cmovne edx, ecx
setge al
mov ecx, 8
sub ecx, edi
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x24]
shld esi, edi, cl
add dword [esp + 0x7c], eax
mov eax, dword [esp + 0x7c]
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov dword [esp + 0x24], esi
mov esi, 0
cmovne edi, esi
or edi, edx
mov dword [esp + 0x38], edi
add dword [esp + 0x48], ecx
xor ecx, ecx
cmp edx, 0xff
sete cl
dec ebx
dec dword [esp + 0x20]
jne 0x1016fc36
mov dword [esp + 0x8c], ecx
mov cl, 0x40
sub cl, byte [esp + 0x48]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x24]
shld edx, eax, cl
shl eax, cl
xor esi, esi
test cl, 0x20
cmovne edx, eax
mov dword [esp + 0x24], edx
cmovne eax, esi
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x9c]
mov ecx, edx
shr cl, 4
movzx edi, cl
mov eax, edi
not eax
and eax, 7
cmp eax, 1
mov eax, 4
sbb eax, 0
mov dword [esp + 0x70], eax
cmp dl, 0x90
setae dl
mov eax, dword [esp + 0x78]
add eax, 0xfffffffd
mov dword [esp + 0xc8], eax
and eax, 3
inc eax
mov esi, dword [esp + 0xac]
lea ebx, [esi - 2]
cmp eax, ebx
cmovge eax, ebx
cmp esi, 2
jbe 0x1016fe54
mov dword [esp + 0xec], ebx
movzx ebx, cl
xor ecx, ecx
inc ecx
cmp eax, 2
mov dword [esp + 0xa4], eax
cmovge ecx, eax
mov eax, dword [esp + 0x1c]
sub eax, ecx
add eax, 0xfffffffd
mov dword [esp + 0x1c], eax
neg ecx
mov dword [esp + 0xac], ecx
xor edi, edi
xor esi, esi
mov dword [esp + 0xa0], esi
mov dword [esp + 0x84], ebx
mov eax, dword [esp + 0xc8]
movzx esi, byte [eax + edi]
cmp esi, 0x90
setae byte [esp + 0x20]
mov ebx, esi
not ebx
test bl, 0x7f
sete al
xor ebx, ebx
mov ecx, dword [esp + 0x70]
shld ebx, esi, cl
and al, dl
mov dword [esp + 0x9c], esi
mov edx, esi
shl edx, cl
test cl, 0x20
cmovne ebx, edx
mov esi, 0
cmovne edx, esi
mov esi, dword [esp + 0xa0]
or esi, ebx
mov ebx, dword [esp + 0x84]
or ebx, edx
movzx eax, al
neg eax
add ecx, eax
add ecx, 8
mov dword [esp + 0x70], ecx
dec edi
mov dl, byte [esp + 0x20]
cmp dword [esp + 0xac], edi
jne 0x1016fd66
xor ecx, ecx
cmp byte [esp + 0x9c], 0x90
setae cl
mov eax, dword [esp + 0xa4]
sub dword [esp + 0xec], eax
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x1c]
add edx, eax
mov dword [esp + 0xc8], edx
cmp dword [esp + 0x70], 0x20
mov edi, ebx
jbe 0x1016fe6c
jmp 0x10170016
push str.Malformed_HT_codeblock._Invalid_codeblock_length_values._n
jmp 0x1016fe2c
push str.Malformed_HT_codeblock._One_of_the_following_condition_is_not_met:_2___Scup___min_Lcup__4079__n
push 1
push dword [ebp + 0x1c]
jmp 0x1016f6e8
mov esi, dword [ebp + 0x20]
test esi, esi
je 0x1016fef4
push esi
call fcn.1000a320
add esp, 4
push str.Malformed_HT_codeblock._Incorrect_MEL_segment_sequence._n
jmp 0x1016fb27
xor ecx, ecx
cmp byte [esp + 0x9c], 0x90
setae cl
sub ebx, eax
mov dword [esp + 0xec], ebx
xor esi, esi
mov ebx, dword [esp + 0xec]
cmp ebx, 4
mov dword [esp + 0xa0], esi
mov dword [esp + 0x84], edi
jl 0x1016feaa
mov edx, ecx
mov ecx, dword [esp + 0xc8]
mov eax, dword [ecx - 3]
add ecx, 0xfffffffc
mov dword [esp + 0xc8], ecx
mov ecx, edx
add ebx, 0xfffffffc
mov dword [esp + 0xec], ebx
jmp 0x1016ff00
test ebx, ebx
jle 0x1016fefe
mov dword [esp + 0x110], ecx
mov edx, ebx
neg edx
inc ebx
mov ecx, 0x18
xor eax, eax
mov esi, dword [esp + 0xc8]
movzx edi, byte [esi]
shl edi, cl
or eax, edi
dec esi
add ecx, 0xfffffff8
dec ebx
cmp ebx, 1
ja 0x1016fec8
add dword [esp + 0xc8], edx
mov dword [esp + 0xec], 0
mov ecx, dword [esp + 0x110]
jmp 0x1016ff00
push str.Malformed_HT_codeblock._Incorrect_MEL_segment_sequence._n
jmp 0x1016fe2c
xor eax, eax
mov esi, eax
shr esi, 0x18
test ecx, ecx
setne cl
mov edx, eax
not edx
test edx, 0x7f000000
mov ebx, edx
mov dword [esp + 0x1c], edx
sete dl
and dl, cl
movzx edx, dl
mov ecx, 8
sub ecx, edx
cmp eax, 0x90000000
setae byte [esp + 0x20]
mov edi, eax
shr edi, 0x10
mov edx, 0xff
and edi, edx
mov edx, edi
shl edx, cl
or edx, esi
test ebx, 0x7f0000
sete bl
and bl, byte [esp + 0x20]
movzx esi, bl
neg esi
add ecx, esi
add ecx, 8
mov esi, 0x90
cmp edi, esi
setae bl
mov edi, eax
shr edi, 8
mov esi, 0xff
and edi, esi
mov esi, edi
shl esi, cl
or esi, edx
test dword [esp + 0x1c], 0x7f00
sete dl
and dl, bl
movzx edx, dl
sub ecx, edx
mov dword [esp + 0x20], ecx
mov edx, 0x90
cmp edi, edx
mov edi, 0x90
setae byte [esp + 0xac]
mov edx, 0xff
and eax, edx
lea ebx, [ecx + 8]
mov edx, eax
mov ecx, ebx
shl edx, cl
or edx, esi
test byte [esp + 0x1c], 0x7f
sete bh
and bh, byte [esp + 0xac]
xor ecx, ecx
cmp eax, edi
setae cl
mov dword [esp + 0x110], ecx
xor eax, eax
mov ecx, dword [esp + 0x70]
shld eax, edx, cl
shl edx, cl
xor esi, esi
test cl, 0x20
cmovne eax, edx
cmovne edx, esi
mov esi, dword [esp + 0xa0]
or esi, eax
mov edi, dword [esp + 0x84]
or edi, edx
movzx eax, bh
sub ecx, eax
mov eax, dword [esp + 0x20]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x110], ecx
mov dword [esp + 0x84], edi
mov dword [esp + 0xa0], esi
mov ecx, eax
or ecx, 0xfffffffc
mov dword [esp + 0x1c], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0x18], 0
xor ebx, ebx
mov edi, dword [esp + 0xc]
test edi, edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0xc], edi
jle 0x10170067
movzx edi, byte [eax]
inc eax
mov dword [esp + 0x50], eax
jmp 0x10170070
mov dword [esp + 0x50], eax
mov edi, 0xff
xor edx, edx
mov ecx, dword [esp + 0x1c]
shld edx, edi, cl
mov eax, edi
shl eax, cl
test cl, 0x20
cmovne edx, eax
mov esi, 0
cmovne eax, esi
or dword [esp + 0x18], edx
or dword [esp + 0xac], eax
cmp ebx, 1
adc ecx, 7
mov dword [esp + 0x1c], ecx
xor ebx, ebx
mov esi, edi
cmp edi, 0xff
sete bl
mov edi, dword [esp + 0xc]
dec edi
mov ecx, dword [esp + 0x20]
inc ecx
mov eax, dword [esp + 0x50]
jne 0x10170051
lea edx, [edi + 1]
cmp edx, 5
jl 0x101700d7
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add edi, 0xfffffffc
mov dword [esp + 0xc], edi
jmp 0x10170122
cmp edx, 2
jl 0x1017011b
mov dword [esp + 0x20], esi
mov dword [esp + 0xc], 0
xor eax, eax
dec eax
xor ecx, ecx
mov esi, dword [esp + 0x50]
movzx edi, byte [esi]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, eax
mov eax, edi
or eax, ebx
inc esi
add ecx, 8
dec edx
cmp edx, 1
ja 0x101700f1
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x20]
mov ecx, eax
jmp 0x10170122
mov dword [esp + 0xc], edi
xor ecx, ecx
dec ecx
mov edx, 0xff
xor eax, eax
cmp esi, edx
setne al
add eax, 7
mov esi, ecx
and esi, edx
mov dword [esp + 0x20], esi
xor ebx, ebx
cmp esi, edx
sete bl
mov edi, ecx
mov ecx, eax
sub eax, ebx
mov ebx, edi
shr ebx, 8
and ebx, edx
mov edx, ebx
shl edx, cl
mov dword [esp + 0x9c], edx
add eax, 8
xor edx, edx
mov ecx, 0xff
cmp ebx, ecx
sete dl
mov ebx, edi
shr ebx, 0x10
and ebx, ecx
mov esi, ebx
mov ecx, eax
shl esi, cl
sub eax, edx
xor ecx, ecx
mov edx, 0xff
cmp ebx, edx
sete cl
mov dword [esp + 0x3c], ecx
shr edi, 0x18
mov dword [esp + 0x90], eax
lea ecx, [eax + 8]
mov eax, edi
shl eax, cl
or esi, dword [esp + 0x9c]
or esi, dword [esp + 0x20]
or esi, eax
cmp edi, edx
sete byte [esp + 0x98]
xor eax, eax
mov ecx, dword [esp + 0x1c]
shld eax, esi, cl
shl esi, cl
xor edx, edx
test cl, 0x20
cmovne eax, esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x148], 0
cmovne esi, edx
mov dword [esp + 0x28], esi
cmp dword [esp + 0x120], 2
jb 0x101702c9
mov edx, dword [esp + 0x78]
mov esi, edx
and esi, 3
mov ecx, dword [esp + 0x10]
lea eax, [ecx + esi]
mov dword [esp + 0xd0], eax
lea eax, [ecx + esi]
add eax, 0xfffffffd
mov dword [esp + 0x30], eax
or esi, 0xfffffffc
mov dword [esp + 0x94], esi
mov dword [esp + 0xc0], edx
mov eax, ecx
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0xa4], 0
xor edx, edx
mov dword [esp + 0x20], ecx
test eax, eax
mov dword [esp + 0x9c], eax
jle 0x1017024d
mov ecx, dword [esp + 0xc0]
movzx edi, byte [ecx]
inc ecx
mov dword [esp + 0xc0], ecx
jmp 0x1017024f
xor edi, edi
xor esi, esi
mov eax, ebx
mov ecx, eax
shld esi, edi, cl
mov ebx, edi
shl ebx, cl
test al, 0x20
cmovne esi, ebx
mov ecx, 0
cmovne ebx, ecx
or dword [esp + 0xa4], esi
mov ecx, dword [esp + 0x20]
or ecx, ebx
cmp edx, 1
adc eax, 7
mov ebx, eax
xor edx, edx
cmp edi, 0xff
sete dl
mov eax, dword [esp + 0x9c]
dec eax
inc dword [esp + 0x94]
jne 0x1017022a
mov esi, edi
mov edx, dword [esp + 0x30]
cmp edx, 5
mov dword [esp + 0x20], ecx
jl 0x10170320
mov eax, dword [esp + 0xc0]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0xc0], eax
add dword [esp + 0xd0], 0xfffffff8
jmp 0x10170390
xor eax, eax
dec eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0x130], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x9c], eax
mov edx, eax
mov dword [esp + 0x104], eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0x100], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xf4], eax
jmp 0x101705f1
mov eax, dword [esp + 0xd0]
add eax, 0xfffffffc
xor edi, edi
cmp edx, 2
mov dword [esp + 0xd0], eax
jl 0x10170390
mov dword [esp + 0x9c], esi
xor edi, edi
mov eax, dword [esp + 0xc0]
xor ecx, ecx
mov dword [esp + 0x30], edx
movzx edx, byte [eax]
mov esi, 0xff
shl esi, cl
shl edx, cl
not esi
and esi, edi
mov edi, edx
mov edx, dword [esp + 0x30]
or edi, esi
inc eax
add ecx, 8
dec edx
cmp edx, 1
ja 0x1017034a
mov eax, dword [esp + 0xd0]
add dword [esp + 0xc0], eax
mov dword [esp + 0xd0], 0
mov esi, dword [esp + 0x9c]
mov eax, 0xff
xor edx, edx
cmp esi, eax
setne dl
add edx, 7
mov esi, edi
mov ecx, 0xff
and esi, ecx
mov dword [esp + 0x9c], esi
xor eax, eax
cmp esi, ecx
mov esi, 0xff
sete al
mov ecx, edx
sub edx, eax
mov eax, edi
shr eax, 8
and eax, esi
mov esi, eax
shl esi, cl
mov dword [esp + 0xb4], esi
add edx, 8
mov dword [esp + 0x94], edx
xor edx, edx
mov ecx, 0xff
cmp eax, ecx
sete dl
mov esi, edx
mov edx, edi
shr edx, 0x10
and edx, ecx
mov eax, edx
mov ecx, dword [esp + 0x94]
shl eax, cl
sub dword [esp + 0x94], esi
xor ecx, ecx
mov esi, 0xff
cmp edx, esi
sete cl
mov dword [esp + 0x30], ecx
shr edi, 0x18
mov edx, edi
mov ecx, dword [esp + 0x94]
add ecx, 8
shl edx, cl
or eax, dword [esp + 0xb4]
or eax, dword [esp + 0x9c]
or eax, edx
xor ecx, ecx
cmp edi, esi
sete cl
mov dword [esp + 0x130], ecx
xor edx, edx
mov ecx, ebx
shld edx, eax, cl
shl eax, cl
xor esi, esi
test bl, 0x20
cmovne edx, eax
mov dword [esp + 0x148], 0
cmovne eax, esi
or edx, dword [esp + 0xa4]
or eax, dword [esp + 0x20]
mov dword [esp + 0x9c], eax
sub ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x94]
add eax, ebx
add eax, 0x10
mov dword [esp + 0x94], eax
cmp dword [esp + 0x120], 3
jb 0x101705c4
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x78]
add eax, ebx
dec eax
mov dword [esp + 0xb8], eax
and eax, 3
mov dword [esp + 0xb4], eax
inc eax
xor ecx, ecx
inc ecx
mov dword [esp + 0xbc], 0
mov dword [esp + 0xf4], 0
mov dword [esp + 0x100], 0
mov dword [esp + 0xa4], edx
mov dword [esp + 0x20], eax
test ebx, ebx
mov dword [esp + 0x30], ebx
jle 0x101704ff
mov eax, dword [esp + 0xb8]
movzx ebx, byte [eax]
dec eax
mov dword [esp + 0xb8], eax
jmp 0x10170501
xor ebx, ebx
test ecx, ecx
setne byte [esp + 0x78]
mov edx, ebx
not edx
test dl, 0x7f
sete dl
xor esi, esi
mov ecx, dword [esp + 0xbc]
shld esi, ebx, cl
mov eax, ebx
shl eax, cl
and dl, byte [esp + 0x78]
test cl, 0x20
cmovne esi, eax
mov edi, 0
cmovne eax, edi
or dword [esp + 0x100], esi
or dword [esp + 0xf4], eax
movzx eax, dl
neg eax
add ecx, eax
add ecx, 8
mov dword [esp + 0xbc], ecx
xor ecx, ecx
mov dword [esp + 0x78], ebx
cmp ebx, 0x90
setae cl
mov ebx, dword [esp + 0x30]
dec ebx
mov eax, dword [esp + 0x20]
dec eax
mov edi, dword [esp + 0xa4]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xb4]
jne 0x101704df
mov dword [esp + 0x104], ecx
mov eax, esi
not eax
add eax, edx
mov dword [esp + 0xf0], eax
mov al, 1
mov dword [esp + 0x148], eax
cmp dword [esp + 0xbc], 0x20
mov eax, esi
mov esi, dword [esp + 0xe4]
jbe 0x1017068f
mov ebx, edi
mov eax, dword [esp + 0x3c]
mov edi, esi
mov edx, ebx
jmp 0x101705fc
xor eax, eax
dec eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], eax
mov dword [esp + 0xb8], eax
mov edi, dword [esp + 0xe4]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xa4], edx
sub dword [esp + 0x1c], eax
cmp dword [esp + 0x120], 2
setb al
mov byte [edi + 0x840], 0
cmp dword [esp + 0x48], 5
mov byte [esp + 0xd8], al
ja 0x10170651
mov eax, dword [esp + 0xc4]
cmp eax, 0xa
jb 0x1017066d
mov ecx, dword [esp + 0x7c]
mov edx, eax
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x7c], ecx
add edx, 0xfffffff7
mov dword [esp + 0xc4], edx
jmp 0x10170724
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x4c], eax
mov ebx, dword [esp + 0x24]
jmp 0x101707d3
cmp eax, 6
jb 0x101706bf
mov dword [esp + 0xc4], 0
cmp dword [esp + 0x34], 1
jne 0x101706cf
xor edx, edx
dec edx
xor ecx, ecx
mov ebx, dword [esp + 0x7c]
jmp 0x1017070a
mov edi, edx
sub edi, eax
cmp edi, 5
jl 0x10177c58
mov eax, dword [esp + 0xb8]
mov esi, dword [eax - 3]
add eax, 0xfffffffc
mov dword [esp + 0xb8], eax
add edi, 0xfffffffb
mov dword [esp + 0xf0], edi
jmp 0x10177c90
xor eax, eax
dec eax
mov ecx, dword [esp + 0x34]
mov dword [esp + 0xc4], ecx
jmp 0x10170724
mov eax, dword [esp + 0x44]
add eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x4c]
add eax, ecx
add eax, 0xfffffffc
xor ecx, ecx
xor esi, esi
dec esi
mov ebx, dword [esp + 0x7c]
mov edi, 0xff
shl edi, cl
not edi
and edi, esi
movzx edx, byte [ebx]
inc ebx
shl edx, cl
or edx, edi
add ecx, 8
dec eax
mov esi, edx
cmp eax, 2
ja 0x101706ec
movzx eax, byte [ebx]
or eax, 0xf
mov esi, 0xff
shl esi, cl
shl eax, cl
not esi
and esi, edx
or eax, esi
inc ebx
mov dword [esp + 0x7c], ebx
mov esi, 0xff
mov edi, eax
and edi, esi
xor ebx, ebx
cmp edi, esi
sete bl
mov cl, 8
sub cl, bl
add ebx, dword [esp + 0x8c]
shl edi, cl
mov ecx, eax
shr ecx, 8
and ecx, esi
or edi, ecx
xor edx, edx
cmp ecx, esi
sete dl
mov cl, 8
sub cl, dl
add edx, ebx
shl edi, cl
mov ecx, eax
shr ecx, 0x10
and ecx, esi
or edi, ecx
xor ebx, ebx
cmp ecx, esi
sete bl
mov cl, 8
sub cl, bl
shl edi, cl
add ebx, edx
shr eax, 0x18
or edi, eax
xor ecx, ecx
cmp eax, esi
sete cl
mov dword [esp + 0x8c], ecx
mov ecx, ebx
mov eax, dword [esp + 0x48]
sub ecx, eax
add cl, 0x20
xor esi, esi
shld esi, edi, cl
shl edi, cl
xor edx, edx
test cl, 0x20
cmovne esi, edi
mov dword [esp + 0xcc], 0
cmovne edi, edx
sub eax, ebx
mov ebx, esi
or ebx, dword [esp + 0x24]
or edi, dword [esp + 0x38]
mov dword [esp + 0x4c], edi
add eax, 0x20
mov dword [esp + 0x48], eax
cmp eax, 6
jl 0x10170975
mov edi, dword [esp + 0xe4]
mov edx, dword [esp + 0x28]
xor eax, eax
dec eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0x44], eax
cmp eax, 7
mov dword [esp + 0x3c], ebx
je 0x1017096b
mov eax, dword [esp + 0xcc]
mov edx, dword [eax*4 + 0x10321afc]
test ebx, ebx
js 0x1017086f
mov cl, 0x3f
sub cl, dl
mov esi, dword [esp + 0x4c]
shrd esi, ebx, cl
mov edi, ebx
shr edi, cl
test cl, 0x20
cmove edi, esi
xor esi, esi
dec esi
mov ecx, edx
shl esi, cl
not esi
and esi, edi
cmp eax, 2
lea ecx, [eax - 1]
mov eax, edx
mov edx, 0
cmovl ecx, edx
inc eax
mov dword [esp + 0x20], eax
sub dword [esp + 0x48], eax
lea esi, [esi*2 + 1]
mov dword [esp + 0xcc], ecx
jmp 0x1017089c
xor esi, esi
dec esi
mov ecx, edx
shl esi, cl
not esi
cmp eax, 0xb
lea eax, [eax + 1]
mov ecx, 0xc
cmovge eax, ecx
dec dword [esp + 0x48]
add esi, esi
mov dword [esp + 0xcc], eax
xor eax, eax
inc eax
mov dword [esp + 0x20], eax
xor edx, edx
mov eax, esi
sar eax, 0x1f
mov edi, esi
mov ebx, dword [esp + 0x10]
mov ecx, ebx
shl edi, cl
test bl, 0x20
mov ecx, edi
cmovne ecx, edx
mov dword [esp + 0x38], ecx
mov ecx, ebx
shld eax, esi, cl
test bl, 0x20
cmovne eax, edi
mov esi, 0x3f
shl esi, cl
test bl, 0x20
mov edx, 0
mov ecx, esi
cmovne ecx, edx
mov dword [esp + 0x24], ecx
xor edi, edi
mov ecx, ebx
mov edx, 0x3f
shld edi, edx, cl
test bl, 0x20
cmovne edi, esi
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x3c]
shld esi, edx, cl
shl edx, cl
test cl, 0x20
cmovne esi, edx
mov ecx, 0
cmovne edx, ecx
mov dword [esp + 0x4c], edx
not edi
mov ecx, dword [esp + 0x88]
and ecx, edi
or ecx, eax
mov dword [esp + 0x88], ecx
mov eax, dword [esp + 0x24]
not eax
mov ecx, dword [esp + 0x80]
and ecx, eax
or ecx, dword [esp + 0x38]
mov dword [esp + 0x80], ecx
mov eax, dword [esp + 0x44]
inc eax
add ebx, 7
mov dword [esp + 0x10], ebx
cmp dword [esp + 0x48], 5
mov edi, dword [esp + 0xe4]
mov ebx, esi
mov edx, dword [esp + 0x28]
jg 0x10170803
mov dword [esp + 0x44], eax
mov dword [esp + 0x3c], ebx
jmp 0x101709a1
mov dword [esp + 0x44], 7
jmp 0x101709a1
mov dword [esp + 0x3c], ebx
xor eax, eax
dec eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x80], 0
mov dword [esp + 0x88], 0
mov edi, dword [esp + 0xe4]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
or dword [esp + 0x2c], eax
xor eax, eax
mov bl, byte [esp + 0x98]
mov al, bl
mov dword [esp + 0x14], eax
or edx, dword [esp + 0xac]
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x90]
lea ebx, [edx + eax]
add ebx, 0x10
mov edx, dword [esp + 0x88]
mov esi, edx
mov eax, dword [esp + 0x80]
shld esi, eax, 0x19
mov dword [esp + 0xe0], esi
lea ecx, [edi + 0x840]
and eax, 0x7f
mov dword [esp + 0x80], eax
shr edx, 7
mov dword [esp + 0x88], edx
cmp dword [esp + 0x40], 0
mov dword [esp + 0x124], ecx
jle 0x10173436
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0xf8]
lea edx, [eax - 1]
mov dword [esp + 0x78], edx
xor ebx, ebx
mov dword [esp + 0xb4], edi
mov dword [esp + 0x11c], 0
mov dword [esp + 0x24], ecx
mov dword [esp + 0x98], 0
mov esi, dword [esp + 0xb0]
xor edi, edi
mov eax, dword [esp + 0x70]
mov dword [esp + 0xac], edi
cmp eax, 0x20
mov dword [esp + 0x38], esi
mov dword [esp + 0x70], eax
jae 0x10170a9d
mov ecx, dword [esp + 0xec]
cmp ecx, 4
jl 0x10170aa9
mov eax, dword [esp + 0xc8]
mov esi, dword [eax - 3]
add eax, 0xfffffffc
mov dword [esp + 0xc8], eax
add ecx, 0xfffffffc
mov dword [esp + 0xec], ecx
jmp 0x10170ae9
mov edi, dword [esp + 0x84]
jmp 0x10170d99
test ecx, ecx
jle 0x10170ae7
mov ebx, ecx
mov eax, ecx
neg eax
inc ebx
mov ecx, 0x18
xor esi, esi
mov edx, dword [esp + 0xc8]
movzx edi, byte [edx]
shl edi, cl
or esi, edi
dec edx
add ecx, 0xfffffff8
dec ebx
cmp ebx, 1
ja 0x10170ac2
add dword [esp + 0xc8], eax
mov dword [esp + 0xec], 0
jmp 0x10170ae9
xor esi, esi
mov eax, esi
shr eax, 0x18
cmp dword [esp + 0x110], 0
setne cl
mov ebx, esi
not ebx
test ebx, 0x7f000000
sete dl
and dl, cl
movzx edx, dl
mov ecx, 8
sub ecx, edx
cmp esi, 0x90000000
setae byte [esp + 0x10]
mov edi, esi
shr edi, 0x10
mov edx, 0xff
and edi, edx
mov edx, edi
shl edx, cl
or edx, eax
test ebx, 0x7f0000
sete al
and al, byte [esp + 0x10]
movzx eax, al
neg eax
add ecx, eax
add ecx, 8
mov dword [esp + 0x10], ecx
mov eax, 0x90
cmp edi, eax
setae byte [esp + 0x1c]
mov edi, esi
shr edi, 8
mov eax, 0xff
and edi, eax
mov eax, edi
shl eax, cl
or eax, edx
test ebx, 0x7f00
sete cl
and cl, byte [esp + 0x1c]
movzx ecx, cl
mov edx, dword [esp + 0x10]
sub edx, ecx
mov dword [esp + 0x10], edx
mov ecx, 0x90
cmp edi, ecx
setae byte [esp + 0x1c]
mov ecx, 0xff
and esi, ecx
lea ecx, [edx + 8]
mov edx, esi
shl edx, cl
or edx, eax
test bl, 0x7f
sete bl
and bl, byte [esp + 0x1c]
mov eax, 0x90
cmp esi, eax
setae bh
xor eax, eax
mov ecx, dword [esp + 0x70]
shld eax, edx, cl
shl edx, cl
test cl, 0x20
cmovne eax, edx
mov edi, 0
cmovne edx, edi
mov edi, edx
or dword [esp + 0xa0], eax
or edi, dword [esp + 0x84]
movzx eax, bl
sub ecx, eax
mov eax, dword [esp + 0x10]
add ecx, eax
add ecx, 0x10
cmp ecx, 0x1f
mov dword [esp + 0x70], ecx
ja 0x10170c22
mov edx, dword [esp + 0xec]
cmp edx, 4
mov dword [esp + 0x1c], edi
jl 0x10170c42
mov eax, dword [esp + 0xc8]
mov edi, dword [eax - 3]
add eax, 0xfffffffc
mov dword [esp + 0xc8], eax
add edx, 0xfffffffc
mov dword [esp + 0xec], edx
jmp 0x10170c88
xor eax, eax
mov al, bh
mov dword [esp + 0x110], eax
mov dword [esp + 0x84], edi
mov ecx, dword [esp + 0x8c]
xor ebx, ebx
jmp 0x10170da0
test edx, edx
mov ebx, dword [esp + 0xc8]
jle 0x10170c86
mov ecx, edx
neg ecx
mov dword [esp + 0x10], ecx
inc edx
mov ecx, 0x18
xor edi, edi
movzx eax, byte [ebx]
shl eax, cl
or edi, eax
dec ebx
add ecx, 0xfffffff8
dec edx
cmp edx, 1
ja 0x10170c5d
mov eax, dword [esp + 0x10]
add dword [esp + 0xc8], eax
mov dword [esp + 0xec], 0
jmp 0x10170c88
xor edi, edi
mov eax, 0x90
cmp esi, eax
setae cl
mov eax, edi
shr eax, 0x18
mov edx, edi
not edx
test edx, 0x7f000000
mov dword [esp + 0x20], edx
sete ch
and ch, cl
movzx esi, ch
mov ecx, 8
sub ecx, esi
cmp edi, 0x90000000
setae byte [esp + 0x10]
mov esi, edi
shr esi, 0x10
mov ebx, 0xff
and esi, ebx
mov ebx, esi
shl ebx, cl
or ebx, eax
test edx, 0x7f0000
sete al
and al, byte [esp + 0x10]
movzx eax, al
neg eax
lea edx, [ecx + eax]
add edx, 8
mov eax, 0x90
cmp esi, eax
setae ch
mov esi, edi
shr esi, 8
mov eax, 0xff
and esi, eax
mov eax, esi
mov cl, dl
shl eax, cl
or eax, ebx
mov ebx, dword [esp + 0x20]
test ebx, 0x7f00
sete cl
and cl, ch
movzx ecx, cl
sub edx, ecx
mov dword [esp + 0x10], edx
mov ecx, 0x90
cmp esi, ecx
setae byte [esp + 0x30]
mov ecx, 0xff
and edi, ecx
lea ecx, [edx + 8]
mov edx, edi
shl edx, cl
or edx, eax
test bl, 0x7f
sete bh
and bh, byte [esp + 0x30]
xor eax, eax
mov ecx, 0x90
cmp edi, ecx
setae al
mov dword [esp + 0x110], eax
xor eax, eax
mov ecx, dword [esp + 0x70]
shld eax, edx, cl
shl edx, cl
test cl, 0x20
cmovne eax, edx
mov esi, 0
cmovne edx, esi
or dword [esp + 0xa0], eax
or edx, dword [esp + 0x1c]
movzx eax, bh
xor ebx, ebx
sub ecx, eax
mov eax, dword [esp + 0x10]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x70], ecx
mov dword [esp + 0x84], edx
mov edi, edx
mov ecx, dword [esp + 0x8c]
and edi, 0x7f
mov edx, dword [esp + 0x98]
mov eax, edx
shl eax, 8
movzx esi, word [eax + edi*2 + 0x103209de]
test edx, edx
jne 0x1017113e
mov edx, dword [esp + 0x80]
lea eax, [edx - 2]
cmp eax, 0xffffffff
cmovne esi, ebx
cmp edx, 1
jg 0x10170de7
cmp dword [esp + 0x44], 0
je 0x10170df3
mov edi, dword [esp + 0xc4]
jmp 0x101710fd
mov dword [esp + 0x80], eax
jmp 0x1017113e
mov dword [esp + 0x1c], esi
cmp dword [esp + 0x48], 5
mov ebx, dword [esp + 0xc4]
jg 0x10170e26
cmp ebx, 5
mov eax, dword [esp + 0x7c]
jl 0x10170e3a
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x7c], eax
add ebx, 0xfffffffc
mov dword [esp + 0x90], ebx
jmp 0x10170eae
mov dword [esp + 0x90], ebx
mov edx, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
jmp 0x10170f58
test ebx, ebx
jle 0x10170e78
mov dword [esp + 0x90], 0
cmp ebx, 1
je 0x10170e84
inc ebx
xor ecx, ecx
xor eax, eax
dec eax
mov edi, dword [esp + 0x7c]
mov esi, 0xff
shl esi, cl
not esi
and esi, eax
movzx edx, byte [edi]
inc edi
shl edx, cl
or edx, esi
add ecx, 8
dec ebx
mov eax, edx
cmp ebx, 2
ja 0x10170e58
jmp 0x10170e8d
mov dword [esp + 0x90], ebx
xor esi, esi
dec esi
jmp 0x10170eae
xor ecx, ecx
xor edx, edx
dec edx
mov edi, dword [esp + 0x7c]
movzx esi, byte [edi]
or esi, 0xf
mov eax, 0xff
shl eax, cl
shl esi, cl
not eax
and eax, edx
or esi, eax
inc edi
mov dword [esp + 0x7c], edi
mov ecx, dword [esp + 0x8c]
mov edx, esi
mov edi, 0xff
and edx, edi
xor eax, eax
cmp edx, edi
sete al
add ecx, eax
mov dword [esp + 0x8c], ecx
mov cl, 8
sub cl, al
shl edx, cl
mov eax, esi
shr eax, 8
and eax, edi
or edx, eax
xor ebx, ebx
cmp eax, edi
sete bl
mov cl, 8
sub cl, bl
mov eax, ebx
add eax, dword [esp + 0x8c]
shl edx, cl
mov ecx, esi
shr ecx, 0x10
and ecx, edi
or edx, ecx
xor ebx, ebx
cmp ecx, edi
sete bl
mov cl, 8
sub cl, bl
shl edx, cl
add ebx, eax
mov eax, ebx
shr esi, 0x18
or edx, esi
xor ebx, ebx
cmp esi, edi
sete bl
mov ecx, eax
mov esi, eax
mov eax, dword [esp + 0x48]
sub ecx, eax
add cl, 0x20
xor edi, edi
shld edi, edx, cl
shl edx, cl
test cl, 0x20
mov ecx, ebx
cmovne edi, edx
mov dword [esp + 0x44], 0
mov ebx, 0
cmovne edx, ebx
sub eax, esi
or edi, dword [esp + 0x3c]
or edx, dword [esp + 0x4c]
add eax, 0x20
mov dword [esp + 0x48], eax
cmp eax, 6
jl 0x101710ea
mov dword [esp + 0x10], 0
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], edi
xor eax, eax
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x8c], ecx
cmp eax, 8
je 0x101710e0
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0xcc]
mov eax, dword [edx*4 + 0x10321afc]
mov ebx, dword [esp + 0x3c]
test ebx, ebx
mov dword [esp + 0x3c], ebx
js 0x10170fe3
mov cl, 0x3f
sub cl, al
mov esi, dword [esp + 0x4c]
shrd esi, ebx, cl
mov edi, ebx
shr edi, cl
test cl, 0x20
cmove edi, esi
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
and esi, edi
cmp edx, 2
lea ecx, [edx - 1]
mov edx, 0
cmovl ecx, edx
inc eax
mov dword [esp + 0x34], eax
sub dword [esp + 0x48], eax
lea esi, [esi*2 + 1]
mov dword [esp + 0xcc], ecx
jmp 0x1017100e
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
cmp edx, 0xb
lea ecx, [edx + 1]
mov eax, 0xc
cmovge ecx, eax
dec dword [esp + 0x48]
add esi, esi
mov dword [esp + 0xcc], ecx
xor eax, eax
inc eax
mov dword [esp + 0x34], eax
mov edi, esi
sar edi, 0x1f
mov ebx, esi
mov edx, dword [esp + 0x10]
mov ecx, edx
shl ebx, cl
test dl, 0x20
mov eax, ebx
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x20], eax
mov ecx, edx
shld edi, esi, cl
test dl, 0x20
cmovne edi, ebx
mov esi, 0x3f
shl esi, cl
test dl, 0x20
mov ecx, esi
mov eax, 0
cmovne ecx, eax
mov dword [esp + 0x30], ecx
xor ebx, ebx
mov ecx, edx
mov eax, 0x3f
shld ebx, eax, cl
test dl, 0x20
cmovne ebx, esi
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x3c]
shld esi, eax, cl
shl eax, cl
test cl, 0x20
cmovne esi, eax
mov dword [esp + 0x3c], esi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x4c], eax
not ebx
mov ecx, dword [esp + 0x88]
and ecx, ebx
or ecx, edi
mov dword [esp + 0x88], ecx
mov eax, dword [esp + 0x30]
not eax
mov ecx, dword [esp + 0xe0]
and ecx, eax
or ecx, dword [esp + 0x20]
mov dword [esp + 0xe0], ecx
mov eax, dword [esp + 0x44]
inc eax
add edx, 7
mov dword [esp + 0x10], edx
cmp dword [esp + 0x48], 5
mov ecx, dword [esp + 0x8c]
mov esi, dword [esp + 0x1c]
jg 0x10170f75
mov dword [esp + 0x44], eax
jmp 0x101710f6
mov dword [esp + 0x44], 8
jmp 0x101710f6
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], edi
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x90]
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x88]
mov eax, ecx
mov edx, dword [esp + 0xe0]
shld eax, edx, 0x19
and edx, 0x7f
mov dword [esp + 0x80], edx
shr ecx, 7
mov dword [esp + 0x88], ecx
dec dword [esp + 0x44]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xc4], edi
mov eax, esi
and eax, 7
mov ecx, eax
mov edx, dword [esp + 0xa0]
mov edi, esi
shrd dword [esp + 0x84], edx, cl
mov ebx, esi
and ebx, 0x10
shr edx, cl
mov dword [esp + 0xa0], edx
mov ecx, esi
shr ecx, 4
mov dword [esp + 0xdc], ecx
and ecx, 3
shr esi, 2
and esi, 0x30
or esi, ecx
mov ecx, dword [esp + 0x11c]
shl esi, cl
mov dword [esp + 0x6c], ebx
shr ebx, 4
mov dword [esp + 0x1c], edi
shr edi, 5
and edi, 7
or edi, ebx
sub dword [esp + 0x70], eax
mov eax, dword [esp + 0xb4]
or esi, dword [eax]
mov dword [esp + 0x20], esi
mov dword [eax], esi
mov eax, dword [esp + 0xac]
or eax, 2
cmp eax, dword [esp + 0x40]
jge 0x10171206
mov eax, dword [esp + 0x84]
and eax, 0x7f
mov ecx, edi
shl ecx, 8
movzx ebx, word [ecx + eax*2 + 0x103209de]
test edi, edi
jne 0x1017156f
mov ecx, dword [esp + 0x80]
lea eax, [ecx - 2]
cmp eax, 0xffffffff
mov edx, 0
cmovne ebx, edx
cmp ecx, 1
jg 0x1017121b
cmp dword [esp + 0x44], 0
je 0x10171227
mov esi, dword [esp + 0xc4]
jmp 0x10171535
mov dword [esp + 0x98], edi
xor esi, esi
mov ebx, dword [esp + 0x84]
jmp 0x101715b4
mov dword [esp + 0x80], eax
jmp 0x1017156f
cmp dword [esp + 0x48], 5
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x10], ebx
jg 0x1017125d
cmp eax, 5
jl 0x10171268
mov ecx, eax
mov eax, dword [esp + 0x7c]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x7c], eax
add ecx, 0xfffffffc
mov dword [esp + 0x98], ecx
jmp 0x101712dc
mov esi, eax
mov ebx, dword [esp + 0x3c]
jmp 0x10171390
test eax, eax
jle 0x101712ad
mov dword [esp + 0x98], 0
cmp eax, 1
je 0x101712b9
mov ebx, dword [esp + 0xc4]
inc ebx
xor ecx, ecx
xor eax, eax
dec eax
mov edi, dword [esp + 0x7c]
mov esi, 0xff
shl esi, cl
not esi
and esi, eax
movzx edx, byte [edi]
inc edi
shl edx, cl
or edx, esi
add ecx, 8
dec ebx
mov eax, edx
cmp ebx, 2
ja 0x1017128d
jmp 0x101712c2
mov dword [esp + 0x98], eax
xor esi, esi
dec esi
jmp 0x101712dc
xor ecx, ecx
xor edx, edx
dec edx
mov edi, dword [esp + 0x7c]
movzx esi, byte [edi]
or esi, 0xf
mov eax, 0xff
shl eax, cl
shl esi, cl
not eax
and eax, edx
or esi, eax
inc edi
mov dword [esp + 0x7c], edi
mov ecx, dword [esp + 0x8c]
mov edx, esi
mov edi, 0xff
and edx, edi
xor eax, eax
cmp edx, edi
sete al
add ecx, eax
mov dword [esp + 0x8c], ecx
mov cl, 8
sub cl, al
shl edx, cl
mov eax, esi
shr eax, 8
and eax, edi
or edx, eax
xor ebx, ebx
cmp eax, edi
sete bl
mov cl, 8
sub cl, bl
add ebx, dword [esp + 0x8c]
shl edx, cl
mov ecx, esi
shr ecx, 0x10
and ecx, edi
or edx, ecx
xor eax, eax
cmp ecx, edi
sete al
mov cl, 8
sub cl, al
shl edx, cl
add eax, ebx
shr esi, 0x18
or edx, esi
xor ecx, ecx
cmp esi, edi
sete cl
mov dword [esp + 0x8c], ecx
mov ecx, eax
mov esi, dword [esp + 0x48]
sub ecx, esi
add cl, 0x20
xor ebx, ebx
shld ebx, edx, cl
shl edx, cl
xor edi, edi
test cl, 0x20
cmovne ebx, edx
mov dword [esp + 0x44], 0
cmovne edx, edi
sub esi, eax
or ebx, dword [esp + 0x3c]
or edx, dword [esp + 0x4c]
add esi, 0x20
mov dword [esp + 0x48], esi
cmp esi, 6
mov esi, dword [esp + 0x98]
jl 0x10171529
mov dword [esp + 0x30], 0
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], ebx
xor eax, eax
mov dword [esp + 0x98], esi
cmp eax, 8
je 0x1017151f
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0xcc]
mov eax, dword [edx*4 + 0x10321afc]
mov ebx, dword [esp + 0x3c]
test ebx, ebx
mov dword [esp + 0x3c], ebx
js 0x1017141a
mov cl, 0x3f
sub cl, al
mov esi, dword [esp + 0x4c]
shrd esi, ebx, cl
mov edi, ebx
shr edi, cl
test cl, 0x20
cmove edi, esi
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
and esi, edi
cmp edx, 2
lea ecx, [edx - 1]
mov edx, 0
cmovl ecx, edx
inc eax
mov dword [esp + 0x80], eax
sub dword [esp + 0x48], eax
lea edi, [esi*2 + 1]
mov dword [esp + 0xcc], ecx
jmp 0x10171448
xor edi, edi
dec edi
mov ecx, eax
shl edi, cl
not edi
cmp edx, 0xb
lea ecx, [edx + 1]
mov eax, 0xc
cmovge ecx, eax
dec dword [esp + 0x48]
add edi, edi
mov dword [esp + 0xcc], ecx
xor eax, eax
inc eax
mov dword [esp + 0x80], eax
mov ebx, edi
sar ebx, 0x1f
mov esi, edi
mov edx, dword [esp + 0x30]
mov ecx, edx
shl esi, cl
test dl, 0x20
mov eax, esi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x34], eax
mov ecx, edx
shld ebx, edi, cl
test dl, 0x20
cmovne ebx, esi
mov edi, 0x3f
shl edi, cl
test dl, 0x20
mov ecx, edi
mov eax, 0
cmovne ecx, eax
mov dword [esp + 0x90], ecx
xor esi, esi
mov ecx, edx
mov eax, 0x3f
shld esi, eax, cl
test dl, 0x20
cmovne esi, edi
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
shld edi, eax, cl
shl eax, cl
test cl, 0x20
cmovne edi, eax
mov dword [esp + 0x3c], edi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x4c], eax
not esi
mov ecx, dword [esp + 0x88]
and ecx, esi
or ecx, ebx
mov dword [esp + 0x88], ecx
mov eax, dword [esp + 0x90]
not eax
mov ecx, dword [esp + 0xe0]
and ecx, eax
or ecx, dword [esp + 0x34]
mov dword [esp + 0xe0], ecx
mov eax, dword [esp + 0x44]
inc eax
add edx, 7
mov dword [esp + 0x30], edx
cmp dword [esp + 0x48], 5
mov esi, dword [esp + 0x98]
jg 0x101713a9
mov dword [esp + 0x44], eax
jmp 0x10171531
mov dword [esp + 0x44], 8
jmp 0x10171531
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x88]
mov eax, ecx
mov edx, dword [esp + 0xe0]
shld eax, edx, 0x19
and edx, 0x7f
mov dword [esp + 0x80], edx
shr ecx, 7
mov dword [esp + 0x88], ecx
dec dword [esp + 0x44]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xc4], esi
mov eax, ebx
shr eax, 4
and eax, 1
mov edi, ebx
shr edi, 5
mov ecx, ebx
and ecx, 7
mov edx, dword [esp + 0xa0]
mov esi, ebx
mov ebx, dword [esp + 0x84]
shrd ebx, edx, cl
shr edx, cl
mov dword [esp + 0xa0], edx
and edi, 7
or edi, eax
mov dword [esp + 0x98], edi
sub dword [esp + 0x70], ecx
mov dword [esp + 0x84], ebx
mov edi, dword [ebp + 0x20]
mov eax, esi
and eax, 0x30
mov ecx, esi
and ecx, 0xc0
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x11c]
add cl, 4
shl eax, cl
or eax, dword [esp + 0x20]
mov ecx, dword [esp + 0xb4]
mov dword [ecx], eax
mov eax, dword [esp + 0x1c]
shr eax, 3
and eax, 1
mov dword [esp + 0x10], esi
shr esi, 2
and esi, 2
or esi, eax
je 0x1017162a
cmp esi, 3
jne 0x1017163a
mov eax, dword [esp + 0x80]
lea ecx, [eax - 2]
cmp eax, 2
mov dword [esp + 0x74], ecx
jge 0x101717ab
mov eax, dword [esp + 0x44]
test eax, eax
je 0x10171803
dec eax
mov dword [esp + 0x44], eax
jmp 0x1017329d
mov dword [esp + 0x90], esi
xor esi, esi
inc esi
mov dword [esp + 0x30], esi
jmp 0x10171689
mov eax, ebx
and eax, 7
movzx edx, byte [eax + 0x10321b30]
mov eax, edx
and eax, 3
mov edi, esi
mov ecx, eax
shr ebx, cl
mov ecx, edx
shr ecx, 2
and ecx, 7
add eax, ecx
xor esi, esi
dec esi
shl esi, cl
not esi
and esi, ebx
shr edx, 5
cmp edi, 1
lea edx, [edx + esi + 1]
mov ecx, 1
cmove ecx, edx
cmove edx, edi
mov edi, dword [ebp + 0x20]
mov dword [esp + 0x30], edx
mov esi, ecx
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0x80]
mov ebx, dword [esp + 0x3c]
cmp esi, eax
ja 0x10173451
cmp dword [esp + 0x30], eax
ja 0x10173451
mov dword [esp + 0x34], esi
mov dword [esp + 0x80], ecx
mov dword [esp + 0x3c], ebx
mov eax, dword [esp + 0xac]
lea esi, [eax + 4]
mov ecx, esi
mov edx, dword [esp + 0x40]
sub ecx, edx
add ecx, ecx
mov eax, 0xff
shr eax, cl
cmp esi, edx
mov ecx, 0xff
cmovle eax, ecx
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x84]
shrd ebx, edx, cl
shr edx, cl
test cl, 0x20
cmovne ebx, edx
mov dword [esp + 0x84], ebx
mov ebx, 0
cmovne edx, ebx
mov dword [esp + 0xa0], edx
mov ecx, eax
and ecx, 0x55
cmp dword [esp + 0x114], 2
cmovge ecx, eax
mov edx, dword [esp + 0xdc]
and edx, 0xf
mov eax, dword [esp + 0x10]
and eax, 0xf0
or eax, edx
mov dword [esp + 0x20], ecx
not ecx
test eax, ecx
jne 0x1017346c
mov dword [esp + 0xdc], esi
cmp dword [esp + 0x6c], 0
jne 0x1017177a
xor edi, edi
test byte [esp + 0x20], 1
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x70]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x38]
jne 0x10171ac9
jmp 0x10171acb
cmp dword [esp + 0x18], 0x20
mov edi, dword [esp + 0x28]
jae 0x10171a5a
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x101717c3
mov eax, dword [esp + 0x50]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10171846
mov eax, ebx
and eax, 7
movzx edx, byte [eax + 0x10321b30]
mov ecx, edx
and ecx, 3
shr ebx, cl
jmp 0x101732e7
test ecx, ecx
jle 0x10171843
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor edi, edi
dec edi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, edi
mov edi, esi
or edi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101717d3
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10171846
mov dword [esp + 0x80], ebx
mov eax, dword [esp + 0x48]
cmp eax, 5
jg 0x10171979
mov ebx, dword [esp + 0xc4]
cmp ebx, 5
jl 0x10172fdf
mov ecx, dword [esp + 0x7c]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x7c], ecx
add ebx, 0xfffffffc
mov dword [esp + 0xe8], ebx
jmp 0x1017304c
xor edi, edi
dec edi
cmp dword [esp + 0x14], 1
mov ecx, 0
adc ecx, 7
mov esi, edi
mov edx, 0xff
and esi, edx
mov dword [esp + 0x74], esi
xor eax, eax
cmp esi, edx
sete al
mov esi, edi
shr esi, 8
and esi, edx
mov edx, esi
shl edx, cl
mov dword [esp + 0x6c], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
mov eax, 0xff
cmp esi, eax
sete dl
mov esi, edi
shr esi, 0x10
and esi, eax
mov eax, esi
shl eax, cl
sub ecx, edx
xor edx, edx
mov ebx, 0xff
cmp esi, ebx
sete dl
mov dword [esp + 0x14], edx
shr edi, 0x18
mov edx, ecx
add ecx, 8
mov esi, edi
shl esi, cl
or eax, dword [esp + 0x6c]
or eax, dword [esp + 0x74]
or eax, esi
cmp edi, ebx
sete byte [esp + 0x74]
xor ebx, ebx
mov ecx, dword [esp + 0x18]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov esi, 0
cmovne eax, esi
sub ecx, dword [esp + 0x14]
add ecx, edx
add ecx, 0x10
or dword [esp + 0x2c], ebx
or eax, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
cmp ecx, 0x1f
mov dword [esp + 0x6c], eax
ja 0x1017191e
mov ecx, dword [esp + 0xc]
cmp ecx, 4
mov ebx, 0
jl 0x10171933
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x1017199b
xor ecx, ecx
mov dl, byte [esp + 0x74]
mov cl, dl
mov dword [esp + 0x14], ecx
mov edi, eax
xor ebx, ebx
jmp 0x10171a5e
test ecx, ecx
jle 0x10171998
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor esi, esi
dec esi
mov dword [esp + 0x28], esi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, dword [esp + 0x28]
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10171943
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
xor ebx, ebx
jmp 0x1017199b
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xe8], ecx
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x20], ecx
jmp 0x101730f9
xor esi, esi
dec esi
xor eax, eax
mov ecx, 0xff
cmp edi, ecx
setne al
add eax, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x14], edi
xor edx, edx
cmp edi, ecx
sete dl
mov ecx, eax
sub eax, edx
mov edi, esi
mov dword [esp + 0x28], esi
shr esi, 8
mov edx, 0xff
and esi, edx
mov edx, esi
shl edx, cl
mov dword [esp + 0xe8], edx
add eax, 8
xor edx, edx
mov ecx, 0xff
cmp esi, ecx
sete dl
mov esi, edi
shr esi, 0x10
and esi, ecx
mov edi, esi
mov ecx, eax
shl edi, cl
sub eax, edx
xor ecx, ecx
mov edx, 0xff
cmp esi, edx
sete cl
mov dword [esp + 0x74], ecx
mov edx, dword [esp + 0x28]
shr edx, 0x18
lea ecx, [eax + 8]
mov esi, edx
shl esi, cl
or edi, dword [esp + 0xe8]
or edi, dword [esp + 0x14]
or edi, esi
xor ecx, ecx
mov esi, 0xff
cmp edx, esi
sete cl
mov dword [esp + 0x14], ecx
xor edx, edx
mov ecx, dword [esp + 0x18]
shld edx, edi, cl
shl edi, cl
test cl, 0x20
cmovne edx, edi
cmovne edi, ebx
sub ecx, dword [esp + 0x74]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x18], ecx
or dword [esp + 0x2c], edx
or edi, dword [esp + 0x6c]
mov dword [esp + 0x6c], edi
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x1c]
mov eax, esi
shl eax, 0x13
sar eax, 0x1f
add eax, ecx
mov ecx, eax
mov edx, dword [esp + 0x2c]
shrd edi, edx, cl
shr edx, cl
test al, 0x20
cmovne edi, edx
mov dword [esp + 0x28], edi
cmovne edx, ebx
mov dword [esp + 0x2c], edx
xor edx, edx
dec edx
shl edx, cl
not edx
mov edi, esi
shr edi, 8
and edi, 1
shl edi, cl
mov esi, dword [esp + 0x6c]
and edx, esi
or edi, edx
or edi, 1
add edi, 2
mov ecx, dword [esp + 0x78]
shl edi, cl
mov ebx, dword [esp + 0x18]
sub ebx, eax
mov eax, esi
shl eax, 0x1f
or edi, eax
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x38]
mov dword [esi], edi
test byte [esp + 0x1c], 0x20
mov dword [esp + 0x18], ebx
jne 0x10171aed
test byte [esp + 0x20], 2
je 0x10171ae4
mov dword [esi + ecx*4], 0
mov ebx, dword [esp + 0x1c]
jmp 0x10171dce
cmp ebx, 0x20
jae 0x10171b15
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x10171b20
mov edi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10171b61
mov esi, dword [esp + 0x28]
mov edi, esi
jmp 0x10171c42
test eax, eax
jle 0x10171b5e
inc eax
xor ecx, ecx
xor edi, edi
dec edi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, edi
mov edi, esi
or edi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10171b2a
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10171b61
xor edi, edi
dec edi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov esi, edi
mov edx, 0xff
and esi, edx
mov dword [esp + 0x74], esi
xor eax, eax
cmp esi, edx
sete al
mov esi, edi
shr esi, 8
and esi, edx
mov edx, esi
shl edx, cl
mov dword [esp + 0x6c], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
mov eax, 0xff
cmp esi, eax
sete dl
mov esi, edi
shr esi, 0x10
and esi, eax
mov eax, esi
shl eax, cl
sub ecx, edx
xor edx, edx
mov ebx, 0xff
cmp esi, ebx
sete dl
mov dword [esp + 0x14], edx
shr edi, 0x18
mov edx, ecx
add ecx, 8
mov esi, edi
shl esi, cl
or eax, dword [esp + 0x6c]
or eax, dword [esp + 0x74]
or eax, esi
cmp edi, ebx
sete byte [esp + 0x6c]
xor ebx, ebx
mov ecx, dword [esp + 0x18]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov esi, 0
cmovne eax, esi
sub ecx, dword [esp + 0x14]
add edx, ecx
add edx, 0x10
or dword [esp + 0x2c], ebx
or eax, dword [esp + 0x28]
cmp edx, 0x1f
mov dword [esp + 0x18], edx
ja 0x10171c32
mov ecx, dword [esp + 0xc]
cmp ecx, 4
mov dword [esp + 0x74], eax
jl 0x10171c4b
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10171c92
xor ecx, ecx
mov dl, byte [esp + 0x6c]
mov cl, dl
mov dword [esp + 0x14], ecx
mov edi, eax
mov esi, eax
mov eax, dword [esp + 0x2c]
jmp 0x10171d48
test ecx, ecx
jle 0x10171c8f
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor esi, esi
dec esi
mov dword [esp + 0x28], esi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, dword [esp + 0x28]
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10171c5b
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10171c92
xor esi, esi
dec esi
xor eax, eax
mov ecx, 0xff
cmp edi, ecx
setne al
add eax, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x28], edi
xor edx, edx
cmp edi, ecx
mov ebx, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edi, esi
shr esi, 8
and esi, ebx
mov edx, esi
shl edx, cl
mov dword [esp + 0x14], edx
add eax, 8
xor edx, edx
mov ecx, 0xff
cmp esi, ecx
sete dl
mov ebx, edi
shr ebx, 0x10
and ebx, ecx
mov esi, ebx
mov ecx, eax
shl esi, cl
sub eax, edx
xor ecx, ecx
mov edx, 0xff
cmp ebx, edx
sete cl
mov ebx, ecx
shr edi, 0x18
lea ecx, [eax + 8]
mov edx, edi
shl edx, cl
or esi, dword [esp + 0x14]
or esi, dword [esp + 0x28]
or esi, edx
xor ecx, ecx
mov edx, 0xff
cmp edi, edx
sete cl
mov dword [esp + 0x14], ecx
xor edx, edx
mov ecx, dword [esp + 0x18]
shld edx, esi, cl
shl esi, cl
test cl, 0x20
cmovne edx, esi
mov edi, 0
cmovne esi, edi
sub ecx, ebx
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x2c]
or eax, edx
or esi, dword [esp + 0x74]
mov edi, esi
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x1c]
mov ecx, ebx
shl ecx, 0x12
sar ecx, 0x1f
add ecx, edx
shrd esi, eax, cl
shr eax, cl
test cl, 0x20
cmovne esi, eax
mov dword [esp + 0x28], esi
mov edx, 0
cmovne eax, edx
mov dword [esp + 0x2c], eax
xor edx, edx
dec edx
shl edx, cl
sub dword [esp + 0x18], ecx
not edx
and edx, edi
mov eax, ebx
shr eax, 9
and eax, 1
shl eax, cl
or eax, edx
or eax, 1
lea edx, [eax + 2]
mov ecx, dword [esp + 0x78]
shl edx, cl
shl edi, 0x1f
or edx, edi
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x38]
mov dword [edi + esi*4], edx
mov edx, dword [esp + 0x24]
movzx ecx, byte [edx]
and ecx, 0x7f
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x21
cmp eax, ecx
cmovbe eax, ecx
mov ecx, esi
or al, 0x80
mov byte [edx], al
mov esi, edi
mov eax, dword [esp + 0x70]
test bl, 0x40
jne 0x10171de9
xor edi, edi
test byte [esp + 0x20], 4
mov ebx, dword [esp + 0x18]
jne 0x101720bb
jmp 0x101720be
mov eax, dword [esp + 0x18]
cmp eax, 0x20
jae 0x10171e15
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x10171e28
mov edi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10171e69
mov edi, dword [esp + 0x28]
mov dword [esp + 0x6c], edi
mov ecx, dword [esp + 0x34]
xor ebx, ebx
jmp 0x10172054
test eax, eax
jle 0x10171e66
inc eax
xor ecx, ecx
xor edi, edi
dec edi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, edi
mov edi, esi
or edi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10171e32
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10171e69
xor edi, edi
dec edi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov esi, edi
mov edx, 0xff
and esi, edx
mov dword [esp + 0x74], esi
xor eax, eax
cmp esi, edx
sete al
mov esi, edi
shr esi, 8
and esi, edx
mov edx, esi
shl edx, cl
mov dword [esp + 0x6c], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
mov eax, 0xff
cmp esi, eax
sete dl
mov esi, edi
shr esi, 0x10
and esi, eax
mov eax, esi
shl eax, cl
sub ecx, edx
xor edx, edx
mov ebx, 0xff
cmp esi, ebx
sete dl
mov dword [esp + 0x14], edx
shr edi, 0x18
mov edx, ecx
add ecx, 8
mov esi, edi
shl esi, cl
or eax, dword [esp + 0x6c]
or eax, dword [esp + 0x74]
or eax, esi
cmp edi, ebx
sete byte [esp + 0x74]
xor ebx, ebx
mov ecx, dword [esp + 0x18]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov esi, 0
cmovne eax, esi
sub ecx, dword [esp + 0x14]
add ecx, edx
add ecx, 0x10
or dword [esp + 0x2c], ebx
or eax, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
cmp ecx, 0x1f
mov dword [esp + 0x6c], eax
ja 0x10171f3a
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x10171f4d
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10171f94
xor ecx, ecx
mov dl, byte [esp + 0x74]
mov cl, dl
mov dword [esp + 0x14], ecx
mov edi, eax
jmp 0x1017204e
test ecx, ecx
jle 0x10171f91
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor esi, esi
dec esi
mov dword [esp + 0x28], esi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, dword [esp + 0x28]
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10171f5d
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10171f94
xor esi, esi
dec esi
xor eax, eax
mov ecx, 0xff
cmp edi, ecx
setne al
add eax, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x28], edi
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov ebx, esi
shr esi, 8
and esi, edi
mov edx, esi
shl edx, cl
mov dword [esp + 0x14], edx
add eax, 8
xor edx, edx
mov ecx, 0xff
cmp esi, ecx
sete dl
mov esi, ebx
shr esi, 0x10
and esi, ecx
mov edi, esi
mov ecx, eax
shl edi, cl
sub eax, edx
xor ecx, ecx
mov edx, 0xff
cmp esi, edx
sete cl
mov dword [esp + 0x74], ecx
shr ebx, 0x18
lea ecx, [eax + 8]
mov edx, ebx
shl edx, cl
or edi, dword [esp + 0x14]
or edi, dword [esp + 0x28]
or edi, edx
xor ecx, ecx
mov edx, 0xff
cmp ebx, edx
sete cl
mov dword [esp + 0x14], ecx
xor edx, edx
mov ecx, dword [esp + 0x18]
shld edx, edi, cl
shl edi, cl
test cl, 0x20
cmovne edx, edi
mov esi, 0
cmovne edi, esi
sub ecx, dword [esp + 0x74]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x18], ecx
or dword [esp + 0x2c], edx
or edi, dword [esp + 0x6c]
mov dword [esp + 0x6c], edi
xor ebx, ebx
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x1c]
mov eax, esi
shl eax, 0x11
sar eax, 0x1f
add eax, ecx
mov ecx, eax
mov edx, dword [esp + 0x2c]
shrd edi, edx, cl
shr edx, cl
test al, 0x20
cmovne edi, edx
mov dword [esp + 0x28], edi
cmovne edx, ebx
mov dword [esp + 0x2c], edx
xor edx, edx
dec edx
shl edx, cl
not edx
mov edi, esi
shr edi, 0xa
and edi, 1
shl edi, cl
mov esi, dword [esp + 0x6c]
and edx, esi
or edi, edx
or edi, 1
add edi, 2
mov ecx, dword [esp + 0x78]
shl edi, cl
mov ebx, dword [esp + 0x18]
sub ebx, eax
mov eax, esi
shl eax, 0x1f
or edi, eax
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x38]
mov dword [esi + 4], edi
mov edx, dword [esp + 0x24]
mov byte [edx + 1], 0
cmp byte [esp + 0x1c], 0
js 0x101720e5
test byte [esp + 0x20], 8
je 0x101723be
mov dword [esi + ecx*4 + 4], 0
jmp 0x101723be
mov dword [esp + 0x18], ebx
cmp ebx, 0x20
mov ebx, 0
jae 0x10172116
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x1017211f
mov edi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10172160
mov edx, dword [esp + 0x28]
jmp 0x10172347
test eax, eax
jle 0x1017215d
inc eax
xor ecx, ecx
xor edi, edi
dec edi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, edi
mov edi, esi
or edi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172129
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10172160
xor edi, edi
dec edi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov esi, edi
mov edx, 0xff
and esi, edx
mov dword [esp + 0x74], esi
xor eax, eax
cmp esi, edx
sete al
mov esi, edi
shr esi, 8
and esi, edx
mov edx, esi
shl edx, cl
mov dword [esp + 0x6c], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
mov eax, 0xff
cmp esi, eax
sete dl
mov esi, edi
shr esi, 0x10
and esi, eax
mov eax, esi
shl eax, cl
sub ecx, edx
xor edx, edx
mov ebx, 0xff
cmp esi, ebx
sete dl
mov dword [esp + 0x14], edx
shr edi, 0x18
mov edx, ecx
add ecx, 8
mov esi, edi
shl esi, cl
or eax, dword [esp + 0x6c]
or eax, dword [esp + 0x74]
or eax, esi
cmp edi, ebx
sete byte [esp + 0x6c]
xor ebx, ebx
mov ecx, dword [esp + 0x18]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov esi, 0
cmovne eax, esi
sub ecx, dword [esp + 0x14]
add edx, ecx
add edx, 0x10
or dword [esp + 0x2c], ebx
or eax, dword [esp + 0x28]
cmp edx, 0x1f
mov dword [esp + 0x18], edx
ja 0x10172231
mov dword [esp + 0x6c], eax
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x10172248
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x1017228f
xor ecx, ecx
mov dl, byte [esp + 0x6c]
mov cl, dl
mov dword [esp + 0x14], ecx
mov edx, eax
xor ebx, ebx
mov edi, eax
jmp 0x10172349
test ecx, ecx
jle 0x1017228c
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor esi, esi
dec esi
mov dword [esp + 0x28], esi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, dword [esp + 0x28]
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172258
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x1017228f
xor esi, esi
dec esi
xor eax, eax
mov ecx, 0xff
cmp edi, ecx
setne al
add eax, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x28], edi
xor edx, edx
cmp edi, ecx
mov ebx, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edi, esi
shr esi, 8
and esi, ebx
mov edx, esi
shl edx, cl
mov dword [esp + 0x14], edx
add eax, 8
xor edx, edx
mov ecx, 0xff
cmp esi, ecx
sete dl
mov ebx, edi
shr ebx, 0x10
and ebx, ecx
mov esi, ebx
mov ecx, eax
shl esi, cl
sub eax, edx
xor ecx, ecx
mov edx, 0xff
cmp ebx, edx
sete cl
mov dword [esp + 0x74], ecx
shr edi, 0x18
lea ecx, [eax + 8]
mov edx, edi
shl edx, cl
or esi, dword [esp + 0x14]
or esi, dword [esp + 0x28]
or esi, edx
xor ecx, ecx
mov edx, 0xff
cmp edi, edx
sete cl
mov dword [esp + 0x14], ecx
xor edx, edx
mov ecx, dword [esp + 0x18]
shld edx, esi, cl
shl esi, cl
test cl, 0x20
cmovne edx, esi
mov ebx, 0
cmovne esi, ebx
sub ecx, dword [esp + 0x74]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x18], ecx
or dword [esp + 0x2c], edx
mov edx, esi
or edx, dword [esp + 0x6c]
mov edi, edx
mov esi, dword [esp + 0x1c]
movsx eax, si
sar eax, 0xf
mov ecx, dword [esp + 0x34]
add ecx, eax
mov eax, dword [esp + 0x2c]
shrd edx, eax, cl
shr eax, cl
test cl, 0x20
cmovne edx, eax
mov dword [esp + 0x28], edx
cmovne eax, ebx
mov dword [esp + 0x2c], eax
xor eax, eax
dec eax
shl eax, cl
shr esi, 0xb
and esi, 1
shl esi, cl
mov ebx, dword [esp + 0x18]
sub ebx, ecx
not eax
and eax, edi
or esi, eax
or esi, 1
lea eax, [esi + 2]
bsr ecx, esi
xor ecx, 0x1f
mov dl, 0xa0
sub dl, cl
mov ecx, dword [esp + 0x78]
shl eax, cl
shl edi, 0x1f
or eax, edi
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x38]
mov dword [esi + ecx*4 + 4], eax
mov eax, dword [esp + 0x24]
mov byte [eax + 1], dl
mov eax, dword [esp + 0x70]
test byte [esp + 0x10], 0x10
jne 0x101723d7
xor edi, edi
test byte [esp + 0x20], 0x10
jne 0x101726a3
jmp 0x101726a6
cmp ebx, 0x20
mov dword [esp + 0x18], ebx
jae 0x10172403
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x10172412
mov edi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10172453
xor ebx, ebx
mov edi, dword [esp + 0x28]
mov dword [esp + 0x34], edi
jmp 0x1017263a
test eax, eax
jle 0x10172450
inc eax
xor ecx, ecx
xor edi, edi
dec edi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, edi
mov edi, esi
or edi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x1017241c
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10172453
xor edi, edi
dec edi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov esi, edi
mov edx, 0xff
and esi, edx
mov dword [esp + 0x14], esi
xor eax, eax
cmp esi, edx
sete al
mov esi, edi
shr esi, 8
and esi, edx
mov edx, esi
shl edx, cl
mov dword [esp + 0x34], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
mov eax, 0xff
cmp esi, eax
sete dl
mov esi, edi
shr esi, 0x10
and esi, eax
mov eax, esi
shl eax, cl
sub ecx, edx
xor edx, edx
mov ebx, 0xff
cmp esi, ebx
sete dl
mov dword [esp + 0x1c], edx
shr edi, 0x18
mov edx, ecx
add ecx, 8
mov esi, edi
shl esi, cl
or eax, dword [esp + 0x34]
or eax, dword [esp + 0x14]
or eax, esi
cmp edi, ebx
sete byte [esp + 0x14]
xor ebx, ebx
mov ecx, dword [esp + 0x18]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov esi, 0
cmovne eax, esi
sub ecx, dword [esp + 0x1c]
add ecx, edx
add ecx, 0x10
or dword [esp + 0x2c], ebx
or eax, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
cmp ecx, 0x1f
mov dword [esp + 0x34], eax
ja 0x10172524
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x10172537
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x1017257e
xor ecx, ecx
mov dl, byte [esp + 0x14]
mov cl, dl
mov dword [esp + 0x14], ecx
mov edi, eax
jmp 0x10172638
test ecx, ecx
jle 0x1017257b
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor esi, esi
dec esi
mov dword [esp + 0x1c], esi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, dword [esp + 0x1c]
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172547
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x1017257e
xor esi, esi
dec esi
xor eax, eax
mov ecx, 0xff
cmp edi, ecx
setne al
add eax, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x1c], edi
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov ebx, esi
shr esi, 8
and esi, edi
mov edx, esi
shl edx, cl
mov dword [esp + 0x14], edx
add eax, 8
xor edx, edx
mov ecx, 0xff
cmp esi, ecx
sete dl
mov esi, ebx
shr esi, 0x10
and esi, ecx
mov edi, esi
mov ecx, eax
shl edi, cl
sub eax, edx
xor ecx, ecx
mov edx, 0xff
cmp esi, edx
sete cl
mov dword [esp + 0x28], ecx
shr ebx, 0x18
lea ecx, [eax + 8]
mov edx, ebx
shl edx, cl
or edi, dword [esp + 0x14]
or edi, dword [esp + 0x1c]
or edi, edx
xor ecx, ecx
mov edx, 0xff
cmp ebx, edx
sete cl
mov dword [esp + 0x14], ecx
xor edx, edx
mov ecx, dword [esp + 0x18]
shld edx, edi, cl
shl edi, cl
test cl, 0x20
cmovne edx, edi
mov esi, 0
cmovne edi, esi
sub ecx, dword [esp + 0x28]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x18], ecx
or dword [esp + 0x2c], edx
or edi, dword [esp + 0x34]
mov dword [esp + 0x34], edi
xor ebx, ebx
mov esi, dword [esp + 0x10]
mov eax, esi
shl eax, 0x13
sar eax, 0x1f
add eax, dword [esp + 0x30]
mov ecx, eax
mov edx, dword [esp + 0x2c]
shrd edi, edx, cl
shr edx, cl
test al, 0x20
cmovne edi, edx
mov dword [esp + 0x28], edi
cmovne edx, ebx
mov dword [esp + 0x2c], edx
xor edx, edx
dec edx
shl edx, cl
not edx
mov edi, esi
shr edi, 8
and edi, 1
shl edi, cl
mov esi, dword [esp + 0x34]
and edx, esi
or edi, edx
or edi, 1
add edi, 2
mov ecx, dword [esp + 0x78]
shl edi, cl
mov ebx, dword [esp + 0x18]
sub ebx, eax
mov eax, esi
shl eax, 0x1f
or edi, eax
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x38]
mov dword [esi + 8], edi
test byte [esp + 0x10], 0x20
mov dword [esp + 0x18], ebx
jne 0x101726c9
test byte [esp + 0x20], 0x20
je 0x101726c0
mov dword [esi + ecx*4 + 8], 0
mov ebx, dword [esp + 0x10]
jmp 0x101729aa
cmp ebx, 0x20
jae 0x101726f1
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x101726fc
mov edi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x1017273d
mov esi, dword [esp + 0x28]
mov edi, esi
jmp 0x1017281e
test eax, eax
jle 0x1017273a
inc eax
xor ecx, ecx
xor edi, edi
dec edi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, edi
mov edi, esi
or edi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172706
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x1017273d
xor edi, edi
dec edi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov esi, edi
mov edx, 0xff
and esi, edx
mov dword [esp + 0x14], esi
xor eax, eax
cmp esi, edx
sete al
mov esi, edi
shr esi, 8
and esi, edx
mov edx, esi
shl edx, cl
mov dword [esp + 0x34], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
mov eax, 0xff
cmp esi, eax
sete dl
mov esi, edi
shr esi, 0x10
and esi, eax
mov eax, esi
shl eax, cl
sub ecx, edx
xor edx, edx
mov ebx, 0xff
cmp esi, ebx
sete dl
mov dword [esp + 0x1c], edx
shr edi, 0x18
mov edx, ecx
add ecx, 8
mov esi, edi
shl esi, cl
or eax, dword [esp + 0x34]
or eax, dword [esp + 0x14]
or eax, esi
cmp edi, ebx
sete byte [esp + 0x34]
xor ebx, ebx
mov ecx, dword [esp + 0x18]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov esi, 0
cmovne eax, esi
sub ecx, dword [esp + 0x1c]
add edx, ecx
add edx, 0x10
or dword [esp + 0x2c], ebx
or eax, dword [esp + 0x28]
cmp edx, 0x1f
mov dword [esp + 0x18], edx
ja 0x1017280e
mov ecx, dword [esp + 0xc]
cmp ecx, 4
mov dword [esp + 0x28], eax
jl 0x10172829
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10172870
xor ecx, ecx
mov dl, byte [esp + 0x34]
mov cl, dl
mov dword [esp + 0x14], ecx
mov edi, eax
mov esi, eax
mov eax, dword [esp + 0x2c]
xor edx, edx
jmp 0x10172928
test ecx, ecx
jle 0x1017286d
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor esi, esi
dec esi
mov dword [esp + 0x1c], esi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, dword [esp + 0x1c]
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172839
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10172870
xor esi, esi
dec esi
xor eax, eax
mov ecx, 0xff
cmp edi, ecx
setne al
add eax, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x1c], edi
xor edx, edx
cmp edi, ecx
mov ebx, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edi, esi
shr esi, 8
and esi, ebx
mov edx, esi
shl edx, cl
mov dword [esp + 0x34], edx
add eax, 8
xor edx, edx
mov ecx, 0xff
cmp esi, ecx
sete dl
mov ebx, edi
shr ebx, 0x10
and ebx, ecx
mov esi, ebx
mov ecx, eax
shl esi, cl
sub eax, edx
xor ecx, ecx
mov edx, 0xff
cmp ebx, edx
sete cl
mov ebx, ecx
shr edi, 0x18
lea ecx, [eax + 8]
mov edx, edi
shl edx, cl
or esi, dword [esp + 0x34]
or esi, dword [esp + 0x1c]
or esi, edx
xor ecx, ecx
mov edx, 0xff
cmp edi, edx
sete cl
mov dword [esp + 0x14], ecx
xor edx, edx
mov ecx, dword [esp + 0x18]
shld edx, esi, cl
shl esi, cl
test cl, 0x20
cmovne edx, esi
mov edi, 0
cmovne esi, edi
sub ecx, ebx
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x2c]
or eax, edx
xor edx, edx
or esi, dword [esp + 0x28]
mov edi, esi
mov ebx, dword [esp + 0x10]
mov ecx, ebx
shl ecx, 0x12
sar ecx, 0x1f
add ecx, dword [esp + 0x30]
shrd esi, eax, cl
shr eax, cl
test cl, 0x20
cmovne esi, eax
mov dword [esp + 0x28], esi
cmovne eax, edx
mov dword [esp + 0x2c], eax
xor edx, edx
dec edx
shl edx, cl
sub dword [esp + 0x18], ecx
not edx
and edx, edi
mov eax, ebx
shr eax, 9
and eax, 1
shl eax, cl
or eax, edx
or eax, 1
lea edx, [eax + 2]
mov ecx, dword [esp + 0x78]
shl edx, cl
shl edi, 0x1f
or edx, edi
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x38]
mov dword [edi + esi*4 + 8], edx
mov edx, dword [esp + 0x24]
movzx ecx, byte [edx + 1]
and ecx, 0x7f
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x21
cmp eax, ecx
cmovbe eax, ecx
mov ecx, esi
or al, 0x80
mov byte [edx + 1], al
mov esi, edi
mov eax, dword [esp + 0x70]
test bl, 0x40
jne 0x101729c6
xor edi, edi
test byte [esp + 0x20], 0x40
mov ebx, 0
jne 0x10172c8c
jmp 0x10172c8f
cmp dword [esp + 0x18], 0x20
jae 0x101729f0
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x101729f9
mov edi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10172a3a
mov edi, dword [esp + 0x28]
jmp 0x10172c1d
test eax, eax
jle 0x10172a37
inc eax
xor ecx, ecx
xor edi, edi
dec edi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, edi
mov edi, esi
or edi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172a03
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10172a3a
xor edi, edi
dec edi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov esi, edi
mov edx, 0xff
and esi, edx
mov dword [esp + 0x14], esi
xor eax, eax
cmp esi, edx
sete al
mov esi, edi
shr esi, 8
and esi, edx
mov edx, esi
shl edx, cl
mov dword [esp + 0x34], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
mov eax, 0xff
cmp esi, eax
sete dl
mov esi, edi
shr esi, 0x10
and esi, eax
mov eax, esi
shl eax, cl
sub ecx, edx
xor edx, edx
mov ebx, 0xff
cmp esi, ebx
sete dl
mov dword [esp + 0x1c], edx
shr edi, 0x18
mov edx, ecx
add ecx, 8
mov esi, edi
shl esi, cl
or eax, dword [esp + 0x34]
or eax, dword [esp + 0x14]
or eax, esi
cmp edi, ebx
sete byte [esp + 0x14]
xor ebx, ebx
mov ecx, dword [esp + 0x18]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov esi, 0
cmovne eax, esi
sub ecx, dword [esp + 0x1c]
add ecx, edx
add ecx, 0x10
or dword [esp + 0x2c], ebx
or eax, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
cmp ecx, 0x1f
mov dword [esp + 0x34], eax
ja 0x10172b0b
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x10172b20
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10172b67
xor ecx, ecx
mov dl, byte [esp + 0x14]
mov cl, dl
mov dword [esp + 0x14], ecx
mov edi, eax
xor ebx, ebx
jmp 0x10172c23
test ecx, ecx
jle 0x10172b64
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor esi, esi
dec esi
mov dword [esp + 0x1c], esi
movzx esi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, dword [esp + 0x1c]
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172b30
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10172b67
xor esi, esi
dec esi
xor eax, eax
mov ecx, 0xff
cmp edi, ecx
setne al
add eax, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x1c], edi
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov ebx, esi
shr esi, 8
and esi, edi
mov edx, esi
shl edx, cl
mov dword [esp + 0x14], edx
add eax, 8
xor edx, edx
mov ecx, 0xff
cmp esi, ecx
sete dl
mov esi, ebx
shr esi, 0x10
and esi, ecx
mov edi, esi
mov ecx, eax
shl edi, cl
sub eax, edx
xor ecx, ecx
mov edx, 0xff
cmp esi, edx
sete cl
mov dword [esp + 0x28], ecx
shr ebx, 0x18
lea ecx, [eax + 8]
mov edx, ebx
shl edx, cl
or edi, dword [esp + 0x14]
or edi, dword [esp + 0x1c]
or edi, edx
xor ecx, ecx
mov edx, 0xff
cmp ebx, edx
sete cl
mov dword [esp + 0x14], ecx
xor edx, edx
mov ecx, dword [esp + 0x18]
shld edx, edi, cl
shl edi, cl
test cl, 0x20
cmovne edx, edi
mov esi, 0
cmovne edi, esi
sub ecx, dword [esp + 0x28]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x18], ecx
or dword [esp + 0x2c], edx
or edi, dword [esp + 0x34]
xor ebx, ebx
mov dword [esp + 0x34], edi
mov esi, dword [esp + 0x10]
mov eax, esi
shl eax, 0x11
sar eax, 0x1f
add eax, dword [esp + 0x30]
mov ecx, eax
mov edx, dword [esp + 0x2c]
shrd edi, edx, cl
shr edx, cl
test al, 0x20
cmovne edi, edx
mov dword [esp + 0x28], edi
cmovne edx, ebx
mov dword [esp + 0x2c], edx
xor edx, edx
dec edx
shl edx, cl
not edx
mov edi, esi
shr edi, 0xa
and edi, 1
shl edi, cl
mov esi, dword [esp + 0x34]
and edx, esi
or edi, edx
or edi, 1
add edi, 2
mov ecx, dword [esp + 0x78]
shl edi, cl
sub dword [esp + 0x18], eax
mov eax, esi
shl eax, 0x1f
or edi, eax
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x38]
xor ebx, ebx
mov dword [esi + 0xc], edi
mov edx, dword [esp + 0x24]
add edx, 2
mov dword [esp + 0x24], edx
mov byte [edx], 0
cmp byte [esp + 0x10], 0
js 0x10172cc2
cmp dword [esp + 0x20], 0x80
jb 0x10172cb6
mov dword [esi + ecx*4 + 0xc], 0
mov edi, dword [esp + 0xdc]
jmp 0x10172faf
mov eax, dword [esp + 0x18]
cmp eax, 0x20
jae 0x10172cee
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x10172d04
mov esi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10172d45
mov edx, dword [esp + 0x28]
mov dword [esp + 0x20], edx
mov edi, dword [esp + 0xdc]
xor ebx, ebx
jmp 0x10172f35
test eax, eax
jle 0x10172d42
inc eax
xor ecx, ecx
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172d0e
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10172d45
xor esi, esi
dec esi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov edx, esi
mov ebx, 0xff
and edx, ebx
mov dword [esp + 0x34], edx
xor eax, eax
cmp edx, ebx
sete al
mov edx, esi
shr edx, 8
and edx, ebx
mov edi, 0xff
mov ebx, edx
shl ebx, cl
mov dword [esp + 0x20], ebx
neg eax
add ecx, eax
add ecx, 8
xor ebx, ebx
cmp edx, edi
sete bl
mov eax, esi
shr eax, 0x10
and eax, edi
mov edx, eax
shl edx, cl
sub ecx, ebx
xor ebx, ebx
cmp eax, edi
sete bl
mov dword [esp + 0x1c], ebx
shr esi, 0x18
mov ebx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or edx, dword [esp + 0x20]
or edx, dword [esp + 0x34]
or edx, eax
cmp esi, edi
sete byte [esp + 0x34]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov eax, 0
cmovne edx, eax
sub ecx, dword [esp + 0x1c]
add ebx, ecx
add ebx, 0x10
mov ecx, edx
mov eax, dword [esp + 0x2c]
or eax, edi
or ecx, dword [esp + 0x28]
cmp ebx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x20], ecx
ja 0x10172e19
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x10172e2e
mov eax, dword [esp + 0x50]
mov edx, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10172e75
xor eax, eax
mov dl, byte [esp + 0x34]
mov al, dl
mov dword [esp + 0x14], eax
mov edx, ecx
xor ebx, ebx
jmp 0x10172f2e
test ecx, ecx
jle 0x10172e72
lea eax, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor edx, edx
dec edx
mov dword [esp + 0x1c], edx
movzx edx, byte [ebx]
mov edi, 0xff
shl edi, cl
shl edx, cl
not edi
and edi, dword [esp + 0x1c]
or edx, edi
inc ebx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10172e3e
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10172e75
xor edx, edx
dec edx
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
setne al
add eax, 7
mov edi, edx
and edi, ecx
mov dword [esp + 0x1c], edi
mov esi, edx
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edx, esi
shr edx, 8
and edx, edi
mov edi, edx
shl edi, cl
mov dword [esp + 0x28], edi
add eax, 8
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
mov edx, esi
shr edx, 0x10
and edx, ecx
mov edi, edx
mov ecx, eax
shl edi, cl
sub eax, ebx
xor ecx, ecx
mov ebx, 0xff
cmp edx, ebx
sete cl
mov dword [esp + 0x34], ecx
shr esi, 0x18
lea ecx, [eax + 8]
mov edx, esi
shl edx, cl
or edi, dword [esp + 0x28]
or edi, dword [esp + 0x1c]
or edi, edx
mov edx, edi
xor ecx, ecx
cmp esi, ebx
sete cl
mov dword [esp + 0x14], ecx
xor esi, esi
mov ecx, dword [esp + 0x18]
shld esi, edx, cl
shl edx, cl
test cl, 0x20
cmovne esi, edx
mov ebx, 0
cmovne edx, ebx
sub ecx, dword [esp + 0x34]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x18], ecx
or dword [esp + 0x2c], esi
or edx, dword [esp + 0x20]
mov dword [esp + 0x20], edx
mov edi, dword [esp + 0xdc]
mov esi, dword [esp + 0x10]
movsx eax, si
sar eax, 0xf
mov ecx, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x2c]
shrd edx, eax, cl
shr eax, cl
test cl, 0x20
cmovne edx, eax
mov dword [esp + 0x28], edx
cmovne eax, ebx
mov dword [esp + 0x2c], eax
xor eax, eax
dec eax
shl eax, cl
shr esi, 0xb
and esi, 1
shl esi, cl
sub dword [esp + 0x18], ecx
not eax
mov ebx, dword [esp + 0x20]
and eax, ebx
or esi, eax
or esi, 1
lea eax, [esi + 2]
bsr ecx, esi
xor ecx, 0x1f
mov dl, 0xa0
sub dl, cl
mov ecx, dword [esp + 0x78]
shl eax, cl
mov ecx, ebx
shl ecx, 0x1f
or eax, ecx
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x38]
mov dword [esi + ecx*4 + 0xc], eax
mov eax, dword [esp + 0x24]
mov byte [eax], dl
mov eax, dword [esp + 0x70]
xor ebx, ebx
mov edx, dword [esp + 0xac]
and edx, 4
add dword [esp + 0xb4], edx
sub eax, dword [esp + 0x90]
xor dword [esp + 0x11c], 0x10
add esi, 0x10
cmp edi, ecx
jl 0x10170a5d
jmp 0x10173487
test ebx, ebx
jle 0x1017301d
mov dword [esp + 0xe8], 0
cmp ebx, 1
je 0x10173029
inc ebx
xor ecx, ecx
xor eax, eax
dec eax
mov edi, dword [esp + 0x7c]
mov esi, 0xff
shl esi, cl
not esi
and esi, eax
movzx edx, byte [edi]
inc edi
shl edx, cl
or edx, esi
add ecx, 8
dec ebx
mov eax, edx
cmp ebx, 2
ja 0x10172ffd
jmp 0x10173032
mov dword [esp + 0xe8], ebx
xor eax, eax
dec eax
jmp 0x1017304c
xor ecx, ecx
xor edx, edx
dec edx
mov edi, dword [esp + 0x7c]
movzx eax, byte [edi]
or eax, 0xf
mov esi, 0xff
shl esi, cl
shl eax, cl
not esi
and esi, edx
or eax, esi
inc edi
mov dword [esp + 0x7c], edi
mov edi, eax
mov ecx, 0xff
and edi, ecx
xor edx, edx
cmp edi, ecx
sete dl
mov esi, eax
mov eax, dword [esp + 0x8c]
add eax, edx
mov cl, 8
sub cl, dl
shl edi, cl
mov ecx, esi
shr ecx, 8
mov edx, 0xff
and ecx, edx
or edi, ecx
xor ebx, ebx
cmp ecx, edx
sete bl
mov cl, 8
sub cl, bl
add ebx, eax
shl edi, cl
mov ecx, esi
shr ecx, 0x10
mov eax, 0xff
and ecx, eax
or edi, ecx
xor edx, edx
cmp ecx, eax
sete dl
mov cl, 8
sub cl, dl
shl edi, cl
add edx, ebx
shr esi, 0x18
or edi, esi
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
sete al
mov dword [esp + 0x8c], eax
mov ecx, edx
mov eax, dword [esp + 0x48]
sub ecx, eax
add cl, 0x20
xor esi, esi
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
sub eax, edx
or esi, dword [esp + 0x3c]
mov dword [esp + 0x20], esi
or edi, dword [esp + 0x4c]
add eax, 0x20
cmp eax, 6
jl 0x1017326f
mov dword [esp + 0x48], eax
mov dword [esp + 0x30], 0
xor ecx, ecx
dec ecx
mov eax, edi
mov dword [esp + 0x44], ecx
cmp ecx, 7
mov edi, dword [esp + 0x20]
je 0x10173268
mov edx, dword [esp + 0xcc]
mov ecx, dword [edx*4 + 0x10321afc]
test edi, edi
mov dword [esp + 0x90], eax
mov dword [esp + 0x20], edi
js 0x1017317d
mov ebx, ecx
mov cl, 0x3f
sub cl, bl
mov esi, eax
shrd esi, edi, cl
shr edi, cl
test cl, 0x20
cmove edi, esi
xor esi, esi
dec esi
mov ecx, ebx
shl esi, cl
not esi
and esi, edi
cmp edx, 2
lea ecx, [edx - 1]
mov edx, 0
cmovl ecx, edx
inc ebx
mov dword [esp + 0x34], ebx
sub dword [esp + 0x48], ebx
lea ebx, [esi*2 + 1]
mov dword [esp + 0xcc], ecx
jmp 0x101731a6
xor ebx, ebx
dec ebx
shl ebx, cl
not ebx
cmp edx, 0xb
lea ecx, [edx + 1]
mov eax, 0xc
cmovge ecx, eax
dec dword [esp + 0x48]
add ebx, ebx
mov dword [esp + 0xcc], ecx
xor eax, eax
inc eax
mov dword [esp + 0x34], eax
mov esi, ebx
sar esi, 0x1f
mov edi, ebx
mov edx, dword [esp + 0x30]
mov ecx, edx
shl edi, cl
test dl, 0x20
mov eax, edi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x3c], eax
mov ecx, edx
shld esi, ebx, cl
test dl, 0x20
cmovne esi, edi
mov ebx, 0x3f
shl ebx, cl
test dl, 0x20
mov ecx, ebx
mov eax, 0
cmovne ecx, eax
mov dword [esp + 0x4c], ecx
xor edi, edi
mov ecx, edx
mov eax, 0x3f
shld edi, eax, cl
test dl, 0x20
cmovne edi, ebx
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x90]
mov ebx, dword [esp + 0x20]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov dword [esp + 0x20], ebx
mov ecx, 0
cmovne eax, ecx
not edi
mov ecx, dword [esp + 0x88]
and ecx, edi
or ecx, esi
mov dword [esp + 0x88], ecx
mov esi, dword [esp + 0x4c]
not esi
mov ecx, dword [esp + 0xe0]
and ecx, esi
or ecx, dword [esp + 0x3c]
mov dword [esp + 0xe0], ecx
mov ecx, dword [esp + 0x44]
inc ecx
add edx, 7
mov dword [esp + 0x30], edx
cmp dword [esp + 0x48], 5
jg 0x1017310a
jmp 0x10173278
mov ecx, 7
jmp 0x1017327c
mov dword [esp + 0x48], eax
xor ecx, ecx
dec ecx
mov eax, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x3c], edi
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xc4], eax
mov ebx, dword [esp + 0x80]
mov ecx, dword [esp + 0xe0]
mov edi, ecx
mov eax, dword [esp + 0x88]
shrd ecx, eax, 7
mov dword [esp + 0xe0], ecx
shr eax, 7
mov dword [esp + 0x88], eax
and edi, 0x7f
mov eax, ebx
and eax, 7
movzx edx, byte [eax + 0x10321b30]
mov ecx, edx
and ecx, 3
shr ebx, cl
cmp dword [esp + 0x74], 0xffffffff
je 0x101733a7
mov dword [esp + 0x74], edi
mov edi, edx
shr edi, 5
inc edi
cmp ecx, 3
jne 0x10173330
shr edx, 2
and edx, 7
xor esi, esi
dec esi
mov ecx, edx
shl esi, cl
mov eax, ebx
shr ebx, 1
not esi
and esi, ebx
add esi, edi
and eax, 1
or eax, 2
mov dword [esp + 0x30], eax
lea eax, [edx + 4]
mov dword [esp + 0x90], eax
mov ecx, dword [esp + 0x74]
mov edi, dword [ebp + 0x20]
mov eax, dword [esp + 0xd4]
jmp 0x10171697
mov dword [esp + 0x30], ecx
mov eax, ebx
and eax, 7
movzx eax, byte [eax + 0x10321b30]
mov dword [esp + 0x20], eax
and eax, 3
mov ecx, eax
shr ebx, cl
shr edx, 2
and edx, 7
xor esi, esi
dec esi
mov ecx, edx
shl esi, cl
add edx, dword [esp + 0x30]
add edx, eax
not esi
and esi, ebx
shr ebx, cl
mov ecx, dword [esp + 0x20]
shr ecx, 2
and ecx, 7
xor eax, eax
dec eax
shl eax, cl
add esi, edi
add edx, ecx
not eax
and eax, ebx
mov ecx, dword [esp + 0x20]
shr ecx, 5
add eax, ecx
inc eax
mov dword [esp + 0x30], eax
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x90], edx
mov edi, dword [ebp + 0x20]
mov eax, dword [esp + 0xd4]
jmp 0x1017169b
mov dword [esp + 0x30], ecx
mov eax, ebx
and eax, 7
movzx eax, byte [eax + 0x10321b30]
mov dword [esp + 0x20], eax
mov ecx, eax
and ecx, 3
mov dword [esp + 0x90], ecx
shr ebx, cl
mov eax, edx
shr eax, 2
and eax, 7
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
add eax, dword [esp + 0x30]
not esi
and esi, ebx
shr ebx, cl
shr edx, 5
lea ecx, [edx + esi]
add ecx, 3
mov dword [esp + 0x34], ecx
add eax, dword [esp + 0x90]
mov esi, dword [esp + 0x20]
mov ecx, esi
shr ecx, 2
and ecx, 7
add eax, ecx
mov dword [esp + 0x90], eax
xor edx, edx
dec edx
shl edx, cl
not edx
and edx, ebx
shr esi, 5
lea eax, [esi + edx]
add eax, 3
mov esi, dword [esp + 0x34]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xd4]
mov ecx, edi
mov edi, dword [ebp + 0x20]
jmp 0x10171697
mov ecx, dword [esp + 0xf8]
lea eax, [ecx - 1]
mov dword [esp + 0x78], eax
mov dword [esp + 0x11c], 0
jmp 0x10173496
test edi, edi
je 0x10177c44
push edi
call fcn.1000a320
add esp, 4
push str.Malformed_HT_codeblock._Decoding_this_codeblock_is_stopped._U_q_is_larger_than_zero_bitplanes__1__n
jmp 0x1016fb50
test edi, edi
je 0x10177c4e
push edi
call fcn.1000a320
add esp, 4
push str.Malformed_HT_codeblock._VLC_code_produces_significant_samples_outside_the_codeblock_area._n
jmp 0x1016fb50
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0xf8]
mov ebx, dword [esp + 0x18]
add cl, 0xfe
xor eax, eax
inc eax
shl eax, cl
mov dword [esp + 0x34], eax
mov eax, 3
shl eax, cl
mov dword [esp + 0xac], eax
xor eax, eax
mov cl, byte [esp + 0xd8]
mov al, cl
neg eax
mov dword [esp + 0x90], eax
cmp dword [esp + 0x114], 3
mov eax, dword [esp + 0x84]
jl 0x10176c01
mov dword [esp + 0x84], eax
mov dword [esp + 0x18], ebx
mov esi, dword [esp + 0x40]
lea eax, [esi + 7]
shr eax, 3
lea eax, [eax*4 + 4]
mov dword [esp + 0x164], eax
mov ecx, dword [esp + 0x12c]
lea edi, [ecx*4]
mov edx, dword [esp + 0x144]
lea eax, [edx*4]
lea ebx, [ecx*8]
lea ecx, [edx*8]
sub ebx, ecx
lea edx, [edi + edi*2]
sub edi, eax
mov ecx, dword [esp + 0xb0]
add edi, ecx
mov dword [esp + 0x168], edi
lea eax, [eax + eax*2]
sub edx, eax
lea eax, [esi*4]
mov dword [esp + 0x150], eax
add ebx, ecx
mov dword [esp + 0x158], ebx
add edx, ecx
mov dword [esp + 0x154], edx
lea eax, [ecx + esi*4]
mov dword [esp + 0x160], eax
mov edx, 2
mov eax, dword [esp + 0x124]
mov ebx, edx
mov edx, dword [esp + 0x11c]
and edx, 0xffffffef
xor edx, 2
mov dword [esp + 0x11c], edx
mov dl, byte [eax]
mov byte [esp + 0x6c], dl
mov byte [eax], 0
mov edx, dword [esp + 0x40]
test edx, edx
mov dword [esp + 0x128], ebx
jle 0x10175ca9
mov esi, eax
mov eax, ebx
imul eax, edx
lea ecx, [ecx + eax*4]
test bl, 4
mov eax, dword [esp + 0x118]
cmove eax, dword [esp + 0xe4]
mov dword [esp + 0x98], eax
lea eax, [ebx + 2]
mov ebx, ecx
mov dword [esp + 0xfc], eax
mov dword [esp + 0x74], 0
mov dword [esp + 0x1c], esi
xor edi, edi
mov edx, dword [esp + 0x70]
movzx esi, byte [esp + 0x6c]
mov eax, esi
shr eax, 7
or eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [ecx + 1]
shr ecx, 5
and ecx, 4
or ecx, eax
mov dword [esp + 0xb4], edi
cmp edx, 0x20
mov dword [esp + 0x38], ebx
mov dword [esp + 0x70], edx
mov dword [esp + 0xdc], esi
mov dword [esp + 0x10], ecx
jae 0x10173654
mov ebx, dword [esp + 0xec]
cmp ebx, 4
jl 0x10173660
mov eax, dword [esp + 0xc8]
mov edi, dword [eax - 3]
add eax, 0xfffffffc
mov dword [esp + 0xc8], eax
add ebx, 0xfffffffc
mov dword [esp + 0xec], ebx
jmp 0x1017369e
mov esi, dword [esp + 0x84]
jmp 0x10173936
test ebx, ebx
jle 0x1017369c
mov eax, ebx
neg eax
inc ebx
mov ecx, 0x18
xor edi, edi
mov esi, dword [esp + 0xc8]
movzx edx, byte [esi]
shl edx, cl
or edi, edx
dec esi
add ecx, 0xfffffff8
dec ebx
cmp ebx, 1
ja 0x10173677
add dword [esp + 0xc8], eax
mov dword [esp + 0xec], 0
jmp 0x1017369e
xor edi, edi
mov eax, edi
shr eax, 0x18
cmp dword [esp + 0x110], 0
setne cl
mov edx, edi
not edx
test edx, 0x7f000000
mov ebx, edx
mov dword [esp + 0x24], edx
sete dl
and dl, cl
movzx edx, dl
mov ecx, 8
sub ecx, edx
cmp edi, 0x90000000
setae byte [esp + 0x20]
mov edx, edi
shr edx, 0x10
mov esi, 0xff
and edx, esi
mov esi, edx
shl esi, cl
or esi, eax
test ebx, 0x7f0000
sete al
and al, byte [esp + 0x20]
movzx eax, al
neg eax
lea ebx, [ecx + eax]
add ebx, 8
mov eax, 0x90
cmp edx, eax
setae ch
mov edx, edi
shr edx, 8
mov eax, 0xff
and edx, eax
mov eax, edx
mov cl, bl
shl eax, cl
or eax, esi
test dword [esp + 0x24], 0x7f00
sete cl
and cl, ch
movzx ecx, cl
sub ebx, ecx
mov dword [esp + 0x20], ebx
mov esi, 0x90
cmp edx, esi
setae byte [esp + 0x30]
mov ecx, 0xff
and edi, ecx
lea ecx, [ebx + 8]
mov edx, edi
shl edx, cl
or edx, eax
test byte [esp + 0x24], 0x7f
sete bl
and bl, byte [esp + 0x30]
cmp edi, esi
setae bh
xor eax, eax
mov ecx, dword [esp + 0x70]
shld eax, edx, cl
shl edx, cl
test cl, 0x20
cmovne eax, edx
mov esi, 0
cmovne edx, esi
mov esi, edx
or dword [esp + 0xa0], eax
or esi, dword [esp + 0x84]
movzx eax, bl
sub ecx, eax
mov eax, dword [esp + 0x20]
add ecx, eax
add ecx, 0x10
cmp ecx, 0x1f
mov dword [esp + 0x70], ecx
ja 0x101737d3
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0xec]
cmp esi, 4
jl 0x101737e3
mov eax, dword [esp + 0xc8]
mov ebx, dword [eax - 3]
add eax, 0xfffffffc
mov dword [esp + 0xc8], eax
add esi, 0xfffffffc
mov dword [esp + 0xec], esi
jmp 0x10173829
xor eax, eax
mov al, bh
mov dword [esp + 0x110], eax
jmp 0x1017392f
test esi, esi
mov eax, dword [esp + 0xc8]
jle 0x10173827
mov ecx, esi
neg ecx
mov dword [esp + 0x24], ecx
inc esi
mov ecx, 0x18
xor ebx, ebx
movzx edx, byte [eax]
shl edx, cl
or ebx, edx
dec eax
add ecx, 0xfffffff8
dec esi
cmp esi, 1
ja 0x101737fe
mov eax, dword [esp + 0x24]
add dword [esp + 0xc8], eax
mov dword [esp + 0xec], 0
jmp 0x10173829
xor ebx, ebx
mov eax, 0x90
cmp edi, eax
setae cl
mov eax, ebx
shr eax, 0x18
mov edx, ebx
not edx
mov dword [esp + 0x20], edx
test edx, 0x7f000000
sete dl
and dl, cl
movzx edx, dl
mov ecx, 8
sub ecx, edx
cmp ebx, 0x90000000
setae byte [esp + 0x24]
mov edx, ebx
shr edx, 0x10
mov esi, 0xff
and edx, esi
mov edi, edx
shl edi, cl
or edi, eax
test dword [esp + 0x20], 0x7f0000
sete al
and al, byte [esp + 0x24]
movzx eax, al
neg eax
add eax, ecx
add eax, 8
mov dword [esp + 0x24], eax
mov eax, 0x90
cmp edx, eax
setae byte [esp + 0x84]
mov edx, ebx
shr edx, 8
and edx, esi
mov eax, edx
mov ecx, dword [esp + 0x24]
shl eax, cl
or eax, edi
test dword [esp + 0x20], 0x7f00
sete cl
and cl, byte [esp + 0x84]
movzx ecx, cl
sub dword [esp + 0x24], ecx
mov edi, 0x90
cmp edx, edi
setae dl
and ebx, esi
mov ecx, dword [esp + 0x24]
add ecx, 8
mov esi, ebx
shl esi, cl
or esi, eax
test byte [esp + 0x20], 0x7f
sete al
and al, dl
xor ecx, ecx
cmp ebx, edi
setae cl
mov dword [esp + 0x110], ecx
xor edx, edx
mov ecx, dword [esp + 0x70]
shld edx, esi, cl
shl esi, cl
test cl, 0x20
cmovne edx, esi
mov edi, 0
cmovne esi, edi
or dword [esp + 0xa0], edx
or esi, dword [esp + 0x30]
movzx eax, al
sub ecx, eax
mov eax, dword [esp + 0x24]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x70], ecx
mov dword [esp + 0x84], esi
mov ecx, dword [esp + 0x8c]
and esi, 0x7f
mov edx, dword [esp + 0x10]
mov eax, edx
shl eax, 8
movzx ebx, word [eax + esi*2 + 0x1032129e]
test edx, edx
je 0x10173961
mov esi, dword [esp + 0xa0]
jmp 0x101739e6
mov edx, dword [esp + 0x80]
lea eax, [edx - 2]
cmp eax, 0xffffffff
mov esi, 0
cmovne ebx, esi
cmp edx, 1
mov esi, dword [esp + 0xa0]
jg 0x101739df
cmp dword [esp + 0x44], 0
je 0x10173ae5
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x88]
mov eax, ecx
mov edx, dword [esp + 0xe0]
shld eax, edx, 0x19
and edx, 0x7f
mov dword [esp + 0x80], edx
shr ecx, 7
mov dword [esp + 0x88], ecx
dec dword [esp + 0x44]
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xc4], eax
jmp 0x101739e6
mov dword [esp + 0x80], eax
mov eax, ebx
and eax, 0x40
mov dword [esp + 0xd8], eax
shr eax, 5
mov edx, ebx
and edx, 0x80
mov ecx, ebx
mov dword [esp + 0xe8], edx
mov ebx, edx
shr ebx, 6
or ebx, eax
mov eax, ecx
shr eax, 4
and eax, 3
mov edx, ecx
shr edx, 2
and edx, 0x30
or edx, eax
mov dword [esp + 0x10], ecx
mov eax, ecx
and eax, 7
mov ecx, eax
mov edi, dword [esp + 0x84]
shrd edi, esi, cl
shr esi, cl
mov ecx, dword [esp + 0x11c]
shl edx, cl
sub dword [esp + 0x70], eax
mov eax, dword [esp + 0x98]
or edx, dword [eax]
mov dword [esp + 0x24], edx
mov dword [eax], edx
mov eax, dword [esp + 0xb4]
or eax, 2
cmp eax, dword [esp + 0x40]
mov dword [esp + 0x84], edi
jge 0x10173a9f
mov ecx, dword [esp + 0x1c]
movzx eax, byte [ecx + 1]
shr eax, 7
movzx ecx, byte [ecx + 2]
shr ecx, 5
and ecx, 4
or ecx, eax
or ebx, ecx
mov eax, edi
and eax, 0x7f
mov ecx, ebx
shl ecx, 8
movzx edx, word [ecx + eax*2 + 0x1032129e]
test ebx, ebx
je 0x10173aaa
mov edi, edx
jmp 0x1017416d
mov dword [esp + 0x74], ebx
xor edx, edx
jmp 0x1017419e
mov ecx, dword [esp + 0x80]
lea eax, [ecx - 2]
cmp eax, 0xffffffff
mov edi, 0
cmovne edx, edi
mov edi, edx
cmp ecx, 1
jg 0x10173ad9
cmp dword [esp + 0x44], 0
je 0x10173b17
mov ebx, dword [esp + 0xc4]
jmp 0x10174133
mov dword [esp + 0x80], eax
jmp 0x1017416d
cmp dword [esp + 0x48], 5
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x10], ebx
jg 0x10173b5b
cmp eax, 5
mov ebx, eax
mov eax, dword [esp + 0x7c]
jl 0x10173b6c
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x7c], eax
add ebx, 0xfffffffc
mov dword [esp + 0x6c], ebx
jmp 0x10173c42
cmp dword [esp + 0x48], 5
mov dword [esp + 0xa0], esi
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x30], edi
jg 0x10173baf
cmp eax, 5
jl 0x10173bbf
mov ecx, eax
mov eax, dword [esp + 0x7c]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x7c], eax
add ecx, 0xfffffffc
mov dword [esp + 0xf8], ecx
jmp 0x10173ee2
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
jmp 0x10173cf7
test ebx, ebx
jle 0x10173c0f
mov dword [esp + 0x6c], 0
cmp ebx, 1
je 0x10173c18
inc ebx
xor ecx, ecx
xor eax, eax
dec eax
mov edi, dword [esp + 0x7c]
mov esi, 0xff
shl esi, cl
not esi
and esi, eax
movzx edx, byte [edi]
inc edi
shl edx, cl
or edx, esi
add ecx, 8
dec ebx
mov eax, edx
cmp ebx, 2
ja 0x10173b8f
jmp 0x10173c21
mov dword [esp + 0xf8], eax
mov ebx, dword [esp + 0x3c]
jmp 0x10173f94
test eax, eax
jle 0x10173eb3
mov dword [esp + 0xf8], 0
cmp eax, 1
je 0x10173ebf
mov ebx, dword [esp + 0xc4]
inc ebx
xor ecx, ecx
xor eax, eax
dec eax
mov edi, dword [esp + 0x7c]
mov esi, 0xff
shl esi, cl
not esi
and esi, eax
movzx edx, byte [edi]
inc edi
shl edx, cl
or edx, esi
add ecx, 8
dec ebx
mov eax, edx
cmp ebx, 2
ja 0x10173bec
jmp 0x10173ec8
mov dword [esp + 0x6c], ebx
xor esi, esi
dec esi
jmp 0x10173c42
xor ecx, ecx
xor edx, edx
dec edx
mov edi, dword [esp + 0x7c]
movzx esi, byte [edi]
or esi, 0xf
mov eax, 0xff
shl eax, cl
shl esi, cl
not eax
and eax, edx
or esi, eax
inc edi
mov dword [esp + 0x7c], edi
mov ecx, dword [esp + 0x8c]
mov edx, esi
mov edi, 0xff
and edx, edi
xor eax, eax
cmp edx, edi
sete al
add ecx, eax
mov dword [esp + 0x8c], ecx
mov cl, 8
sub cl, al
shl edx, cl
mov eax, esi
shr eax, 8
and eax, edi
or edx, eax
xor ebx, ebx
cmp eax, edi
sete bl
mov cl, 8
sub cl, bl
mov eax, ebx
add eax, dword [esp + 0x8c]
shl edx, cl
mov ecx, esi
shr ecx, 0x10
and ecx, edi
or edx, ecx
xor ebx, ebx
cmp ecx, edi
sete bl
mov cl, 8
sub cl, bl
shl edx, cl
add ebx, eax
mov eax, ebx
shr esi, 0x18
or edx, esi
xor ebx, ebx
cmp esi, edi
sete bl
mov ecx, eax
mov esi, eax
mov eax, dword [esp + 0x48]
sub ecx, eax
add cl, 0x20
xor edi, edi
shld edi, edx, cl
shl edx, cl
test cl, 0x20
mov ecx, ebx
cmovne edi, edx
mov dword [esp + 0x44], 0
mov ebx, 0
cmovne edx, ebx
sub eax, esi
or edi, dword [esp + 0x3c]
or edx, dword [esp + 0x4c]
add eax, 0x20
mov dword [esp + 0x48], eax
cmp eax, 6
mov esi, dword [esp + 0xa0]
mov ebx, dword [esp + 0x10]
jl 0x10173ea6
mov dword [esp + 0x24], 0
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], edi
xor eax, eax
mov dword [esp + 0x8c], ecx
cmp eax, 8
mov edx, dword [esp + 0x84]
je 0x10173e92
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0xcc]
mov eax, dword [edx*4 + 0x10321afc]
mov ebx, dword [esp + 0x3c]
test ebx, ebx
mov dword [esp + 0x3c], ebx
js 0x10173d85
mov cl, 0x3f
sub cl, al
mov esi, dword [esp + 0x4c]
shrd esi, ebx, cl
mov edi, ebx
shr edi, cl
test cl, 0x20
cmove edi, esi
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
and esi, edi
cmp edx, 2
lea ecx, [edx - 1]
mov edx, 0
cmovl ecx, edx
inc eax
mov dword [esp + 0x20], eax
sub dword [esp + 0x48], eax
lea esi, [esi*2 + 1]
mov dword [esp + 0xcc], ecx
jmp 0x10173db0
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
cmp edx, 0xb
lea ecx, [edx + 1]
mov eax, 0xc
cmovge ecx, eax
dec dword [esp + 0x48]
add esi, esi
mov dword [esp + 0xcc], ecx
xor eax, eax
inc eax
mov dword [esp + 0x20], eax
mov edi, esi
sar edi, 0x1f
mov ebx, esi
mov edx, dword [esp + 0x24]
mov ecx, edx
shl ebx, cl
test dl, 0x20
mov eax, ebx
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x30], eax
mov ecx, edx
shld edi, esi, cl
test dl, 0x20
cmovne edi, ebx
mov esi, 0x3f
shl esi, cl
test dl, 0x20
mov ecx, esi
mov eax, 0
cmovne ecx, eax
mov dword [esp + 0x80], ecx
xor ebx, ebx
mov ecx, edx
mov eax, 0x3f
shld ebx, eax, cl
test dl, 0x20
cmovne ebx, esi
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x3c]
shld esi, eax, cl
shl eax, cl
test cl, 0x20
cmovne esi, eax
mov dword [esp + 0x3c], esi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x4c], eax
not ebx
mov ecx, dword [esp + 0x88]
and ecx, ebx
or ecx, edi
mov dword [esp + 0x88], ecx
mov eax, dword [esp + 0x80]
not eax
mov ecx, dword [esp + 0xe0]
and ecx, eax
or ecx, dword [esp + 0x30]
mov dword [esp + 0xe0], ecx
mov eax, dword [esp + 0x44]
inc eax
add edx, 7
mov dword [esp + 0x24], edx
cmp dword [esp + 0x48], 5
mov esi, dword [esp + 0xa0]
mov ecx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x10]
jg 0x10173d10
mov dword [esp + 0x44], eax
jmp 0x10173998
mov dword [esp + 0x84], edx
mov dword [esp + 0x44], 8
jmp 0x10173998
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], edi
jmp 0x10173998
mov dword [esp + 0xf8], eax
xor esi, esi
dec esi
jmp 0x10173ee2
xor ecx, ecx
xor edx, edx
dec edx
mov edi, dword [esp + 0x7c]
movzx esi, byte [edi]
or esi, 0xf
mov eax, 0xff
shl eax, cl
shl esi, cl
not eax
and eax, edx
or esi, eax
inc edi
mov dword [esp + 0x7c], edi
mov edx, esi
mov ecx, 0xff
and edx, ecx
xor eax, eax
cmp edx, ecx
sete al
mov edi, dword [esp + 0x8c]
add edi, eax
mov cl, 8
sub cl, al
shl edx, cl
mov eax, esi
shr eax, 8
mov ecx, 0xff
and eax, ecx
or edx, eax
xor ebx, ebx
cmp eax, ecx
sete bl
mov cl, 8
sub cl, bl
add ebx, edi
shl edx, cl
mov ecx, esi
shr ecx, 0x10
mov edi, 0xff
and ecx, edi
or edx, ecx
xor eax, eax
cmp ecx, edi
sete al
mov cl, 8
sub cl, al
shl edx, cl
add eax, ebx
shr esi, 0x18
or edx, esi
xor ecx, ecx
cmp esi, edi
sete cl
mov dword [esp + 0x8c], ecx
mov ecx, eax
mov esi, dword [esp + 0x48]
sub ecx, esi
add cl, 0x20
xor ebx, ebx
shld ebx, edx, cl
shl edx, cl
xor edi, edi
test cl, 0x20
cmovne ebx, edx
mov dword [esp + 0x44], 0
cmovne edx, edi
sub esi, eax
or ebx, dword [esp + 0x3c]
or edx, dword [esp + 0x4c]
add esi, 0x20
mov dword [esp + 0x48], esi
cmp esi, 6
mov esi, dword [esp + 0xa0]
jl 0x10174120
mov dword [esp + 0x20], 0
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], ebx
xor eax, eax
cmp eax, 8
je 0x10174116
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0xcc]
mov eax, dword [edx*4 + 0x10321afc]
mov ebx, dword [esp + 0x3c]
test ebx, ebx
mov dword [esp + 0x3c], ebx
js 0x10174017
mov cl, 0x3f
sub cl, al
mov esi, dword [esp + 0x4c]
shrd esi, ebx, cl
mov edi, ebx
shr edi, cl
test cl, 0x20
cmove edi, esi
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
and esi, edi
cmp edx, 2
lea ecx, [edx - 1]
mov edx, 0
cmovl ecx, edx
inc eax
mov dword [esp + 0x80], eax
sub dword [esp + 0x48], eax
lea esi, [esi*2 + 1]
mov dword [esp + 0xcc], ecx
jmp 0x10174045
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
cmp edx, 0xb
lea ecx, [edx + 1]
mov eax, 0xc
cmovge ecx, eax
dec dword [esp + 0x48]
add esi, esi
mov dword [esp + 0xcc], ecx
xor eax, eax
inc eax
mov dword [esp + 0x80], eax
mov ebx, esi
sar ebx, 0x1f
mov edi, esi
mov edx, dword [esp + 0x20]
mov ecx, edx
shl edi, cl
test dl, 0x20
mov eax, edi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x6c], eax
mov ecx, edx
shld ebx, esi, cl
test dl, 0x20
cmovne ebx, edi
mov esi, 0x3f
shl esi, cl
test dl, 0x20
mov ecx, esi
mov eax, 0
cmovne ecx, eax
mov dword [esp + 0x74], ecx
xor edi, edi
mov ecx, edx
mov eax, 0x3f
shld edi, eax, cl
test dl, 0x20
cmovne edi, esi
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x3c]
shld esi, eax, cl
shl eax, cl
test cl, 0x20
cmovne esi, eax
mov dword [esp + 0x3c], esi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x4c], eax
not edi
mov ecx, dword [esp + 0x88]
and ecx, edi
or ecx, ebx
mov dword [esp + 0x88], ecx
mov eax, dword [esp + 0x74]
not eax
mov ecx, dword [esp + 0xe0]
and ecx, eax
or ecx, dword [esp + 0x6c]
mov dword [esp + 0xe0], ecx
mov eax, dword [esp + 0x44]
inc eax
add edx, 7
mov dword [esp + 0x20], edx
cmp dword [esp + 0x48], 5
mov esi, dword [esp + 0xa0]
jg 0x10173fa6
mov dword [esp + 0x44], eax
jmp 0x10174128
mov dword [esp + 0x44], 8
jmp 0x10174128
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], ebx
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0xf8]
mov ecx, dword [esp + 0x88]
mov eax, ecx
mov edx, dword [esp + 0xe0]
shld eax, edx, 0x19
and edx, 0x7f
mov dword [esp + 0x80], edx
shr ecx, 7
mov dword [esp + 0x88], ecx
dec dword [esp + 0x44]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xc4], ebx
mov edx, edi
mov eax, edi
shr eax, 5
shr edi, 6
mov ecx, edx
and ecx, 7
mov ebx, dword [esp + 0x84]
shrd ebx, esi, cl
shr esi, cl
or edi, eax
and edi, 2
mov dword [esp + 0x74], edi
sub dword [esp + 0x70], ecx
mov dword [esp + 0x84], ebx
mov edi, ebx
mov ebx, dword [esp + 0x10]
mov eax, edx
and eax, 0x30
mov ecx, edx
and ecx, 0xc0
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x11c]
add cl, 4
shl eax, cl
or eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x98]
mov dword [ecx], eax
mov ecx, ebx
shr ecx, 3
and ecx, 1
mov eax, edx
shr eax, 2
and eax, 2
or eax, ecx
mov ecx, 1
mov ebx, ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], edx
mov edx, 0
je 0x101742b6
mov dword [esp + 0xa0], esi
mov ecx, edi
and ecx, 7
movzx esi, byte [ecx + 0x10321b30]
mov ebx, esi
and ebx, 3
mov ecx, ebx
shr edi, cl
cmp eax, 3
jne 0x1017427f
mov eax, edi
and eax, 7
movzx eax, byte [eax + 0x10321b30]
mov dword [esp + 0x20], eax
mov ecx, eax
and ecx, 3
mov dword [esp + 0x6c], ecx
shr edi, cl
mov edx, esi
shr edx, 2
and edx, 7
xor eax, eax
dec eax
mov ecx, edx
shl eax, cl
add edx, ebx
shr esi, 5
not eax
and eax, edi
shr edi, cl
add eax, esi
inc eax
mov dword [esp + 0x24], eax
add edx, dword [esp + 0x6c]
mov esi, dword [esp + 0x20]
mov ecx, esi
shr ecx, 2
and ecx, 7
add edx, ecx
xor eax, eax
dec eax
shl eax, cl
not eax
and eax, edi
shr esi, 5
lea ebx, [esi + eax]
inc ebx
mov esi, dword [esp + 0xa0]
jmp 0x101742b6
mov ecx, esi
shr ecx, 2
and ecx, 7
xor edx, edx
dec edx
shl edx, cl
add ebx, ecx
not edx
and edi, edx
shr esi, 5
cmp eax, 1
lea edi, [esi + edi + 1]
mov ecx, 1
cmove ecx, edi
mov dword [esp + 0x24], ecx
cmove edi, eax
mov esi, dword [esp + 0xa0]
mov edx, ebx
mov ebx, edi
mov ecx, edx
mov eax, dword [esp + 0x84]
shrd eax, esi, cl
shr esi, cl
mov dword [esp + 0xf8], edx
test dl, 0x20
cmovne eax, esi
mov dword [esp + 0x84], eax
mov edx, 0
cmovne esi, edx
mov eax, dword [esp + 0x10]
and eax, 0xf0
lea ecx, [eax - 1]
test eax, ecx
mov dword [esp + 0x20], eax
je 0x10174318
mov eax, dword [esp + 0xdc]
and eax, 0x7f
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [ecx + 1]
and ecx, 0x7f
cmp eax, ecx
cmova ecx, eax
sub ecx, 2
cmovb ecx, edx
add dword [esp + 0x24], ecx
mov edi, dword [ebp + 0x20]
mov dword [esp + 0xa0], esi
mov edx, dword [esp + 0x30]
and edx, 0xf0
lea ecx, [edx - 1]
test edx, ecx
je 0x10174361
mov esi, dword [esp + 0x1c]
mov cl, byte [esi + 1]
mov ch, byte [esi + 2]
and cl, 0x7f
and ch, 0x7f
movzx esi, cl
cmp cl, ch
movzx ecx, ch
cmova ecx, esi
movzx esi, cl
add esi, 0xfffffffe
cmp cl, 3
mov ecx, 0
cmovb esi, ecx
add ebx, esi
mov esi, dword [ebp + 0x1c]
mov ecx, dword [esp + 0xd4]
cmp dword [esp + 0x24], ecx
ja 0x10177c08
cmp ebx, ecx
ja 0x10177c08
mov dword [esp + 0xdc], ebx
mov ecx, dword [esp + 0xb4]
lea ebx, [ecx + 4]
mov ecx, ebx
mov edi, dword [esp + 0x40]
sub ecx, edi
add ecx, ecx
mov esi, 0xff
shr esi, cl
cmp ebx, edi
mov ecx, 0xff
cmovle esi, ecx
mov edi, esi
and edi, 0x55
mov ecx, dword [esp + 0xfc]
cmp ecx, dword [esp + 0x114]
cmovle edi, esi
mov ecx, dword [esp + 0x1c]
mov al, byte [ecx + 2]
mov byte [esp + 0x6c], al
mov word [ecx + 1], 0
mov eax, dword [esp + 0x20]
shr eax, 4
or edx, eax
mov dword [esp + 0x20], edi
mov eax, edi
not eax
test edx, eax
jne 0x10177c23
test byte [esp + 0x10], 0x10
mov dword [esp + 0x10c], ebx
jne 0x10174418
xor esi, esi
test byte [esp + 0x20], 1
mov ecx, dword [esp + 0xb0]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x38]
jne 0x1017470b
jmp 0x1017470d
cmp dword [esp + 0x18], 0x20
mov edi, dword [esp + 0x28]
jae 0x10174442
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x10174452
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10174495
mov dword [esp + 0xa8], edi
mov eax, dword [esp + 0x2c]
jmp 0x1017469e
test ecx, ecx
jle 0x10174492
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0x50]
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10174462
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10174495
xor esi, esi
dec esi
cmp dword [esp + 0x14], 1
mov ecx, 0
adc ecx, 7
mov edi, esi
mov edx, 0xff
and edi, edx
mov dword [esp + 0x108], edi
xor eax, eax
cmp edi, edx
sete al
mov ebx, esi
shr ebx, 8
and ebx, edx
mov edi, 0xff
mov edx, ebx
shl edx, cl
mov dword [esp + 0xa8], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
cmp ebx, edi
sete dl
mov eax, esi
shr eax, 0x10
and eax, edi
mov ebx, eax
shl ebx, cl
sub ecx, edx
xor edx, edx
cmp eax, edi
sete dl
mov dword [esp + 0x14], edx
shr esi, 0x18
mov edx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or ebx, dword [esp + 0xa8]
or ebx, dword [esp + 0x108]
or ebx, eax
cmp esi, edi
sete byte [esp + 0x108]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne edi, ebx
mov eax, 0
cmovne ebx, eax
sub ecx, dword [esp + 0x14]
add ecx, edx
add ecx, 0x10
mov edx, ebx
mov eax, dword [esp + 0x2c]
or eax, edi
or edx, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
cmp ecx, 0x1f
mov dword [esp + 0xa8], edx
ja 0x10174584
mov ecx, dword [esp + 0xc]
cmp ecx, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x138], esi
jl 0x1017459a
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x101745dd
xor ecx, ecx
mov bl, byte [esp + 0x108]
mov cl, bl
mov dword [esp + 0x14], ecx
mov edi, edx
jmp 0x1017469e
test ecx, ecx
jle 0x101745da
lea edx, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor esi, esi
dec esi
movzx eax, byte [ebx]
mov edi, 0xff
shl edi, cl
shl eax, cl
not edi
and edi, esi
mov esi, eax
or esi, edi
inc ebx
add ecx, 8
dec edx
cmp edx, 1
ja 0x101745aa
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x101745dd
xor esi, esi
dec esi
xor edx, edx
mov ecx, 0xff
cmp dword [esp + 0x138], ecx
setne dl
add edx, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x28], edi
xor eax, eax
cmp edi, ecx
mov edi, 0xff
sete al
mov ecx, edx
sub edx, eax
mov eax, esi
shr eax, 8
and eax, edi
mov edi, eax
shl edi, cl
mov dword [esp + 0x14], edi
add edx, 8
xor ebx, ebx
mov ecx, 0xff
cmp eax, ecx
sete bl
mov eax, esi
shr eax, 0x10
and eax, ecx
mov edi, eax
mov ecx, edx
shl edi, cl
sub edx, ebx
xor ebx, ebx
mov ecx, 0xff
cmp eax, ecx
sete bl
shr esi, 0x18
lea ecx, [edx + 8]
mov eax, esi
shl eax, cl
or edi, dword [esp + 0x14]
or edi, dword [esp + 0x28]
or edi, eax
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
sete al
mov dword [esp + 0x14], eax
xor esi, esi
mov ecx, dword [esp + 0x18]
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov eax, 0
cmovne edi, eax
sub ecx, ebx
add ecx, edx
add ecx, 0x10
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x2c]
or eax, esi
or edi, dword [esp + 0xa8]
mov dword [esp + 0xa8], edi
mov ebx, dword [esp + 0x10]
mov edx, ebx
shl edx, 0x13
sar edx, 0x1f
add edx, dword [esp + 0x24]
mov ecx, edx
shrd edi, eax, cl
shr eax, cl
test dl, 0x20
cmovne edi, eax
mov dword [esp + 0x28], edi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x2c], eax
xor eax, eax
dec eax
mov ecx, edx
shl eax, cl
not eax
mov esi, ebx
shr esi, 8
and esi, 1
shl esi, cl
mov edi, dword [esp + 0xa8]
and eax, edi
or esi, eax
or esi, 1
add esi, 2
mov ecx, dword [esp + 0x78]
shl esi, cl
sub dword [esp + 0x18], edx
mov eax, edi
shl eax, 0x1f
or esi, eax
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0x38]
mov dword [edi], esi
test bl, 0x20
jne 0x1017472d
test byte [esp + 0x20], 2
je 0x10174a32
mov eax, dword [esp + 0x40]
mov dword [edi + eax*4], 0
jmp 0x10174a32
cmp dword [esp + 0x18], 0x20
jae 0x10174757
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x10174766
mov esi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x101747a7
mov edi, dword [esp + 0x28]
mov esi, edi
mov eax, dword [esp + 0x2c]
jmp 0x101749b3
test eax, eax
jle 0x101747a4
inc eax
xor ecx, ecx
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10174770
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x101747a7
xor esi, esi
dec esi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov edi, esi
mov edx, 0xff
and edi, edx
mov dword [esp + 0x108], edi
xor eax, eax
cmp edi, edx
sete al
mov ebx, esi
shr ebx, 8
and ebx, edx
mov edi, 0xff
mov edx, ebx
shl edx, cl
mov dword [esp + 0xa8], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
cmp ebx, edi
sete dl
mov eax, esi
shr eax, 0x10
and eax, edi
mov ebx, eax
shl ebx, cl
sub ecx, edx
xor edx, edx
cmp eax, edi
sete dl
mov dword [esp + 0x14], edx
shr esi, 0x18
mov edx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or ebx, dword [esp + 0xa8]
or ebx, dword [esp + 0x108]
or ebx, eax
cmp esi, edi
sete byte [esp + 0xa8]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne edi, ebx
mov eax, 0
cmovne ebx, eax
sub ecx, dword [esp + 0x14]
add ecx, edx
add ecx, 0x10
mov eax, dword [esp + 0x2c]
or eax, edi
or ebx, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
cmp ecx, 0x1f
ja 0x1017488f
mov dword [esp + 0x28], ebx
mov ecx, dword [esp + 0xc]
cmp ecx, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x138], esi
jl 0x101748ad
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x101748f0
xor ecx, ecx
mov dl, byte [esp + 0xa8]
mov cl, dl
mov dword [esp + 0x14], ecx
mov edi, ebx
mov ecx, dword [esp + 0x10]
mov esi, ebx
mov ebx, ecx
jmp 0x101749b3
test ecx, ecx
jle 0x101748ed
lea edx, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor esi, esi
dec esi
movzx eax, byte [ebx]
mov edi, 0xff
shl edi, cl
shl eax, cl
not edi
and edi, esi
mov esi, eax
or esi, edi
inc ebx
add ecx, 8
dec edx
cmp edx, 1
ja 0x101748bd
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x101748f0
xor esi, esi
dec esi
xor edx, edx
mov ecx, 0xff
cmp dword [esp + 0x138], ecx
setne dl
add edx, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x14], edi
xor eax, eax
cmp edi, ecx
mov edi, 0xff
sete al
mov ecx, edx
sub edx, eax
mov eax, esi
shr eax, 8
and eax, edi
mov edi, eax
shl edi, cl
mov dword [esp + 0xa8], edi
add edx, 8
xor ebx, ebx
mov ecx, 0xff
cmp eax, ecx
sete bl
mov eax, esi
shr eax, 0x10
and eax, ecx
mov edi, eax
mov ecx, edx
shl edi, cl
sub edx, ebx
xor ebx, ebx
mov ecx, 0xff
cmp eax, ecx
sete bl
shr esi, 0x18
lea ecx, [edx + 8]
mov eax, esi
shl eax, cl
or edi, dword [esp + 0xa8]
or edi, dword [esp + 0x14]
or edi, eax
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
sete al
mov dword [esp + 0x14], eax
xor esi, esi
mov ecx, dword [esp + 0x18]
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov eax, 0
cmovne edi, eax
sub ecx, ebx
add ecx, edx
add ecx, 0x10
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x2c]
or eax, esi
or edi, dword [esp + 0x28]
mov esi, edi
mov ebx, dword [esp + 0x10]
mov ecx, ebx
shl ecx, 0x12
sar ecx, 0x1f
add ecx, dword [esp + 0x24]
shrd edi, eax, cl
shr eax, cl
test cl, 0x20
cmovne edi, eax
mov dword [esp + 0x28], edi
mov edx, 0
cmovne eax, edx
mov dword [esp + 0x2c], eax
xor eax, eax
dec eax
shl eax, cl
sub dword [esp + 0x18], ecx
not eax
and eax, esi
mov edx, ebx
shr edx, 9
and edx, 1
shl edx, cl
or edx, eax
or edx, 1
lea eax, [edx + 2]
mov ecx, dword [esp + 0x78]
shl eax, cl
shl esi, 0x1f
or eax, esi
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x38]
mov dword [edi + ecx*4], eax
mov esi, dword [esp + 0x1c]
movzx ecx, byte [esi]
and ecx, 0x7f
bsr eax, edx
xor eax, 0xffffffe0
add eax, 0x21
cmp eax, ecx
cmovbe eax, ecx
or al, 0x80
mov byte [esi], al
mov ecx, dword [esp + 0xb0]
cmp dword [esp + 0xd8], 0
jne 0x10174a4e
xor esi, esi
test byte [esp + 0x20], 4
jne 0x10174d41
jmp 0x10174d44
cmp dword [esp + 0x18], 0x20
jae 0x10174a78
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x10174a8c
mov esi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10174acd
mov edi, dword [esp + 0x28]
mov dword [esp + 0xd8], edi
mov eax, dword [esp + 0x2c]
jmp 0x10174cd8
test eax, eax
jle 0x10174aca
inc eax
xor ecx, ecx
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10174a96
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10174acd
xor esi, esi
dec esi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov edi, esi
mov edx, 0xff
and edi, edx
mov dword [esp + 0xa8], edi
xor eax, eax
cmp edi, edx
sete al
mov ebx, esi
shr ebx, 8
and ebx, edx
mov edi, 0xff
mov edx, ebx
shl edx, cl
mov dword [esp + 0xd8], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
cmp ebx, edi
sete dl
mov eax, esi
shr eax, 0x10
and eax, edi
mov ebx, eax
shl ebx, cl
sub ecx, edx
xor edx, edx
cmp eax, edi
sete dl
mov dword [esp + 0x14], edx
shr esi, 0x18
mov edx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or ebx, dword [esp + 0xd8]
or ebx, dword [esp + 0xa8]
or ebx, eax
cmp esi, edi
sete byte [esp + 0xa8]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne edi, ebx
mov eax, 0
cmovne ebx, eax
sub ecx, dword [esp + 0x14]
add ecx, edx
add ecx, 0x10
mov edx, ebx
mov eax, dword [esp + 0x2c]
or eax, edi
or edx, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
cmp ecx, 0x1f
mov dword [esp + 0xd8], edx
ja 0x10174bba
mov ecx, dword [esp + 0xc]
cmp ecx, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x108], esi
jl 0x10174bd0
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10174c13
xor ecx, ecx
mov bl, byte [esp + 0xa8]
mov cl, bl
mov dword [esp + 0x14], ecx
mov edi, edx
jmp 0x10174cd4
test ecx, ecx
jle 0x10174c10
lea edx, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor esi, esi
dec esi
movzx eax, byte [ebx]
mov edi, 0xff
shl edi, cl
shl eax, cl
not edi
and edi, esi
mov esi, eax
or esi, edi
inc ebx
add ecx, 8
dec edx
cmp edx, 1
ja 0x10174be0
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10174c13
xor esi, esi
dec esi
xor edx, edx
mov ecx, 0xff
cmp dword [esp + 0x108], ecx
setne dl
add edx, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x28], edi
xor eax, eax
cmp edi, ecx
mov edi, 0xff
sete al
mov ecx, edx
sub edx, eax
mov eax, esi
shr eax, 8
and eax, edi
mov edi, eax
shl edi, cl
mov dword [esp + 0x14], edi
add edx, 8
xor ebx, ebx
mov ecx, 0xff
cmp eax, ecx
sete bl
mov eax, esi
shr eax, 0x10
and eax, ecx
mov edi, eax
mov ecx, edx
shl edi, cl
sub edx, ebx
xor ebx, ebx
mov ecx, 0xff
cmp eax, ecx
sete bl
shr esi, 0x18
lea ecx, [edx + 8]
mov eax, esi
shl eax, cl
or edi, dword [esp + 0x14]
or edi, dword [esp + 0x28]
or edi, eax
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
sete al
mov dword [esp + 0x14], eax
xor esi, esi
mov ecx, dword [esp + 0x18]
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov eax, 0
cmovne edi, eax
sub ecx, ebx
add ecx, edx
add ecx, 0x10
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x2c]
or eax, esi
or edi, dword [esp + 0xd8]
mov dword [esp + 0xd8], edi
mov ebx, dword [esp + 0x10]
mov edx, ebx
shl edx, 0x11
sar edx, 0x1f
add edx, dword [esp + 0x24]
mov ecx, edx
shrd edi, eax, cl
shr eax, cl
test dl, 0x20
cmovne edi, eax
mov dword [esp + 0x28], edi
mov ecx, 0
cmovne eax, ecx
mov dword [esp + 0x2c], eax
xor eax, eax
dec eax
mov ecx, edx
shl eax, cl
not eax
mov esi, ebx
shr esi, 0xa
and esi, 1
shl esi, cl
mov edi, dword [esp + 0xd8]
and eax, edi
or esi, eax
or esi, 1
add esi, 2
mov ecx, dword [esp + 0x78]
shl esi, cl
sub dword [esp + 0x18], edx
mov eax, edi
shl eax, 0x1f
or esi, eax
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0x38]
mov dword [edi + 4], esi
cmp dword [esp + 0xe8], 0
jne 0x10174d6a
test byte [esp + 0x20], 8
je 0x10175074
mov eax, dword [esp + 0x40]
mov dword [edi + eax*4 + 4], 0
jmp 0x10175074
mov ebx, dword [esp + 0x18]
cmp ebx, 0x20
jae 0x10174d96
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x10174d9f
mov esi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10174de0
mov edi, dword [esp + 0x28]
jmp 0x10174fe5
test eax, eax
jle 0x10174ddd
inc eax
xor ecx, ecx
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10174da9
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10174de0
xor esi, esi
dec esi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov edi, esi
mov edx, 0xff
and edi, edx
mov dword [esp + 0xd8], edi
xor eax, eax
cmp edi, edx
sete al
mov ebx, esi
shr ebx, 8
and ebx, edx
mov edi, 0xff
mov edx, ebx
shl edx, cl
mov dword [esp + 0xe8], edx
neg eax
add ecx, eax
add ecx, 8
xor edx, edx
cmp ebx, edi
sete dl
mov eax, esi
shr eax, 0x10
and eax, edi
mov ebx, eax
shl ebx, cl
sub ecx, edx
xor edx, edx
cmp eax, edi
sete dl
mov dword [esp + 0x14], edx
shr esi, 0x18
mov edx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or ebx, dword [esp + 0xe8]
or ebx, dword [esp + 0xd8]
or ebx, eax
cmp esi, edi
sete byte [esp + 0xd8]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne edi, ebx
mov eax, 0
cmovne ebx, eax
sub ecx, dword [esp + 0x14]
add ecx, edx
add ecx, 0x10
mov eax, dword [esp + 0x2c]
or eax, edi
or ebx, dword [esp + 0x28]
mov edx, ecx
cmp ecx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0xe8], ebx
ja 0x10174ecd
mov ecx, dword [esp + 0xc]
cmp ecx, 4
mov dword [esp + 0x18], edx
mov dword [esp + 0xa8], esi
jl 0x10174ee5
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10174f28
xor eax, eax
mov cl, byte [esp + 0xd8]
mov al, cl
mov dword [esp + 0x14], eax
mov edi, ebx
mov ebx, edx
jmp 0x10174fec
test ecx, ecx
jle 0x10174f25
lea edx, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor esi, esi
dec esi
movzx eax, byte [ebx]
mov edi, 0xff
shl edi, cl
shl eax, cl
not edi
and edi, esi
mov esi, eax
or esi, edi
inc ebx
add ecx, 8
dec edx
cmp edx, 1
ja 0x10174ef5
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10174f28
xor esi, esi
dec esi
xor edx, edx
mov ecx, 0xff
cmp dword [esp + 0xa8], ecx
setne dl
add edx, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x28], edi
xor eax, eax
cmp edi, ecx
mov edi, 0xff
sete al
mov ecx, edx
sub edx, eax
mov eax, esi
shr eax, 8
and eax, edi
mov edi, eax
shl edi, cl
mov dword [esp + 0x14], edi
add edx, 8
xor ebx, ebx
mov ecx, 0xff
cmp eax, ecx
sete bl
mov eax, esi
shr eax, 0x10
and eax, ecx
mov edi, eax
mov ecx, edx
shl edi, cl
sub edx, ebx
xor ecx, ecx
mov ebx, 0xff
cmp eax, ebx
sete cl
mov dword [esp + 0xd8], ecx
shr esi, 0x18
lea ecx, [edx + 8]
mov eax, esi
shl eax, cl
or edi, dword [esp + 0x14]
or edi, dword [esp + 0x28]
or edi, eax
xor eax, eax
cmp esi, ebx
sete al
mov dword [esp + 0x14], eax
xor esi, esi
mov ebx, dword [esp + 0x18]
mov ecx, ebx
shld esi, edi, cl
shl edi, cl
test bl, 0x20
cmovne esi, edi
mov eax, 0
cmovne edi, eax
sub ebx, dword [esp + 0xd8]
add ebx, edx
add ebx, 0x10
or dword [esp + 0x2c], esi
or edi, dword [esp + 0xe8]
mov dword [esp + 0xe8], edi
mov esi, dword [esp + 0x10]
movsx eax, si
sar eax, 0xf
mov ecx, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x2c]
shrd edi, eax, cl
shr eax, cl
test cl, 0x20
cmovne edi, eax
mov dword [esp + 0x28], edi
mov edx, 0
cmovne eax, edx
mov dword [esp + 0x2c], eax
xor eax, eax
dec eax
shl eax, cl
shr esi, 0xb
and esi, 1
shl esi, cl
sub ebx, ecx
mov dword [esp + 0x18], ebx
not eax
mov edi, dword [esp + 0xe8]
and eax, edi
or esi, eax
or esi, 1
lea edx, [esi + 2]
bsr eax, esi
xor eax, 0x1f
mov bl, 0xa0
sub bl, al
mov ecx, dword [esp + 0x78]
shl edx, cl
mov eax, edi
shl eax, 0x1f
or edx, eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x38]
mov dword [ecx + eax*4 + 4], edx
mov eax, dword [esp + 0x1c]
mov byte [eax + 1], bl
mov edi, ecx
mov ecx, dword [esp + 0xb0]
mov ebx, dword [esp + 0x30]
test bl, 0x10
jne 0x1017508f
xor esi, esi
test byte [esp + 0x20], 0x10
jne 0x10175357
jmp 0x1017535a
cmp dword [esp + 0x18], 0x20
jae 0x101750b9
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x101750c2
mov esi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x10175103
mov edi, dword [esp + 0x28]
jmp 0x101752e3
test eax, eax
jle 0x10175100
inc eax
xor ecx, ecx
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101750cc
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x10175103
xor esi, esi
dec esi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov edx, esi
mov ebx, 0xff
and edx, ebx
mov dword [esp + 0x14], edx
xor eax, eax
cmp edx, ebx
sete al
mov edx, esi
shr edx, 8
and edx, ebx
mov edi, 0xff
mov ebx, edx
shl ebx, cl
mov dword [esp + 0x24], ebx
neg eax
add ecx, eax
add ecx, 8
xor ebx, ebx
cmp edx, edi
sete bl
mov eax, esi
shr eax, 0x10
and eax, edi
mov edx, eax
shl edx, cl
sub ecx, ebx
xor ebx, ebx
cmp eax, edi
sete bl
mov dword [esp + 0x10], ebx
shr esi, 0x18
mov ebx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or edx, dword [esp + 0x24]
or edx, dword [esp + 0x14]
or edx, eax
cmp esi, edi
sete byte [esp + 0x14]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov eax, 0
cmovne edx, eax
sub ecx, dword [esp + 0x10]
add ebx, ecx
add ebx, 0x10
mov eax, dword [esp + 0x2c]
or eax, edi
or edx, dword [esp + 0x28]
cmp ebx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], edx
ja 0x101751d5
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x101751e8
mov eax, dword [esp + 0x50]
mov edx, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x1017522f
xor eax, eax
mov cl, byte [esp + 0x14]
mov al, cl
mov dword [esp + 0x14], eax
mov edi, edx
jmp 0x101752e7
test ecx, ecx
jle 0x1017522c
lea eax, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor edx, edx
dec edx
mov dword [esp + 0x10], edx
movzx edx, byte [ebx]
mov edi, 0xff
shl edi, cl
shl edx, cl
not edi
and edi, dword [esp + 0x10]
or edx, edi
inc ebx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101751f8
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x1017522f
xor edx, edx
dec edx
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
setne al
add eax, 7
mov edi, edx
and edi, ecx
mov dword [esp + 0x10], edi
mov esi, edx
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edx, esi
shr edx, 8
and edx, edi
mov edi, edx
shl edi, cl
mov dword [esp + 0x28], edi
add eax, 8
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
mov edx, esi
shr edx, 0x10
and edx, ecx
mov edi, edx
mov ecx, eax
shl edi, cl
sub eax, ebx
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
shr esi, 0x18
lea ecx, [eax + 8]
mov edx, esi
shl edx, cl
or edi, dword [esp + 0x28]
or edi, dword [esp + 0x10]
or edi, edx
xor ecx, ecx
mov edx, 0xff
cmp esi, edx
sete cl
mov dword [esp + 0x14], ecx
xor esi, esi
mov edx, dword [esp + 0x18]
mov ecx, edx
shld esi, edi, cl
shl edi, cl
test dl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
sub edx, ebx
add edx, eax
add edx, 0x10
mov dword [esp + 0x18], edx
or dword [esp + 0x2c], esi
or edi, dword [esp + 0x24]
mov dword [esp + 0x24], edi
mov ebx, dword [esp + 0x30]
mov eax, ebx
shl eax, 0x13
sar eax, 0x1f
add eax, dword [esp + 0xdc]
mov ecx, eax
mov edx, dword [esp + 0x2c]
shrd edi, edx, cl
shr edx, cl
test al, 0x20
cmovne edi, edx
mov dword [esp + 0x28], edi
mov ecx, 0
cmovne edx, ecx
mov dword [esp + 0x2c], edx
xor edx, edx
dec edx
mov ecx, eax
shl edx, cl
not edx
mov esi, ebx
shr esi, 8
and esi, 1
shl esi, cl
mov edi, dword [esp + 0x24]
and edx, edi
or esi, edx
or esi, 1
add esi, 2
mov ecx, dword [esp + 0x78]
shl esi, cl
sub dword [esp + 0x18], eax
mov eax, edi
shl eax, 0x1f
or esi, eax
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0x38]
mov dword [edi + 8], esi
test bl, 0x20
jne 0x1017537b
test byte [esp + 0x20], 0x20
je 0x10175372
mov eax, dword [esp + 0x40]
mov dword [edi + eax*4 + 8], 0
mov eax, dword [esp + 0x70]
jmp 0x1017566e
cmp dword [esp + 0x18], 0x20
jae 0x101753a5
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x101753b4
mov esi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x101753f5
mov edi, dword [esp + 0x28]
mov esi, edi
mov eax, dword [esp + 0x2c]
jmp 0x101755e3
test eax, eax
jle 0x101753f2
inc eax
xor ecx, ecx
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101753be
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x101753f5
xor esi, esi
dec esi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov edx, esi
mov ebx, 0xff
and edx, ebx
mov dword [esp + 0x14], edx
xor eax, eax
cmp edx, ebx
sete al
mov edx, esi
shr edx, 8
and edx, ebx
mov edi, 0xff
mov ebx, edx
shl ebx, cl
mov dword [esp + 0x24], ebx
neg eax
add ecx, eax
add ecx, 8
xor ebx, ebx
cmp edx, edi
sete bl
mov eax, esi
shr eax, 0x10
and eax, edi
mov edx, eax
shl edx, cl
sub ecx, ebx
xor ebx, ebx
cmp eax, edi
sete bl
mov dword [esp + 0x10], ebx
shr esi, 0x18
mov ebx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or edx, dword [esp + 0x24]
or edx, dword [esp + 0x14]
or edx, eax
cmp esi, edi
sete byte [esp + 0x24]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov eax, 0
cmovne edx, eax
sub ecx, dword [esp + 0x10]
add ebx, ecx
add ebx, 0x10
mov eax, dword [esp + 0x2c]
or eax, edi
or edx, dword [esp + 0x28]
cmp ebx, 0x1f
mov dword [esp + 0x18], ebx
ja 0x101754c7
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0xc]
cmp ecx, 4
mov dword [esp + 0x2c], eax
jl 0x101754e0
mov eax, dword [esp + 0x50]
mov edx, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10175527
xor ecx, ecx
mov bl, byte [esp + 0x24]
mov cl, bl
mov dword [esp + 0x14], ecx
mov edi, edx
mov ebx, dword [esp + 0x30]
mov esi, edx
jmp 0x101755e3
test ecx, ecx
jle 0x10175524
lea eax, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor edx, edx
dec edx
mov dword [esp + 0x10], edx
movzx edx, byte [ebx]
mov edi, 0xff
shl edi, cl
shl edx, cl
not edi
and edi, dword [esp + 0x10]
or edx, edi
inc ebx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101754f0
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10175527
xor edx, edx
dec edx
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
setne al
add eax, 7
mov edi, edx
and edi, ecx
mov dword [esp + 0x10], edi
mov esi, edx
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edx, esi
shr edx, 8
and edx, edi
mov edi, edx
shl edi, cl
mov dword [esp + 0x28], edi
add eax, 8
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
mov edx, esi
shr edx, 0x10
and edx, ecx
mov edi, edx
mov ecx, eax
shl edi, cl
sub eax, ebx
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
shr esi, 0x18
lea ecx, [eax + 8]
mov edx, esi
shl edx, cl
or edi, dword [esp + 0x28]
or edi, dword [esp + 0x10]
or edi, edx
xor ecx, ecx
mov edx, 0xff
cmp esi, edx
sete cl
mov dword [esp + 0x14], ecx
xor esi, esi
mov edx, dword [esp + 0x18]
mov ecx, edx
shld esi, edi, cl
shl edi, cl
test dl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
sub edx, ebx
add edx, eax
add edx, 0x10
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x2c]
or eax, esi
or edi, dword [esp + 0x24]
mov esi, edi
mov ebx, dword [esp + 0x30]
mov ecx, ebx
shl ecx, 0x12
sar ecx, 0x1f
add ecx, dword [esp + 0xdc]
shrd edi, eax, cl
shr eax, cl
test cl, 0x20
cmovne edi, eax
mov dword [esp + 0x28], edi
mov edx, 0
cmovne eax, edx
mov dword [esp + 0x2c], eax
xor edx, edx
dec edx
shl edx, cl
sub dword [esp + 0x18], ecx
not edx
and edx, esi
mov eax, ebx
shr eax, 9
and eax, 1
shl eax, cl
or eax, edx
or eax, 1
lea edx, [eax + 2]
mov ecx, dword [esp + 0x78]
shl edx, cl
shl esi, 0x1f
or edx, esi
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x38]
mov dword [esi + ecx*4 + 8], edx
mov edx, dword [esp + 0x1c]
movzx ecx, byte [edx + 1]
and ecx, 0x7f
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x21
cmp eax, ecx
cmovbe eax, ecx
or al, 0x80
mov byte [edx + 1], al
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x70]
mov edi, esi
test bl, 0x40
jne 0x10175685
xor esi, esi
test byte [esp + 0x20], 0x40
jne 0x10175955
jmp 0x10175958
cmp dword [esp + 0x18], 0x20
jae 0x101756af
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x101756bc
mov esi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x101756fd
mov edi, dword [esp + 0x28]
mov dword [esp + 0x24], edi
jmp 0x101758e5
test eax, eax
jle 0x101756fa
inc eax
xor ecx, ecx
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101756c6
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x101756fd
xor esi, esi
dec esi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov edx, esi
mov ebx, 0xff
and edx, ebx
mov dword [esp + 0x14], edx
xor eax, eax
cmp edx, ebx
sete al
mov edx, esi
shr edx, 8
and edx, ebx
mov edi, 0xff
mov ebx, edx
shl ebx, cl
mov dword [esp + 0x24], ebx
neg eax
add ecx, eax
add ecx, 8
xor ebx, ebx
cmp edx, edi
sete bl
mov eax, esi
shr eax, 0x10
and eax, edi
mov edx, eax
shl edx, cl
sub ecx, ebx
xor ebx, ebx
cmp eax, edi
sete bl
mov dword [esp + 0x10], ebx
shr esi, 0x18
mov ebx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or edx, dword [esp + 0x24]
or edx, dword [esp + 0x14]
or edx, eax
cmp esi, edi
sete byte [esp + 0x14]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov eax, 0
cmovne edx, eax
sub ecx, dword [esp + 0x10]
add ebx, ecx
add ebx, 0x10
mov eax, dword [esp + 0x2c]
or eax, edi
or edx, dword [esp + 0x28]
cmp ebx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], edx
ja 0x101757cf
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x101757e2
mov eax, dword [esp + 0x50]
mov edx, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10175829
xor eax, eax
mov cl, byte [esp + 0x14]
mov al, cl
mov dword [esp + 0x14], eax
mov edi, edx
jmp 0x101758e1
test ecx, ecx
jle 0x10175826
lea eax, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor edx, edx
dec edx
mov dword [esp + 0x10], edx
movzx edx, byte [ebx]
mov edi, 0xff
shl edi, cl
shl edx, cl
not edi
and edi, dword [esp + 0x10]
or edx, edi
inc ebx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101757f2
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10175829
xor edx, edx
dec edx
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
setne al
add eax, 7
mov edi, edx
and edi, ecx
mov dword [esp + 0x10], edi
mov esi, edx
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edx, esi
shr edx, 8
and edx, edi
mov edi, edx
shl edi, cl
mov dword [esp + 0x28], edi
add eax, 8
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
mov edx, esi
shr edx, 0x10
and edx, ecx
mov edi, edx
mov ecx, eax
shl edi, cl
sub eax, ebx
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
shr esi, 0x18
lea ecx, [eax + 8]
mov edx, esi
shl edx, cl
or edi, dword [esp + 0x28]
or edi, dword [esp + 0x10]
or edi, edx
xor ecx, ecx
mov edx, 0xff
cmp esi, edx
sete cl
mov dword [esp + 0x14], ecx
xor esi, esi
mov edx, dword [esp + 0x18]
mov ecx, edx
shld esi, edi, cl
shl edi, cl
test dl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
sub edx, ebx
add edx, eax
add edx, 0x10
mov dword [esp + 0x18], edx
or dword [esp + 0x2c], esi
or edi, dword [esp + 0x24]
mov dword [esp + 0x24], edi
mov ebx, dword [esp + 0x30]
mov eax, ebx
shl eax, 0x11
sar eax, 0x1f
add eax, dword [esp + 0xdc]
mov ecx, eax
mov edx, dword [esp + 0x2c]
shrd edi, edx, cl
shr edx, cl
test al, 0x20
cmovne edi, edx
mov dword [esp + 0x28], edi
mov ecx, 0
cmovne edx, ecx
mov dword [esp + 0x2c], edx
xor edx, edx
dec edx
mov ecx, eax
shl edx, cl
not edx
mov esi, ebx
shr esi, 0xa
and esi, 1
shl esi, cl
mov edi, dword [esp + 0x24]
and edx, edi
or esi, edx
or esi, 1
add esi, 2
mov ecx, dword [esp + 0x78]
shl esi, cl
sub dword [esp + 0x18], eax
mov eax, edi
shl eax, 0x1f
or esi, eax
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x70]
mov edi, dword [esp + 0x38]
mov dword [edi + 0xc], esi
add dword [esp + 0x1c], 2
test bl, bl
js 0x10175974
cmp dword [esp + 0x20], 0x80
jae 0x1017599e
mov esi, dword [esp + 0x40]
jmp 0x10175c66
cmp dword [esp + 0x18], 0x20
jae 0x101759af
mov eax, dword [esp + 0xc]
cmp eax, 4
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
jl 0x101759ba
mov esi, dword [edx]
add edx, 4
mov dword [esp + 0x50], edx
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
jmp 0x101759fb
mov esi, dword [esp + 0x40]
mov dword [edi + esi*4 + 0xc], 0
jmp 0x10175c66
mov edi, dword [esp + 0x28]
mov esi, edi
jmp 0x10175be7
test eax, eax
jle 0x101759f8
inc eax
xor ecx, ecx
xor esi, esi
dec esi
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101759c4
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x14]
jmp 0x101759fb
xor esi, esi
dec esi
cmp ecx, 1
mov ecx, 0
adc ecx, 7
mov edx, esi
mov ebx, 0xff
and edx, ebx
mov dword [esp + 0x20], edx
xor eax, eax
cmp edx, ebx
sete al
mov edx, esi
shr edx, 8
and edx, ebx
mov edi, 0xff
mov ebx, edx
shl ebx, cl
mov dword [esp + 0x24], ebx
neg eax
add ecx, eax
add ecx, 8
xor ebx, ebx
cmp edx, edi
sete bl
mov eax, esi
shr eax, 0x10
and eax, edi
mov edx, eax
shl edx, cl
sub ecx, ebx
xor ebx, ebx
cmp eax, edi
sete bl
mov dword [esp + 0x10], ebx
shr esi, 0x18
mov ebx, ecx
add ecx, 8
mov eax, esi
shl eax, cl
or edx, dword [esp + 0x24]
or edx, dword [esp + 0x20]
or edx, eax
cmp esi, edi
sete byte [esp + 0x24]
xor edi, edi
mov ecx, dword [esp + 0x18]
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov eax, 0
cmovne edx, eax
sub ecx, dword [esp + 0x10]
add ebx, ecx
add ebx, 0x10
mov eax, dword [esp + 0x2c]
or eax, edi
or edx, dword [esp + 0x28]
cmp ebx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], ebx
ja 0x10175acd
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x10175ae6
mov eax, dword [esp + 0x50]
mov edx, dword [eax]
add eax, 4
mov dword [esp + 0x50], eax
add ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
jmp 0x10175b2d
xor eax, eax
mov cl, byte [esp + 0x24]
mov al, cl
mov dword [esp + 0x14], eax
mov edi, edx
mov ebx, dword [esp + 0x30]
mov esi, edx
jmp 0x10175be7
test ecx, ecx
jle 0x10175b2a
lea eax, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0x50]
xor edx, edx
dec edx
mov dword [esp + 0x10], edx
movzx edx, byte [ebx]
mov edi, 0xff
shl edi, cl
shl edx, cl
not edi
and edi, dword [esp + 0x10]
or edx, edi
inc ebx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10175af6
mov eax, dword [esp + 0xc]
add dword [esp + 0x50], eax
mov dword [esp + 0xc], 0
jmp 0x10175b2d
xor edx, edx
dec edx
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
setne al
add eax, 7
mov edi, edx
and edi, ecx
mov dword [esp + 0x10], edi
mov esi, edx
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edx, esi
shr edx, 8
and edx, edi
mov edi, edx
shl edi, cl
mov dword [esp + 0x20], edi
add eax, 8
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
mov edx, esi
shr edx, 0x10
and edx, ecx
mov edi, edx
mov ecx, eax
shl edi, cl
sub eax, ebx
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
shr esi, 0x18
lea ecx, [eax + 8]
mov edx, esi
shl edx, cl
or edi, dword [esp + 0x20]
or edi, dword [esp + 0x10]
or edi, edx
xor ecx, ecx
mov edx, 0xff
cmp esi, edx
sete cl
mov dword [esp + 0x14], ecx
xor esi, esi
mov edx, dword [esp + 0x18]
mov ecx, edx
shld esi, edi, cl
shl edi, cl
test dl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
sub edx, ebx
add edx, eax
add edx, 0x10
mov dword [esp + 0x18], edx
or dword [esp + 0x2c], esi
or edi, dword [esp + 0x24]
mov esi, edi
mov ebx, dword [esp + 0x30]
movsx eax, bx
sar eax, 0xf
mov ecx, dword [esp + 0xdc]
add ecx, eax
mov eax, dword [esp + 0x2c]
shrd edi, eax, cl
shr eax, cl
test cl, 0x20
cmovne edi, eax
mov dword [esp + 0x28], edi
mov edx, 0
cmovne eax, edx
mov dword [esp + 0x2c], eax
xor eax, eax
dec eax
shl eax, cl
shr ebx, 0xb
and ebx, 1
shl ebx, cl
sub dword [esp + 0x18], ecx
not eax
and eax, esi
or ebx, eax
or ebx, 1
lea eax, [ebx + 2]
bsr ecx, ebx
xor ecx, 0x1f
mov dl, 0xa0
sub dl, cl
mov ecx, dword [esp + 0x78]
shl eax, cl
mov ecx, esi
shl ecx, 0x1f
or eax, ecx
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x38]
mov dword [edi + esi*4 + 0xc], eax
mov eax, dword [esp + 0x1c]
mov byte [eax], dl
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0xb4]
and edx, 4
add dword [esp + 0x98], edx
sub eax, dword [esp + 0xf8]
xor dword [esp + 0x11c], 0x10
add edi, 0x10
mov ebx, edi
mov edi, dword [esp + 0x10c]
cmp edi, esi
mov edx, eax
jl 0x101735eb
mov dword [esp + 0x70], edx
mov eax, dword [esp + 0x124]
jmp 0x10175cb3
lea edx, [ebx + 2]
mov dword [esp + 0xfc], edx
cmp dword [esp + 0x120], 2
mov edx, dword [esp + 0xbc]
mov ebx, dword [esp + 0x18]
jb 0x10176beb
mov eax, dword [esp + 0xfc]
and eax, 3
jne 0x10176be4
cmp byte [esp + 0x148], 0
je 0x10176239
mov edx, dword [esp + 0x40]
test edx, edx
jle 0x101762ff
mov eax, dword [esp + 0x128]
add eax, 0xfffffffe
mov edi, dword [esp + 0x150]
imul edi, eax
imul eax, edx
lea eax, [ecx + eax*4]
mov dword [esp + 0x38], eax
test byte [esp + 0xfc], 4
mov eax, dword [esp + 0xe4]
cmove eax, dword [esp + 0x118]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x168]
add eax, edi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x158]
add eax, edi
mov dword [esp + 0x20], eax
add edi, dword [esp + 0x154]
mov dword [esp + 0x1c], edi
xor eax, eax
mov edx, dword [esp + 0xbc]
mov dword [esp + 0xbc], edx
cmp edx, 0x20
mov dword [esp + 0xb4], eax
jae 0x10175da3
mov edi, dword [esp + 0xf0]
cmp edi, 4
mov edx, dword [esp + 0xb8]
mov ecx, dword [esp + 0x104]
jl 0x10175daf
mov ebx, dword [edx - 3]
add edx, 0xfffffffc
mov dword [esp + 0xb8], edx
add edi, 0xfffffffc
mov dword [esp + 0xf0], edi
jmp 0x10175ded
mov esi, dword [esp + 0xf4]
jmp 0x101760b6
test edi, edi
jle 0x10175deb
mov eax, edi
neg eax
inc edi
mov ecx, 0x18
xor ebx, ebx
movzx esi, byte [edx]
shl esi, cl
or ebx, esi
dec edx
add ecx, 0xfffffff8
dec edi
cmp edi, 1
ja 0x10175dbf
add dword [esp + 0xb8], eax
mov dword [esp + 0xf0], 0
mov ecx, dword [esp + 0x104]
jmp 0x10175ded
xor ebx, ebx
mov eax, ebx
shr eax, 0x18
test ecx, ecx
setne cl
mov edx, ebx
not edx
test edx, 0x7f000000
mov dword [esp + 0x10], edx
sete ch
and ch, cl
movzx esi, ch
mov ecx, 8
sub ecx, esi
cmp ebx, 0x90000000
setae byte [esp + 0x98]
mov edi, ebx
shr edi, 0x10
mov esi, 0xff
and edi, esi
mov esi, edi
shl esi, cl
or esi, eax
test edx, 0x7f0000
sete al
and al, byte [esp + 0x98]
movzx eax, al
neg eax
lea edx, [ecx + eax]
add edx, 8
mov eax, 0x90
cmp edi, eax
setae ch
mov edi, ebx
shr edi, 8
mov eax, 0xff
and edi, eax
mov eax, edi
mov cl, dl
shl eax, cl
or eax, esi
test dword [esp + 0x10], 0x7f00
sete cl
and cl, ch
movzx ecx, cl
sub edx, ecx
mov dword [esp + 0x98], edx
mov esi, 0x90
cmp edi, esi
setae byte [esp + 0xdc]
mov ecx, 0xff
and ebx, ecx
lea ecx, [edx + 8]
mov edi, ebx
shl edi, cl
or edi, eax
test byte [esp + 0x10], 0x7f
sete ch
and ch, byte [esp + 0xdc]
cmp ebx, esi
setae byte [esp + 0x10]
xor eax, eax
mov edx, dword [esp + 0xbc]
mov cl, dl
shld eax, edi, cl
shl edi, cl
test dl, 0x20
cmovne eax, edi
mov esi, 0
cmovne edi, esi
or edi, dword [esp + 0xf4]
movzx ecx, ch
sub edx, ecx
mov ecx, dword [esp + 0x98]
add edx, ecx
add edx, 0x10
or dword [esp + 0x100], eax
mov dword [esp + 0xbc], edx
cmp edx, 0x1f
ja 0x10175f37
mov ecx, dword [esp + 0xf0]
cmp ecx, 4
mov dword [esp + 0xdc], edi
jl 0x10175f54
mov eax, dword [esp + 0xb8]
mov edi, dword [eax - 3]
add eax, 0xfffffffc
mov dword [esp + 0xb8], eax
add ecx, 0xfffffffc
mov dword [esp + 0xf0], ecx
jmp 0x10175f9c
xor eax, eax
mov cl, byte [esp + 0x10]
mov al, cl
mov dword [esp + 0x104], eax
mov esi, edi
mov dword [esp + 0xf4], edi
jmp 0x101760b2
test ecx, ecx
mov edx, dword [esp + 0xb8]
jle 0x10175f9a
mov eax, ecx
neg eax
mov dword [esp + 0x10], eax
inc ecx
mov eax, ecx
mov ecx, 0x18
xor edi, edi
movzx esi, byte [edx]
shl esi, cl
or edi, esi
dec edx
add ecx, 0xfffffff8
dec eax
cmp eax, 1
ja 0x10175f71
mov eax, dword [esp + 0x10]
add dword [esp + 0xb8], eax
mov dword [esp + 0xf0], 0
jmp 0x10175f9c
xor edi, edi
mov eax, 0x90
cmp ebx, eax
setae cl
mov eax, edi
shr eax, 0x18
mov edx, edi
not edx
mov dword [esp + 0x10], edx
test edx, 0x7f000000
sete dl
and dl, cl
movzx edx, dl
mov ecx, 8
sub ecx, edx
cmp edi, 0x90000000
setae byte [esp + 0x98]
mov ebx, edi
shr ebx, 0x10
mov edx, 0xff
and ebx, edx
mov esi, ebx
shl esi, cl
or esi, eax
test dword [esp + 0x10], 0x7f0000
sete al
and al, byte [esp + 0x98]
movzx eax, al
neg eax
add ecx, eax
add ecx, 8
mov eax, 0x90
cmp ebx, eax
setae byte [esp + 0x98]
mov eax, edi
shr eax, 8
and eax, edx
mov edx, eax
mov ebx, ecx
shl edx, cl
or edx, esi
test dword [esp + 0x10], 0x7f00
sete cl
and cl, byte [esp + 0x98]
movzx ecx, cl
sub ebx, ecx
mov ecx, 0x90
cmp eax, ecx
setae ah
mov ecx, 0xff
and edi, ecx
lea ecx, [ebx + 8]
mov esi, edi
shl esi, cl
or esi, edx
test byte [esp + 0x10], 0x7f
sete al
and al, ah
xor ecx, ecx
mov edx, 0x90
cmp edi, edx
setae cl
mov dword [esp + 0x104], ecx
xor edx, edx
mov ecx, dword [esp + 0xbc]
shld edx, esi, cl
shl esi, cl
test cl, 0x20
cmovne edx, esi
mov edi, 0
cmovne esi, edi
movzx eax, al
sub ecx, eax
add ecx, ebx
add ecx, 0x10
mov dword [esp + 0xbc], ecx
or dword [esp + 0x100], edx
or esi, dword [esp + 0xdc]
mov dword [esp + 0xf4], esi
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
test eax, eax
je 0x1017619b
mov edx, 0xf
xor edi, edi
mov dword [esp + 0x10], eax
test edx, eax
je 0x1017618c
mov ebx, edx
and ebx, 0x11111111
test ebx, eax
je 0x10176106
mov eax, esi
not esi
and esi, 1
mov ecx, dword [esp + 0x78]
shl esi, cl
mov ecx, dword [esp + 0x38]
xor esi, dword [ecx + edi]
or esi, dword [esp + 0x34]
mov dword [ecx + edi], esi
shr eax, 1
mov esi, eax
mov eax, dword [esp + 0x10]
lea ecx, [ebx + ebx]
test ecx, eax
je 0x10176130
mov eax, esi
not esi
and esi, 1
mov ecx, dword [esp + 0x78]
shl esi, cl
mov ecx, dword [esp + 0x24]
xor esi, dword [ecx + edi]
or esi, dword [esp + 0x34]
mov dword [ecx + edi], esi
shr eax, 1
mov esi, eax
mov eax, dword [esp + 0x10]
lea ecx, [ebx*4]
test ecx, eax
je 0x1017615e
mov eax, esi
not esi
and esi, 1
mov ecx, dword [esp + 0x78]
shl esi, cl
mov ecx, dword [esp + 0x20]
xor esi, dword [ecx + edi]
or esi, dword [esp + 0x34]
mov dword [ecx + edi], esi
shr eax, 1
mov esi, eax
mov eax, dword [esp + 0x10]
shl ebx, 3
test ebx, eax
je 0x10176188
mov eax, esi
not esi
and esi, 1
mov ecx, dword [esp + 0x78]
shl esi, cl
mov ecx, dword [esp + 0x1c]
xor esi, dword [ecx + edi]
or esi, dword [esp + 0x34]
mov dword [ecx + edi], esi
shr eax, 1
mov esi, eax
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
shl edx, 4
add edi, 4
cmp edi, 0x20
jne 0x101760cf
mov ecx, eax
shr ecx, 1
and ecx, 0x55555555
sub eax, ecx
mov ecx, eax
mov edx, 0x33333333
and ecx, edx
shr eax, 2
and eax, edx
add eax, ecx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul ecx, ecx, 0x1010101
shr ecx, 0x18
mov eax, dword [esp + 0x100]
mov edx, dword [esp + 0xf4]
shrd edx, eax, cl
add dword [esp + 0x30], 4
shr eax, cl
test cl, 0x20
cmovne edx, eax
mov dword [esp + 0xf4], edx
mov edx, 0
cmovne eax, edx
mov dword [esp + 0x100], eax
mov edx, dword [esp + 0xbc]
sub edx, ecx
mov eax, dword [esp + 0xb4]
add eax, 8
add dword [esp + 0x24], 0x20
add dword [esp + 0x20], 0x20
add dword [esp + 0x1c], 0x20
add dword [esp + 0x38], 0x20
cmp eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xb0]
jl 0x10175d5d
mov dword [esp + 0x18], ebx
mov dword [esp + 0xbc], edx
mov eax, dword [esp + 0x128]
cmp eax, 1
jle 0x10176be4
test byte [esp + 0xfc], 4
sete byte [esp + 0x10]
mov eax, dword [esp + 0xe4]
cmove eax, dword [esp + 0x118]
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0x140]
cmove eax, dword [esp + 0x13c]
mov dword [esp + 0xa8], eax
cmp dword [esp + 0x40], 0
jle 0x10176346
xor ecx, ecx
xor edx, edx
xor edi, edi
mov eax, dword [esp + 0x10c]
mov esi, dword [eax + ecx]
shrd edi, esi, 0x1c
mov ebx, esi
shr ebx, 4
or ebx, esi
or ebx, edi
mov edi, dword [esp + 0xa8]
mov dword [edi + ecx], ebx
mov eax, dword [eax + ecx + 4]
shl eax, 0x1c
or eax, ebx
lea ebx, [eax + eax]
and ebx, 0xeeeeeeee
mov edi, eax
shr edi, 1
and edi, 0x77777777
or edi, ebx
or edi, eax
mov eax, esi
not eax
and eax, edi
mov edi, dword [esp + 0xa8]
mov dword [edi + ecx], eax
mov edi, esi
add edx, 8
add ecx, 4
cmp edx, dword [esp + 0x40]
jl 0x1017629e
jmp 0x10176346
cmp dword [esp + 0x128], 2
jl 0x10176bdd
test byte [esp + 0xfc], 4
mov eax, dword [esp + 0xe4]
cmove eax, dword [esp + 0x118]
mov dword [esp + 0x10c], eax
sete byte [esp + 0x10]
mov eax, dword [esp + 0x140]
cmove eax, dword [esp + 0x13c]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x128]
cmp eax, 6
jl 0x10176bdd
cmp byte [esp + 0x10], 0
mov eax, dword [esp + 0x118]
cmovne eax, dword [esp + 0xe4]
mov dword [esp + 0x14c], eax
mov eax, dword [esp + 0x13c]
cmovne eax, dword [esp + 0x140]
mov dword [esp + 0x134], eax
cmp dword [esp + 0x40], 0
jle 0x10176bb7
xor eax, eax
xor ecx, ecx
xor edi, edi
mov ebx, dword [esp + 0x134]
mov esi, dword [esp + 0x10c]
mov edx, dword [esi + eax]
mov ebx, dword [ebx + eax]
mov dword [esp + 0x10], ebx
mov ebx, dword [ebp + 0x18]
test bl, 8
jne 0x101763e1
mov esi, dword [esi + eax + 4]
shl esi, 0x1c
mov ebx, edx
shr ebx, 4
or ebx, esi
shrd edi, edx, 0x1c
or ebx, edi
or ebx, edx
shl ebx, 3
and ebx, 0x88888888
mov esi, dword [esp + 0x10]
or esi, ebx
mov ebx, esi
jmp 0x101763e5
mov ebx, dword [esp + 0x10]
mov edi, edx
mov esi, dword [esp + 0x14c]
mov esi, dword [esi + eax]
not esi
and esi, ebx
mov ebx, dword [esp + 0x134]
mov dword [ebx + eax], esi
add ecx, 8
add eax, 4
cmp ecx, dword [esp + 0x40]
jl 0x1017639f
cmp dword [esp + 0x40], 0
jle 0x10176bb7
mov ecx, dword [esp + 0x128]
add ecx, 0xfffffffa
imul ecx, dword [esp + 0x150]
mov eax, dword [esp + 0x160]
add eax, ecx
mov dword [esp + 0x108], eax
mov eax, dword [esp + 0x158]
add eax, ecx
mov dword [esp + 0x138], eax
mov eax, dword [esp + 0x154]
add eax, ecx
mov dword [esp + 0x15c], eax
add ecx, dword [esp + 0xb0]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x74], 0
mov eax, dword [esp + 0x14c]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0xa4]
mov ebx, dword [esp + 0x10c]
mov edi, dword [esp + 0xa8]
mov edx, dword [esp + 0x134]
mov dword [esp + 0xa8], edi
mov dword [esp + 0x10c], ebx
mov dword [esp + 0x134], edx
mov ecx, dword [edx]
mov dword [esp + 0x10], ecx
test ecx, ecx
mov edx, dword [esp + 0x94]
je 0x10176afa
sub eax, dword [esp + 0x74]
mov dword [esp + 0xf8], eax
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x38], 0
cmp edx, 0x20
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xa4], esi
mov dword [esp + 0x94], edx
mov dword [esp + 0x6c], eax
jae 0x10176526
cmp ecx, 4
jl 0x10176532
mov eax, dword [esp + 0xc0]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0xc0], eax
add ecx, 0xfffffffc
mov dword [esp + 0xd0], ecx
jmp 0x10176589
mov edx, dword [esp + 0x9c]
jmp 0x101767c0
test ecx, ecx
jle 0x10176582
lea eax, [ecx + 1]
xor ecx, ecx
mov edx, dword [esp + 0xc0]
mov esi, dword [esp + 0x90]
movzx edi, byte [edx]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, esi
mov esi, edi
or esi, ebx
inc edx
add ecx, 8
dec eax
cmp eax, 1
ja 0x10176549
mov eax, dword [esp + 0xd0]
add dword [esp + 0xc0], eax
mov dword [esp + 0xd0], 0
jmp 0x10176589
mov esi, dword [esp + 0x90]
cmp dword [esp + 0x130], 1
mov ecx, 0
adc ecx, 7
mov edx, esi
mov ebx, 0xff
and edx, ebx
mov dword [esp + 0x30], edx
xor eax, eax
cmp edx, ebx
sete al
mov edx, esi
shr edx, 8
and edx, ebx
mov ebx, edx
shl ebx, cl
mov dword [esp + 0x20], ebx
neg eax
add ecx, eax
add ecx, 8
xor ebx, ebx
mov edi, 0xff
cmp edx, edi
sete bl
mov eax, esi
shr eax, 0x10
and eax, edi
mov edx, eax
shl edx, cl
sub ecx, ebx
mov dword [esp + 0x24], ecx
xor ebx, ebx
cmp eax, edi
sete bl
mov dword [esp + 0x1c], ebx
shr esi, 0x18
lea ebx, [ecx + 8]
mov eax, esi
mov ecx, ebx
shl eax, cl
or edx, dword [esp + 0x20]
or edx, dword [esp + 0x30]
or edx, eax
xor eax, eax
cmp esi, edi
sete byte [esp + 0x20]
xor edi, edi
mov ecx, dword [esp + 0x94]
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov ebx, 0
cmovne edx, ebx
sub ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x24]
add ecx, ebx
add ecx, 0x10
or dword [esp + 0xa4], edi
or edx, dword [esp + 0x9c]
mov dword [esp + 0x94], ecx
cmp ecx, 0x1f
ja 0x1017667c
mov ecx, dword [esp + 0xd0]
cmp ecx, 4
mov dword [esp + 0x24], edx
jl 0x10176695
mov eax, dword [esp + 0xc0]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0xc0], eax
add ecx, 0xfffffffc
mov dword [esp + 0xd0], ecx
jmp 0x101766f0
mov cl, byte [esp + 0x20]
mov al, cl
mov dword [esp + 0x130], eax
mov dword [esp + 0x9c], edx
jmp 0x101767b9
test ecx, ecx
jle 0x101766e9
lea eax, [ecx + 1]
xor ecx, ecx
mov ebx, dword [esp + 0xc0]
mov edi, dword [esp + 0x90]
mov dword [esp + 0x1c], edi
movzx edi, byte [ebx]
mov edx, 0xff
shl edx, cl
shl edi, cl
not edx
and edx, dword [esp + 0x1c]
or edi, edx
inc ebx
add ecx, 8
dec eax
cmp eax, 1
ja 0x101766ac
mov eax, dword [esp + 0xd0]
add dword [esp + 0xc0], eax
mov dword [esp + 0xd0], 0
jmp 0x101766f0
mov edi, dword [esp + 0x90]
xor eax, eax
mov ecx, 0xff
cmp esi, ecx
setne al
add eax, 7
mov edx, edi
and edx, ecx
mov dword [esp + 0x1c], edx
xor ebx, ebx
cmp edx, ecx
sete bl
mov ecx, eax
sub eax, ebx
mov edx, edi
shr edx, 8
mov ebx, 0xff
and edx, ebx
mov esi, edx
shl esi, cl
mov dword [esp + 0x9c], esi
add eax, 8
xor ecx, ecx
cmp edx, ebx
sete cl
mov esi, ecx
mov edx, edi
shr edx, 0x10
and edx, ebx
mov ebx, edx
mov ecx, eax
shl ebx, cl
sub eax, esi
xor ecx, ecx
mov esi, 0xff
cmp edx, esi
sete cl
mov dword [esp + 0x20], ecx
shr edi, 0x18
lea ecx, [eax + 8]
mov edx, edi
shl edx, cl
or ebx, dword [esp + 0x9c]
or ebx, dword [esp + 0x1c]
or ebx, edx
xor ecx, ecx
cmp edi, esi
sete cl
mov dword [esp + 0x130], ecx
xor esi, esi
mov ecx, dword [esp + 0x94]
shld esi, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne esi, ebx
mov edx, 0
cmovne ebx, edx
or ebx, dword [esp + 0x24]
sub ecx, dword [esp + 0x20]
or dword [esp + 0xa4], esi
add ecx, eax
add ecx, 0x10
mov dword [esp + 0x94], ecx
mov dword [esp + 0x9c], ebx
mov edx, ebx
mov ebx, dword [esp + 0xb4]
lea ecx, [ebx*4]
mov edi, 0xf
shl edi, cl
lea esi, [ebx + 4]
mov eax, dword [esp + 0x74]
add eax, ebx
add eax, 4
cmp eax, dword [esp + 0x40]
cmovge esi, dword [esp + 0xf8]
xor eax, eax
mov dword [esp + 0x20], esi
cmp ebx, esi
jge 0x10176a7b
mov eax, dword [esp + 0xd8]
mov eax, dword [eax]
not eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x98], ecx
mov dword [esp + 0xe8], edi
mov esi, dword [esp + 0xa4]
mov eax, dword [esp + 0x10]
test edi, eax
je 0x10176919
mov esi, edi
and esi, 0x11111111
test esi, eax
je 0x10176866
test dl, 1
je 0x1017685a
mov dword [esp + 0x24], edx
mov edx, eax
mov eax, 0x32
shl eax, cl
and eax, dword [esp + 0x30]
or edx, eax
mov eax, edx
mov edx, dword [esp + 0x24]
or dword [esp + 0x38], esi
mov dword [esp + 0x10], eax
shr edx, 1
inc dword [esp + 0x1c]
jmp 0x1017686a
mov dword [esp + 0x10], eax
lea eax, [esi + esi]
test dword [esp + 0x10], eax
je 0x10176899
test dl, 1
je 0x10176893
mov dword [esp + 0x24], edx
mov edx, 0x74
shl edx, cl
or dword [esp + 0x38], eax
and edx, dword [esp + 0x30]
or dword [esp + 0x10], edx
mov edx, dword [esp + 0x24]
shr edx, 1
inc dword [esp + 0x1c]
lea eax, [esi*4]
test dword [esp + 0x10], eax
je 0x101768b1
test dl, 1
jne 0x101768b7
mov eax, dword [esp + 0x10]
jmp 0x101768d4
mov eax, dword [esp + 0x10]
jmp 0x101768da
mov dword [esp + 0x24], edx
mov edx, 0xe8
shl edx, cl
or dword [esp + 0x38], eax
and edx, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
or eax, edx
mov edx, dword [esp + 0x24]
shr edx, 1
inc dword [esp + 0x1c]
shl esi, 3
test eax, esi
je 0x10176912
test dl, 1
je 0x10176903
mov dword [esp + 0x24], edx
mov edx, eax
mov eax, 0xc0
shl eax, cl
or dword [esp + 0x38], esi
and eax, dword [esp + 0x30]
or edx, eax
mov eax, edx
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0xa4]
shr edx, 1
inc dword [esp + 0x1c]
jmp 0x10176919
mov esi, dword [esp + 0xa4]
inc ebx
shl edi, 4
add ecx, 4
cmp ebx, dword [esp + 0x20]
jl 0x10176824
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x98]
shr eax, cl
test ax, ax
je 0x10176a73
mov edi, dword [esp + 0xb4]
cmp edi, dword [esp + 0x20]
jge 0x10176a73
mov eax, dword [esp + 0x108]
add eax, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x138]
add eax, ecx
mov dword [esp + 0x30], eax
add ecx, dword [esp + 0x15c]
mov dword [esp + 0x98], ecx
mov eax, dword [esp + 0x74]
add eax, edi
mov ecx, dword [esp + 0x128]
lea eax, [ecx + eax*4]
mov dword [esp + 0xdc], eax
xor ebx, ebx
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0xe8]
test esi, ecx
je 0x10176a54
mov eax, ecx
mov ecx, esi
and ecx, 0x11111111
test ecx, eax
je 0x101769d6
mov eax, edx
shl eax, 0x1f
mov edi, dword [esp + 0xdc]
or eax, dword [edi + ebx*4]
or eax, dword [esp + 0xac]
mov dword [edi + ebx*4], eax
shr edx, 1
inc dword [esp + 0x1c]
lea eax, [ecx + ecx]
test dword [esp + 0x38], eax
je 0x101769fb
mov eax, edx
shl eax, 0x1f
mov edi, dword [esp + 0x24]
or eax, dword [edi + ebx*4]
or eax, dword [esp + 0xac]
mov dword [edi + ebx*4], eax
shr edx, 1
inc dword [esp + 0x1c]
lea eax, [ecx*4]
test dword [esp + 0x38], eax
je 0x10176a24
mov eax, edx
shl eax, 0x1f
mov edi, dword [esp + 0x30]
or eax, dword [edi + ebx*4]
or eax, dword [esp + 0xac]
mov dword [edi + ebx*4], eax
shr edx, 1
inc dword [esp + 0x1c]
shl ecx, 3
mov eax, dword [esp + 0x38]
test ecx, eax
mov ecx, eax
je 0x10176a54
mov eax, edx
shl eax, 0x1f
mov edi, esi
mov esi, dword [esp + 0x98]
or eax, dword [esi + ebx*4]
or eax, dword [esp + 0xac]
mov dword [esi + ebx*4], eax
mov esi, edi
shr edx, 1
inc dword [esp + 0x1c]
shl esi, 4
mov eax, dword [esp + 0xb4]
add eax, ebx
inc eax
inc ebx
cmp eax, dword [esp + 0x20]
jl 0x101769a1
mov esi, dword [esp + 0xa4]
xor edx, edx
mov eax, dword [esp + 0x1c]
jmp 0x10176a84
mov esi, dword [esp + 0xa4]
xor edx, edx
mov ecx, eax
mov eax, dword [esp + 0x9c]
shrd eax, esi, cl
shr esi, cl
test cl, 0x20
cmovne eax, esi
mov dword [esp + 0x9c], eax
cmovne esi, edx
mov edx, dword [esp + 0x94]
sub edx, ecx
mov ebx, 4
test byte [esp + 0x6c], 1
mov al, 1
je 0x101764dd
mov dword [esp + 0x94], edx
mov ebx, dword [esp + 0x38]
mov eax, ebx
shr eax, 0x1c
mov ecx, ebx
shr ecx, 0x1d
or ecx, eax
mov eax, ebx
shr eax, 0x1b
and eax, 0xe
or eax, ecx
mov edx, dword [esp + 0xd8]
mov ecx, dword [edx + 4]
not ecx
and ecx, eax
mov eax, dword [esp + 0x134]
or dword [eax + 4], ecx
mov eax, ebx
jmp 0x10176b03
xor eax, eax
mov edx, dword [esp + 0xd8]
or eax, dword [edx]
mov dword [esp + 0x38], eax
shr eax, 3
and eax, 0x11111111
cmp dword [esp + 0x74], 0
mov ebx, dword [esp + 0x10c]
mov edi, dword [esp + 0xa8]
je 0x10176b35
mov ecx, eax
shl ecx, 0x1c
mov edx, dword [ebx - 4]
not edx
and edx, ecx
or dword [edi - 4], edx
mov ecx, eax
shl ecx, 4
mov edx, eax
shr edx, 4
or edx, ecx
or edx, eax
mov ecx, ebx
mov eax, dword [ebx]
not eax
and eax, edx
or dword [edi], eax
mov ebx, dword [esp + 0x38]
shr ebx, 0x1f
mov eax, dword [ecx + 4]
not eax
and eax, ebx
or dword [edi + 4], eax
add ecx, 4
mov dword [esp + 0x10c], ecx
add edi, 4
mov ebx, dword [esp + 0x74]
add ebx, 8
add dword [esp + 0xd8], 4
mov edx, dword [esp + 0x134]
add edx, 4
add dword [esp + 0x108], 0x20
add dword [esp + 0x138], 0x20
add dword [esp + 0x15c], 0x20
mov eax, dword [esp + 0x40]
mov ecx, ebx
mov dword [esp + 0x74], ebx
cmp ebx, eax
mov ebx, dword [esp + 0x10c]
jl 0x1017649c
jmp 0x10176bbe
mov esi, dword [esp + 0xa4]
mov dword [esp + 0xa4], esi
push dword [esp + 0x164]
push 0
push dword [esp + 0x154]
call fcn.1023e960
add esp, 0xc
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x124]
mov edx, dword [esp + 0xfc]
cmp edx, dword [esp + 0x114]
jl 0x10173578
jmp 0x10176c08
mov ecx, dword [esp + 0xb0]
mov edi, ecx
cmp dword [esp + 0x120], 2
mov esi, dword [esp + 0x114]
jb 0x10177b9c
and esi, 3
dec esi
mov dword [esp + 0x2c], esi
cmp esi, 2
setb al
mov ecx, dword [esp + 0x148]
and cl, al
cmp cl, 1
mov eax, dword [esp + 0x40]
jne 0x101771a3
test eax, eax
jle 0x10177240
mov ecx, dword [esp + 0x114]
mov eax, ecx
and eax, 0xfffffc
imul eax, dword [esp + 0x40]
mov dword [esp + 0x50], eax
test cl, 4
mov ebx, dword [esp + 0x118]
cmove ebx, dword [esp + 0xe4]
shr ecx, 2
and ecx, 0x3fffff
imul ecx, dword [esp + 0x40]
shl ecx, 4
mov esi, dword [esp + 0x12c]
lea eax, [ecx + esi*8]
mov edi, dword [esp + 0x144]
lea edx, [edi*8]
sub eax, edx
lea edx, [esi + esi*2]
lea edx, [ecx + edx*4]
lea esi, [ecx + esi*4]
lea ecx, [edi*4]
sub esi, ecx
lea ecx, [ecx + ecx*2]
sub edx, ecx
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0x50]
lea edi, [ecx + edi*4]
mov dword [esp + 0x24], edi
add esi, ecx
mov dword [esp + 0x38], esi
add eax, ecx
mov dword [esp + 0x10], eax
add edx, ecx
mov dword [esp + 0x1c], edx
xor ecx, ecx
mov edx, dword [esp + 0xbc]
cmp edx, 0x20
mov dword [esp + 0xbc], edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0xd4], ecx
jae 0x10176d2d
mov ebx, dword [esp + 0xf0]
cmp ebx, 4
mov ecx, dword [esp + 0x104]
jl 0x10176d39
mov eax, dword [esp + 0xb8]
mov esi, dword [eax - 3]
add eax, 0xfffffffc
mov dword [esp + 0xb8], eax
add ebx, 0xfffffffc
mov dword [esp + 0xf0], ebx
jmp 0x10176d7e
mov edi, dword [esp + 0xf4]
jmp 0x10177031
test ebx, ebx
mov edx, dword [esp + 0xb8]
jle 0x10176d7c
mov eax, ebx
neg eax
inc ebx
mov ecx, 0x18
xor esi, esi
movzx edi, byte [edx]
shl edi, cl
or esi, edi
dec edx
add ecx, 0xfffffff8
dec ebx
cmp ebx, 1
ja 0x10176d50
add dword [esp + 0xb8], eax
mov dword [esp + 0xf0], 0
mov ecx, dword [esp + 0x104]
jmp 0x10176d7e
xor esi, esi
mov eax, esi
shr eax, 0x18
test ecx, ecx
setne cl
mov edx, esi
not edx
test edx, 0x7f000000
mov dword [esp + 0x50], edx
sete ch
and ch, cl
movzx edi, ch
mov ecx, 8
sub ecx, edi
cmp esi, 0x90000000
setae byte [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
mov edi, 0xff
and ebx, edi
mov edi, ebx
shl edi, cl
or edi, eax
test edx, 0x7f0000
sete al
and al, byte [esp + 0x18]
movzx eax, al
neg eax
lea edx, [ecx + eax]
add edx, 8
mov eax, 0x90
cmp ebx, eax
setae ch
mov ebx, esi
shr ebx, 8
mov eax, 0xff
and ebx, eax
mov eax, ebx
mov cl, dl
shl eax, cl
or eax, edi
test dword [esp + 0x50], 0x7f00
sete cl
and cl, ch
movzx ecx, cl
sub edx, ecx
mov dword [esp + 0x18], edx
mov edi, 0x90
cmp ebx, edi
setae bl
mov ecx, 0xff
and esi, ecx
lea ecx, [edx + 8]
mov edx, esi
shl edx, cl
or edx, eax
test byte [esp + 0x50], 0x7f
sete bh
and bh, bl
cmp esi, edi
setae bl
xor eax, eax
mov ecx, dword [esp + 0xbc]
shld eax, edx, cl
shl edx, cl
test cl, 0x20
cmovne eax, edx
mov edi, 0
cmovne edx, edi
or edx, dword [esp + 0xf4]
movzx edi, bh
sub ecx, edi
mov edi, dword [esp + 0x18]
add ecx, edi
add ecx, 0x10
or dword [esp + 0x100], eax
mov dword [esp + 0xbc], ecx
cmp ecx, 0x1f
ja 0x10176eab
mov dword [esp + 0x18], edx
mov ecx, dword [esp + 0xf0]
cmp ecx, 4
jl 0x10176ec8
mov eax, dword [esp + 0xb8]
mov ebx, dword [eax - 3]
add eax, 0xfffffffc
mov dword [esp + 0xb8], eax
add ecx, 0xfffffffc
mov dword [esp + 0xf0], ecx
jmp 0x10176f10
xor eax, eax
mov al, bl
mov dword [esp + 0x104], eax
mov dword [esp + 0xf4], edx
mov ebx, dword [esp + 0x20]
mov edi, edx
jmp 0x10177031
test ecx, ecx
mov edx, dword [esp + 0xb8]
jle 0x10176f0e
mov eax, ecx
neg eax
mov dword [esp + 0x50], eax
inc ecx
mov eax, ecx
mov ecx, 0x18
xor ebx, ebx
movzx edi, byte [edx]
shl edi, cl
or ebx, edi
dec edx
add ecx, 0xfffffff8
dec eax
cmp eax, 1
ja 0x10176ee5
mov eax, dword [esp + 0x50]
add dword [esp + 0xb8], eax
mov dword [esp + 0xf0], 0
jmp 0x10176f10
xor ebx, ebx
mov eax, 0x90
cmp esi, eax
setae cl
mov eax, ebx
shr eax, 0x18
mov edx, ebx
not edx
mov dword [esp + 0x50], edx
test edx, 0x7f000000
sete dl
and dl, cl
movzx edx, dl
mov ecx, 8
sub ecx, edx
cmp ebx, 0x90000000
setae byte [esp + 0x30]
mov esi, ebx
shr esi, 0x10
mov edx, 0xff
and esi, edx
mov edx, esi
shl edx, cl
or edx, eax
test dword [esp + 0x50], 0x7f0000
sete al
and al, byte [esp + 0x30]
movzx eax, al
neg eax
lea edi, [ecx + eax]
add edi, 8
mov eax, 0x90
cmp esi, eax
setae byte [esp + 0x30]
mov esi, ebx
shr esi, 8
mov eax, 0xff
and esi, eax
mov eax, esi
mov ecx, edi
shl eax, cl
or eax, edx
test dword [esp + 0x50], 0x7f00
sete cl
and cl, byte [esp + 0x30]
movzx ecx, cl
mov edx, edi
sub edx, ecx
mov dword [esp + 0x30], edx
mov ecx, 0x90
cmp esi, ecx
mov edi, 0x90
setae byte [esp + 0xc]
mov ecx, 0xff
and ebx, ecx
lea ecx, [edx + 8]
mov esi, ebx
shl esi, cl
or esi, eax
test byte [esp + 0x50], 0x7f
sete al
and al, byte [esp + 0xc]
xor ecx, ecx
cmp ebx, edi
setae cl
mov dword [esp + 0x104], ecx
xor edx, edx
mov ecx, dword [esp + 0xbc]
shld edx, esi, cl
shl esi, cl
test cl, 0x20
cmovne edx, esi
mov edi, 0
cmovne esi, edi
movzx eax, al
sub ecx, eax
mov eax, dword [esp + 0x30]
add ecx, eax
add ecx, 0x10
mov dword [esp + 0xbc], ecx
or dword [esp + 0x100], edx
or esi, dword [esp + 0x18]
mov dword [esp + 0xf4], esi
mov edi, esi
mov ebx, dword [esp + 0x20]
mov eax, dword [ebx]
test eax, eax
je 0x10177108
mov edx, 0xf
xor ebx, ebx
mov dword [esp + 0x50], eax
test edx, eax
je 0x101770f9
mov esi, edx
and esi, 0x11111111
test esi, eax
je 0x1017707d
mov eax, edi
not edi
and edi, 1
mov ecx, dword [esp + 0x78]
shl edi, cl
mov ecx, dword [esp + 0x24]
xor edi, dword [ecx + ebx]
or edi, dword [esp + 0x34]
mov dword [ecx + ebx], edi
mov edi, eax
mov eax, dword [esp + 0x50]
shr edi, 1
lea ecx, [esi + esi]
test ecx, eax
je 0x101770a7
mov eax, edi
not edi
and edi, 1
mov ecx, dword [esp + 0x78]
shl edi, cl
mov ecx, dword [esp + 0x38]
xor edi, dword [ecx + ebx]
or edi, dword [esp + 0x34]
mov dword [ecx + ebx], edi
mov edi, eax
mov eax, dword [esp + 0x50]
shr edi, 1
lea ecx, [esi*4]
test ecx, eax
je 0x101770d5
mov eax, edi
not edi
and edi, 1
mov ecx, dword [esp + 0x78]
shl edi, cl
mov ecx, dword [esp + 0x10]
xor edi, dword [ecx + ebx]
or edi, dword [esp + 0x34]
mov dword [ecx + ebx], edi
mov edi, eax
mov eax, dword [esp + 0x50]
shr edi, 1
shl esi, 3
test esi, eax
je 0x101770f9
mov esi, edi
not esi
and esi, 1
mov ecx, dword [esp + 0x78]
shl esi, cl
mov ecx, dword [esp + 0x1c]
xor esi, dword [ecx + ebx]
or esi, dword [esp + 0x34]
mov dword [ecx + ebx], esi
shr edi, 1
shl edx, 4
add ebx, 4
cmp ebx, 0x20
jne 0x10177046
mov ecx, eax
shr ecx, 1
and ecx, 0x55555555
sub eax, ecx
mov ecx, eax
mov edx, 0x33333333
and ecx, edx
shr eax, 2
and eax, edx
add eax, ecx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul ecx, ecx, 0x1010101
shr ecx, 0x18
mov eax, dword [esp + 0x100]
mov edx, dword [esp + 0xf4]
shrd edx, eax, cl
mov ebx, dword [esp + 0x20]
add ebx, 4
shr eax, cl
test cl, 0x20
cmovne edx, eax
mov dword [esp + 0xf4], edx
mov edx, 0
cmovne eax, edx
mov dword [esp + 0x100], eax
mov edx, dword [esp + 0xbc]
sub edx, ecx
mov ecx, dword [esp + 0xd4]
add ecx, 8
add dword [esp + 0x38], 0x20
add dword [esp + 0x10], 0x20
add dword [esp + 0x1c], 0x20
add dword [esp + 0x24], 0x20
mov eax, dword [esp + 0x40]
cmp ecx, eax
jl 0x10176ce3
cmp dword [esp + 0x2c], 1
ja 0x10177240
test eax, eax
jle 0x10177240
test byte [esp + 0x114], 4
mov eax, dword [esp + 0x13c]
cmove eax, dword [esp + 0x140]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x118]
cmove eax, dword [esp + 0xe4]
mov dword [esp + 0x10], eax
xor edx, edx
xor esi, esi
xor ebx, ebx
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + edx]
shrd ebx, eax, 0x1c
mov edi, eax
shr edi, 4
or edi, eax
or edi, ebx
mov ebx, dword [esp + 0x50]
mov dword [ebx + edx], edi
mov ecx, dword [ecx + edx + 4]
shl ecx, 0x1c
or ecx, edi
lea edi, [ecx + ecx]
and edi, 0xeeeeeeee
mov ebx, ecx
shr ebx, 1
and ebx, 0x77777777
or ebx, edi
or ebx, ecx
mov ecx, eax
not ecx
and ecx, ebx
mov edi, dword [esp + 0x50]
mov dword [edi + edx], ecx
mov ebx, eax
add esi, 8
add edx, 4
cmp esi, dword [esp + 0x40]
jl 0x101771ea
mov esi, dword [esp + 0x114]
lea eax, [esi + 1]
and eax, 3
neg eax
xor ecx, ecx
cmp esi, 7
lea ebx, [esi + eax - 3]
cmovl ebx, ecx
cmp ebx, esi
mov edi, dword [esp + 0xb0]
jge 0x10177b9c
mov dword [esp + 0x44], ebx
mov edi, dword [esp + 0x44]
imul edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x12c]
lea ecx, [ebx*4]
lea eax, [ecx + edi*4]
mov dword [esp + 0x88], eax
mov eax, ebx
shl eax, 4
mov edx, dword [esp + 0x144]
mov ecx, edx
shl ecx, 4
sub eax, ecx
mov dword [esp + 0x98], eax
lea ecx, [ebx*8]
lea eax, [ecx + edi*4]
lea ecx, [edx*8]
sub eax, ecx
lea ecx, [edx*4]
sub dword [esp + 0x88], ecx
lea edx, [ebx + ebx*2]
shl edx, 2
lea ebx, [edx + edi*4]
lea ecx, [ecx + ecx*2]
sub ebx, ecx
mov ecx, dword [esp + 0xb0]
add dword [esp + 0x88], ecx
add eax, ecx
mov dword [esp + 0x4c], eax
add ebx, ecx
mov dword [esp + 0xcc], ebx
lea eax, [ecx + edi*4]
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x44]
mov eax, esi
mov dword [esp + 0x44], ecx
sub eax, ecx
lea ecx, [eax - 1]
cmp ecx, 3
mov edx, dword [esp + 0x94]
jae 0x10177335
mov eax, dword [eax*4 + 0x10321b34]
mov dword [esp + 0x48], eax
mov edi, dword [esp + 0xb0]
mov ecx, dword [esp + 0x44]
jmp 0x10177417
xor ecx, ecx
dec ecx
mov dword [esp + 0x48], ecx
cmp eax, 5
mov edi, dword [esp + 0xb0]
mov ecx, dword [esp + 0x44]
jl 0x10177417
cmp dword [esp + 0x40], 0
jle 0x10177b6a
test cl, 4
mov eax, dword [esp + 0xe4]
mov edx, eax
mov ecx, dword [esp + 0x118]
cmove edx, ecx
mov dword [esp + 0x10], edx
mov esi, dword [esp + 0x13c]
cmove esi, dword [esp + 0x140]
cmove ecx, eax
mov dword [esp + 0x38], ecx
mov eax, esi
xor esi, esi
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + esi]
mov dword [esp + 0x50], ecx
mov edx, dword [eax + esi]
mov eax, dword [ebp + 0x18]
test al, 8
jne 0x101773da
mov eax, dword [esp + 0x10]
mov eax, dword [eax + esi + 4]
shl eax, 0x1c
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x50]
mov eax, ecx
shr eax, 4
or eax, dword [esp + 0x24]
shrd ebx, ecx, 0x1c
or eax, ebx
or eax, ecx
shl eax, 3
and eax, 0x88888888
or edx, eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + esi]
not eax
and eax, edx
mov ebx, dword [esp + 0x1c]
mov dword [ebx + esi], eax
mov eax, ebx
add edi, 8
add esi, 4
mov ebx, dword [esp + 0x50]
cmp edi, dword [esp + 0x40]
jl 0x10177397
xor eax, eax
dec eax
mov dword [esp + 0x48], eax
mov edi, dword [esp + 0xb0]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x94]
cmp dword [esp + 0x40], 0
jle 0x10177b63
test cl, 4
mov edx, dword [esp + 0x140]
mov edi, edx
mov esi, dword [esp + 0x13c]
cmove edi, esi
mov eax, dword [esp + 0xe4]
mov ebx, eax
mov ecx, dword [esp + 0x118]
cmove ebx, ecx
cmove esi, edx
cmove ecx, eax
mov dword [esp + 0x28], ecx
mov eax, esi
mov esi, ebx
mov edx, edi
mov dword [esp + 0xb4], 0
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0xc], ecx
mov ecx, dword [eax]
and ecx, dword [esp + 0x48]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0xa0], esi
mov dword [esp + 0x7c], eax
je 0x10177ab0
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0xb4]
mov dword [esp + 0x84], eax
xor eax, eax
xor ebx, ebx
xor edx, edx
mov edi, dword [esp + 0x94]
cmp edi, 0x20
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edx
mov dword [esp + 0x2c], eax
jae 0x10177510
cmp ecx, 4
mov dword [esp + 0x94], edi
jl 0x10177520
mov eax, dword [esp + 0xc0]
mov edx, dword [eax]
add eax, 4
mov dword [esp + 0xc0], eax
add ecx, 0xfffffffc
mov dword [esp + 0xd0], ecx
jmp 0x10177577
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x50], eax
jmp 0x101777c9
test ecx, ecx
jle 0x10177570
lea eax, [ecx + 1]
xor ecx, ecx
mov esi, dword [esp + 0xc0]
mov edx, dword [esp + 0x90]
movzx edi, byte [esi]
mov ebx, 0xff
shl ebx, cl
shl edi, cl
not ebx
and ebx, edx
mov edx, edi
or edx, ebx
inc esi
add ecx, 8
dec eax
cmp eax, 1
ja 0x10177537
mov eax, dword [esp + 0xd0]
add dword [esp + 0xc0], eax
mov dword [esp + 0xd0], 0
jmp 0x10177577
mov edx, dword [esp + 0x90]
cmp dword [esp + 0x130], 1
mov ecx, 0
adc ecx, 7
mov esi, edx
mov edi, 0xff
and esi, edi
xor eax, eax
cmp esi, edi
sete al
mov ebx, edx
shr ebx, 8
and ebx, edi
mov edi, ebx
shl edi, cl
mov dword [esp + 0x38], edi
neg eax
add ecx, eax
add ecx, 8
xor eax, eax
mov edi, 0xff
cmp ebx, edi
mov ebx, 0xff
sete al
mov edi, eax
mov eax, edx
shr eax, 0x10
and eax, ebx
mov ebx, eax
shl ebx, cl
sub ecx, edi
mov dword [esp + 0x1c], ecx
mov edi, 0xff
cmp eax, edi
mov eax, 0
sete al
mov dword [esp + 0x50], eax
shr edx, 0x18
add ecx, 8
mov eax, edx
shl eax, cl
or ebx, dword [esp + 0x38]
or ebx, esi
or ebx, eax
cmp edx, edi
sete byte [esp + 0x38]
xor esi, esi
mov ecx, dword [esp + 0x94]
shld esi, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne esi, ebx
mov eax, 0
cmovne ebx, eax
sub ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x1c]
add ecx, eax
add ecx, 0x10
mov eax, dword [esp + 0xa4]
or eax, esi
or ebx, dword [esp + 0x9c]
mov dword [esp + 0x94], ecx
cmp ecx, 0x1f
mov dword [esp + 0xa4], eax
mov dword [esp + 0x50], ebx
ja 0x10177678
mov ecx, dword [esp + 0xd0]
cmp ecx, 4
jl 0x1017769a
mov eax, dword [esp + 0xc0]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0xc0], eax
add ecx, 0xfffffffc
mov dword [esp + 0xd0], ecx
jmp 0x101776f5
xor eax, eax
mov cl, byte [esp + 0x38]
mov al, cl
mov dword [esp + 0x130], eax
mov dword [esp + 0x9c], ebx
mov edi, dword [esp + 0x94]
jmp 0x101777c1
test ecx, ecx
jle 0x101776ee
lea eax, [ecx + 1]
xor ecx, ecx
mov edi, dword [esp + 0xc0]
mov esi, dword [esp + 0x90]
mov dword [esp + 0x1c], esi
movzx esi, byte [edi]
mov ebx, 0xff
shl ebx, cl
shl esi, cl
not ebx
and ebx, dword [esp + 0x1c]
or esi, ebx
inc edi
add ecx, 8
dec eax
cmp eax, 1
ja 0x101776b1
mov eax, dword [esp + 0xd0]
add dword [esp + 0xc0], eax
mov dword [esp + 0xd0], 0
jmp 0x101776f5
mov esi, dword [esp + 0x90]
xor eax, eax
mov ecx, 0xff
cmp edx, ecx
setne al
add eax, 7
mov edi, esi
and edi, ecx
mov dword [esp + 0x1c], edi
xor edx, edx
cmp edi, ecx
mov edi, 0xff
sete dl
mov ecx, eax
sub eax, edx
mov edx, esi
shr edx, 8
and edx, edi
mov edi, edx
shl edi, cl
mov dword [esp + 0xd4], edi
add eax, 8
xor ebx, ebx
mov ecx, 0xff
cmp edx, ecx
sete bl
mov edi, ebx
mov edx, esi
shr edx, 0x10
and edx, ecx
mov ebx, edx
mov ecx, eax
shl ebx, cl
sub eax, edi
xor ecx, ecx
mov edi, 0xff
cmp edx, edi
sete cl
mov dword [esp + 0x38], ecx
shr esi, 0x18
lea ecx, [eax + 8]
mov edx, esi
shl edx, cl
or ebx, dword [esp + 0xd4]
or ebx, dword [esp + 0x1c]
or ebx, edx
xor ecx, ecx
cmp esi, edi
sete cl
mov dword [esp + 0x130], ecx
xor edx, edx
mov ecx, dword [esp + 0x94]
shld edx, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne edx, ebx
mov esi, 0
cmovne ebx, esi
or ebx, dword [esp + 0x50]
sub ecx, dword [esp + 0x38]
or dword [esp + 0xa4], edx
mov edi, ecx
lea edi, [eax + ecx]
add edi, 0x10
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x50], ebx
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
lea ecx, [ebx*4]
mov esi, 0xf
mov dword [esp + 0x70], ecx
shl esi, cl
lea ecx, [ebx + 4]
mov eax, dword [esp + 0xb4]
add eax, ebx
add eax, 4
cmp eax, dword [esp + 0x40]
cmovge ecx, dword [esp + 0x84]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x38], ecx
cmp ebx, ecx
jge 0x10177a36
mov dword [esp + 0x94], edi
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
not eax
and eax, dword [esp + 0x48]
mov dword [esp + 0xd4], eax
mov dword [esp + 0x1c], 0
mov ecx, dword [esp + 0x70]
mov edx, ebx
mov dword [esp + 0x34], esi
mov eax, dword [esp + 0x10]
test esi, eax
je 0x1017792b
mov edi, esi
and edi, 0x11111111
test edi, eax
je 0x1017787f
test byte [esp + 0x50], 1
je 0x10177871
mov ebx, eax
mov eax, 0x32
shl eax, cl
and eax, dword [esp + 0xd4]
or ebx, eax
mov eax, ebx
mov ebx, dword [esp + 0x20]
or dword [esp + 0x24], edi
mov dword [esp + 0x10], eax
shr dword [esp + 0x50], 1
inc dword [esp + 0x1c]
jmp 0x10177883
mov dword [esp + 0x10], eax
lea eax, [edi + edi]
test dword [esp + 0x10], eax
je 0x101778b5
test byte [esp + 0x50], 1
je 0x101778ad
mov ebx, 0x74
shl ebx, cl
or dword [esp + 0x24], eax
and ebx, dword [esp + 0xd4]
or dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x20]
shr dword [esp + 0x50], 1
inc dword [esp + 0x1c]
lea eax, [edi*4]
test dword [esp + 0x10], eax
je 0x101778cf
test byte [esp + 0x50], 1
jne 0x101778d5
mov eax, dword [esp + 0x10]
jmp 0x101778f1
mov eax, dword [esp + 0x10]
jmp 0x101778f9
mov ebx, 0xe8
shl ebx, cl
or dword [esp + 0x24], eax
and ebx, dword [esp + 0xd4]
mov eax, dword [esp + 0x10]
or eax, ebx
mov ebx, dword [esp + 0x20]
shr dword [esp + 0x50], 1
inc dword [esp + 0x1c]
shl edi, 3
test eax, edi
je 0x1017792b
test byte [esp + 0x50], 1
je 0x10177923
mov ebx, eax
mov eax, 0xc0
shl eax, cl
or dword [esp + 0x24], edi
and eax, dword [esp + 0xd4]
or ebx, eax
mov eax, ebx
mov ebx, dword [esp + 0x20]
shr dword [esp + 0x50], 1
inc dword [esp + 0x1c]
inc edx
shl esi, 4
add ecx, 4
cmp edx, dword [esp + 0x38]
jl 0x1017783a
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x24]
mov eax, edx
mov ecx, dword [esp + 0x70]
shr eax, cl
test ax, ax
je 0x10177a2f
cmp ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x94]
jge 0x10177a36
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
test ecx, edx
je 0x10177a21
mov esi, ecx
and ecx, 0x11111111
test ecx, edx
je 0x101779a2
mov eax, edi
shl eax, 0x1f
mov edx, dword [esp + 0x18]
or eax, dword [edx + ebx*4]
or eax, dword [esp + 0xac]
mov dword [edx + ebx*4], eax
mov edx, dword [esp + 0x24]
shr edi, 1
inc dword [esp + 0x1c]
lea eax, [ecx + ecx]
test eax, edx
je 0x101779cd
mov edx, edi
mov eax, edi
shl eax, 0x1f
mov edi, dword [esp + 0xc]
or eax, dword [edi + ebx*4]
or eax, dword [esp + 0xac]
mov dword [edi + ebx*4], eax
shr edx, 1
mov edi, edx
mov edx, dword [esp + 0x24]
inc dword [esp + 0x1c]
lea eax, [ecx*4]
test eax, edx
je 0x101779fc
mov edx, edi
mov eax, edi
shl eax, 0x1f
mov edi, dword [esp + 0x78]
or eax, dword [edi + ebx*4]
or eax, dword [esp + 0xac]
mov dword [edi + ebx*4], eax
shr edx, 1
mov edi, edx
mov edx, dword [esp + 0x24]
inc dword [esp + 0x1c]
shl ecx, 3
test ecx, edx
je 0x10177a1f
mov eax, edi
shl eax, 0x1f
mov ecx, dword [esp + 0x30]
or eax, dword [ecx + ebx*4]
or eax, dword [esp + 0xac]
mov dword [ecx + ebx*4], eax
shr edi, 1
inc dword [esp + 0x1c]
mov ecx, esi
inc ebx
shl ecx, 4
cmp ebx, dword [esp + 0x38]
jl 0x1017796e
mov edi, dword [esp + 0x94]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x9c]
mov esi, dword [esp + 0xa4]
shrd eax, esi, cl
shr esi, cl
test cl, 0x20
cmovne eax, esi
mov dword [esp + 0x9c], eax
mov eax, 0
cmovne esi, eax
mov dword [esp + 0xa4], esi
sub edi, ecx
mov ebx, 4
test byte [esp + 0x2c], 1
mov al, 1
je 0x101774cd
mov dword [esp + 0x94], edi
mov eax, edx
shr eax, 0x1c
mov ecx, edx
shr ecx, 0x1d
or ecx, eax
mov eax, edx
shr eax, 0x1b
and eax, 0xe
or eax, ecx
mov edi, edx
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + 4]
not ecx
and ecx, eax
mov eax, dword [esp + 0x7c]
or dword [eax + 4], ecx
jmp 0x10177ab6
xor edi, edi
mov edx, dword [esp + 0x28]
or edi, dword [edx]
mov dword [esp + 0x24], edi
mov eax, edi
shr eax, 3
and eax, 0x11111111
cmp dword [esp + 0xb4], 0
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0xa0]
je 0x10177aea
mov ecx, eax
shl ecx, 0x1c
mov edx, dword [esi - 4]
not edx
and edx, ecx
or dword [ebx - 4], edx
mov ecx, eax
shl ecx, 4
mov edx, eax
shr edx, 4
or edx, ecx
or edx, eax
mov eax, dword [esi]
not eax
and eax, edx
or dword [ebx], eax
mov ecx, dword [esp + 0x24]
shr ecx, 0x1f
mov eax, dword [esi + 4]
not eax
and eax, ecx
or dword [ebx + 4], eax
add esi, 4
add ebx, 4
mov ecx, dword [esp + 0xb4]
add ecx, 8
add dword [esp + 0x28], 4
mov eax, dword [esp + 0x7c]
add eax, 4
add dword [esp + 0xc], 0x20
add dword [esp + 0x78], 0x20
add dword [esp + 0x30], 0x20
add dword [esp + 0x18], 0x20
mov edx, ecx
mov dword [esp + 0xb4], ecx
cmp ecx, dword [esp + 0x40]
mov edi, dword [esp + 0xb0]
mov ecx, dword [esp + 0x44]
mov edx, ebx
jl 0x1017748f
jmp 0x10177b6a
mov dword [esp + 0x94], edx
add ecx, 4
mov eax, dword [esp + 0x98]
add dword [esp + 0x88], eax
add dword [esp + 0x4c], eax
add dword [esp + 0xcc], eax
add dword [esp + 0x80], eax
mov esi, dword [esp + 0x114]
cmp ecx, esi
jl 0x10177303
test esi, esi
jle 0x10177c00
mov eax, dword [esp + 0x12c]
shl eax, 2
mov edx, dword [esp + 0x144]
shl edx, 2
sub eax, edx
mov dword [esp + 0x12c], eax
xor eax, eax
mov ebx, edi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
test eax, eax
jle 0x10177beb
xor ecx, ecx
mov edx, dword [ebx + ecx*4]
mov esi, edx
and esi, 0x7fffffff
mov edi, esi
neg edi
test edx, edx
cmovns edi, esi
mov dword [ebx + ecx*4], edi
inc ecx
cmp eax, ecx
jne 0x10177bcf
mov eax, dword [esp + 0x50]
inc eax
add ebx, dword [esp + 0x12c]
cmp eax, dword [esp + 0x114]
jne 0x10177bc1
xor eax, eax
inc eax
jmp 0x1016f6f2
test edi, edi
je 0x10177da7
push edi
call fcn.1000a320
add esp, 4
push 0x10321a9e
jmp 0x1016f66d
mov edi, dword [ebp + 0x20]
test edi, edi
mov esi, dword [ebp + 0x1c]
je 0x10177db1
push edi
call fcn.1000a320
add esp, 4
push str.Malformed_HT_codeblock._VLC_code_produces_significant_samples_outside_the_codeblock_area._n
jmp 0x1016f66d
push str.Malformed_HT_codeblock._Decoding_this_codeblock_is_stopped._U_q_is_larger_than_zero_bitplanes__1__n
jmp 0x1016fe2c
push str.Malformed_HT_codeblock._VLC_code_produces_significant_samples_outside_the_codeblock_area._n
jmp 0x1016fe2c
xor esi, esi
cmp edi, 2
jl 0x10177c90
mov ecx, 0x18
mov dword [esp + 0xf0], 0
xor esi, esi
mov edx, dword [esp + 0xb8]
movzx eax, byte [edx]
shl eax, cl
or esi, eax
dec edx
add ecx, 0xfffffff8
dec edi
cmp edi, 1
ja 0x10177c78
mov dword [esp + 0xb8], edx
mov eax, 0x90
cmp dword [esp + 0x78], eax
setae al
mov ebx, esi
shr ebx, 0x18
mov ecx, esi
not ecx
mov dword [esp + 0x10], ecx
test ecx, 0x7f000000
sete cl
and cl, al
movzx eax, cl
mov ecx, 8
sub ecx, eax
cmp esi, 0x90000000
setae byte [esp + 0x20]
mov eax, esi
shr eax, 0x10
mov edx, 0xff
and eax, edx
mov edx, eax
shl edx, cl
or edx, ebx
test dword [esp + 0x10], 0x7f0000
sete bl
and bl, byte [esp + 0x20]
movzx edi, bl
neg edi
lea ebx, [ecx + edi]
add ebx, 8
mov ecx, 0x90
cmp eax, ecx
setae ch
mov eax, esi
shr eax, 8
mov edi, 0xff
and eax, edi
mov edi, eax
mov cl, bl
shl edi, cl
or edi, edx
test dword [esp + 0x10], 0x7f00
sete cl
and cl, ch
movzx ecx, cl
sub ebx, ecx
mov ecx, 0x90
cmp eax, ecx
setae ah
mov ecx, 0xff
and esi, ecx
lea ecx, [ebx + 8]
mov edx, esi
shl edx, cl
or edx, edi
test byte [esp + 0x10], 0x7f
sete al
and al, ah
xor ecx, ecx
mov edi, 0x90
cmp esi, edi
setae cl
mov dword [esp + 0x104], ecx
xor esi, esi
mov ecx, dword [esp + 0xbc]
shld esi, edx, cl
shl edx, cl
xor edi, edi
test cl, 0x20
cmovne esi, edx
cmovne edx, edi
movzx eax, al
sub ecx, eax
add ecx, ebx
add ecx, 0x10
mov dword [esp + 0xbc], ecx
or dword [esp + 0x100], esi
or dword [esp + 0xf4], edx
mov edi, dword [esp + 0xe4]
mov edx, dword [esp + 0xa4]
jmp 0x101705f8
push 0x10321a9e
jmp 0x1016f6e5
push str.Malformed_HT_codeblock._VLC_code_produces_significant_samples_outside_the_codeblock_area._n
jmp 0x1016f6e5