Function at 0x678210
Capabilities:
Check http status code
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3a4
push ebx
push esi
mov esi, dword [ebp + 8]
xor eax, eax
push edi
mov dword [esp + 0x34], 0x10
mov ebx, dword [esi + 0x65e4]
mov dword [esp + 0x40], eax
cmp ebx, 0xa
mov dword [esp + 0x3c], eax
mov byte [esp + 0x20], al
mov byte [esp + 0x21], 1
mov byte [esp + 0x22], 2
mov byte [esp + 0x23], 3
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], 0x3ff00000
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], 0x3ff00000
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], 0x3ff00000
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], 0x3ff00000
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], 0x3ff00000
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], 0x3ff00000
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], 0x3ff00000
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], 0xfff
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
jb 0x678336
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [ebx + 1]
mov dword [esp + 0x44], ebx
mov dword [esi + 0x65e4], ecx
xor edi, edi
lea ecx, [esp + 0x170]
jmp 0x678350
xor eax, eax
xor edx, edx
cmp eax, edi
sete dl
mov dword [esp + 0x30], edx
inc eax
fild dword [esp + 0x30]
add ecx, 8
cmp eax, 4
fstp qword [ecx - 8]
jl 0x678350
inc edi
cmp edi, 4
jl 0x67834e
push esi
call fcn.00667c30
and eax, 0xffff
add esp, 4
cmp eax, 0x200
jbe 0x678392
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, eax
dec eax
test ecx, ecx
mov dword [esp + 0x30], eax
je 0x679940
mov edi, dword [ebp + 0xc]
jmp 0x6783ad
mov edi, dword [ebp + 0xc]
mov ebx, dword [esp + 0x44]
lea edx, [esp + 0x6c]
lea eax, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
push eax
lea edx, [esp + 0x40]
push ecx
push edx
push edi
push esi
call fcn.006760f0
mov eax, dword [esp + 0x50]
add esp, 0x18
cmp eax, 0x827d
ja 0x678c15
je 0x678bfb
cmp eax, 0x117
ja 0x6786c5
je 0x678a8a
cmp eax, 0x101
ja 0x6785ab
je case.0x678418.3
add eax, 0xfffffffe
cmp eax, 0xfe
ja case.0x678b5d.29221
xor ecx, ecx
mov cl, byte [eax + 0x679ad0]
jmp dword [ecx*4 + 0x679aac]
cmp dword [esp + 0x14], 3
jne case.0x678b5d.29221
cmp dword [esp + 0x18], 1
jne case.0x678b5d.29221
push esi
call fcn.00667c30
add esp, 4
and eax, 0xffff
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x38]
fild dword [esp + 0x10]
fmul dword [0x73fa14]
fstp dword [esi + edx*8 + 0xe6ec]
jmp case.0x678b5d.29221
cmp dword [esp + 0x14], 3
jne case.0x678b5d.29221
push esi
call fcn.00667c30
add esp, 4
and eax, 0xffff
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fstp dword [esi + 0x6590]
jmp case.0x678b5d.29221
push esi
call fcn.00667c30
add esp, 4
and eax, 0xffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x38]
fild dword [esp + 0x10]
fstp dword [esi + eax*4 + 0xe6e4]
jmp case.0x678b5d.29221
cmp dword [esp + 0x18], 0x32
jb case.0x678b5d.29221
fld dword [esi + 0xe774]
fcomp dword [0x71a460]
lea edi, [esi + 0xe774]
fnstsw ax
test ah, 0x40
je case.0x678b5d.29221
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0xc
push edx
call dword [ecx + 8]
add esp, 0xc
mov ebx, 3
push esi
call fcn.00667c30
and eax, 0xffff
add esp, 4
mov dword [esp + 0x10], eax
add edi, 4
fild dword [esp + 0x10]
dec ebx
fstp dword [edi - 4]
jne 0x6784f0
jmp case.0x678b5d.29221
cmp dword [esp + 0x14], 7
jne case.0x678b5d.29221
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
call dword [eax + 0x1c]
add esp, 4
cmp eax, 0xff
jne case.0x678b5d.29221
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x1c]
add esp, 4
cmp eax, 0xd8
jne case.0x678b5d.29221
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x18]
add esp, 4
sub eax, 2
mov dword [esi + 0x65c0], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 0x65cc], eax
jmp case.0x678b5d.29221
mov ecx, dword [esp + 0x14]
push ecx
push esi
call fcn.00667d10
lea edx, [ebx + ebx*8]
add esp, 8
mov dword [esi + edx*4 + 0x60f0], eax
jmp case.0x678b5d.29221
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d10
lea ecx, [ebx + ebx*8]
add esp, 8
mov dword [esi + ecx*4 + 0x60f4], eax
jmp case.0x678b5d.29221
add eax, 0xfffffefe
cmp eax, 0x13
ja case.0x678b5d.29221
xor edx, edx
mov dl, byte [eax + 0x679bf8]
jmp dword [edx*4 + 0x679bd0]
mov ecx, dword [esp + 0x18]
lea eax, [ebx + ebx*8]
and ecx, 7
push esi
lea ebx, [esi + eax*4]
mov dword [ebx + 0x610c], ecx
call fcn.00667c30
add esp, 4
and eax, 0xffff
mov dword [ebx + 0x60f8], eax
jmp case.0x678b5d.29221
push esi
call fcn.00667c30
add esp, 4
lea edx, [ebx + ebx*8]
and eax, 0xffff
mov dword [esi + edx*4 + 0x60fc], eax
jmp case.0x678b5d.29221
push esi
call fcn.00667c30
add esp, 4
lea ecx, [ebx + ebx*8]
and eax, 0xffff
mov dword [esi + ecx*4 + 0x6100], eax
jmp case.0x678b5d.29221
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push 1
lea eax, [esi + 0x6285]
push 0x200
push eax
push ecx
call dword [edx]
add esp, 0x10
jmp case.0x678b5d.29221
mov ecx, dword [esi + 4]
mov edx, dword [esi]
lea eax, [esi + 0x6485]
push 0x40
push eax
push ecx
call dword [edx + 0x10]
add esp, 0xc
jmp case.0x678b5d.29221
mov ecx, dword [esi + 4]
mov edx, dword [esi]
lea eax, [esi + 0x64c5]
push 0x40
push eax
push ecx
call dword [edx + 0x10]
add esp, 0xc
jmp case.0x678b5d.29221
push esi
call fcn.00667c30
and eax, 7
add esp, 4
movsx edx, byte [eax + str.50132467]
lea eax, [ebx + ebx*8 + 0x1842]
sub edx, 0x30
mov dword [esi + eax*4], edx
jmp case.0x678b5d.29221
mov ecx, dword [esp + 0x14]
push ecx
push esi
call fcn.00667d10
add esp, 8
lea edx, [ebx + ebx*8]
and eax, 7
mov dword [esi + edx*4 + 0x610c], eax
jmp case.0x678b5d.29221
cmp eax, 0x190
ja 0x678a5a
je 0x678a34
add eax, 0xfffffee8
cmp eax, 0x32
ja case.0x678b5d.29221
xor ecx, ecx
mov cl, byte [eax + 0x679c34]
jmp dword [ecx*4 + 0x679c0c]
cmp dword [esp + 0x14], 4
jne case.0x678b5d.29221
mov dword [esi + 0x2e7fc], 0x66de80
mov dword [esi + 0x66a8], 0x2008
push esi
call fcn.00667cd0
mov ecx, dword [ebp + 0xc]
lea edx, [ebx + ebx*8]
add eax, ecx
add esp, 4
lea edi, [esi + edx*4]
mov dword [edi + 0x6104], eax
mov ecx, dword [edi + 0x60f8]
test ecx, ecx
jne case.0x678b5d.29221
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 0
push eax
push edx
call dword [ecx + 8]
lea eax, [esp + 0x12c]
push 1
push eax
push esi
call fcn.00669680
add esp, 0x18
test eax, eax
je case.0x678b5d.29221
mov dword [edi + 0x60fc], 6
mov edx, dword [esp + 0x12c]
xor ecx, ecx
cmp edx, 2
mov edx, dword [esp + 0x128]
sete cl
shl edx, cl
mov dword [edi + 0x60f0], edx
mov eax, dword [esp + 0x124]
mov dword [edi + 0x60f4], eax
mov ecx, dword [esp + 0x120]
mov dword [edi + 0x60f8], ecx
mov edx, dword [esp + 0x12c]
mov dword [edi + 0x610c], edx
jmp case.0x678b5d.29221
mov ecx, dword [esi + 4]
mov edx, dword [esi]
lea eax, [esp + 0xe0]
push 0x40
push eax
push ecx
call dword [edx + 0x10]
push 5
lea edx, [esp + 0xf0]
push str.Adobe
push edx
call fcn.004508b0
add esp, 0x18
test eax, eax
je 0x678898
push 5
lea eax, [esp + 0xe4]
push str.dcraw
push eax
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x678898
push 5
lea ecx, [esp + 0xe4]
push str.UFRaw
push ecx
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x678898
push 6
lea edx, [esp + 0xe4]
push str.Bibble
push edx
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x678898
push 0xa
lea eax, [esp + 0xe4]
push str.Nikon_Scan
push eax
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x678898
mov edi, str.Digital_Photo_Professional
lea eax, [esp + 0xe0]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x67888b
test cl, cl
je 0x678887
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x67888b
add eax, 2
add edi, 2
test cl, cl
jne 0x678863
xor eax, eax
jmp 0x678890
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne case.0x678b5d.29221
mov dword [esi + 0x6610], 0
jmp case.0x678b5d.29221
push 0
push esi
call fcn.00677550
add esp, 8
jmp case.0x678b5d.29221
mov edx, dword [esi + 4]
mov eax, dword [esi]
push 1
lea ecx, [esi + 0x6545]
push 0x40
push ecx
push edx
call dword [eax]
add esp, 0x10
jmp case.0x678b5d.29221
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d10
add esp, 8
mov dword [esi + 0x6620], eax
jmp case.0x678b5d.29221
mov ecx, dword [esp + 0x14]
push ecx
push esi
call fcn.00667d10
add esp, 8
mov dword [esi + 0x6624], eax
jmp case.0x678b5d.29221
cmp dword [esp + 0x18], 1
jbe 0x678916
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x18]
jmp 0x67891c
push esi
call fcn.00667cd0
lea ecx, [ebx + ebx*8]
add esp, 4
mov dword [esi + ecx*4 + 0x6104], eax
mov eax, dword [esp + 0x18]
cmp eax, 4
jne case.0x678b5d.29221
mov dword [esi + 0x2e7fc], 0x66d4a0
mov dword [esi + 0x6610], 5
jmp case.0x678b5d.29221
mov edi, str.DSLR_A100
lea eax, [esi + 0x64c5]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [edi]
jne 0x67897e
test cl, cl
je 0x67897a
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [edi + 1]
jne 0x67897e
add eax, 2
add edi, 2
test cl, cl
jne 0x67895a
xor eax, eax
jmp 0x678983
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x6789bf
lea eax, [ebx + ebx*8]
cmp dword [esi + eax*4 + 0x60f0], 0xf20
jne 0x6789bf
push esi
mov dword [esi + 0x2e7fc], 0x670b90
call fcn.00667cd0
mov ecx, dword [ebp + 0xc]
add esp, 4
add eax, ecx
inc ebx
mov dword [esi + 0x65bc], eax
mov dword [esp + 0x44], ebx
jmp case.0x678b5d.29221
mov eax, dword [esp + 0x18]
mov ecx, eax
dec eax
test ecx, ecx
mov dword [esp + 0x18], eax
je case.0x678b5d.29221
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x18]
mov ebx, dword [esi]
add esp, 4
mov edi, eax
push 0
push esi
call fcn.00667cd0
mov ecx, dword [esi + 4]
mov edx, ebx
mov ebx, dword [ebp + 0xc]
add esp, 4
add eax, ebx
push eax
push ecx
call dword [edx + 8]
push ebx
push esi
call fcn.00678210
add esp, 0x14
test eax, eax
jne case.0x678b5d.29221
mov ecx, dword [esi + 4]
mov eax, dword [esi]
add edi, 4
push 0
push edi
push ecx
call dword [eax + 8]
mov eax, dword [esp + 0x24]
add esp, 0xc
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x18], eax
jne 0x6789d2
jmp case.0x678b5d.29221
mov eax, dword [str.Sarnoff]
mov dword [esi + 0x6485], eax
mov ecx, dword [0x7c2d50]
mov dword [esi + 0x6489], ecx
mov dword [esi + 0x65f8], 0xfff
jmp case.0x678b5d.29221
cmp eax, 0x7201
ja 0x678b45
je 0x678b33
cmp eax, 0x7010
ja 0x678b16
je 0x678aa2
sub eax, 0x201
je case.0x6785c1.264
dec eax
jne case.0x678b5d.29221
push esi
call fcn.00667cd0
lea edx, [ebx + ebx*8]
add esp, 4
mov dword [esi + edx*4 + 0x6110], eax
jmp case.0x678b5d.29221
lea edi, [esp + 0x9c]
mov ebx, 4
push esi
call fcn.00667c30
shr eax, 2
and eax, 0xfff
add esp, 4
mov dword [edi], eax
add edi, 4
dec ebx
jne 0x678aae
lea eax, [esp + 0x9c]
xor ecx, ecx
mov dword [esp + 0x10], eax
mov edi, dword [eax - 4]
mov eax, dword [eax]
inc edi
cmp edi, eax
jg 0x678b00
mov ebx, 1
sub eax, edi
shl ebx, cl
lea edx, [esi + edi*2 + 0x6764]
inc eax
mov di, word [edx - 2]
add edx, 2
add di, bx
dec eax
mov word [edx - 2], di
jne 0x678aef
mov eax, dword [esp + 0x10]
inc ecx
add eax, 4
cmp ecx, 5
mov dword [esp + 0x10], eax
jl 0x678ad4
jmp case.0x678b5d.29221
cmp eax, 0x7200
jne case.0x678b5d.29221
push esi
call fcn.00667cd0
add esp, 4
mov dword [esp + 0x2c], eax
jmp case.0x678b5d.29221
push esi
call fcn.00667cd0
add esp, 4
mov dword [esp + 0x28], eax
jmp case.0x678b5d.29221
add eax, 0xffff8ddf
cmp eax, 0xf2
ja case.0x678b5d.29221
xor ecx, ecx
mov cl, byte [eax + 0x679c7c]
jmp dword [ecx*4 + 0x679c68]
push esi
call fcn.00667cd0
add esp, 4
mov dword [esp + 0x24], eax
jmp case.0x678b5d.29221
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x18]
push eax
push esi
call fcn.0067a420
add esp, 0xc
mov word [esi + 0x66ae], 0
jmp case.0x678b5d.29221
xor edi, edi
push esi
call fcn.00667c30
add esp, 4
and eax, 0xffff
xor ecx, ecx
cmp edi, 2
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
setl cl
xor ecx, edi
inc edi
cmp edi, 4
fstp dword [esi + ecx*4 + 0xe774]
jl 0x678b99
jmp case.0x678b5d.29221
xor edi, edi
push esi
call fcn.00667c30
and eax, 0xffff
mov edx, edi
mov dword [esp + 0x14], eax
add esp, 4
fild dword [esp + 0x10]
sar edx, 1
xor edx, edi
inc edi
cmp edi, 4
fstp dword [esi + edx*4 + 0xe774]
jl 0x678bcd
jmp case.0x678b5d.29221
mov edx, dword [esi + 4]
mov eax, dword [esi]
lea ecx, [esi + 0x6505]
push 0x40
push ecx
push edx
call dword [eax + 0x10]
add esp, 0xc
jmp case.0x678b5d.29221
cmp eax, 0xc51b
ja 0x67930e
je 0x679292
cmp eax, 0x8773
ja 0x678e3d
je 0x679848
cmp eax, 0x85ff
ja 0x678cb9
je 0x678dec
add eax, 0xffff7d72
cmp eax, 0xf
ja case.0x678b5d.29221
xor ecx, ecx
mov cl, byte [eax + 0x679d84]
jmp dword [ecx*4 + 0x679d70]
mov ebx, dword [esi]
push 0
push esi
call fcn.00667cd0
mov edx, dword [esi + 4]
add esp, 4
add eax, edi
push eax
push edx
call dword [ebx + 8]
push edi
push esi
call fcn.00677fe0
add esp, 0x14
jmp case.0x678b5d.29221
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d50
fstp dword [esi + 0x6594]
add esp, 8
jmp case.0x678b5d.29221
mov ecx, dword [esp + 0x14]
push ecx
push esi
call fcn.00667d50
fstp dword [esi + 0x6598]
add esp, 8
jmp case.0x678b5d.29221
cmp eax, 0x8606
ja 0x678e0c
je 0x678dd9
sub eax, 0x8602
je 0x678da4
dec eax
jne case.0x678b5d.29221
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push 7
lea eax, [esp + 0xe4]
push 1
push eax
push ecx
call dword [edx]
push 6
lea edx, [esp + 0xf4]
push str.MATRIX
push edx
call fcn.004508b0
add esp, 0x1c
test eax, eax
jne case.0x678b5d.29221
xor ebx, ebx
lea eax, [esi + 0xe7c4]
mov dword [esi + 0x66cc], 4
mov dword [esi + 0x6600], ebx
mov dword [esp + 0x10], eax
xor edi, edi
mov edx, edi
mov ecx, dword [esi]
xor edx, 1
add edx, ebx
lea eax, [esi + edx*4 + 0xe7c4]
mov edx, dword [esi + 4]
push eax
push 0x7c2c84
push edx
call dword [ecx + 0x20]
add esp, 0xc
inc edi
cmp edi, 4
jl 0x678d2d
mov eax, dword [esi + 0xdc]
test eax, eax
je 0x678d8c
mov edx, dword [esp + 0x10]
mov ecx, 4
fld qword [0x71a468]
mov eax, edx
fadd dword [eax]
add eax, 4
dec ecx
jne 0x678d6e
mov eax, edx
mov ecx, 4
fld dword [eax]
fdiv st(1)
add eax, 4
dec ecx
fstp dword [eax - 4]
jne 0x678d7d
fstp st(0)
mov ecx, dword [esp + 0x10]
add ebx, 4
add ecx, 0x10
cmp ebx, 0xc
mov dword [esp + 0x10], ecx
jl 0x678d2b
jmp case.0x678b5d.29221
xor edi, edi
push esi
call fcn.00667c30
and eax, 0xffff
add esp, 4
mov dword [esp + 0x10], eax
mov eax, edi
fild dword [esp + 0x10]
xor eax, 1
inc edi
cmp edi, 4
fdivr dword [0x73fa44]
fstp dword [esi + eax*4 + 0xe774]
jl 0x678da6
jmp case.0x678b5d.29221
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x18]
push eax
push esi
call fcn.00677a80
add esp, 0xc
mov ecx, dword [str.Leaf]
lea eax, [esi + 0x6485]
mov dword [esi + 0x6485], ecx
mov dl, byte [0x7c213c]
mov byte [eax + 4], dl
jmp case.0x678b5d.29221
cmp eax, 0x8769
jne case.0x678b5d.29221
mov ebx, dword [esi]
push 0
push esi
call fcn.00667cd0
add esp, 4
add eax, edi
push eax
mov eax, dword [esi + 4]
push eax
call dword [ebx + 8]
push edi
push esi
call fcn.00677620
add esp, 0x14
jmp case.0x678b5d.29221
cmp eax, 0x9218
ja 0x678f46
je 0x678ee0
cmp eax, 0x920a
ja 0x678ebc
je 0x678ea3
cmp eax, 0x8825
je 0x678e7d
cmp eax, 0x9102
jne case.0x678b5d.29221
push esi
call fcn.00667cd0
add esp, 4
mov dword [esi + 0x65a8], eax
jmp case.0x678b5d.29221
mov ebx, dword [esi]
push 0
push esi
call fcn.00667cd0
mov ecx, dword [esi + 4]
add esp, 4
add eax, edi
push eax
push ecx
call dword [ebx + 8]
push edi
push esi
call fcn.006778b0
add esp, 0x14
jmp case.0x678b5d.29221
mov edx, dword [esp + 0x14]
push edx
push esi
call fcn.00667d50
fstp dword [esi + 0x659c]
add esp, 8
jmp case.0x678b5d.29221
cmp eax, 0x9211
jne case.0x678b5d.29221
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d10
add esp, 8
mov dword [esi + 0x65a4], eax
jmp case.0x678b5d.29221
lea ecx, [esi + 0xe7c4]
mov dword [esi + 0x6600], 0
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], 3
mov edx, dword [esp + 0x14]
push edx
push esi
call fcn.00667d50
mov edi, dword [esp + 0x18]
add esp, 8
fstp st(0)
mov ebx, 3
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d50
fstp dword [edi]
add esp, 8
add edi, 4
dec ebx
jne 0x678f15
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
add ecx, 0x10
dec eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], eax
jne 0x678efc
jmp case.0x678b5d.29221
cmp eax, 0xc517
ja 0x679243
cmp eax, 0xc516
jae 0x6791ad
sub eax, 0xb4c3
je 0x67916a
sub eax, 4
jne case.0x678b5d.29221
mov eax, dword [esp + 0x3c]
test eax, eax
je case.0x678b5d.29221
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x4e
push edx
call dword [ecx + 8]
push esi
call fcn.00667cd0
push esi
mov word [esi + 0x66ae], ax
call fcn.00667cd0
push esi
mov word [esi + 0x66ac], ax
call fcn.00667cd0
and eax, 7
push esi
mov word [esi + 0x66b6], ax
call fcn.00667cd0
mov cx, word [esi + 0x66ae]
and eax, 7
sub cx, ax
push esi
sub cx, word [esi + 0x66b6]
mov word [esi + 0x66b2], cx
call fcn.00667cd0
and eax, 7
push esi
mov word [esi + 0x66b4], ax
call fcn.00667cd0
mov dx, word [esi + 0x66ac]
and eax, 7
sub dx, ax
add esp, 0x24
sub dx, word [esi + 0x66b4]
cmp word [esi + 0x66ae], 0x1c5e
mov word [esi + 0x66b0], dx
jne 0x67902e
mov word [esi + 0x66b0], 0x1544
mov word [esi + 0x66b2], 0x1c4c
mov word [esi + 0x66b6], 7
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0x34
push ecx
call dword [eax + 8]
add esp, 0xc
lea edi, [esi + 0xe774]
mov ebx, 3
push 0xb
push esi
call fcn.00667d50
fstp dword [edi]
add esp, 8
add edi, 4
dec ebx
jne 0x679049
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x72
push eax
call dword [edx + 8]
push esi
call fcn.00667c30
mov di, word [esi + 0x66b2]
mov bx, word [esi + 0x66b0]
mov ecx, ebx
mov edx, edi
and ecx, 0xffff
and edx, 0xffff
imul ecx, edx
and eax, 0xffff
mov edx, dword [esp + 0x4c]
shr eax, 7
lea ecx, [ecx + ecx*2]
add esp, 0x10
lea eax, [eax + eax*4]
shl ecx, 1
lea eax, [eax + eax*8]
shl eax, 1
cmp ecx, edx
mov dword [esi + 0x66c4], eax
jne 0x6790ef
cdq
mov ecx, 0xb4
idiv ecx
cmp edx, 0x5a
jne 0x6790e1
xor ebx, edi
xor word [esi + 0x66b0], bx
mov ax, word [esi + 0x66b0]
mov word [esi + 0x66b2], bx
xor word [esi + 0x66b2], ax
xor eax, eax
mov dword [esi + 0x66c4], eax
mov dword [esi + 0x65ac], eax
xor ecx, ecx
xor edx, edx
mov cx, word [esi + 0x66b2]
mov dx, word [esi + 0x66b0]
imul ecx, edx
mov eax, 0x431bde83
imul ecx
sar edx, 0x12
mov eax, edx
lea ecx, [esi + 0x64c5]
shr eax, 0x1f
add edx, eax
push edx
push str.Ixpress__d_Mp
push ecx
call fcn.004516ee
mov eax, dword [esi + 0x65ac]
add esp, 0xc
test eax, eax
mov dword [esi + 0x2e7fc], 0x66d6f0
je 0x67915b
test byte [esi + 0x66b6], 1
je 0x679151
mov dword [esi + 0x65ac], 0x61616161
mov dword [esi + 0x2e7fc], fcn.0066da50
mov dword [esi + 0x65f8], 0xffff
jmp case.0x678b5d.29221
mov eax, dword [str.Imacon]
lea edx, [esi + 0x6485]
mov dword [esi + 0x6485], eax
mov cx, word [0x7c2d30]
mov word [edx + 4], cx
mov al, byte [0x7c2d32]
mov ecx, dword [esi]
mov byte [edx + 6], al
mov edx, dword [esi + 4]
push edx
call dword [ecx + 0x18]
mov dword [esi + 0x65bc], eax
mov eax, dword [esp + 0x1c]
add esp, 4
mov dword [esp + 0x3c], eax
jmp case.0x678b5d.29221
mov ecx, dword [esp + 0x18]
push ecx
call fcn.0045140d
mov ebx, eax
add esp, 4
test ebx, ebx
je case.0x678b5d.29221
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push eax
push 1
push ebx
push ecx
call dword [edx]
lea edi, [ebx - 1]
add esp, 0x10
test edi, edi
je 0x679235
mov edx, dword [esp + 0x18]
lea eax, [ebx + edx]
cmp edi, eax
jae 0x679235
inc edi
push 8
push str.Neutral
push edi
call fcn.004508b0
add esp, 0xc
test eax, eax
jne 0x679224
lea ecx, [esi + 0xe77c]
lea edx, [esi + 0xe778]
push ecx
lea eax, [esi + 0xe774]
push edx
push eax
lea ecx, [edi + 8]
push str._f__f__f
push ecx
call fcn.00451547
add esp, 0x14
push 0xa
push edi
call fcn.004502e0
mov edi, eax
add esp, 8
test edi, edi
jne 0x6791de
push ebx
call fcn.004508e8
add esp, 4
jmp case.0x678b5d.29221
cmp eax, 0xc51a
jne case.0x678b5d.29221
mov al, byte [esi + 0x6485]
test al, al
jne case.0x678b5d.29221
mov edx, dword [str.Hasselblad]
mov dword [esi + 0x6485], edx
mov eax, dword [0x7c2d0c]
mov dword [esi + 0x6489], eax
mov cx, word [0x7c2d10]
mov word [esi + 0x648d], cx
mov dl, byte [0x7c2d12]
mov byte [esi + 0x648f], dl
jmp case.0x678b5d.29221
movsx eax, word [esi + 0x6274]
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
mov dword [esp + 0x14], eax
call dword [ecx + 0x18]
mov ebx, eax
mov eax, dword [esi + 0x65e4]
push esi
mov dword [esp + 0x24], eax
call fcn.00667c30
push esi
mov word [esi + 0x6274], ax
call fcn.00667c30
mov edi, dword [esi]
add esp, 0xc
push 0
push esi
call fcn.00667cd0
mov ecx, dword [esi + 4]
add esp, 4
add eax, ebx
push eax
push ecx
call dword [edi + 8]
push ebx
push esi
call fcn.00678210
mov edx, dword [esp + 0x30]
mov ax, word [esp + 0x24]
add esp, 0x14
mov dword [esi + 0x65f8], 0xffff
mov dword [esi + 0x65e4], edx
mov word [esi + 0x6274], ax
jmp case.0x678b5d.29221
cmp eax, 0xc627
ja 0x67958d
je 0x679553
add eax, 0xffff39ee
cmp eax, 0x12
ja case.0x678b5d.29221
xor ecx, ecx
mov cl, byte [eax + 0x679dbc]
jmp dword [ecx*4 + 0x679d94]
mov edi, 4
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x1c]
mov ecx, dword [esi + 0x6614]
add esp, 4
shl ecx, 8
add eax, ecx
dec edi
mov dword [esi + 0x6614], eax
jne 0x679341
mov al, byte [esi + 0x6485]
test al, al
jne 0x679377
mov edx, dword [0x7c2d04]
mov dword [esi + 0x6485], edx
mov dword [esi + 0x6610], 1
jmp case.0x678b5d.29221
mov eax, dword [esp + 0x18]
cmp eax, 4
jbe 0x679398
mov eax, 4
mov dword [esp + 0x18], eax
mov ecx, dword [esi]
mov dword [esi + 0x66cc], eax
push eax
mov eax, dword [esi + 4]
lea edx, [esp + 0x24]
push 1
push edx
push eax
call dword [ecx]
mov ebx, dword [esp + 0x44]
add esp, 0x10
jmp 0x67979e
push esi
call fcn.00667c30
add esp, 4
cmp ax, 2
jne case.0x678b5d.29221
mov word [esi + 0x66be], 1
mov dword [esi + 0x65ac], 0x49494949
jmp case.0x678b5d.29221
mov ecx, dword [esp + 0x18]
push ecx
push esi
call fcn.00677f80
add esp, 8
jmp case.0x678b5d.29221
mov eax, dword [esp + 0x18]
xor edi, edi
test eax, eax
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], edi
jle 0x679429
mov edx, dword [esp + 0x14]
push edx
push esi
call fcn.00667d50
fadd qword [esp + 0x50]
mov eax, dword [esp + 0x20]
add esp, 8
inc edi
cmp edi, eax
fstp qword [esp + 0x48]
jl 0x67940a
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], 0
fild qword [esp + 0x70]
fdivr qword [esp + 0x48]
fadd qword [0x71a428]
call fcn.0045077c
add dword [esi + 0x65f4], eax
jmp case.0x678b5d.29221
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d10
add esp, 8
mov dword [esi + 0x65f8], eax
jmp case.0x678b5d.29221
mov ecx, dword [esp + 0x14]
push ecx
push esi
call fcn.00667d50
mov edx, dword [esp + 0x1c]
fstp qword [esi + 0x66d8]
push edx
push esi
call fcn.00667d50
fdivr qword [esi + 0x66d8]
add esp, 0x10
fstp qword [esi + 0x66d8]
jmp case.0x678b5d.29221
mov eax, dword [esi + 0x66cc]
mov dword [esp + 0x1c], 0
test eax, eax
jle 0x6794e3
lea edi, [esp + 0x250]
mov ebx, 3
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d50
fstp qword [edi]
add esp, 8
add edi, 8
dec ebx
jne 0x6794ba
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0x66cc]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x6794b5
mov dword [esp + 0x40], 1
jmp case.0x678b5d.29221
mov eax, dword [esi + 0x66cc]
mov dword [esp + 0x10], 0
test eax, eax
jle 0x679553
lea ecx, [esp + 0x170]
mov dword [esp + 0x1c], ecx
xor edi, edi
test eax, eax
jle 0x679535
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
push edx
push esi
call fcn.00667d50
fstp qword [ebx]
mov eax, dword [esi + 0x66cc]
add esp, 8
inc edi
add ebx, 8
cmp edi, eax
jl 0x679517
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
mov eax, dword [esi + 0x66cc]
inc ecx
add edi, 0x20
cmp ecx, eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], edi
jl 0x67950d
mov eax, dword [esi + 0x66cc]
xor edi, edi
test eax, eax
jle case.0x678b5d.29221
lea ebx, [esp + 0xb0]
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d50
fstp qword [ebx]
mov eax, dword [esi + 0x66cc]
add esp, 8
inc edi
add ebx, 8
cmp edi, eax
jl 0x67956a
jmp case.0x678b5d.29221
cmp eax, 0xc68d
ja 0x6796f6
je 0x679698
add eax, 0xffff39d8
cmp eax, 0x18
ja case.0x678b5d.29221
xor ecx, ecx
mov cl, byte [eax + 0x679de4]
jmp dword [ecx*4 + 0x679dd0]
mov eax, dword [esi + 0x66cc]
xor edi, edi
test eax, eax
jle case.0x678b5d.29221
lea ebx, [esp + 0x78]
mov edx, dword [esp + 0x14]
push edx
push esi
call fcn.00667d50
fstp qword [ebx]
mov eax, dword [esi + 0x66cc]
add esp, 8
inc edi
add ebx, 8
cmp edi, eax
jl 0x6795cf
jmp case.0x678b5d.29221
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d50
mov ecx, dword [esp + 0x1c]
fstp qword [esp + 0x5c]
push ecx
push esi
call fcn.00667d50
fstp qword [esp + 0x6c]
fld qword [0x71a450]
fsub qword [esp + 0x64]
add esp, 0x10
lea ecx, [esp + 0x54]
mov eax, 0x73c1d8
fsub qword [esp + 0x5c]
fstp qword [esp + 0x64]
fld dword [eax]
fdivr qword [ecx]
add eax, 4
add ecx, 8
cmp eax, 0x73c1e4
fstp qword [ecx - 8]
jl 0x67962e
jmp case.0x678b5d.29221
mov eax, dword [esi + 0x6614]
test eax, eax
jne case.0x678b5d.29221
push esi
call fcn.00667cd0
mov ebx, eax
add ebx, edi
push ebx
push esi
call fcn.0067a420
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 0
push ebx
push eax
call dword [edx + 8]
push edi
push esi
call fcn.00678210
add esp, 0x20
jmp case.0x678b5d.29221
lea ecx, [esi + 0xe766]
push 3
push ecx
push esi
call fcn.00667f20
add esp, 0xc
jmp case.0x678b5d.29221
mov edx, dword [esp + 0x14]
push edx
push esi
call fcn.00667d10
mov word [esi + 0x66b4], ax
mov eax, dword [esp + 0x1c]
push eax
push esi
call fcn.00667d10
mov ecx, dword [esp + 0x24]
mov word [esi + 0x66b6], ax
push ecx
push esi
call fcn.00667d10
mov edx, dword [esp + 0x2c]
sub ax, word [esi + 0x66b4]
push edx
push esi
mov word [esi + 0x66b0], ax
call fcn.00667d10
add esp, 0x20
sub ax, word [esi + 0x66b6]
mov word [esi + 0x66b2], ax
jmp case.0x678b5d.29221
sub eax, 0xc68f
je 0x679848
sub eax, 0x3675
je 0x6797ff
sub eax, 5
jne case.0x678b5d.29221
mov ebx, dword [esp + 0x18]
cmp ebx, 0x10
mov dword [esp + 0x34], ebx
jbe 0x67972b
mov ebx, 0x10
mov dword [esp + 0x34], ebx
mov edx, dword [esi + 4]
mov eax, dword [esi]
push ebx
lea ecx, [esp + 0xd4]
push 1
push ecx
push edx
call dword [eax]
add esp, 0x10
xor edx, edx
xor edi, edi
test ebx, ebx
mov dword [esi + 0x66cc], edi
jle 0x67979e
mov cl, byte [esp + edx + 0xd0]
mov eax, 1
shl eax, cl
mov ecx, edi
and ecx, eax
neg ecx
sbb ecx, ecx
or edi, eax
inc ecx
add dword [esi + 0x66cc], ecx
inc edx
cmp edx, ebx
jl 0x67974f
cmp edi, 0x38
jne 0x67978f
mov dx, word [0x7c2d00]
mov al, byte [0x7c2d02]
mov word [esp + 0x20], dx
mov byte [esp + 0x22], al
jmp 0x67979e
cmp edi, 0x3a
jne 0x67979e
mov ecx, dword [0x7c2cf8]
mov dword [esp + 0x20], ecx
mov edi, dword [esi + 0x66cc]
xor eax, eax
test edi, edi
jle 0x6797bc
xor edx, edx
mov dl, byte [esp + eax + 0x20]
mov byte [esp + edx + 0x2b0], al
inc eax
cmp eax, edi
jl 0x6797aa
mov byte [eax + esi + 0x6280], 0
mov edi, dword [esi + 0x65ac]
mov ecx, 0xf
mov eax, ecx
xor edx, edx
div ebx
xor eax, eax
mov al, byte [esp + edx + 0xd0]
xor edx, edx
mov dl, byte [esp + eax + 0x2b0]
mov eax, edi
shl eax, 2
or edx, eax
mov edi, edx
mov edx, ecx
dec ecx
test edx, edx
jne 0x6797cf
mov dword [esi + 0x65ac], edi
jmp case.0x678b5d.29221
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0x10
push ecx
call dword [eax + 8]
push esi
call fcn.00667cd0
mov dword [esi + 0x65bc], eax
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x1c
push eax
call dword [edx + 8]
push esi
call fcn.00667cd0
mov ecx, dword [esi + 0x65bc]
add esp, 0x20
add ecx, eax
mov dword [esi + 0x65bc], ecx
mov dword [esi + 0x2e7fc], 0x66d750
jmp case.0x678b5d.29221
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x18]
mov dword [esi + 0x65c8], eax
mov eax, dword [esp + 0x1c]
add esp, 4
mov dword [esi + 0x65d4], eax
mov edx, dword [esp + 0x6c]
mov eax, dword [esi + 4]
mov ecx, dword [esi]
push 0
push edx
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x3c]
add esp, 0xc
mov ecx, eax
dec eax
test ecx, ecx
mov dword [esp + 0x30], eax
jne 0x6783a6
mov edi, dword [esp + 0x28]
test edi, edi
je 0x679940
push edi
call fcn.0045140d
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x679940
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push 0
push eax
push ecx
call dword [edx + 8]
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push edi
push ebx
push eax
call dword [edx]
mov ecx, dword [esp + 0x40]
mov edx, edi
push ecx
push 1
shr edx, 2
push edx
push ebx
call fcn.006707a0
mov eax, dword [esi]
mov ecx, dword [esi + 4]
add esp, 0x2c
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
mov dword [esi], 0x7c1998
call fcn.006fa764
test eax, eax
mov dword [esi + 4], eax
je 0x67992a
mov edx, dword [esi]
push 1
push edi
push ebx
push eax
call dword [edx + 4]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 0
push 0
push ecx
call dword [eax + 8]
mov eax, dword [esp + 0x48]
neg eax
push eax
push esi
call fcn.00678210
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0xc]
add esp, 0x28
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov dword [esi], ecx
push ebx
mov dword [esi + 4], edx
call fcn.004508e8
add esp, 4
mov eax, dword [esi + 0x66cc]
test eax, eax
jle 0x67997c
lea edi, [esp + 0x170]
lea ecx, [esp + 0xb0]
mov ebx, eax
mov edx, dword [esi + 0x66cc]
test edx, edx
jle 0x679973
mov eax, edi
fld qword [ecx]
fmul qword [eax]
add eax, 8
dec edx
fstp qword [eax - 8]
jne 0x679966
add ecx, 8
add edi, 0x20
dec ebx
jne 0x67995a
mov eax, dword [esp + 0x40]
test eax, eax
je 0x679a22
mov ecx, dword [esi + 0x66cc]
test ecx, ecx
jle 0x679a11
lea eax, [esp + 0x170]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x1f0]
xor edx, edx
mov dword [esp + 0x24], edx
mov edi, dword [esi + 0x66cc]
mov dword [eax], 0
test edi, edi
mov dword [eax + 4], 0
jle 0x6799ec
mov ecx, dword [esp + 0x2c]
lea ebx, [esp + edx + 0x54]
lea edx, [esp + edx + 0x250]
fld qword [ebx]
fmul qword [edx]
add ecx, 8
add edx, 0x18
dec edi
fmul qword [ecx - 8]
fadd qword [eax]
fstp qword [eax]
jne 0x6799d4
mov edx, dword [esp + 0x24]
add edx, 8
add eax, 8
cmp edx, 0x18
mov dword [esp + 0x24], edx
jl 0x6799ae
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
add edx, 0x20
dec ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], ecx
jne 0x6799a8
lea ecx, [esp + 0x1f0]
push ecx
push esi
call fcn.00672470
add esp, 8
fld qword [esp + 0x78]
fcomp qword [0x71a468]
fnstsw ax
test ah, 0x40
jne 0x679a69
mov eax, dword [esi + 0x66cc]
xor edx, edx
test eax, eax
mov dword [esi + 0xe780], edx
jle 0x679a69
lea ecx, [esp + 0x78]
lea eax, [esi + 0xe774]
fld qword [ecx]
fdivr dword [0x71a470]
inc edx
add eax, 4
add ecx, 8
fstp dword [eax - 4]
cmp edx, dword [esi + 0x66cc]
jl 0x679a4f
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x679aa0
mov eax, dword [esi + 0x66cc]
xor edx, edx
test eax, eax
jle 0x679aa0
lea ecx, [esp + 0x170]
lea eax, [esi + 0xe784]
fld qword [ecx]
fdivr dword [eax]
inc edx
add eax, 4
add ecx, 0x28
fstp dword [eax - 4]
cmp edx, dword [esi + 0x66cc]
jl 0x679a8a
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret