Function at 0x10098860
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x268
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x280]
xor esi, esi
push 0x8490
push edi
mov dword [esp + 0x90], 1
mov dword [esp + 0x2c], esi
mov dword [esp + 0x6c], esi
call fcn.100a0c80
mov ebp, eax
cmp ebp, esi
mov dword [esp + 0x28], ebp
jne 0x100988c7
push 0x8490
push edi
push 0xfffffc18
push 0xa82
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
call fcn.10046b40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x268
ret 0x1c
lea eax, [ebp + 0x3000]
push 0xe18
push esi
push eax
call fcn.100a9900
push 0xe18
lea eax, [ebp + 0x3e18]
push esi
push eax
call fcn.100a9900
push 0xe18
lea ecx, [ebp + 0x4c30]
push esi
push ecx
call fcn.100a9900
lea eax, [ebp + 0x5a48]
push 0xe18
push esi
push eax
call fcn.100a9900
push 0xe18
lea edx, [ebp + 0x6860]
push esi
push edx
call fcn.100a9900
push 0xe18
lea eax, [ebp + 0x7678]
push esi
push eax
call fcn.100a9900
mov edi, dword [esp + 0x284]
mov ecx, dword [esp + 0x294]
mov dl, byte [edi + 6]
mov eax, dword [ecx + 0x10]
mov ebx, edx
mov dword [esp + 0xb8], eax
and ebx, 0xff
cmp ebx, eax
jge 0x1009896c
test eax, eax
je 0x10098975
mov ecx, dword [esp + 0x280]
push ebp
push ecx
jmp 0x1009a924
test eax, eax
mov byte [esp + 0x48], 1
jg 0x10098979
mov byte [esp + 0x48], dl
mov eax, dword [ecx + 8]
mov ebx, dword [ecx + 0xc]
inc eax
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x84], edx
mov dword [esp + 0x34], ecx
mov edx, 1
mov ecx, ebx
mov dword [esp + 0xa4], eax
shl edx, cl
cmp byte [esp + 0x48], 3
mov dword [esp + 0x80], edx
jne 0x10098a00
mov ecx, dword [edi + 0x58a4]
test ecx, ecx
jne 0x100989f4
mov byte [esp + 0x70], 3
mov byte [esp + 0x74], 1
mov byte [esp + 0x75], 0
mov byte [esp + 0x76], 2
mov byte [esp + 0x77], 0x11
mov byte [esp + 0x78], 3
mov byte [esp + 0x79], 0x22
mov dword [esp + 0xb4], 0xc
jmp 0x10098a29
mov byte [esp + 0x70], 1
mov byte [esp + 0x74], 1
jmp 0x10098a19
mov ecx, dword [esp + 0xb8]
mov byte [esp + 0x70], 1
test ecx, ecx
mov byte [esp + 0x74], 1
je 0x10098a19
mov byte [esp + 0x74], cl
mov byte [esp + 0x75], 0
mov dword [esp + 0xb4], 8
mov cl, byte [esp + 0x34]
mov dl, byte [esp + 0x84]
shl al, 4
or al, bl
mov byte [esp + 0x72], cl
mov byte [esp + 0x73], al
mov eax, dword [esp + 0x28c]
xor ecx, ecx
mov byte [esp + 0x71], dl
mov cx, word [eax + 4]
mov dword [esp + 0x20], 0
mov dword [esp + 0xb0], ecx
xor ecx, ecx
mov cx, word [eax + 8]
mov eax, dword [esp + 0x48]
and eax, 0xff
mov dword [esp + 0x98], ecx
mov dword [esp + 0x40], eax
jle 0x10098b7f
lea edx, [esp + 0xf0]
lea eax, [esp + 0x75]
mov dword [esp + 0x30], edx
lea ecx, [esp + 0x1b8]
mov dword [esp + 0x50], eax
xor edx, edx
mov eax, dword [esp + 0x50]
mov al, byte [eax - 1]
movsx ebp, dx
lea ebx, [edi + ebp*2]
cmp al, byte [ebp + ebx + 7]
je 0x10098ab7
inc edx
cmp dx, 4
jl 0x10098aa4
cmp dx, 4
je 0x10098b5f
mov ebx, dword [esp + 0x50]
xor eax, eax
add ecx, 0x38
mov al, byte [ebx]
mov ebx, dword [esp + 0x28]
mov ebp, eax
and eax, 0xf
shr ebp, 4
add eax, 3
shl ebp, 0xb
shl eax, 0xb
add ebp, ebx
add eax, ebx
mov dword [ecx - 0x3c], ebp
mov dword [ecx - 0x38], eax
movsx eax, dx
xor ebx, ebx
lea ebp, [eax + 3]
lea edx, [edi + ebp*2]
mov bl, byte [ebp + edx]
mov ebp, dword [esp + 0x50]
shl ebx, 8
add ebp, 2
lea edx, [ebx + edi + 0x8c]
xor ebx, ebx
mov dword [ecx - 0x50], edx
lea edx, [edi + eax*2]
mov dword [esp + 0x50], ebp
mov bl, byte [eax + edx + 8]
lea eax, [eax + eax*2]
mov edx, ebx
shr ebx, 4
and edx, 0xf
mov dword [ecx - 0x4c], ebx
mov ebx, dword [esp + 0x30]
mov dword [ecx - 0x48], edx
lea eax, [edi + eax*8 + 0x58c0]
xor edx, edx
mov dword [ebx], eax
add ebx, 4
mov dword [eax + 0x10], edx
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x40]
inc eax
cmp eax, ebx
mov dword [esp + 0x20], eax
jl 0x10098a9d
jmp 0x10098b7b
push 4
push 4
push 0xfffff7f3
push 0xada
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x24], eax
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10098b95
mov ecx, dword [esp + 0x280]
push ebp
push ecx
jmp 0x1009a924
cmp byte [esp + 0x48], 1
jne 0x10098bdc
mov ebx, dword [edi + 0x58b8]
mov eax, dword [esp + 0x1a4]
cmp eax, ebx
jne 0x10098bb9
mov ebx, 1
mov dword [esp + 0x1a4], ebx
mov edi, dword [edi + 0x58bc]
mov eax, dword [esp + 0x1a8]
cmp eax, edi
jne 0x10098bd8
mov ebp, 1
mov dword [esp + 0x1a8], ebp
jmp 0x10098be8
mov ebp, edi
jmp 0x10098be8
mov ebp, dword [edi + 0x58bc]
mov ebx, dword [edi + 0x58b8]
mov edx, dword [esp + 0xb0]
lea ecx, [ebx*8]
lea edi, [ebp*8]
mov dword [esp + 0xb8], ecx
lea eax, [edx + ecx - 1]
mov dword [esp + 0xa8], edi
cdq
idiv ecx
imul eax, ecx
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x98]
lea eax, [eax + edi - 1]
cdq
idiv edi
imul eax, edi
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x40]
test eax, eax
jle 0x10098cff
lea ecx, [esp + 0x108]
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x1c8]
mov edx, dword [esp + 0xb0]
imul edx, dword [ecx - 0x24]
add ecx, 0x38
lea eax, [edx + ebx - 1]
cdq
idiv ebx
mov dword [ecx - 0x38], eax
mov eax, dword [esp + 0x98]
imul eax, dword [ecx - 0x58]
lea eax, [eax + ebp - 1]
cdq
idiv ebp
mov dword [ecx - 0x34], eax
mov eax, dword [ecx - 0x5c]
mov edx, dword [ecx - 0x38]
lea edi, [eax*8]
lea eax, [edx + edi - 1]
cdq
idiv edi
imul eax, dword [ecx - 0x5c]
shl eax, 3
mov dword [ecx - 0x38], eax
mov eax, dword [ecx - 0x58]
lea edi, [eax*8]
mov eax, dword [ecx - 0x34]
lea eax, [eax + edi - 1]
cdq
idiv edi
imul eax, dword [ecx - 0x58]
shl eax, 3
mov dword [ecx - 0x34], eax
mov edx, dword [ecx - 0x38]
mov eax, dword [esp + 0x2c]
mov word [ecx - 0x68], 0
shl edx, 3
mov dword [eax], edx
mov eax, ebx
cdq
idiv dword [ecx - 0x5c]
mov edi, eax
mov eax, ebp
cdq
idiv dword [ecx - 0x58]
imul edi, eax
mov eax, dword [esp + 0x30]
mov dword [ecx - 0x3c], edi
mov edi, dword [esp + 0x2c]
add edi, 4
dec eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], eax
jne 0x10098c56
mov eax, dword [esp + 0x98]
mov dword [esp + 0x8c], 0
test eax, eax
jle 0x1009935b
mov eax, dword [esp + 0x40]
test eax, eax
jle 0x10098d59
lea ebp, [esp + 0xf0]
lea ebx, [esp + 0x1a8]
mov edi, eax
mov eax, dword [esp + 0x8c]
mov ecx, dword [ebp]
imul eax, dword [ebx]
cdq
idiv dword [esp + 0xa8]
add ebx, 0x38
add ebp, 4
mov dword [ecx + 0xc], 0
dec edi
mov dword [ecx + 0x10], eax
jne 0x10098d31
mov ecx, dword [esp + 0xb0]
xor edx, edx
cmp ecx, edx
mov dword [esp + 0x50], ecx
jle 0x10099335
mov eax, dword [esp + 0x40]
cmp eax, edx
jle 0x10099322
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0x198]
add edi, 0x5e08
mov dword [esp + 0x2c], edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0xac], ecx
mov dword [esp + 0x38], edi
mov dword [esp + 0xa0], eax
jmp 0x10098da9
xor edx, edx
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x94], edx
cmp eax, edx
mov dword [esp + 0x9c], edx
jle 0x100992c1
add ecx, 0xc
mov dword [esp + 0x100], ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x90], 0
cmp dword [ecx], 0
jle 0x10099285
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x100]
mov dword [esp + 0x30], ecx
mov eax, dword [esp + edx + 0xf0]
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0x104]
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
push 0x80
mov ebp, dword [eax + 0x10]
mov edi, dword [eax + 0xc]
add edx, ebp
mov ebp, dword [eax + 0x14]
imul edx, dword [eax + 4]
add edx, ebx
lea eax, [esp + 0x11c]
add edx, edi
shl edx, 7
add edx, ebp
push edx
push eax
call fcn.100a98d0
movsx eax, word [esp + 0x118]
mov ebx, dword [esp + 0x80]
mov edi, dword [esp + 0xac]
cdq
idiv ebx
mov ecx, dword [esp + 0xa4]
sub ax, word [edi]
test ecx, ecx
jne 0x1009902c
mov ecx, dword [esp + 0x84]
test ecx, ecx
jne 0x10098ec2
test ax, ax
jge 0x10098e82
neg eax
xor ecx, ecx
mov edx, 0xffff
test ax, ax
je 0x10098e9a
shl edx, 1
mov ebp, eax
inc ecx
and ebp, edx
test bp, bp
jne 0x10098e8e
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
add ecx, edx
mov ebp, 1
lea eax, [eax + ecx*4 + 0x3000]
inc dword [eax]
movsx eax, word [esp + 0x118]
cdq
idiv ebx
mov word [edi], ax
jmp 0x10098ec4
mov ebp, ecx
mov eax, dword [esp + 0x34]
xor edi, edi
cmp ebp, eax
mov dword [esp + 0x20], ebp
jg 0x10099268
mov ebx, dword [esp + 0x28]
lea ecx, [ebp*2 + 0x101125d8]
mov dword [esp + 0x4c], ecx
mov edx, dword [esp + 0x4c]
movsx eax, word [edx]
movsx eax, word [esp + eax*2 + 0x118]
cdq
idiv dword [esp + 0x80]
test eax, eax
jne 0x10098f52
mov eax, dword [esp + 0x34]
inc edi
cmp ebp, eax
jne 0x1009900b
inc esi
cmp si, 0x7fff
jne 0x1009900b
xor eax, eax
mov ecx, 0xffff
shl ecx, 1
inc eax
test ecx, 0x7fff
jne 0x10098f20
mov edx, dword [esp + 0x1c]
dec eax
shl eax, 4
and eax, 0xffff
add eax, edx
mov ecx, dword [ebx + eax*4 + 0x5a48]
lea eax, [ebx + eax*4 + 0x5a48]
inc ecx
xor esi, esi
mov dword [eax], ecx
jmp 0x1009900b
test si, si
jbe 0x10098f91
xor eax, eax
mov ecx, 0xffff
test si, si
je 0x10098f6f
shl ecx, 1
mov edx, esi
inc eax
and edx, ecx
test dx, dx
jne 0x10098f63
mov edx, dword [esp + 0x1c]
dec eax
shl eax, 4
and eax, 0xffff
add eax, edx
mov ecx, dword [ebx + eax*4 + 0x5a48]
lea eax, [ebx + eax*4 + 0x5a48]
inc ecx
xor esi, esi
mov dword [eax], ecx
cmp edi, 0x10
jl 0x10098faa
mov ecx, dword [esp + 0x38]
mov eax, edi
shr eax, 4
mov edx, dword [ecx]
inc edx
sub edi, 0x10
dec eax
jne 0x10098fa1
mov dword [ecx], edx
mov eax, dword [esp + 0x4c]
movsx ecx, word [eax]
movsx eax, word [esp + ecx*2 + 0x118]
cdq
idiv dword [esp + 0x80]
test ax, ax
jge 0x10098fc8
neg eax
mov edx, eax
xor ecx, ecx
test dx, dx
mov eax, 0xffff
je 0x10098fe6
shl eax, 1
mov ebp, edx
inc ecx
and ebp, eax
test bp, bp
jne 0x10098fd6
mov ebp, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov eax, edi
shl eax, 4
or eax, ecx
and eax, 0xffff
add eax, edx
mov ecx, dword [ebx + eax*4 + 0x5a48]
lea eax, [ebx + eax*4 + 0x5a48]
inc ecx
xor edi, edi
mov dword [eax], ecx
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
inc ebp
add ecx, 2
cmp ebp, eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x4c], ecx
jle 0x10098ee5
jmp 0x10099268
mov ebx, dword [esp + 0x84]
test ebx, ebx
jle 0x10099268
mov eax, dword [esp + 0x34]
mov dword [esp + 0x4c], 0
cmp ebx, eax
mov edi, ebx
jg 0x1009908e
lea ebp, [ebx*2 + 0x101125d8]
movsx edx, word [ebp]
movsx eax, word [esp + edx*2 + 0x118]
lea ecx, [esp + edx*2 + 0x118]
cdq
idiv dword [esp + 0x80]
cmp ax, 1
mov word [ecx], ax
je 0x1009907e
cmp ax, 0xffff
jne 0x10099082
mov dword [esp + 0x4c], edi
mov eax, dword [esp + 0x34]
inc edi
add ebp, 2
cmp edi, eax
jle 0x10099054
mov eax, dword [esp + 0x34]
xor edi, edi
cmp ebx, eax
mov dword [esp + 0x20], ebx
jg 0x1009921d
mov ebp, dword [esp + 0x38]
mov edx, dword [esp + 0x1c]
lea eax, [ebx*2 + 0x101125d8]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x3c]
movsx eax, word [ecx]
cmp word [esp + eax*2 + 0x118], 0
je 0x100991ef
cmp edi, 0xf
jle 0x10099135
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
cmp ecx, eax
jg 0x1009912c
test si, si
jbe 0x1009911d
xor eax, eax
mov ecx, 0xffff
test si, si
je 0x100990ff
shl ecx, 1
mov ebp, esi
inc eax
and ebp, ecx
test bp, bp
jne 0x100990ef
mov ebp, dword [esp + 0x38]
dec eax
shl eax, 4
and eax, 0xffff
add eax, edx
mov ecx, dword [ebx + eax*4 + 0x5a48]
lea eax, [ebx + eax*4 + 0x5a48]
inc ecx
xor esi, esi
mov dword [eax], ecx
mov eax, dword [ebp]
sub edi, 0x10
inc eax
cmp edi, 0xf
mov dword [ebp], eax
jg 0x100990d2
cmp edi, 0xf
jg 0x100991f0
mov eax, dword [esp + 0x3c]
movsx ecx, word [eax]
mov ax, word [esp + ecx*2 + 0x118]
cmp ax, 1
je 0x10099154
cmp ax, 0xffff
jne 0x100991f0
test si, si
jbe 0x1009918f
xor eax, eax
mov ecx, 0xffff
test si, si
je 0x10099171
shl ecx, 1
mov ebp, esi
inc eax
and ebp, ecx
test bp, bp
jne 0x10099165
dec eax
shl eax, 4
and eax, 0xffff
add eax, edx
mov ecx, dword [ebx + eax*4 + 0x5a48]
lea eax, [ebx + eax*4 + 0x5a48]
inc ecx
xor esi, esi
mov dword [eax], ecx
mov edx, dword [esp + 0x3c]
movsx eax, word [edx]
mov dx, word [esp + eax*2 + 0x118]
test dx, dx
jge 0x100991a5
neg edx
xor ecx, ecx
mov eax, 0xffff
test dx, dx
je 0x100991bd
shl eax, 1
mov ebp, edx
inc ecx
and ebp, eax
test bp, bp
jne 0x100991b1
mov edx, dword [esp + 0x1c]
mov eax, edi
shl eax, 4
or eax, ecx
mov ebp, dword [esp + 0x38]
and eax, 0xffff
add eax, edx
mov ecx, dword [ebx + eax*4 + 0x5a48]
lea eax, [ebx + eax*4 + 0x5a48]
inc ecx
xor edi, edi
mov dword [eax], ecx
mov dword [esp + 0x88], edi
jmp 0x100991fb
inc edi
mov dword [esp + 0x88], 1
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
add ecx, 2
inc eax
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x34]
cmp eax, ecx
mov dword [esp + 0x20], eax
jle 0x100990b7
jmp 0x10099225
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x88]
test eax, eax
je 0x10099268
inc esi
cmp si, 0x7fff
jne 0x10099268
xor eax, eax
mov ecx, 0xffff
shl ecx, 1
inc eax
test ecx, 0x7fff
jne 0x1009923f
dec eax
shl eax, 4
and eax, 0xffff
add eax, edx
mov ecx, dword [ebx + eax*4 + 0x5a48]
lea eax, [ebx + eax*4 + 0x5a48]
inc ecx
xor esi, esi
mov dword [eax], ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x90]
inc eax
mov edx, dword [ecx]
mov dword [esp + 0x90], eax
cmp eax, edx
jl 0x10098e05
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x94]
inc eax
mov ecx, dword [esp + edx + 0x108]
mov edx, dword [esp + 0x9c]
add edx, ecx
mov dword [esp + 0x94], eax
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 0xac]
cmp eax, dword [edx + 0x10]
jl 0x10098dd0
mov ecx, edx
mov edx, dword [esp + 0x2c]
mov edi, dword [ecx + 0xc]
mov ebp, dword [esp + 0x38]
add ecx, 0x38
mov eax, dword [esp + edx + 0xf0]
add ebp, 0xe18
add edx, 4
mov dword [esp + 0x38], ebp
mov ebx, dword [eax + 0xc]
mov dword [esp + 0xac], ecx
add ebx, edi
mov dword [esp + 0x2c], edx
mov dword [eax + 0xc], ebx
mov eax, dword [esp + 0x1c]
add eax, 0x386
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xa0]
dec eax
mov dword [esp + 0xa0], eax
jne 0x10098da7
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
xor edx, edx
sub ecx, dword [esp + 0xb8]
cmp ecx, edx
mov dword [esp + 0x50], ecx
jg 0x10098d72
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0x98]
add eax, edx
cmp eax, ecx
mov dword [esp + 0x8c], eax
jl 0x10098d19
test si, si
jbe 0x1009938e
xor eax, eax
mov ecx, 0xffff
test si, si
je 0x10099378
shl ecx, 1
mov edx, esi
inc eax
and edx, ecx
test dx, dx
jne 0x1009936c
mov ecx, dword [esp + 0x28]
dec eax
shl eax, 4
and eax, 0xffff
lea eax, [ecx + eax*4 + 0x5a48]
inc dword [eax]
mov al, byte [esp + 0x48]
mov ebp, dword [esp + 0x290]
mov esi, dword [esp + 0x27c]
cmp al, 3
jne 0x1009958e
mov eax, dword [esp + 0xa4]
test eax, eax
jne 0x10099733
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], 0
mov dword [esp + 0x2c], eax
lea edi, [eax + 0x3000]
lea edx, [esp + 0x7c]
mov dword [esp + 0x7c], 0xffc4
push edx
push esi
call fcn.1008a050
push edi
call fcn.10098600
mov ax, word [edi + 0xe14]
lea ecx, [esp + 0x44]
add ax, 0x13
push ecx
push esi
mov dword [esp + 0x4c], eax
call fcn.1008a050
push edi
mov ebp, eax
mov edx, dword [esp + 0x30]
push edx
call fcn.10097060
lea ecx, [esp + 0x1b]
mov al, byte [esp + 0x20]
push ecx
push esi
mov byte [esp + 0x23], al
call fcn.1008a0d0
add ebp, eax
mov ebx, dword [esp + 0x290]
test ebx, ebx
je 0x10099436
push esi
call fcn.10089fa0
mov dword [ebx + 0x1c], eax
lea edx, [edi + 0xc0d]
push 0x10
push edx
push esi
call fcn.10089e60
add ebp, eax
mov eax, dword [edi + 0xe14]
lea ecx, [edi + 0xd0d]
push eax
push ecx
push esi
call fcn.10089e60
add ebp, eax
mov eax, dword [esp + 0x44]
and eax, 0xffff
cmp eax, ebp
je 0x10099484
push ebp
push eax
push 0xfffff7e8
push 0xc31
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
test eax, eax
jle 0x1009955c
lea edx, [esp + 0x7c]
mov dword [esp + 0x7c], 0xffc4
push edx
push esi
call fcn.1008a050
lea ebx, [edi + 0x2a48]
push ebx
call fcn.10098600
mov ax, word [edi + 0x385c]
lea ecx, [esp + 0x44]
add ax, 0x13
push ecx
push esi
mov dword [esp + 0x4c], eax
call fcn.1008a050
push ebx
mov ebp, eax
mov edx, dword [esp + 0x30]
add edx, 0x1800
push edx
call fcn.10097060
lea ecx, [esp + 0x1b]
mov al, byte [esp + 0x20]
push ecx
add al, 0x10
push esi
mov byte [esp + 0x23], al
call fcn.1008a0d0
add ebp, eax
mov eax, dword [esp + 0x290]
test eax, eax
je 0x1009950e
push esi
call fcn.10089fa0
mov edx, dword [esp + 0x290]
mov dword [edx + 0x2c], eax
lea eax, [edi + 0x3655]
push 0x10
push eax
push esi
call fcn.10089e60
mov ecx, dword [edi + 0x385c]
lea edx, [edi + 0x3755]
push ecx
push edx
push esi
add ebp, eax
call fcn.10089e60
add ebp, eax
mov eax, dword [esp + 0x44]
and eax, 0xffff
cmp eax, ebp
je 0x1009955c
push ebp
push eax
push 0xfffff7e8
push 0xc4b
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
inc eax
add ebx, 0x800
add edi, 0xe18
cmp eax, 3
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], ebx
jl 0x100993cd
mov ebp, dword [esp + 0x290]
jmp 0x10099733
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x34]
cmp eax, ecx
jne 0x10099672
test eax, eax
jne 0x10099672
lea eax, [esp + 0x7c]
mov dword [esp + 0x7c], 0xffc4
push eax
push esi
call fcn.1008a050
mov edi, dword [esp + 0x28]
lea ebx, [edi + 0x3000]
push ebx
call fcn.10098600
mov cx, word [edi + 0x3e14]
lea edx, [esp + 0x44]
add cx, 0x13
push edx
push esi
mov dword [esp + 0x4c], ecx
call fcn.1008a050
mov edi, eax
push ebx
mov eax, dword [esp + 0x2c]
push eax
call fcn.10097060
lea ecx, [esp + 0x1b]
mov byte [esp + 0x1b], 0
push ecx
push esi
call fcn.1008a0d0
xor ebx, ebx
add edi, eax
cmp ebp, ebx
je 0x10099614
push esi
call fcn.10089fa0
mov dword [ebp + 0x20], eax
mov edx, dword [esp + 0x28]
push 0x10
add edx, 0x3c0d
push edx
push esi
call fcn.10089e60
add edi, eax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x3e14]
add eax, 0x3d0d
push ecx
push eax
push esi
call fcn.10089e60
add edi, eax
mov eax, dword [esp + 0x44]
and eax, 0xffff
cmp eax, edi
je 0x10099733
push edi
push eax
push 0xfffff7e8
push 0xc69
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x24], eax
jmp 0x10099735
lea edx, [esp + 0x7c]
mov dword [esp + 0x7c], 0xffc4
push edx
push esi
call fcn.1008a050
mov edi, dword [esp + 0x28]
lea ebx, [edi + 0x5a48]
push ebx
call fcn.10098600
mov ax, word [edi + 0x685c]
lea ecx, [esp + 0x44]
add ax, 0x13
push ecx
push esi
mov dword [esp + 0x4c], eax
call fcn.1008a050
push ebx
mov edi, eax
mov edx, dword [esp + 0x2c]
add edx, 0x1800
push edx
call fcn.10097060
lea eax, [esp + 0x1b]
mov byte [esp + 0x1b], 0x10
push eax
push esi
call fcn.1008a0d0
add edi, eax
test ebp, ebp
je 0x100996e1
push esi
call fcn.10089fa0
mov dword [ebp + 0x30], eax
mov ebx, dword [esp + 0x28]
push 0x10
lea ecx, [ebx + 0x6655]
push ecx
push esi
call fcn.10089e60
mov edx, dword [ebx + 0x685c]
add ebx, 0x6755
push edx
push ebx
push esi
add edi, eax
call fcn.10089e60
add edi, eax
mov eax, dword [esp + 0x44]
and eax, 0xffff
cmp eax, edi
je 0x10099733
push edi
push eax
push 0xfffff7e8
push 0xc83
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x24], eax
xor ebx, ebx
lea eax, [esp + 0x7c]
mov dword [esp + 0x7c], 0xffda
push eax
push esi
call fcn.1008a050
lea ecx, [esp + 0xb4]
push ecx
push esi
call fcn.1008a050
lea edx, [esp + 0x70]
mov edi, eax
push edx
push esi
call fcn.1008a0d0
add edi, eax
mov al, byte [esp + 0x70]
mov dword [esp + 0x30], edi
test al, al
jbe 0x100997cb
mov ebx, 0xe8
lea ebp, [esp + 0x75]
lea edi, [ebp - 1]
lea eax, [ebx - 3]
push edi
push eax
push esi
call fcn.1008a500
push ebp
push ebx
push esi
call fcn.1008a500
push edi
push esi
call fcn.1008a0d0
push ebp
push esi
mov edi, dword [esp + 0x38]
add edi, eax
call fcn.1008a0d0
add edi, eax
inc ebx
mov edx, dword [esp + 0x70]
add ebp, 2
lea ecx, [ebx - 0xe8]
and edx, 0xff
cmp ecx, edx
mov dword [esp + 0x30], edi
jl 0x1009977a
mov ebp, dword [esp + 0x290]
xor ebx, ebx
lea eax, [esp + 0x71]
push eax
push 0xeb
push esi
call fcn.1008a500
lea ecx, [esp + 0x72]
push ecx
push 0xec
push esi
call fcn.1008a500
lea edx, [esp + 0x73]
push edx
push 0xed
push esi
call fcn.1008a500
lea eax, [esp + 0x71]
push eax
push esi
call fcn.1008a0d0
lea ecx, [esp + 0x72]
add edi, eax
push ecx
push esi
call fcn.1008a0d0
lea edx, [esp + 0x73]
add edi, eax
push edx
push esi
call fcn.1008a0d0
add edi, eax
mov eax, dword [esp + 0xb4]
and eax, 0xffff
cmp eax, edi
je 0x1009984c
push edi
push eax
push 0xfffff7e8
push 0xca4
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x24], eax
cmp dword [esp + 0x24], ebx
je 0x10099864
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x280]
push eax
push ecx
jmp 0x1009a924
mov edi, dword [esp + 0x40]
cmp edi, ebx
jle 0x1009988e
lea edx, [esp + 0xf0]
lea ecx, [esp + 0x198]
mov eax, dword [edx]
mov word [ecx], bx
add ecx, 0x38
add edx, 4
mov dword [eax + 0x10], ebx
dec edi
mov dword [eax + 0xc], ebx
jne 0x1009987a
cmp ebp, ebx
je 0x1009989b
push esi
call fcn.10089fa0
mov dword [ebp + 0x40], eax
cmp dword [esp + 0xa4], ebx
je 0x100998ff
mov eax, dword [esp + 0xc0]
mov ebp, dword [esp + 0x280]
imul eax, dword [esp + 0xbc]
cdq
and edx, 7
add eax, edx
mov edi, eax
sar edi, 3
push edi
push ebp
call fcn.100a0c80
cmp eax, ebx
mov dword [esp + 0x64], eax
jne 0x100998ea
push edi
push ebp
push 0xfffffc18
push 0xcbe
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], 8
mov dword [esp + 0x68], ebx
mov byte [esp + 0x60], 0
mov ebp, dword [esp + 0x280]
push 2
lea edx, [esp + 0xc8]
push 0x2710
push edx
xor edi, edi
push ebp
push esi
mov dword [esp + 0x30], edi
call fcn.1008b440
cmp eax, ebx
mov byte [esp + 0x13], 0
mov dword [esp + 0x14], ebx
je 0x1009993a
mov eax, dword [esp + 0x28]
push eax
push ebp
jmp 0x1009a924
mov eax, dword [esp + 0x98]
mov dword [esp + 0x8c], ebx
cmp eax, ebx
jle 0x1009a78e
call fcn.10046b40
test eax, eax
jne 0x1009a78e
mov eax, dword [esp + 0x40]
test eax, eax
jle 0x1009999c
lea ebx, [esp + 0xf0]
lea esi, [esp + 0x1a8]
mov ebp, eax
mov eax, dword [esp + 0x8c]
mov ecx, dword [ebx]
imul eax, dword [esi]
cdq
idiv dword [esp + 0xa8]
add esi, 0x38
add ebx, 4
mov dword [ecx + 0xc], 0
dec ebp
mov dword [ecx + 0x10], eax
jne 0x10099975
mov eax, dword [esp + 0xb0]
test eax, eax
mov dword [esp + 0x50], eax
jle 0x1009a764
call fcn.10046b40
test eax, eax
jne 0x1009a764
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
test eax, eax
jle 0x1009a74b
mov ecx, dword [esp + 0x48]
xor edx, edx
mov eax, ecx
mov dword [esp + 0x94], edx
shl eax, 3
sub eax, ecx
mov dword [esp + 0x9c], edx
shl eax, 3
mov dword [esp + 0x24], eax
cmp dword [esp + eax + 0x1a8], edx
jle 0x1009a71c
mov ecx, dword [esp + 0x24]
xor eax, eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x30], eax
cmp dword [esp + ecx + 0x1a4], eax
jle 0x1009a6df
mov edx, dword [esp + 0x48]
mov eax, dword [esp + edx*4 + 0xf0]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x94]
mov edi, dword [esp + 0x90]
push 0x80
mov ebx, dword [eax + 0x10]
mov esi, dword [eax + 0xc]
add ecx, ebx
mov ebp, dword [eax + 0x14]
imul ecx, dword [eax + 4]
add ecx, edi
lea edx, [esp + 0x11c]
add ecx, esi
shl ecx, 7
add ecx, ebp
push ecx
push edx
call fcn.100a98d0
movsx eax, word [esp + 0x118]
cdq
idiv dword [esp + 0x80]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0xa4]
mov cx, ax
sub cx, word [esp + ebx + 0x198]
test edx, edx
jne 0x10099d8f
mov eax, dword [esp + 0x84]
test eax, eax
jne 0x10099b43
test cx, cx
mov edx, ecx
jge 0x10099ab1
neg edx
xor esi, esi
mov eax, 0xffff
test dx, dx
je 0x10099ac9
shl eax, 1
mov edi, edx
inc esi
and edi, eax
test di, di
jne 0x10099abd
test cx, cx
movsx ecx, cx
jge 0x10099ad2
dec ecx
not eax
and eax, ecx
mov edi, eax
mov eax, dword [esp + ebx + 0x1b4]
mov cx, word [eax + esi*8 + 4]
mov edx, dword [eax + esi*8]
lea eax, [eax + esi*8]
push ecx
lea eax, [esp + 0x18]
push edx
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
test esi, esi
je 0x10099b20
push edi
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
movsx eax, word [esp + 0x118]
cdq
idiv dword [esp + 0x80]
mov ebp, 1
mov dword [esp + 0x20], ebp
mov word [esp + ebx + 0x198], ax
jmp 0x10099b49
mov dword [esp + 0x20], eax
mov ebp, eax
mov eax, dword [esp + 0x34]
xor edi, edi
cmp ebp, eax
jg 0x1009a6b4
mov ebx, dword [esp + 0x1c]
lea eax, [ebp*2 + 0x101125d8]
mov dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x2c]
movsx edx, word [ecx]
movsx eax, word [esp + edx*2 + 0x118]
cdq
idiv dword [esp + 0x80]
test eax, eax
jne 0x10099c14
mov eax, dword [esp + 0x34]
inc edi
cmp ebp, eax
jne 0x10099d6e
inc ebx
cmp bx, 0x7fff
mov dword [esp + 0x1c], ebx
jne 0x10099d6e
xor esi, esi
mov eax, 0xffff
shl eax, 1
inc esi
test eax, 0x7fff
jne 0x10099ba9
mov ecx, dword [esp + 0x24]
dec esi
mov eax, esi
mov edx, dword [esp + ecx + 0x1b8]
shl eax, 4
and eax, 0xffff
mov cx, word [edx + eax*8 + 4]
lea eax, [edx + eax*8]
push ecx
lea ecx, [esp + 0x17]
mov edx, dword [eax]
lea eax, [esp + 0x18]
push edx
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
push 0x7fff
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
xor ebx, ebx
mov dword [esp + 0x1c], ebx
jmp 0x10099d6e
test bx, bx
jbe 0x10099c89
xor esi, esi
mov eax, 0xffff
test bx, bx
je 0x10099c31
shl eax, 1
mov ecx, ebx
inc esi
and ecx, eax
test cx, cx
jne 0x10099c25
mov edx, dword [esp + 0x24]
dec esi
mov eax, esi
mov ecx, dword [esp + edx + 0x1b8]
shl eax, 4
and eax, 0xffff
mov dx, word [ecx + eax*8 + 4]
lea eax, [ecx + eax*8]
push edx
lea ecx, [esp + 0x18]
mov eax, dword [eax]
lea edx, [esp + 0x17]
push eax
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
push ebx
lea ecx, [esp + 0x18]
push esi
lea edx, [esp + 0x1b]
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
xor ebx, ebx
mov dword [esp + 0x1c], ebx
cmp edi, 0x10
jl 0x10099cca
mov ecx, dword [esp + 0x24]
mov esi, edi
shr esi, 4
mov ebp, dword [esp + ecx + 0x1b8]
mov dx, word [ebp + 0x784]
mov eax, dword [ebp + 0x780]
push edx
lea ecx, [esp + 0x18]
push eax
lea edx, [esp + 0x1b]
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
sub edi, 0x10
dec esi
jne 0x10099c9e
mov ecx, dword [esp + 0x2c]
movsx edx, word [ecx]
movsx eax, word [esp + edx*2 + 0x118]
cdq
idiv dword [esp + 0x80]
test ax, ax
mov edx, eax
jge 0x10099cea
neg edx
xor esi, esi
mov ecx, 0xffff
test dx, dx
je 0x10099d02
shl ecx, 1
mov ebp, edx
inc esi
and ebp, ecx
test bp, bp
jne 0x10099cf6
test ax, ax
movsx eax, ax
jge 0x10099d0b
dec eax
not ecx
and ecx, eax
shl edi, 4
mov ebp, ecx
mov ecx, dword [esp + 0x24]
or edi, esi
mov edx, dword [esp + ecx + 0x1b8]
mov eax, edi
and eax, 0xffff
mov cx, word [edx + eax*8 + 4]
lea eax, [edx + eax*8]
push ecx
lea ecx, [esp + 0x17]
mov edx, dword [eax]
lea eax, [esp + 0x18]
push edx
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
test esi, esi
je 0x10099d68
push ebp
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
mov ebp, dword [esp + 0x20]
xor edi, edi
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
inc ebp
add ecx, 2
cmp ebp, eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x2c], ecx
jle 0x10099b66
jmp 0x1009a6b4
mov ebp, dword [esp + 0x84]
test ebp, ebp
jne 0x10099dfd
mov word [esp + 0x118], ax
test ax, ax
mov al, byte [esp + 0x118]
jge 0x10099db0
neg al
and al, 1
test al, al
jbe 0x10099dd9
movzx ax, al
push eax
lea ecx, [esp + 0x18]
push 1
lea edx, [esp + 0x1b]
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
jmp 0x1009a6b4
xor cx, cx
lea edx, [esp + 0x14]
mov cl, al
lea eax, [esp + 0x13]
push ecx
push 1
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
call fcn.10097270
jmp 0x1009a6b4
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x4c], 0
cmp ebp, ebx
mov esi, ebp
jg 0x10099e4b
lea edi, [ebp*2 + 0x101125d8]
movsx edx, word [edi]
movsx eax, word [esp + edx*2 + 0x118]
lea ecx, [esp + edx*2 + 0x118]
cdq
idiv dword [esp + 0x80]
cmp ax, 1
mov word [ecx], ax
je 0x10099e3f
cmp ax, 0xffff
jne 0x10099e43
mov dword [esp + 0x4c], esi
inc esi
add edi, 2
cmp esi, ebx
jle 0x10099e16
xor eax, eax
cmp ebp, ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x20], ebp
jg 0x1009a578
mov eax, dword [esp + 0x84]
lea ecx, [eax*2 + 0x101125d8]
mov dword [esp + 0x3c], ecx
mov edx, dword [esp + 0x3c]
movsx eax, word [edx]
cmp word [esp + eax*2 + 0x118], 0
mov eax, dword [esp + 0x38]
je 0x1009a548
cmp eax, 0xf
jle 0x1009a179
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
cmp ecx, eax
jg 0x1009a179
mov edi, dword [esp + 0x1c]
test di, di
jbe 0x10099f21
xor esi, esi
mov eax, 0xffff
test di, di
je 0x10099ec7
shl eax, 1
mov edx, edi
inc esi
and edx, eax
test dx, dx
jne 0x10099ebb
mov ecx, dword [esp + 0x24]
dec esi
mov eax, esi
mov edx, dword [esp + ecx + 0x1b8]
shl eax, 4
and eax, 0xffff
mov cx, word [edx + eax*8 + 4]
lea eax, [edx + eax*8]
push ecx
lea ecx, [esp + 0x17]
mov edx, dword [eax]
lea eax, [esp + 0x18]
push edx
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
push edi
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
mov dword [esp + 0x1c], 0
mov ebp, dword [esp + 0x64]
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x68]
mov cl, byte [esp + 0x60]
test ebx, ebx
mov byte [ebp + eax], cl
jle 0x10099fa7
mov eax, ebx
xor esi, esi
cdq
and edx, 7
add eax, edx
mov edi, eax
sar edi, 3
test edi, edi
jle 0x10099f70
movzx dx, byte [esi + ebp]
push edx
lea eax, [esp + 0x18]
push 8
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
inc esi
cmp esi, edi
jl 0x10099f4c
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
je 0x10099fa7
mov dl, byte [esi + ebp]
mov cl, 8
sub cl, al
shr dl, cl
xor cx, cx
mov cl, dl
lea edx, [esp + 0x14]
push ecx
push eax
lea eax, [esp + 0x1b]
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
call fcn.10097270
mov edx, dword [esp + 0x24]
mov eax, dword [esp + edx + 0x1b8]
mov cx, word [eax + 0x784]
mov edx, dword [eax + 0x780]
push ecx
lea eax, [esp + 0x18]
push edx
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
mov ecx, dword [esp + 0x38]
mov al, byte [esp + 0x60]
sub ecx, 0x10
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x58]
mov byte [ebp + ecx], al
mov eax, dword [esp + 0x6c]
test eax, eax
jle 0x1009a151
mov esi, dword [esp + 0x68]
mov edx, eax
lea eax, [esi + 7]
lea ebx, [esi + edx]
cdq
and edx, 7
mov dword [esp + 0xc0], ebx
add eax, edx
mov ebp, eax
mov eax, ebx
cdq
and edx, 7
add eax, edx
mov edi, eax
mov eax, esi
sar ebp, 3
sar edi, 3
sub edi, ebp
cdq
js 0x1009a0f3
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
mov ecx, eax
sub ecx, edx
je 0x1009a07d
mov eax, esi
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x64]
sar eax, 3
movzx ax, byte [eax + edx]
mov edx, 0xff
sar edx, cl
and eax, edx
lea edx, [esp + 0x13]
push eax
mov eax, 8
sub eax, ecx
lea ecx, [esp + 0x18]
push eax
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
xor esi, esi
test edi, edi
jle 0x1009a0b5
mov ecx, dword [esp + 0x64]
lea ebx, [ecx + ebp]
movzx dx, byte [esi + ebx]
push edx
lea eax, [esp + 0x18]
push 8
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
inc esi
cmp esi, edi
jl 0x1009a08a
mov ebx, dword [esp + 0xc0]
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
je 0x1009a151
mov ecx, dword [esp + 0x64]
add esi, ecx
mov cl, 8
sub cl, al
mov dl, byte [esi + ebp]
shr dl, cl
xor cx, cx
mov cl, dl
lea edx, [esp + 0x14]
push ecx
push eax
lea eax, [esp + 0x1b]
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
jmp 0x1009a14c
xor eax, edx
mov edi, 0xff
sub eax, edx
and eax, 7
xor eax, edx
mov ecx, eax
mov eax, esi
sub ecx, edx
cdq
and edx, 7
add eax, edx
xor edx, edx
sar edi, cl
mov ecx, dword [esp + 0x64]
sar eax, 3
mov dl, byte [eax + ecx]
mov eax, ebx
and edi, edx
mov ecx, 8
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x6c]
sub ecx, eax
lea eax, [esp + 0x14]
sar edi, cl
lea ecx, [esp + 0x13]
push edi
push edx
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
xor eax, eax
mov dword [esp + 0x5c], 8
mov dword [esp + 0x58], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x38]
cmp eax, 0xf
mov byte [esp + 0x60], 0
jg 0x10099e96
mov ebx, dword [esp + 0x38]
cmp ebx, 0xf
jg 0x1009a4e2
mov eax, dword [esp + 0x3c]
movsx ecx, word [eax]
mov ax, word [esp + ecx*2 + 0x118]
cmp ax, 1
je 0x1009a1a5
cmp ax, 0xffff
jne 0x1009a4e2
mov edi, dword [esp + 0x1c]
test di, di
jbe 0x1009a220
xor esi, esi
mov eax, 0xffff
test di, di
je 0x1009a1c6
shl eax, 1
mov edx, edi
inc esi
and edx, eax
test dx, dx
jne 0x1009a1ba
mov ecx, dword [esp + 0x24]
dec esi
mov eax, esi
mov edx, dword [esp + ecx + 0x1b8]
shl eax, 4
and eax, 0xffff
mov cx, word [edx + eax*8 + 4]
lea eax, [edx + eax*8]
push ecx
lea ecx, [esp + 0x17]
mov edx, dword [eax]
lea eax, [esp + 0x18]
push edx
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
push edi
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
mov dword [esp + 0x1c], 0
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0x68]
mov al, byte [esp + 0x60]
test ebp, ebp
mov byte [edx + ecx], al
jle 0x1009a2ad
mov eax, ebp
xor esi, esi
cdq
and edx, 7
add eax, edx
mov edi, eax
sar edi, 3
test edi, edi
jle 0x1009a272
mov eax, dword [esp + 0x64]
lea edx, [esp + 0x14]
movzx cx, byte [esi + eax]
push ecx
push 8
lea eax, [esp + 0x1b]
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
call fcn.10097270
inc esi
cmp esi, edi
jl 0x1009a24a
mov eax, ebp
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
je 0x1009a2ad
mov edx, dword [esp + 0x64]
mov cl, 8
sub cl, al
mov dl, byte [esi + edx]
shr dl, cl
xor cx, cx
mov cl, dl
lea edx, [esp + 0x14]
push ecx
push eax
lea eax, [esp + 0x1b]
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
call fcn.10097270
mov edx, dword [esp + 0x3c]
movsx eax, word [edx]
mov dx, word [esp + eax*2 + 0x118]
test dx, dx
mov ecx, edx
jge 0x1009a2c5
neg ecx
xor esi, esi
mov eax, 0xffff
test cx, cx
je 0x1009a2dd
shl eax, 1
mov edi, ecx
inc esi
and edi, eax
test di, di
jne 0x1009a2d1
test dx, dx
movsx ecx, dx
jge 0x1009a2e6
dec ecx
not eax
shl ebx, 4
and eax, ecx
mov ecx, dword [esp + 0x24]
or ebx, esi
mov edi, eax
mov edx, dword [esp + ecx + 0x1b8]
mov eax, ebx
and eax, 0xffff
mov cx, word [edx + eax*8 + 4]
lea eax, [edx + eax*8]
push ecx
lea ecx, [esp + 0x17]
mov edx, dword [eax]
lea eax, [esp + 0x18]
push edx
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
test esi, esi
je 0x1009a343
push edi
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x58]
mov al, byte [esp + 0x60]
mov dword [esp + 0x38], 0
mov byte [ecx + edx], al
mov eax, dword [esp + 0x6c]
test eax, eax
jle 0x1009a4bf
lea ebx, [ebp + eax]
lea eax, [ebp + 7]
cdq
and edx, 7
add eax, edx
mov edi, eax
mov eax, ebx
cdq
and edx, 7
add eax, edx
mov esi, eax
mov eax, ebp
sar edi, 3
sar esi, 3
sub esi, edi
cdq
js 0x1009a461
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
mov ecx, eax
sub ecx, edx
je 0x1009a3dc
mov eax, ebp
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x64]
sar eax, 3
movzx ax, byte [eax + edx]
mov edx, 0xff
sar edx, cl
and eax, edx
lea edx, [esp + 0x13]
push eax
mov eax, 8
sub eax, ecx
lea ecx, [esp + 0x18]
push eax
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
test esi, esi
mov dword [esp + 0xa0], 0
jle 0x1009a41c
mov ecx, dword [esp + 0x64]
mov dword [esp + 0xa0], esi
lea ebp, [ecx + edi]
movzx dx, byte [ebp]
push edx
lea eax, [esp + 0x18]
push 8
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
inc ebp
dec esi
jne 0x1009a3f9
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
je 0x1009a4bf
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0xa0]
add edx, ecx
mov cl, 8
sub cl, al
mov dl, byte [edx + edi]
shr dl, cl
xor cx, cx
mov cl, dl
lea edx, [esp + 0x14]
push ecx
push eax
lea eax, [esp + 0x1b]
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
jmp 0x1009a4ba
xor eax, edx
mov esi, 0xff
sub eax, edx
and eax, 7
xor eax, edx
mov ecx, eax
mov eax, ebp
sub ecx, edx
cdq
and edx, 7
add eax, edx
xor edx, edx
sar esi, cl
mov ecx, dword [esp + 0x64]
sar eax, 3
mov dl, byte [eax + ecx]
mov eax, ebx
and esi, edx
mov ecx, 8
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x6c]
sub ecx, eax
lea eax, [esp + 0x14]
sar esi, cl
lea ecx, [esp + 0x13]
push esi
push edx
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
xor eax, eax
mov dword [esp + 0x5c], 8
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov byte [esp + 0x60], al
mov dword [esp + 0x58], eax
mov dword [esp + 0x88], eax
jmp 0x1009a558
mov eax, dword [esp + 0x3c]
movsx ecx, word [eax]
cmp word [esp + ecx*2 + 0x118], 0
lea eax, [esp + ecx*2 + 0x118]
mov al, byte [esp + ecx*2 + 0x118]
jge 0x1009a504
neg al
mov ecx, dword [esp + 0x5c]
and al, 1
test ecx, ecx
jne 0x1009a52c
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
mov bl, byte [esp + 0x60]
mov byte [esp + 0x60], 0
mov byte [edx + ecx], bl
inc ecx
mov dword [esp + 0x58], ecx
mov ecx, 8
dec ecx
shl al, cl
mov dword [esp + 0x5c], ecx
mov cl, byte [esp + 0x60]
or cl, al
mov eax, dword [esp + 0x6c]
inc eax
mov byte [esp + 0x60], cl
mov dword [esp + 0x6c], eax
jmp 0x1009a54d
inc eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x88], 1
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x34]
inc eax
add edx, 2
cmp eax, ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x3c], edx
jle 0x10099e73
mov eax, dword [esp + 0x88]
test eax, eax
je 0x1009a6b4
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
inc eax
add edx, ecx
cmp ax, 0x7fff
mov dword [esp + 0x1c], eax
mov dword [esp + 0x68], edx
jne 0x1009a6b4
xor esi, esi
mov eax, 0xffff
shl eax, 1
inc esi
test eax, 0x7fff
jne 0x1009a5af
mov edx, dword [esp + 0x24]
dec esi
mov eax, esi
mov ecx, dword [esp + edx + 0x1b8]
shl eax, 4
and eax, 0xffff
mov dx, word [ecx + eax*8 + 4]
lea eax, [ecx + eax*8]
push edx
lea ecx, [esp + 0x18]
mov eax, dword [eax]
lea edx, [esp + 0x17]
push eax
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
push 0x7fff
lea ecx, [esp + 0x18]
push esi
lea edx, [esp + 0x1b]
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0x64]
mov ebx, dword [esp + 0x68]
mov dl, byte [esp + 0x60]
test ebx, ebx
mov dword [esp + 0x1c], 0
mov byte [ebp + ecx], dl
jle 0x1009a69d
mov eax, ebx
xor esi, esi
cdq
and edx, 7
add eax, edx
mov edi, eax
sar edi, 3
test edi, edi
jle 0x1009a666
movzx ax, byte [esi + ebp]
push eax
lea ecx, [esp + 0x18]
push 8
lea edx, [esp + 0x1b]
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.10097270
inc esi
cmp esi, edi
jl 0x1009a642
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
je 0x1009a69d
mov dl, byte [esi + ebp]
mov cl, 8
sub cl, al
shr dl, cl
xor cx, cx
mov cl, dl
lea edx, [esp + 0x14]
push ecx
push eax
lea eax, [esp + 0x1b]
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
call fcn.10097270
xor eax, eax
mov dword [esp + 0x5c], 8
mov byte [esp + 0x60], 0
mov dword [esp + 0x58], eax
mov dword [esp + 0x68], eax
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x90]
add edx, 8
inc eax
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x90], eax
cmp eax, dword [esp + edx + 0x1a4]
jl 0x10099a2b
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 0x9c]
mov eax, dword [esp + 0x94]
mov edx, dword [esp + ecx*4 + 0x108]
mov ecx, dword [esp + 0x24]
add esi, edx
inc eax
mov edx, dword [esp + ecx + 0x1a8]
mov dword [esp + 0x94], eax
cmp eax, edx
mov dword [esp + 0x9c], esi
jl 0x100999fb
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + ecx*4 + 0xf0]
mov edx, dword [esp + edx + 0x1a4]
mov esi, dword [eax + 0xc]
add esi, edx
inc ecx
mov dword [eax + 0xc], esi
mov eax, dword [esp + 0x40]
cmp ecx, eax
mov dword [esp + 0x48], ecx
jl 0x100999cc
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0xb8]
sub eax, edx
test eax, eax
mov dword [esp + 0x50], eax
jg 0x100999af
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x1c]
add eax, edx
cmp eax, ecx
mov dword [esp + 0x8c], eax
jl 0x10099950
test di, di
jbe 0x1009a7f9
xor esi, esi
mov eax, 0xffff
test di, di
je 0x1009a7ab
shl eax, 1
mov ecx, edi
inc esi
and ecx, eax
test cx, cx
jne 0x1009a79f
mov edx, dword [esp + 0x1b8]
dec esi
mov eax, esi
shl eax, 4
and eax, 0xffff
mov cx, word [edx + eax*8 + 4]
lea eax, [edx + eax*8]
push ecx
lea ecx, [esp + 0x17]
mov edx, dword [eax]
lea eax, [esp + 0x18]
push edx
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
push edi
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
mov eax, dword [esp + 0xa4]
test eax, eax
je 0x1009a890
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x64]
mov ebx, dword [esp + 0x68]
mov cl, byte [esp + 0x60]
test ebx, ebx
mov byte [ebp + eax], cl
jle 0x1009a894
mov eax, ebx
xor esi, esi
cdq
and edx, 7
add eax, edx
mov edi, eax
sar edi, 3
test edi, edi
jle 0x1009a857
movzx dx, byte [esi + ebp]
push edx
lea eax, [esp + 0x18]
push 8
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
inc esi
cmp esi, edi
jl 0x1009a833
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
je 0x1009a894
mov dl, byte [esi + ebp]
mov cl, 8
sub cl, al
shr dl, cl
xor cx, cx
mov cl, dl
lea edx, [esp + 0x14]
push ecx
push eax
lea eax, [esp + 0x1b]
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
call fcn.10097270
jmp 0x1009a894
mov ebp, dword [esp + 0x64]
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x1009a8c9
cmp ecx, 8
jge 0x1009a8b2
mov al, byte [esp + 0x13]
mov edx, 0xff
sar edx, cl
or al, dl
mov byte [esp + 0x13], al
lea eax, [esp + 0x14]
lea ecx, [esp + 0x13]
push eax
lea edx, [esp + 0xc8]
push ecx
push edx
call fcn.10097230
lea eax, [esp + 0xc4]
push eax
call fcn.1008b530
test ebp, ebp
je 0x1009a8ea
mov ebx, dword [esp + 0x280]
push ebp
push ebx
call fcn.100a1010
jmp 0x1009a8f1
mov ebx, dword [esp + 0x280]
lea esi, [esp + 0x1c0]
mov edi, 4
mov eax, dword [esi - 0x24]
test eax, eax
je 0x1009a90b
push eax
push ebx
call fcn.100a1010
mov eax, dword [esi]
test eax, eax
je 0x1009a918
push eax
push ebx
call fcn.100a1010
add esi, 0x38
dec edi
jne 0x1009a8fd
mov ecx, dword [esp + 0x28]
push ecx
push ebx
call fcn.100a1010
call fcn.10046b40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x268
ret 0x1c