Function at 0x10097320
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c0
mov ecx, dword [esp + 0x1cc]
push ebx
push ebp
push esi
mov eax, dword [ecx + 0x58a4]
push edi
xor edi, edi
xor ebp, ebp
cmp eax, edi
mov dword [esp + 0x20], edi
jne 0x10097368
mov byte [esp + 0x28], 3
mov byte [esp + 0x2c], 1
mov byte [esp + 0x2d], 0
mov byte [esp + 0x2e], 2
mov byte [esp + 0x2f], 0x10
mov byte [esp + 0x30], 3
mov byte [esp + 0x31], 0x20
jmp 0x10097377
mov byte [esp + 0x28], 1
mov byte [esp + 0x2c], 1
mov byte [esp + 0x2d], 0
mov eax, dword [esp + 0x1e0]
mov eax, dword [eax + 0x24]
cmp eax, 1
mov dword [esp + 0x60], eax
jl 0x1009738f
cmp eax, 7
jle 0x10097397
mov dword [esp + 0x60], 5
mov ebx, dword [esp + 0x1d8]
xor edx, edx
mov dl, byte [ecx]
push 0x8490
push ebx
mov dword [esp + 0x2c], edx
call fcn.100a0c80
mov esi, eax
cmp esi, edi
mov dword [esp + 0x40], esi
jne 0x100973d0
push 0x8490
push ebx
push 0xfffffc18
push 0x6de
jmp 0x10098598
lea eax, [esi + 0x3000]
push 0xe18
push edi
push eax
call fcn.100a9900
lea eax, [esi + 0x3e18]
push 0xe18
push edi
push eax
call fcn.100a9900
lea eax, [esi + 0x4c30]
push 0xe18
push edi
push eax
call fcn.100a9900
push 0xe18
lea eax, [esi + 0x5a48]
push edi
push eax
call fcn.100a9900
push 0xe18
lea ecx, [esi + 0x6860]
push edi
push ecx
call fcn.100a9900
push 0xe18
lea edx, [esi + 0x7678]
push edi
push edx
call fcn.100a9900
mov ebx, dword [esp + 0x1e4]
mov dword [esp + 0x19c], edi
push ebx
mov dword [esp + 0x168], edi
mov dword [esp + 0x130], edi
mov dword [esp + 0xf8], edi
mov dword [esp + 0x1c4], edi
mov dword [esp + 0x18c], edi
mov dword [esp + 0x154], edi
mov dword [esp + 0x11c], edi
call fcn.10032b60
and eax, 0xffff
push ebx
mov dword [esp + 0x18], eax
call fcn.10032b70
and eax, 0xffff
mov cl, byte [esp + 0x28]
mov dword [esp + 0x64], eax
mov byte [esp + 0x3b], cl
xor eax, eax
movzx cx, cl
cmp cx, di
mov dword [esp + 0x18], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x5c], eax
mov word [esp + 0x1c], cx
jle 0x10097598
movsx edx, ax
xor ecx, ecx
lea edi, [edx + edx]
mov dword [esp + 0x6c], edi
mov al, byte [esp + edi + 0x2c]
mov ebx, dword [esp + 0x1dc]
movsx edi, cx
lea ebx, [ebx + edi*2]
cmp al, byte [edi + ebx + 7]
je 0x100974eb
inc ecx
cmp cx, 4
jl 0x100974d1
cmp cx, 4
je 0x1009757a
mov edi, dword [esp + 0x6c]
lea eax, [edx*8]
sub eax, edx
xor edx, edx
mov dl, byte [esp + edi + 0x2d]
xor ebx, ebx
shr edx, 4
shl edx, 0xb
shl eax, 3
add edx, esi
xor edi, edi
movsx ecx, cx
mov dword [esp + eax + 0x10c], edx
mov edx, dword [esp + 0x1dc]
mov dword [esp + eax + 0xf8], edi
lea edx, [edx + ecx*2]
mov bl, byte [ecx + edx + 8]
lea edx, [esp + eax + 0xfc]
mov ecx, ebx
shr ebx, 4
and ecx, 0xf
mov dword [edx], ebx
mov dword [esp + eax + 0x100], ecx
mov edx, dword [edx]
cmp edx, dword [esp + 0x18]
jle 0x1009755a
mov dword [esp + 0x18], edx
cmp ecx, dword [esp + 0x44]
jle 0x10097564
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x5c]
inc eax
cmp ax, word [esp + 0x1c]
mov dword [esp + 0x5c], eax
jl 0x100974c1
jmp 0x10097598
push 4
push 4
push 0xfffff7f3
push 0x6fa
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
xor edi, edi
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x18]
mov eax, 1
cmp ecx, eax
jne 0x1009858c
cmp dword [esp + 0x44], eax
jne 0x1009858c
cmp dword [esp + 0x20], edi
jne 0x100985a2
xor ebx, ebx
cmp word [esp + 0x1c], di
jle 0x1009767d
movsx edi, bx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x64]
lea esi, [edi*8]
sub esi, edi
shl esi, 3
mov dword [esp + esi + 0x120], eax
mov eax, dword [esp + 0x1d8]
mov dword [esp + esi + 0x124], ecx
mov edx, dword [esp + esi + 0x120]
shl edx, 2
push edx
push eax
call fcn.100a0c80
test eax, eax
mov dword [esp + esi + 0xf4], eax
je 0x10097649
mov ecx, dword [esp + 0x24]
mov edx, 1
dec ecx
shl edx, cl
mov ecx, dword [esp + 0x14]
shl edi, 2
inc ebx
cmp bx, word [esp + 0x1c]
mov word [eax + ecx*2], dx
mov dword [esp + edi + 0x94], 0
mov dword [esp + edi + 0xa4], 1
jl 0x100975ca
jmp 0x1009767b
movsx eax, bx
mov edx, eax
push 0x83
shl edx, 3
sub edx, eax
mov eax, dword [esp + edx*8 + 0x124]
shl eax, 2
push eax
push 0xfffffc18
push 0x71c
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x20], eax
xor edi, edi
cmp dword [esp + 0x20], edi
jne 0x100985a2
mov esi, dword [esp + 0x1e4]
push esi
call fcn.10032bc0
mov ebx, eax
push esi
mov dword [esp + 0x84], ebx
call fcn.10032b80
push ebx
mov ecx, dword [esp + 0x1dc]
mov dword [esp + 0x70], eax
push ecx
call fcn.100a0c80
mov esi, eax
cmp esi, edi
mov dword [esp + 0x5c], esi
jne 0x100976da
push 7
push ebx
push 0xfffffc18
push 0x72c
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x20], eax
cmp dword [esp + 0x20], edi
jne 0x100985a2
cmp word [esp + 0x1c], di
jle 0x10097728
mov edx, dword [esp + 0x14]
lea edi, [esp + 0xb4]
movsx ebx, word [esp + 0x1c]
lea eax, [edx + edx]
mov ecx, ebx
mov dword [esp + 0x3c], eax
xor eax, eax
lea edx, [esp + 0xf4]
rep stosd dword es:[edi], eax
mov ecx, dword [edx]
mov edi, dword [esp + 0x3c]
mov dword [esp + eax + 0x48], ecx
add ecx, edi
mov dword [esp + eax + 0x70], ecx
add edx, 0x38
add eax, 4
dec ebx
jne 0x1009770f
mov eax, dword [esp + 0x64]
mov edi, dword [esp + 0x1e8]
test eax, eax
mov dword [esp + 0x18], 0
jle 0x10097af0
mov ebx, dword [esp + 0x14]
jmp 0x10097758
mov edi, dword [esp + 0x1e8]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1d4]
push ecx
push edx
push esi
push eax
call fcn.1008a6e0
mov dword [esp + 0x20], eax
mov al, byte [esp + 0x3b]
cmp al, 3
jne 0x10097834
cmp dword [esp + 0x6c], 0x18
jne 0x100977ce
test ebx, ebx
jle 0x1009787a
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
lea ecx, [esi + 1]
mov esi, dword [esp + 0x50]
sub edx, eax
sub esi, eax
movzx di, byte [ecx + 1]
mov word [edx + eax], di
add eax, 2
movzx di, byte [ecx]
mov word [eax - 2], di
movzx di, byte [ecx - 1]
mov word [esi + eax - 2], di
add ecx, 3
dec ebx
jne 0x100977a5
jmp 0x1009787a
xor eax, eax
test ebx, ebx
jle 0x1009787a
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
sub edx, ecx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x50]
sub edx, ecx
mov dword [esp + 0x44], edx
mov ebx, dword [esp + 0x24]
xor edx, edx
mov dl, byte [eax + esi]
add ecx, 2
movzx dx, byte [edi + edx*4 + 2]
mov word [ecx + ebx - 2], dx
xor edx, edx
mov dl, byte [eax + esi]
mov ebx, dword [esp + 0x44]
movzx dx, byte [edi + edx*4 + 1]
mov word [ecx - 2], dx
xor edx, edx
mov dl, byte [eax + esi]
inc eax
movzx dx, byte [edi + edx*4]
mov word [ecx + ebx - 2], dx
mov edx, dword [esp + 0x14]
cmp eax, edx
jl 0x100977f0
jmp 0x1009787a
mov eax, dword [esp + 0x1dc]
cmp byte [eax], 8
jne 0x10097863
xor eax, eax
test ebx, ebx
jle 0x1009787a
mov ecx, dword [esp + 0x48]
xor edx, edx
add ecx, 2
mov dl, byte [eax + esi]
inc eax
cmp eax, ebx
movzx dx, byte [edi + edx*4 + 1]
mov word [ecx - 2], dx
jl 0x1009784a
jmp 0x1009787a
test ebx, ebx
jle 0x1009787a
mov eax, dword [esp + 0x48]
sub esi, eax
mov cx, word [esi + eax]
mov word [eax], cx
add eax, 2
dec ebx
jne 0x1009786d
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x10097af0
mov eax, dword [esp + 0x1c]
test ax, ax
jle 0x1009789d
movsx ecx, ax
xor eax, eax
lea edi, [esp + 0x84]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x10097a45
mov edx, eax
mov dword [esp + 0x3c], edx
cmp word [esp + 0x1c], 0
jle 0x10097a36
movsx eax, word [esp + 0x1c]
xor esi, esi
mov dword [esp + 0x44], eax
mov dword [esp + 0x24], esi
mov eax, dword [esp + esi + 0xb4]
test eax, eax
mov eax, dword [esp + esi + 0x84]
je 0x100978e6
test eax, eax
je 0x100978f1
mov eax, dword [esp + 0x60]
jmp 0x10097901
test eax, eax
je 0x100978f1
mov eax, 1
jmp 0x10097901
mov eax, 2
mov dword [esp + esi + 0x84], 1
cmp eax, 7
ja case.default.0x1009790a
jmp dword [eax*4 + 0x100985b4]
mov ecx, dword [esp + esi + 0x48]
xor ebp, ebp
mov bp, word [ecx - 2]
jmp case.0x1009790a.0
mov edx, dword [esp + esi + 0x70]
xor ebp, ebp
mov bp, word [edx]
jmp case.0x1009790a.0
mov eax, dword [esp + esi + 0x70]
xor ebp, ebp
mov bp, word [eax - 2]
jmp case.0x1009790a.0
mov ecx, dword [esp + esi + 0x48]
mov eax, dword [esp + esi + 0x70]
xor ebp, ebp
xor edx, edx
mov bp, word [ecx - 2]
mov dx, word [eax - 2]
xor ecx, ecx
add ebp, edx
mov cx, word [eax]
add ebp, ecx
jmp case.0x1009790a.0
mov eax, dword [esp + esi + 0x70]
xor edx, edx
xor ebp, ebp
xor ecx, ecx
mov dx, word [eax - 2]
mov bp, word [eax]
mov eax, dword [esp + esi + 0x48]
sub ebp, edx
sar ebp, 1
mov cx, word [eax - 2]
add ebp, ecx
jmp case.0x1009790a.0
mov edx, dword [esp + esi + 0x70]
mov ecx, dword [esp + esi + 0x48]
xor eax, eax
xor ebp, ebp
mov ax, word [edx]
mov bp, word [ecx - 2]
sub ebp, eax
sar ebp, 1
add ebp, eax
jmp case.0x1009790a.0
mov edx, dword [esp + esi + 0x70]
mov eax, dword [esp + esi + 0x48]
xor ebp, ebp
xor ecx, ecx
mov bp, word [edx]
mov cx, word [eax - 2]
add ebp, ecx
sar ebp, 1
jmp case.0x1009790a.0
push 0x2e
push 2
push 0xfffffc13
push 0x7a3
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov edi, dword [esp + esi + 0x48]
mov ax, word [edi]
sub ax, bp
test ax, ax
jge 0x100979da
neg eax
xor ecx, ecx
mov edx, 0xffff
test ax, ax
je 0x100979f2
shl edx, 1
mov ebx, eax
inc ecx
and ebx, edx
test bx, bx
jne 0x100979e6
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + esi + 0x70]
add ecx, edx
add edi, 2
add ebx, 2
lea eax, [eax + ecx*4 + 0x3000]
mov dword [esp + esi + 0x48], edi
mov dword [esp + esi + 0x70], ebx
add edx, 0x386
mov ecx, dword [eax]
add esi, 4
inc ecx
mov dword [esp + 0x24], edx
mov dword [eax], ecx
mov eax, dword [esp + 0x44]
dec eax
mov dword [esp + 0x44], eax
jne 0x100978ca
mov eax, dword [esp + 0x3c]
dec eax
mov dword [esp + 0x3c], eax
jne 0x100978af
cmp word [esp + 0x1c], 0
jle 0x10097adb
movsx ecx, word [esp + 0x1c]
mov eax, 1
lea edi, [esp + 0xb4]
mov dword [esp + 0x3c], ecx
lea ebx, [esp + 0xf4]
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x14]
xor ecx, ecx
mov eax, dword [esp + ecx + 0x94]
add ebx, 0x38
inc eax
add ecx, 4
cdq
xor eax, edx
sub eax, edx
and eax, 1
xor eax, edx
mov esi, eax
mov eax, dword [esp + ecx + 0xa0]
sub esi, edx
inc eax
cdq
imul edi, esi
xor eax, edx
mov dword [esp + ecx + 0x90], esi
sub eax, edx
and eax, 1
xor eax, edx
sub eax, edx
mov edx, dword [ebx - 0x38]
mov dword [esp + ecx + 0xa0], eax
lea esi, [edx + edi*2]
mov edi, dword [esp + 0x14]
mov dword [esp + ecx + 0x44], esi
mov esi, edi
imul esi, eax
mov eax, dword [esp + 0x3c]
lea edx, [edx + esi*2]
dec eax
mov dword [esp + ecx + 0x6c], edx
mov dword [esp + 0x3c], eax
jne 0x10097a75
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x64]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x10097749
mov esi, dword [esp + 0x1d4]
lea eax, [esp + 0x58]
push eax
push esi
mov dword [esp + 0x60], 0xffc4
call fcn.1008a050
mov edi, dword [esp + 0x40]
lea eax, [edi + 0x3000]
push eax
call fcn.10098600
mov cx, word [edi + 0x3e14]
lea edx, [esp + 0x34]
add cx, 0x13
push edx
push esi
mov dword [esp + 0x3c], ecx
call fcn.1008a050
mov ebx, eax
lea eax, [edi + 0x3000]
push eax
push edi
call fcn.10097060
lea eax, [esp + 0x12]
mov byte [esp + 0x12], 0
push eax
push esi
call fcn.1008a0d0
add ebx, eax
mov eax, dword [esp + 0x1ec]
test eax, eax
je 0x10097b70
push esi
call fcn.10089fa0
mov ecx, dword [esp + 0x1ec]
mov dword [ecx + 0x1c], eax
lea edx, [edi + 0x3c0d]
push 0x10
push edx
push esi
call fcn.10089e60
add ebx, eax
mov eax, dword [edi + 0x3e14]
lea ecx, [edi + 0x3d0d]
push eax
push ecx
push esi
call fcn.10089e60
add ebx, eax
mov eax, dword [esp + 0x34]
and eax, 0xffff
cmp eax, ebx
je 0x10097bbe
push ebx
push eax
push 0xfffff7e8
push 0x7d7
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x100985a2
mov eax, dword [esp + 0x1ec]
test eax, eax
je 0x10097bdc
mov dword [eax + 0x2c], 0
mov edx, dword [esp + 0x1dc]
mov eax, dword [edx + 0x58a4]
test eax, eax
jne 0x10097dae
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0xffc4
push eax
push esi
call fcn.1008a050
lea eax, [edi + 0x3e18]
push eax
call fcn.10098600
mov cx, word [edi + 0x4c2c]
lea edx, [esp + 0x34]
add cx, 0x13
push edx
push esi
mov dword [esp + 0x3c], ecx
call fcn.1008a050
mov ebx, eax
lea eax, [edi + 0x3e18]
push eax
lea eax, [edi + 0x800]
push eax
call fcn.10097060
lea ecx, [esp + 0x12]
mov byte [esp + 0x12], 1
push ecx
push esi
call fcn.1008a0d0
add ebx, eax
mov eax, dword [esp + 0x1ec]
test eax, eax
je 0x10097c6c
push esi
call fcn.10089fa0
mov edx, dword [esp + 0x1ec]
mov dword [edx + 0x20], eax
lea eax, [edi + 0x4a25]
push 0x10
push eax
push esi
call fcn.10089e60
mov ecx, dword [edi + 0x4c2c]
lea edx, [edi + 0x4b25]
push ecx
push edx
push esi
add ebx, eax
call fcn.10089e60
add ebx, eax
mov eax, dword [esp + 0x34]
and eax, 0xffff
cmp eax, ebx
je 0x10097cba
push ebx
push eax
push 0xfffff7e8
push 0x7fe
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x100985a2
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0xffc4
push eax
push esi
call fcn.1008a050
lea eax, [edi + 0x4c30]
push eax
call fcn.10098600
mov cx, word [edi + 0x5a44]
lea edx, [esp + 0x34]
add cx, 0x13
push edx
push esi
mov dword [esp + 0x3c], ecx
call fcn.1008a050
mov ebx, eax
lea eax, [edi + 0x4c30]
push eax
lea eax, [edi + 0x1000]
push eax
call fcn.10097060
lea ecx, [esp + 0x12]
mov byte [esp + 0x12], 2
push ecx
push esi
call fcn.1008a0d0
add ebx, eax
mov eax, dword [esp + 0x1ec]
test eax, eax
je 0x10097d41
push esi
call fcn.10089fa0
mov edx, dword [esp + 0x1ec]
mov dword [edx + 0x24], eax
lea eax, [edi + 0x583d]
push 0x10
push eax
push esi
call fcn.10089e60
mov ecx, dword [edi + 0x5a44]
add edi, 0x593d
push ecx
push edi
push esi
add ebx, eax
call fcn.10089e60
add ebx, eax
mov eax, dword [esp + 0x34]
and eax, 0xffff
cmp eax, ebx
je 0x10097d8f
push ebx
push eax
push 0xfffff7e8
push 0x81f
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
xor ecx, ecx
cmp eax, ecx
jne 0x100985a2
mov eax, dword [esp + 0x1ec]
cmp eax, ecx
je 0x10097dae
mov dword [eax + 0x30], ecx
mov dword [eax + 0x34], ecx
lea edx, [esp + 0x58]
mov dword [esp + 0x58], 0xffda
push edx
push esi
call fcn.1008a050
mov ecx, dword [esp + 0x1dc]
mov eax, dword [ecx + 0x58a4]
test eax, eax
jne 0x10097dff
mov byte [esp + 0x28], 3
mov byte [esp + 0x2c], 1
mov byte [esp + 0x2d], 0
mov byte [esp + 0x2e], 2
mov byte [esp + 0x2f], 0x10
mov byte [esp + 0x30], 3
mov byte [esp + 0x31], 0x20
mov dword [esp + 0x34], 0xc
jmp 0x10097e16
mov byte [esp + 0x28], 1
mov byte [esp + 0x2c], 1
mov byte [esp + 0x2d], 0
mov dword [esp + 0x34], 8
mov eax, dword [esp + 0x1e0]
mov eax, dword [eax + 0x24]
cmp eax, 1
mov dword [esp + 0x60], eax
jl 0x10097e2e
cmp eax, 7
jle 0x10097e3a
mov dword [esp + 0x60], 5
mov eax, dword [esp + 0x60]
mov byte [esp + 0x29], al
xor edx, edx
mov dl, byte [ecx]
lea eax, [esp + 0x34]
push eax
push esi
mov byte [esp + 0x32], 0
mov byte [esp + 0x33], 0
mov dword [esp + 0x2c], edx
call fcn.1008a050
push esi
mov dword [esp + 0x1c], eax
call fcn.1008a2a0
test eax, eax
je 0x10097e79
lea ecx, [esp + 0x28]
push ecx
push 0xe4
push esi
call fcn.1008a500
lea edx, [esp + 0x28]
push edx
push esi
call fcn.1008a0d0
xor ebx, ebx
mov edi, dword [esp + 0x18]
add edi, eax
mov al, byte [esp + 0x28]
test al, al
mov dword [esp + 0x18], edi
jbe 0x10097f08
push esi
call fcn.1008a2a0
test eax, eax
je 0x10097ec9
movsx edi, bx
lea eax, [esp + edi*2 + 0x2c]
lea ecx, [edi + 0xe5]
push eax
push ecx
push esi
call fcn.1008a500
lea edx, [esp + edi*2 + 0x2d]
add edi, 0xe8
push edx
push edi
push esi
call fcn.1008a500
movsx edi, bx
shl edi, 1
lea eax, [esp + edi + 0x2c]
push eax
push esi
call fcn.1008a0d0
mov ecx, dword [esp + 0x18]
add ecx, eax
mov dword [esp + 0x18], ecx
lea ecx, [esp + edi + 0x2d]
push ecx
push esi
call fcn.1008a0d0
mov edx, dword [esp + 0x18]
add edx, eax
inc ebx
mov dword [esp + 0x18], edx
movzx dx, byte [esp + 0x28]
cmp bx, dx
jl 0x10097e98
mov edi, dword [esp + 0x18]
push esi
call fcn.1008a2a0
test eax, eax
je 0x10097f42
lea eax, [esp + 0x29]
push eax
push 0xeb
push esi
call fcn.1008a500
lea ecx, [esp + 0x2a]
push ecx
push 0xec
push esi
call fcn.1008a500
lea edx, [esp + 0x2b]
push edx
push 0xed
push esi
call fcn.1008a500
lea eax, [esp + 0x29]
push eax
push esi
call fcn.1008a0d0
lea ecx, [esp + 0x2a]
add edi, eax
push ecx
push esi
call fcn.1008a0d0
lea edx, [esp + 0x2b]
add edi, eax
push edx
push esi
call fcn.1008a0d0
add edi, eax
mov eax, dword [esp + 0x34]
and eax, 0xffff
cmp eax, edi
je 0x10097f8e
push edi
push eax
push 0xfffff7e8
push 0x871
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
jmp 0x10097f92
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x100985a2
cmp word [esp + 0x1c], ax
jle 0x10098001
mov eax, dword [esp + 0x24]
lea edi, [esp + 0xa4]
movsx ebx, word [esp + 0x1c]
lea ecx, [eax - 1]
mov eax, 1
shl eax, cl
lea ecx, [ebx*4]
lea edx, [esp + 0xf4]
shr ecx, 2
mov dword [esp + 0x40], eax
mov eax, 1
rep stosd dword es:[edi], eax
lea ecx, [ebx*4]
lea edi, [esp + 0x94]
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [edx]
mov edi, dword [esp + 0x14]
mov ax, word [esp + 0x40]
add edx, 0x38
dec ebx
mov word [ecx + edi*2], ax
jne 0x10097fec
mov edi, dword [esp + 0x1ec]
test edi, edi
je 0x10098015
push esi
call fcn.10089fa0
mov dword [edi + 0x40], eax
mov edx, dword [esp + 0x1d8]
push 2
lea ecx, [esp + 0xc8]
push 0x2710
push ecx
push edx
push esi
call fcn.1008b440
xor ecx, ecx
mov byte [esp + 0x13], 0
test eax, eax
mov dword [esp + 0x68], ecx
jne 0x100985a2
cmp word [esp + 0x1c], ax
jle 0x1009808f
mov eax, dword [esp + 0x14]
lea edi, [esp + 0xb4]
movsx ebx, word [esp + 0x1c]
lea esi, [eax + eax]
mov ecx, ebx
xor eax, eax
lea edx, [esp + 0xf4]
rep stosd dword es:[edi], eax
mov ecx, dword [edx]
add edx, 0x38
mov dword [esp + eax + 0x48], ecx
add ecx, esi
mov dword [esp + eax + 0x70], ecx
add eax, 4
dec ebx
jne 0x1009806c
mov edi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x68]
jmp 0x10098097
mov edi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x18], 0
test eax, eax
jle 0x100984f0
jmp 0x100980b5
mov edi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x48]
call fcn.10046b40
test eax, eax
jne 0x100984ec
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x1d4]
push ecx
push edx
push esi
push eax
call fcn.1008a6e0
mov dword [esp + 0x20], eax
mov al, byte [esp + 0x3b]
cmp al, 3
jne 0x100981ad
cmp dword [esp + 0x6c], 0x18
jne 0x10098140
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x100981fe
lea edx, [esi + 1]
mov esi, dword [esp + 0x50]
mov eax, ebx
mov ecx, edi
sub eax, edi
sub esi, edi
mov edi, dword [esp + 0x14]
movzx bx, byte [edx + 1]
mov word [ecx + eax], bx
add ecx, 2
movzx bx, byte [edx]
mov word [ecx - 2], bx
movzx bx, byte [edx - 1]
mov word [ecx + esi - 2], bx
add edx, 3
dec edi
jne 0x10098117
jmp 0x100981fe
mov eax, dword [esp + 0x14]
xor ecx, ecx
test eax, eax
jle 0x100981fe
mov eax, dword [esp + 0x50]
sub ebx, edi
sub eax, edi
mov edx, edi
mov edi, dword [esp + 0x1e8]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x44], eax
jmp 0x1009816d
mov ebx, dword [esp + 0x24]
xor eax, eax
add edx, 2
mov al, byte [ecx + esi]
movzx ax, byte [edi + eax*4 + 2]
mov word [edx + ebx - 2], ax
xor eax, eax
mov al, byte [ecx + esi]
mov ebx, dword [esp + 0x44]
movzx ax, byte [edi + eax*4 + 1]
mov word [edx - 2], ax
xor eax, eax
mov al, byte [ecx + esi]
inc ecx
movzx ax, byte [edi + eax*4]
mov word [edx + ebx - 2], ax
mov eax, dword [esp + 0x14]
cmp ecx, eax
jl 0x10098169
jmp 0x100981fe
mov ecx, dword [esp + 0x1dc]
cmp byte [ecx], 8
jne 0x100981e5
mov edi, dword [esp + 0x14]
xor eax, eax
test edi, edi
jle 0x100981fe
mov edx, dword [esp + 0x1e8]
mov ecx, ebx
xor ebx, ebx
add ecx, 2
mov bl, byte [eax + esi]
inc eax
cmp eax, edi
movzx bx, byte [edx + ebx*4 + 1]
mov word [ecx - 2], bx
jl 0x100981cc
jmp 0x100981fe
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x100981fe
mov eax, ebx
sub esi, ebx
mov dx, word [eax + esi]
mov word [eax], dx
add eax, 2
dec ecx
jne 0x100981f1
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x100984ec
mov esi, dword [esp + 0x1c]
test si, si
jle 0x10098221
movsx ecx, si
xor eax, eax
lea edi, [esp + 0x84]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x3c], 0
test eax, eax
jle 0x10098444
call fcn.10046b40
test eax, eax
jne 0x10098444
test si, si
jle 0x1009842b
movsx ecx, word [esp + 0x1c]
lea eax, [esp + 0x10c]
xor esi, esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + esi + 0xb4]
test eax, eax
mov eax, dword [esp + esi + 0x84]
je 0x1009827d
test eax, eax
je 0x10098288
mov eax, dword [esp + 0x60]
jmp 0x10098298
test eax, eax
je 0x10098288
mov eax, 1
jmp 0x10098298
mov eax, 2
mov dword [esp + esi + 0x84], 1
cmp eax, 7
ja case.default.0x100982a1
jmp dword [eax*4 + 0x100985d4]
mov edx, dword [esp + esi + 0x48]
xor ebp, ebp
mov bp, word [edx - 2]
jmp case.0x100982a1.0
mov eax, dword [esp + esi + 0x70]
xor ebp, ebp
mov bp, word [eax]
jmp case.0x100982a1.0
mov ecx, dword [esp + esi + 0x70]
xor ebp, ebp
mov bp, word [ecx - 2]
jmp case.0x100982a1.0
mov edx, dword [esp + esi + 0x48]
mov eax, dword [esp + esi + 0x70]
xor ebp, ebp
xor ecx, ecx
mov bp, word [edx - 2]
mov cx, word [eax - 2]
xor edx, edx
add ebp, ecx
mov dx, word [eax]
add ebp, edx
jmp case.0x100982a1.0
mov eax, dword [esp + esi + 0x70]
mov edx, dword [esp + esi + 0x48]
xor ecx, ecx
xor ebp, ebp
mov cx, word [eax - 2]
mov bp, word [eax]
sub ebp, ecx
xor eax, eax
mov ax, word [edx - 2]
sar ebp, 1
add ebp, eax
jmp case.0x100982a1.0
mov ecx, dword [esp + esi + 0x70]
mov edx, dword [esp + esi + 0x48]
xor eax, eax
xor ebp, ebp
mov ax, word [ecx]
mov bp, word [edx - 2]
sub ebp, eax
sar ebp, 1
add ebp, eax
jmp case.0x100982a1.0
mov eax, dword [esp + esi + 0x70]
mov ecx, dword [esp + esi + 0x48]
xor ebp, ebp
xor edx, edx
mov bp, word [eax]
mov dx, word [ecx - 2]
add ebp, edx
sar ebp, 1
jmp case.0x100982a1.0
push 0x2e
push 2
push 0xfffffc13
push 0x945
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
mov eax, dword [esp + esi + 0x48]
mov ax, word [eax]
mov ecx, eax
sub eax, ebp
and ecx, 0xffff
mov edx, eax
sub ecx, ebp
cmp dx, 0x8000
jne 0x10098381
mov edx, 0xffff8000
test dx, dx
mov ecx, edx
jge 0x1009838a
neg ecx
xor edi, edi
mov eax, 0xffff
test cx, cx
je 0x100983a2
shl eax, 1
mov ebx, ecx
inc edi
and ebx, eax
test bx, bx
jne 0x10098396
test dx, dx
movsx ecx, dx
jge 0x100983ab
dec ecx
mov edx, dword [esp + 0x24]
not eax
and eax, ecx
mov ebx, eax
mov eax, dword [edx]
mov edx, dword [eax + edi*8]
mov cx, word [eax + edi*8 + 4]
lea eax, [eax + edi*8]
push ecx
lea eax, [esp + 0x6c]
push edx
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
test edi, edi
je 0x100983f8
push ebx
lea eax, [esp + 0x6c]
push edi
lea ecx, [esp + 0x1b]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.10097270
mov eax, dword [esp + esi + 0x48]
mov edi, dword [esp + esi + 0x70]
mov edx, dword [esp + 0x24]
add eax, 2
add edi, 2
mov dword [esp + esi + 0x48], eax
mov eax, dword [esp + 0x40]
mov dword [esp + esi + 0x70], edi
add edx, 0x38
add esi, 4
dec eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x40], eax
jne 0x10098261
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x1c]
inc eax
cmp eax, ecx
mov dword [esp + 0x3c], eax
jl 0x10098235
test si, si
jle 0x100984d7
movsx ecx, word [esp + 0x1c]
mov eax, 1
lea edi, [esp + 0xb4]
mov dword [esp + 0x40], ecx
lea ebx, [esp + 0xf4]
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x14]
xor ecx, ecx
mov eax, dword [esp + ecx + 0x94]
add ebx, 0x38
inc eax
add ecx, 4
cdq
xor eax, edx
sub eax, edx
and eax, 1
xor eax, edx
mov esi, eax
mov eax, dword [esp + ecx + 0xa0]
sub esi, edx
inc eax
cdq
imul edi, esi
xor eax, edx
mov dword [esp + ecx + 0x90], esi
sub eax, edx
and eax, 1
xor eax, edx
sub eax, edx
mov edx, dword [ebx - 0x38]
mov dword [esp + ecx + 0xa0], eax
lea esi, [edx + edi*2]
mov edi, dword [esp + 0x14]
mov dword [esp + ecx + 0x44], esi
mov esi, edi
imul esi, eax
lea eax, [edx + esi*2]
mov dword [esp + ecx + 0x6c], eax
mov eax, dword [esp + 0x40]
dec eax
mov dword [esp + 0x40], eax
jne 0x10098471
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x64]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x100980ad
mov ecx, dword [esp + 0x68]
test ecx, ecx
jle 0x10098521
cmp ecx, 8
jge 0x1009850a
mov al, byte [esp + 0x13]
mov edx, 0xff
sar edx, cl
or al, dl
mov byte [esp + 0x13], al
lea eax, [esp + 0x68]
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
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x10098546
mov edi, dword [esp + 0x1d8]
push eax
push edi
call fcn.100a1010
jmp 0x1009854d
mov edi, dword [esp + 0x1d8]
lea esi, [esp + 0x118]
mov ebx, 4
mov eax, dword [esi - 0x24]
test eax, eax
je 0x10098567
push eax
push edi
call fcn.100a1010
mov eax, dword [esi]
test eax, eax
je 0x10098574
push eax
push edi
call fcn.100a1010
add esi, 0x38
dec ebx
jne 0x10098559
call fcn.10046b40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c0
ret 0x1c
push eax
push edi
push 0xfffffda8
push 0x70c
push str.C:_accusoftgear_source_filtersJPGWRITE.C
call fcn.10046940
call fcn.10046b40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c0
ret 0x1c