Function at 0x595be0
Capabilities:
Encode data using xor
Read file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x39c
mov eax, dword [0x6d7160]
xor eax, esp
mov dword [esp + 0x398], eax
fld1
push ebx
fst qword [esp + 0xc8]
xor ebx, ebx
fst qword [esp + 0xd0]
push esi
fst qword [esp + 0xdc]
mov esi, ecx
mov eax, dword [esi + 0x378]
fst qword [esp + 0xe4]
cmp eax, 0xa
fldz
fst qword [esp + 0xac]
mov ecx, 1
fst qword [esp + 0xb4]
push edi
fst qword [esp + 0xc0]
mov dword [esp + 0x10], esi
fstp qword [esp + 0xc8]
mov dword [esp + 0x30], 0x10
mov dword [esp + 0x54], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ecx
fst qword [esp + 0x98]
mov dword [esp + 0x58], ecx
fst qword [esp + 0xa0]
mov dword [esp + 0x88], ebx
fstp qword [esp + 0xa8]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], ebx
mov byte [esp + 0x2c], bl
mov byte [esp + 0x2d], cl
mov byte [esp + 0x2e], 2
mov byte [esp + 0x2f], 3
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], 0xfff
mov dword [esp + 0x48], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x44], ebx
jb 0x595ced
mov eax, ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x398]
xor ecx, esp
call fcn.00607d6d
mov esp, ebp
pop ebp
ret 4
mov dword [esp + 0x28], eax
add eax, 1
mov dword [esi + 0x378], eax
xor edi, edi
lea ecx, [esp + 0x170]
xor eax, eax
xor edx, edx
cmp eax, edi
sete dl
add eax, 1
add ecx, 8
cmp eax, 4
mov dword [esp + 0x4c], edx
fild dword [esp + 0x4c]
fstp qword [ecx - 8]
jl 0x595d05
add edi, 1
cmp edi, 4
jl 0x595d03
call fcn.0057df50
movzx eax, ax
cmp eax, 0x200
mov dword [esp + 0x50], eax
jbe 0x595d59
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x398]
xor ecx, esp
call fcn.00607d6d
mov esp, ebp
pop ebp
ret 4
cmp eax, ebx
je 0x597c9d
mov edx, dword [ebp + 8]
mov esi, dword [esp + 0x10]
sub dword [esp + 0x50], 1
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x44]
push ecx
push edx
lea edi, [esp + 0x28]
lea ebx, [esp + 0x24]
mov eax, esi
call fcn.005929d0
mov edi, dword [esp + 0x40]
cmp edi, 0x8602
ja 0x596945
je 0x596906
cmp edi, 0x123
ja 0x596259
je case.0x59721e.50712
cmp edi, 0x26
ja 0x595e57
cmp edi, 0x24
jae 0x595e39
lea eax, [edi - 2]
cmp eax, 0x15
ja case.0x5978c2.64773
movzx eax, byte [eax + 0x597e1c]
jmp dword [eax*4 + 0x597e04]
cmp dword [esp + 0x18], 3
jne case.0x5978c2.64773
cmp dword [esp + 0x1c], 1
jne case.0x5978c2.64773
call fcn.0057df50
movzx ecx, ax
mov dword [esp + 0x20], ecx
mov edx, esi
fild dword [esp + 0x20]
fmul qword [0x6c0cd8]
fstp dword [edx + edi*8 + 0x20540]
jmp case.0x5978c2.64773
cmp dword [esp + 0x18], 3
jne case.0x5978c2.64773
call fcn.0057df50
movzx eax, ax
mov dword [esp + 0x20], eax
mov ecx, esi
fild dword [esp + 0x20]
fstp dword [ecx + 0x320]
jmp case.0x5978c2.64773
call fcn.0057df50
movzx edx, ax
mov dword [esp + 0x20], edx
mov eax, esi
fild dword [esp + 0x20]
fstp dword [eax + edi*4 + 0x20538]
jmp case.0x5978c2.64773
lea eax, [edi - 0x27]
cmp eax, 0xf1
ja case.0x5978c2.64773
movzx ecx, byte [eax + 0x597e74]
jmp dword [ecx*4 + 0x597e34]
cmp dword [esp + 0x1c], 0x32
jb case.0x5978c2.64773
fldz
lea edi, [esi + 0x205c8]
fcomp dword [edi]
fnstsw ax
test ah, 0x44
jp case.0x5978c2.64773
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
je 0x595eb7
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x595ec7
mov edx, dword [eax + 0x1c]
add ecx, 0xc
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x595eb2
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x595ec7
mov edx, dword [eax + 4]
push 1
push 0xc
push edx
call fcn.006081d8
add esp, 0xc
mov ebx, 3
lea esp, [esp]
call fcn.0057df50
mov esi, dword [esp + 0x10]
movzx eax, ax
mov dword [esp + 0x20], eax
add edi, 4
sub ebx, 1
fild dword [esp + 0x20]
fstp dword [edi - 4]
jne 0x595ed0
jmp case.0x5978c2.64773
cmp dword [esp + 0x18], 7
jne case.0x5978c2.64773
mov edi, dword [esi]
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x595f5f
mov eax, dword [edi + 0x1c]
cmp eax, 1
mov dword [esp + 0x14], 1
jb 0x595f22
mov ebx, dword [edi + 0x18]
lea edx, [ebx + 1]
cmp edx, eax
jbe 0x595f31
mov ebx, dword [edi + 0x18]
sub eax, ebx
mov dword [esp + 0x14], eax
je case.0x5978c2.64773
mov eax, dword [esp + 0x14]
push eax
add ecx, ebx
push ecx
lea edx, [esp + 0x46]
push edx
call fcn.0060d1b0
mov eax, dword [esp + 0x20]
add ebx, eax
add esp, 0xc
cmp eax, 1
mov dword [edi + 0x18], ebx
jne case.0x5978c2.64773
movzx eax, byte [esp + 0x3e]
jmp 0x595f73
mov edi, dword [edi + 4]
test edi, edi
je 0x595f71
push edi
call fcn.0060963d
add esp, 4
jmp 0x595f73
xor eax, eax
cmp eax, 0xff
jne case.0x5978c2.64773
mov edi, dword [esi]
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x595fdf
mov eax, dword [edi + 0x1c]
cmp eax, 1
mov dword [esp + 0x14], 1
jb 0x595fa1
mov ebx, dword [edi + 0x18]
lea edx, [ebx + 1]
cmp edx, eax
jbe 0x595fb0
mov ebx, dword [edi + 0x18]
sub eax, ebx
mov dword [esp + 0x14], eax
je case.0x5978c2.64773
mov eax, dword [esp + 0x14]
push eax
add ecx, ebx
push ecx
lea edx, [esp + 0x47]
push edx
call fcn.0060d1b0
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp eax, 1
lea ecx, [eax + ebx]
mov dword [edi + 0x18], ecx
jne case.0x5978c2.64773
movzx eax, byte [esp + 0x3f]
jmp 0x595ff3
mov edi, dword [edi + 4]
test edi, edi
je 0x595ff1
push edi
call fcn.0060963d
add esp, 4
jmp 0x595ff3
xor eax, eax
cmp eax, 0xd8
jne case.0x5978c2.64773
mov eax, dword [esi]
call fcn.00410270
mov edx, dword [esp + 0x1c]
sub eax, 2
mov dword [esi + 0x34c], eax
mov dword [esi + 0x358], edx
jmp case.0x5978c2.64773
call fcn.0057df50
movzx ecx, ax
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*8]
mov eax, esi
mov dword [eax + edx*4 + 0x9c994], ecx
jmp case.0x5978c2.64773
call fcn.0057df50
movzx ecx, ax
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*8]
mov eax, esi
mov dword [eax + edx*4 + 0x9c998], ecx
jmp case.0x5978c2.64773
mov edi, dword [esi]
cmp dword [edi + 0x14], 0
lea ebx, [esi + 0x15]
je 0x596071
mov eax, 0x200
call fcn.00410220
jmp case.0x5978c2.64773
mov edi, dword [edi + 4]
test edi, edi
je case.0x5978c2.64773
push edi
push 1
push 0x200
push ebx
call fcn.0060860a
add esp, 0x10
jmp case.0x5978c2.64773
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
lea edi, [esi + 0x215]
je 0x596109
test edi, edi
je case.0x5978c2.64773
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x1c]
cmp edx, ecx
jae case.0x5978c2.64773
cmp ecx, 0x3f
mov dword [esp + 0x14], 0x3f
jb 0x5960ca
lea ebx, [edx + 0x3f]
cmp ebx, ecx
jbe 0x5960d0
sub ecx, edx
mov dword [esp + 0x14], ecx
xor ecx, ecx
cmp dword [esp + 0x14], ecx
jbe 0x596100
jmp 0x5960e0
mov ebx, dword [eax + 0x18]
mov edx, dword [eax + 0x14]
mov dl, byte [edx + ebx]
mov byte [ecx + edi], dl
add dword [eax + 0x18], 1
add ecx, 1
cmp ecx, dword [esp + 0x14]
jae 0x596100
cmp byte [ecx + edi - 1], 0xa
jne 0x5960e0
mov byte [ecx + edi], 0
jmp case.0x5978c2.64773
mov eax, dword [eax + 4]
test eax, eax
je case.0x5978c2.64773
push eax
push 0x40
push edi
call fcn.0061b889
add esp, 0xc
jmp case.0x5978c2.64773
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
lea edi, [esi + 0x255]
je 0x596109
test edi, edi
je case.0x5978c2.64773
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x1c]
cmp edx, ecx
jae case.0x5978c2.64773
cmp ecx, 0x3f
mov dword [esp + 0x14], 0x3f
jb 0x59615d
lea ebx, [edx + 0x3f]
cmp ebx, ecx
jbe 0x596163
sub ecx, edx
mov dword [esp + 0x14], ecx
xor ecx, ecx
cmp dword [esp + 0x14], ecx
jbe 0x596190
jmp 0x596170
mov ebx, dword [eax + 0x18]
mov edx, dword [eax + 0x14]
mov dl, byte [edx + ebx]
mov byte [ecx + edi], dl
add dword [eax + 0x18], 1
add ecx, 1
cmp ecx, dword [esp + 0x14]
jae 0x596190
cmp byte [ecx + edi - 1], 0xa
jne 0x596170
mov byte [ecx + edi], 0
jmp case.0x5978c2.64773
cmp dword [esp + 0x18], 4
jne case.0x5978c2.64773
mov dword [esi + 0x9692c], 0x5860e0
mov dword [esi + 0x458], 0x2008
call fcn.0057e000
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 0x28]
add eax, edx
lea ecx, [ecx + ecx*8]
mov edx, esi
cmp dword [edx + ecx*4 + 0x9c990], 0
lea esi, [edx + ecx*4]
mov dword [esi + 0x9c99c], eax
jne 0x596581
mov edi, edx
mov ecx, dword [edi]
cmp dword [ecx + 0x14], 0
je 0x5977c0
cmp dword [ecx + 0x18], 0xffffffff
je 0x5977cf
mov edx, dword [ecx + 0x1c]
cmp edx, eax
mov dword [ecx + 0x18], eax
ja 0x596206
mov eax, edx
mov dword [ecx + 0x18], eax
jmp 0x5977cf
call fcn.0057df50
and eax, 7
movsx ecx, byte [eax + str.50132467]
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*8]
sub ecx, 0x30
mov eax, esi
mov dword [eax + edx*4 + 0x9c9a0], ecx
jmp case.0x5978c2.64773
mov ecx, dword [esp + 0x18]
push ecx
mov eax, esi
call fcn.0057e090
mov edx, eax
mov eax, dword [esp + 0x28]
and edx, 7
lea eax, [eax + eax*8]
mov dword [esi + eax*4 + 0x9c9a4], edx
jmp case.0x5978c2.64773
cmp edi, 0x7010
ja 0x59664f
je 0x5965d6
lea eax, [edi - 0x131]
cmp eax, 0xd1
ja case.0x5978c2.64773
movzx ecx, byte [eax + 0x597f94]
jmp dword [ecx*4 + 0x597f68]
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
je 0x5962e5
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x1c]
cmp edx, ecx
jae 0x5962ff
mov edi, 0x3f
cmp ecx, edi
jb 0x5962ac
lea ebx, [edx + 0x3f]
cmp ebx, ecx
jbe 0x5962b0
sub ecx, edx
mov edi, ecx
xor ecx, ecx
test edi, edi
jbe 0x5962db
mov ebx, dword [eax + 0x18]
mov edx, dword [eax + 0x14]
mov dl, byte [edx + ebx]
mov byte [esp + ecx + 0x260], dl
add dword [eax + 0x18], 1
add ecx, 1
cmp ecx, edi
jae 0x5962db
cmp byte [esp + ecx + 0x25f], 0xa
jne 0x5962b6
mov byte [esp + ecx + 0x260], 0
jmp 0x5962ff
mov eax, dword [eax + 4]
test eax, eax
je 0x5962ff
push eax
lea eax, [esp + 0x264]
push 0x40
push eax
call fcn.0061b889
add esp, 0xc
push 5
lea ecx, [esp + 0x264]
push str.Adobe
push ecx
call fcn.00609774
add esp, 0xc
test eax, eax
je 0x5963a9
push 5
lea edx, [esp + 0x264]
push str.dcraw
push edx
call fcn.00609774
add esp, 0xc
test eax, eax
je 0x5963a9
push 5
lea eax, [esp + 0x264]
push str.UFRaw
push eax
call fcn.00609774
add esp, 0xc
test eax, eax
je 0x5963a9
push 6
lea ecx, [esp + 0x264]
push str.Bibble
push ecx
call fcn.00609774
add esp, 0xc
test eax, eax
je 0x5963a9
push 0xa
lea edx, [esp + 0x264]
push str.Nikon_Scan
push edx
call fcn.00609774
add esp, 0xc
test eax, eax
je 0x5963a9
mov edi, str.Digital_Photo_Professional
lea esi, [esp + 0x260]
mov ecx, 0x1b
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x596581
mov esi, dword [esp + 0x10]
mov dword [esi + 0x3c0], 0
jmp case.0x5978c2.64773
push 0
mov ecx, esi
call fcn.005948f0
jmp case.0x5978c2.64773
mov edi, dword [esi]
cmp dword [edi + 0x14], 0
lea ebx, [esi + 0x2d5]
je 0x5963e3
mov eax, 0x40
call fcn.00410220
jmp case.0x5978c2.64773
mov edi, dword [edi + 4]
test edi, edi
je case.0x5978c2.64773
push edi
push 1
push 0x40
push ebx
call fcn.0060860a
add esp, 0x10
jmp case.0x5978c2.64773
mov ecx, dword [esp + 0x18]
push ecx
mov eax, esi
call fcn.0057e090
mov dword [esi + 0x3d0], eax
jmp case.0x5978c2.64773
mov edx, dword [esp + 0x18]
push edx
mov eax, esi
call fcn.0057e090
mov dword [esi + 0x3d4], eax
jmp case.0x5978c2.64773
mov edi, dword [esp + 0x1c]
cmp edi, 1
jbe 0x596441
mov eax, dword [esi]
call fcn.00410270
jmp 0x596446
call fcn.0057e000
cmp edi, 4
mov ecx, dword [esp + 0x28]
lea ecx, [ecx + ecx*8]
mov dword [esi + ecx*4 + 0x9c99c], eax
jne case.0x5978c2.64773
mov dword [esi + 0x9692c], 0x585330
mov dword [esi + 0x3c0], 5
jmp case.0x5978c2.64773
add esi, 0x255
mov edi, str.DSLR_A100
mov ecx, 0xa
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov esi, dword [esp + 0x10]
jne 0x5964c8
mov edi, dword [esp + 0x28]
lea eax, [edi + edi*8]
cmp dword [esi + eax*4 + 0x9c988], 0xf20
jne 0x5964c8
mov dword [esi + 0x9692c], 0x58a0e0
call fcn.0057e000
add eax, dword [ebp + 8]
add edi, 1
mov dword [esi + 0x348], eax
mov dword [esp + 0x28], edi
jmp case.0x5978c2.64773
cmp dword [esp + 0x1c], edx
je 0x59657c
jmp 0x5964d8
mov esi, dword [esp + 0x10]
mov eax, dword [esi]
sub dword [esp + 0x1c], 1
cmp dword [eax + 0x14], 0
je 0x5964ea
mov ebx, dword [eax + 0x18]
jmp 0x5964f8
mov ecx, dword [eax + 4]
push ecx
call fcn.00609413
add esp, 4
mov ebx, eax
call fcn.0057e000
mov edi, dword [ebp + 8]
mov ecx, dword [esi]
add eax, edi
cmp dword [ecx + 0x14], 0
je 0x596521
cmp dword [ecx + 0x18], 0xffffffff
je 0x596530
mov edx, dword [ecx + 0x1c]
cmp edx, eax
mov dword [ecx + 0x18], eax
ja 0x59651c
mov eax, edx
mov dword [ecx + 0x18], eax
jmp 0x596530
mov edx, dword [ecx + 4]
push 0
push eax
push edx
call fcn.006081d8
add esp, 0xc
push edi
mov ecx, esi
call fcn.00595be0
test eax, eax
jne 0x596581
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
cmp dword [eax + 0x14], 0
lea ecx, [ebx + 4]
je 0x596562
cmp dword [eax + 0x18], 0xffffffff
je 0x596571
mov edx, dword [eax + 0x1c]
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x59655d
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x596571
push 0
push ecx
mov ecx, dword [eax + 4]
push ecx
call fcn.006081d8
add esp, 0xc
cmp dword [esp + 0x1c], 0
jne 0x5964d4
sub dword [esp + 0x1c], 1
mov esi, dword [esp + 0x10]
mov esi, dword [esi]
cmp dword [esi + 0x14], 0
je 0x597b2d
cmp dword [esi + 0x18], 0xffffffff
je 0x597b40
mov eax, dword [esp + 0x4c]
mov ecx, dword [esi + 0x1c]
cmp ecx, eax
mov dword [esi + 0x18], eax
ja 0x5965ab
mov eax, ecx
mov dword [esi + 0x18], eax
jmp 0x597b40
mov edx, dword [str.Sarnoff]
mov dword [esi + 0x215], edx
mov eax, dword [0x6b6208]
mov dword [esi + 0x219], eax
mov dword [esi + 0x3ac], 0xfff
jmp case.0x5978c2.64773
xor edi, edi
jmp 0x5965e4
mov esi, dword [esp + 0x10]
call fcn.0057df50
add edi, 1
shr eax, 2
and eax, 0xfff
cmp edi, 4
mov dword [esp + edi*4 + 0x64], eax
jl 0x5965e0
xor ecx, ecx
nop
mov esi, dword [esp + ecx*4 + 0x64]
add esi, 1
cmp esi, dword [esp + ecx*4 + 0x68]
ja 0x596642
mov eax, dword [esp + ecx*4 + 0x68]
mov edx, dword [esp + 0x10]
mov edi, 1
sub eax, esi
shl edi, cl
lea edx, [edx + esi*2 + 0x55c]
add eax, 1
jmp 0x596630
mov si, word [edx - 2]
add si, di
mov word [edx], si
add edx, 2
sub eax, 1
jne 0x596630
add ecx, 1
cmp ecx, 5
jl 0x596600
jmp 0x596581
cmp edi, 0x827d
ja 0x596839
je 0x5967c4
cmp edi, 0x7250
ja 0x5966c7
je 0x5966ab
sub edi, 0x7200
je 0x59669d
sub edi, 1
je 0x59668f
sub edi, 0x20
jne case.0x5978c2.64773
call fcn.0057e000
mov dword [esp + 0x44], eax
jmp case.0x5978c2.64773
call fcn.0057e000
mov dword [esp + 0x38], eax
jmp case.0x5978c2.64773
call fcn.0057e000
mov dword [esp + 0x48], eax
jmp case.0x5978c2.64773
mov eax, dword [esi]
call fcn.00410270
push eax
push esi
call fcn.005989b0
mov word [esi + 0x45e], 0
jmp case.0x5978c2.64773
sub edi, 0x7303
je 0x596788
sub edi, 0x10
jne case.0x5978c2.64773
lea edi, [esi + 0x205c8]
mov ebx, 4
jmp 0x5966f4
mov esi, dword [esp + 0x10]
call fcn.0057df50
movzx eax, ax
mov dword [esp + 0x20], eax
add edi, 4
sub ebx, 1
fild dword [esp + 0x20]
fstp dword [edi - 4]
jne 0x5966f0
fld dword [0x6c1040]
mov ecx, dword [esp + 0x10]
fld st(0)
fcomp dword [ecx + 0x205cc]
fnstsw ax
test ah, 0x44
jp 0x59673a
fcomp dword [ecx + 0x205d0]
fnstsw ax
test ah, 0x44
jp 0x59673c
lea eax, [ebx + 1]
jmp 0x59673e
fstp st(0)
xor eax, eax
add eax, eax
fld dword [ecx + eax*4 + 0x205c8]
mov esi, ecx
fadd dword [ecx + eax*4 + 0x205cc]
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fst dword [ecx + eax*4 + 0x205c8]
fsub dword [ecx + eax*4 + 0x205cc]
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fst dword [ecx + eax*4 + 0x205cc]
fsubr dword [ecx + eax*4 + 0x205c8]
fstp dword [ecx + eax*4 + 0x205c8]
jmp case.0x5978c2.64773
xor edi, edi
lea ebx, [ebx]
call fcn.0057df50
xor edx, edx
cmp edi, 2
setl dl
movzx ecx, ax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], ecx
mov esi, eax
xor edx, edi
fild dword [esp + 0x20]
add edi, 1
cmp edi, 4
fstp dword [eax + edx*4 + 0x205c8]
jl 0x596790
jmp case.0x5978c2.64773
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
lea edi, [esi + 0x295]
je 0x596109
test edi, edi
je case.0x5978c2.64773
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x1c]
cmp edx, ecx
jae case.0x5978c2.64773
cmp ecx, 0x3f
mov dword [esp + 0x14], 0x3f
jb 0x596800
lea ebx, [edx + 0x3f]
cmp ebx, ecx
jbe 0x596806
sub ecx, edx
mov dword [esp + 0x14], ecx
xor ecx, ecx
cmp dword [esp + 0x14], ecx
jbe 0x596830
mov edi, edi
mov ebx, dword [eax + 0x18]
mov edx, dword [eax + 0x14]
mov dl, byte [edx + ebx]
mov byte [edi + ecx], dl
add dword [eax + 0x18], 1
add ecx, 1
cmp ecx, dword [esp + 0x14]
jae 0x596830
cmp byte [edi + ecx - 1], 0xa
jne 0x596810
mov byte [edi + ecx], 0
jmp case.0x5978c2.64773
cmp edi, 0x829a
ja 0x5968c5
je 0x59689d
sub edi, 0x828e
je case.0x5978c2.64777
sub edi, 2
jne case.0x5978c2.64773
call fcn.0057e000
mov edi, dword [esp + 0x10]
mov esi, dword [ebp + 8]
mov ecx, dword [edi]
add eax, esi
cmp dword [ecx + 0x14], 0
je 0x5979fa
cmp dword [ecx + 0x18], 0xffffffff
je 0x597a09
mov edx, dword [ecx + 0x1c]
cmp edx, eax
mov dword [ecx + 0x18], eax
ja 0x59688c
mov eax, edx
push esi
push edi
mov dword [ecx + 0x18], eax
call fcn.005957b0
mov esi, edi
jmp case.0x5978c2.64773
mov eax, dword [esp + 0x18]
push eax
push esi
lea ecx, [esp + 0x108]
call fcn.0057e0b0
mov ecx, dword [eax]
mov dword [esi + 0x20670], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x20674], edx
jmp case.0x5978c2.64773
cmp edi, 0x829d
je 0x5968de
cmp edi, 0x85ff
je 0x5969ad
jmp case.0x5978c2.64773
mov eax, dword [esp + 0x18]
push eax
push esi
lea ecx, [esp + 0xf8]
call fcn.0057e0b0
mov ecx, dword [eax]
mov dword [esi + 0x20678], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x2067c], edx
jmp case.0x5978c2.64773
xor edi, edi
call fcn.0057df50
movzx eax, ax
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x10]
mov ecx, edi
fild dword [esp + 0x20]
xor ecx, 1
add edi, 1
cmp edi, 4
fdivr qword [0x6c12b8]
mov esi, edx
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fstp dword [edx + ecx*4 + 0x205c8]
jl 0x596908
jmp case.0x5978c2.64773
cmp edi, 0xc612
ja 0x5971f6
je 0x59713f
cmp edi, 0x9209
ja 0x596c4c
je 0x596c2f
cmp edi, 0x8822
ja 0x596b83
je 0x596b70
cmp edi, 0x8769
ja 0x596b48
je 0x596af2
sub edi, 0x8603
je 0x5969c9
sub edi, 3
jne case.0x5978c2.64773
mov eax, dword [esi]
call fcn.00410270
push eax
mov ecx, esi
call fcn.005951a0
mov eax, dword [str.Leaf]
mov dword [esi + 0x215], eax
mov cl, byte [0x6b621c]
mov byte [esi + 0x219], cl
jmp case.0x5978c2.64773
mov edi, dword [esi]
cmp dword [edi + 0x14], 0
je 0x5969e4
mov eax, 7
lea ebx, [esp + 0x260]
call fcn.00410220
jmp 0x596a00
mov edi, dword [edi + 4]
test edi, edi
je 0x596a00
push edi
push 7
lea edx, [esp + 0x268]
push 1
push edx
call fcn.0060860a
add esp, 0x10
push 6
lea eax, [esp + 0x264]
push str.MATRIX
push eax
call fcn.00609774
add esp, 0xc
test eax, eax
jne case.0x5978c2.64773
xor ebx, ebx
lea ecx, [esi + 0x20618]
mov dword [esi + 0x47c], 4
mov dword [esi + 0x3b4], ebx
mov dword [esp + 0x14], ecx
jmp 0x596a40
xor edi, edi
mov eax, dword [esi]
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x596a67
mov edx, edi
xor edx, 1
add edx, ebx
lea eax, [esi + edx*4 + 0x20618]
push eax
push 0x6aa608
push ecx
call fcn.006094e9
jmp 0x596a99
neg ecx
sbb ecx, ecx
not ecx
test eax, ecx
je 0x596a9c
mov edx, edi
xor edx, 1
add edx, ebx
lea ecx, [esi + edx*4 + 0x20618]
mov edx, dword [eax + 0x14]
neg edx
sbb edx, edx
not edx
push ecx
and edx, eax
mov eax, dword [edx + 4]
push 0x6aa608
push eax
call fcn.0061c8da
add esp, 0xc
add edi, 1
cmp edi, 4
jl 0x596a42
cmp dword [esi + 0x2059c], 0
je 0x596adc
mov edx, dword [esp + 0x14]
fldz
mov eax, edx
mov ecx, 4
fadd dword [eax]
add eax, 4
sub ecx, 1
jne 0x596aba
mov eax, edx
mov ecx, 4
fld dword [eax]
add eax, 4
sub ecx, 1
fdiv st(1)
fstp dword [eax - 4]
jne 0x596acb
fstp st(0)
add dword [esp + 0x14], 0x10
add ebx, 4
cmp ebx, 0xc
jl 0x596a40
jmp case.0x5978c2.64773
call fcn.0057e000
mov edi, dword [esp + 0x10]
mov esi, dword [ebp + 8]
mov ecx, dword [edi]
add eax, esi
cmp dword [ecx + 0x14], 0
je 0x596b2b
cmp dword [ecx + 0x18], 0xffffffff
je 0x596b3a
mov edx, dword [ecx + 0x1c]
cmp edx, eax
mov dword [ecx + 0x18], eax
ja 0x596b1a
mov eax, edx
push esi
push edi
mov dword [ecx + 0x18], eax
call fcn.00594a80
mov esi, edi
jmp case.0x5978c2.64773
mov ecx, dword [ecx + 4]
push 0
push eax
push ecx
call fcn.006081d8
add esp, 0xc
push esi
push edi
call fcn.00594a80
mov esi, edi
jmp case.0x5978c2.64773
cmp edi, 0x8773
jne case.0x5978c2.64773
mov eax, dword [esi]
call fcn.00410270
mov dword [esi + 0x354], eax
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x360], eax
jmp case.0x5978c2.64773
call fcn.0057df50
mov edx, esi
mov word [edx + 0x2065c], ax
jmp case.0x5978c2.64773
cmp edi, 0x8825
je 0x596bd9
cmp edi, 0x9102
je 0x596bc7
cmp edi, 0x9206
jne case.0x5978c2.64773
mov eax, dword [esp + 0x18]
push eax
push esi
lea ecx, [esp + 0x110]
call fcn.0057e0b0
mov ecx, dword [eax]
mov dword [esi + 0x20660], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x20664], edx
jmp case.0x5978c2.64773
call fcn.0057e000
mov ecx, esi
mov dword [ecx + 0x334], eax
jmp case.0x5978c2.64773
call fcn.0057e000
mov edi, dword [esp + 0x10]
mov esi, dword [ebp + 8]
mov ecx, dword [edi]
add eax, esi
cmp dword [ecx + 0x14], 0
je 0x596c12
cmp dword [ecx + 0x18], 0xffffffff
je 0x596c21
mov edx, dword [ecx + 0x1c]
cmp edx, eax
mov dword [ecx + 0x18], eax
ja 0x596c01
mov eax, edx
push esi
push edi
mov dword [ecx + 0x18], eax
call fcn.00594ea0
mov esi, edi
jmp case.0x5978c2.64773
mov edx, dword [ecx + 4]
push 0
push eax
push edx
call fcn.006081d8
add esp, 0xc
push esi
push edi
call fcn.00594ea0
mov esi, edi
jmp case.0x5978c2.64773
call fcn.0057df50
movzx eax, ax
mov dword [esp + 0x20], eax
mov ecx, esi
fild dword [esp + 0x20]
fstp dword [ecx + 0x318]
jmp case.0x5978c2.64773
cmp edi, 0xb4c7
ja 0x596fb1
je 0x596d61
cmp edi, 0x9218
ja 0x596d16
je 0x596cbc
sub edi, 0x920a
je 0x596c94
sub edi, 7
jne case.0x5978c2.64773
mov edx, dword [esp + 0x18]
push edx
mov eax, esi
call fcn.0057e090
mov dword [esi + 0x330], eax
jmp case.0x5978c2.64773
mov eax, dword [esp + 0x18]
push eax
push esi
lea ecx, [esp + 0x100]
call fcn.0057e0b0
mov ecx, dword [eax]
mov dword [esi + 0x20668], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x2066c], edx
jmp case.0x5978c2.64773
lea eax, [esi + 0x20618]
mov dword [esi + 0x3b4], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], 3
mov ecx, dword [esp + 0x18]
push ecx
push esi
call fcn.0057e2f0
fstp st(0)
mov edi, dword [esp + 0x14]
mov ebx, 3
mov edi, edi
mov edx, dword [esp + 0x18]
push edx
push esi
call fcn.0057e2f0
fstp dword [edi]
add edi, 4
sub ebx, 1
jne 0x596cf0
add dword [esp + 0x14], 0x10
sub dword [esp + 0x20], 1
jne 0x596cd8
jmp case.0x5978c2.64773
cmp edi, 0xb4c3
jne case.0x5978c2.64773
mov eax, dword [str.Imacon]
mov dword [esi + 0x215], eax
mov cx, word [0x6b6224]
mov eax, dword [esi]
mov word [esi + 0x219], cx
mov dl, byte [0x6b6226]
mov byte [esi + 0x21b], dl
call fcn.00410270
mov dword [esi + 0x348], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x5c], eax
jmp case.0x5978c2.64773
cmp dword [esp + 0x5c], 0
je case.0x5978c2.64773
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
je 0x596d90
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x596da0
mov edx, dword [eax + 0x1c]
add ecx, 0x4e
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x596d8b
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x596da0
mov ecx, dword [eax + 4]
push 1
push 0x4e
push ecx
call fcn.006081d8
add esp, 0xc
call fcn.0057e000
mov word [esi + 0x45e], ax
call fcn.0057e000
mov word [esi + 0x45c], ax
call fcn.0057e000
and eax, 7
mov word [esi + 0x466], ax
call fcn.0057e000
mov dx, word [esi + 0x45e]
and eax, 7
sub dx, ax
sub dx, word [esi + 0x466]
mov word [esi + 0x462], dx
call fcn.0057e000
and eax, 7
mov word [esi + 0x464], ax
call fcn.0057e000
mov cx, word [esi + 0x45c]
and eax, 7
sub cx, ax
sub cx, word [esi + 0x464]
cmp word [esi + 0x45e], 0x1c5e
mov word [esi + 0x460], cx
jne 0x596e3c
mov word [esi + 0x460], 0x1544
mov word [esi + 0x462], 0x1c4c
mov word [esi + 0x466], 7
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
je 0x596e60
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x596e70
mov edx, dword [eax + 0x1c]
add ecx, 0x34
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x596e5b
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x596e70
mov edx, dword [eax + 4]
push 1
push 0x34
push edx
call fcn.006081d8
add esp, 0xc
lea edi, [esi + 0x205c8]
mov ebx, 3
jmp 0x596e80
call fcn.0057e000
mov dword [esp + 0x20], eax
fld dword [esp + 0x20]
add edi, 4
sub ebx, 1
fstp dword [edi - 4]
jne 0x596e80
mov eax, dword [esi]
cmp dword [eax + 0x14], ebx
je 0x596ebb
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x596ecb
mov edx, dword [eax + 0x1c]
add ecx, 0x72
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x596eb6
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x596ecb
mov eax, dword [eax + 4]
push 1
push 0x72
push eax
call fcn.006081d8
add esp, 0xc
call fcn.0057df50
movzx edi, word [esi + 0x462]
movzx ebx, word [esi + 0x460]
movzx ecx, bx
movzx edx, di
movzx eax, ax
imul ecx, edx
shr eax, 7
imul eax, eax, 0x5a
lea ecx, [ecx + ecx*2]
add ecx, ecx
cmp ecx, dword [esp + 0x5c]
mov dword [esi + 0x474], eax
jne 0x596f3b
cdq
mov ecx, 0xb4
idiv ecx
cmp edx, 0x5a
jne 0x596f2d
lea eax, [ebx + edi]
mov word [esi + 0x462], ax
sub ax, word [esi + 0x460]
sub word [esi + 0x462], ax
mov word [esi + 0x460], ax
xor eax, eax
mov dword [esi + 0x474], eax
mov dword [esi + 0x338], eax
movzx edx, word [esi + 0x462]
movzx ecx, word [esi + 0x460]
imul ecx, edx
mov eax, 0x431bde83
imul ecx
sar edx, 0x12
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
lea ecx, [esi + 0x255]
push str.Ixpress__d_Mp
push ecx
call fcn.0061acf0
add esp, 0xc
cmp dword [esi + 0x338], 0
mov dword [esi + 0x9692c], 0x585610
je 0x596fa2
test byte [esi + 0x466], 1
je 0x596f98
mov dword [esi + 0x338], 0x61616161
mov dword [esi + 0x9692c], fcn.00585b30
mov dword [esi + 0x3ac], 0xffff
jmp case.0x5978c2.64773
lea eax, [edi - 0xc516]
cmp eax, 5
ja case.0x5978c2.64773
jmp dword [eax*4 + 0x598068]
mov edx, dword [esp + 0x1c]
push edx
call fcn.0045d550
mov ebx, eax
add esp, 4
test ebx, ebx
je case.0x5978c2.64773
mov edi, dword [esi]
cmp dword [edi + 0x14], 0
je 0x596ff1
mov eax, dword [esp + 0x1c]
call fcn.00410220
jmp 0x597009
mov edi, dword [edi + 4]
test edi, edi
je 0x597009
mov eax, dword [esp + 0x1c]
push edi
push eax
push 1
push ebx
call fcn.0060860a
add esp, 0x10
lea edi, [ebx - 1]
test edi, edi
je 0x59706f
mov ecx, dword [esp + 0x1c]
lea edx, [ebx + ecx]
mov dword [esp + 0x20], edx
cmp edi, dword [esp + 0x20]
jae 0x59706f
push 8
add edi, 1
push str.Neutral
push edi
call fcn.00609774
add esp, 0xc
test eax, eax
jne 0x59705e
lea eax, [esi + 0x205d0]
push eax
lea ecx, [esi + 0x205cc]
push ecx
lea edx, [esi + 0x205c8]
push edx
lea eax, [edi + 8]
push str._f__f__f
push eax
call fcn.006094e9
add esp, 0x14
push 0xa
push edi
call fcn.00609090
mov edi, eax
add esp, 8
test edi, edi
jne 0x59701b
push ebx
call fcn.0045da90
add esp, 4
jmp case.0x5978c2.64773
cmp byte [esi + 0x215], 0
jne case.0x5978c2.64773
mov ecx, dword [str.Hasselblad]
mov dword [esi + 0x215], ecx
mov edx, dword [0x6b6254]
mov dword [esi + 0x219], edx
mov ax, word [0x6b6258]
mov word [esi + 0x21d], ax
mov cl, byte [0x6b625a]
mov byte [esi + 0x21f], cl
jmp case.0x5978c2.64773
mov eax, dword [esi]
movsx ebx, word [esi + 4]
call fcn.00410270
mov edx, dword [esi + 0x378]
mov edi, eax
mov dword [esp + 0x14], edx
call fcn.0057df50
mov word [esi + 4], ax
call fcn.0057df50
call fcn.0057e000
mov ecx, dword [esi]
add eax, edi
cmp dword [ecx + 0x14], 0
je 0x59710b
cmp dword [ecx + 0x18], 0xffffffff
je 0x59711a
mov edx, dword [ecx + 0x1c]
cmp edx, eax
mov dword [ecx + 0x18], eax
ja 0x597106
mov eax, edx
mov dword [ecx + 0x18], eax
jmp 0x59711a
push 0
push eax
mov eax, dword [ecx + 4]
push eax
call fcn.006081d8
add esp, 0xc
push edi
mov ecx, esi
call fcn.00595be0
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x3ac], 0xffff
mov dword [esi + 0x378], ecx
mov word [esi + 4], bx
jmp case.0x5978c2.64773
mov dword [esp + 0x20], 4
mov edi, dword [esi]
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x5971a4
mov eax, dword [edi + 0x1c]
cmp eax, 1
mov dword [esp + 0x14], 1
jb 0x59716a
mov ebx, dword [edi + 0x18]
lea edx, [ebx + 1]
cmp edx, eax
jbe 0x597175
mov ebx, dword [edi + 0x18]
sub eax, ebx
mov dword [esp + 0x14], eax
je 0x59719f
mov eax, dword [esp + 0x14]
push eax
add ecx, ebx
push ecx
lea edx, [esp + 0x3f]
push edx
call fcn.0060d1b0
mov eax, dword [esp + 0x20]
add ebx, eax
add esp, 0xc
cmp eax, 1
mov dword [edi + 0x18], ebx
jne 0x59719f
movzx eax, byte [esp + 0x37]
jmp 0x5971b8
or eax, 0xffffffff
jmp 0x5971b8
mov edi, dword [edi + 4]
test edi, edi
je 0x5971b6
push edi
call fcn.0060963d
add esp, 4
jmp 0x5971b8
xor eax, eax
mov ecx, dword [esi + 0x3c4]
shl ecx, 8
add ecx, eax
sub dword [esp + 0x20], 1
mov dword [esi + 0x3c4], ecx
jne 0x597147
cmp byte [esi + 0x215], 0
jne 0x5971e7
mov dword [esi + 0x215], 0x474e44
mov dword [esi + 0x3c0], 1
jmp case.0x5978c2.64773
cmp edi, 0xf000
ja 0x59772c
je 0x59771c
lea eax, [edi - 0xc616]
cmp eax, 0x79
ja case.0x5978c2.64773
movzx edx, byte [eax + 0x5980c8]
jmp dword [edx*4 + 0x598080]
mov eax, dword [esp + 0x1c]
cmp eax, 4
jbe 0x597237
mov eax, 4
mov dword [esp + 0x1c], eax
mov edi, dword [esi]
mov dword [esi + 0x47c], eax
cmp dword [edi + 0x14], 0
je 0x597253
lea ebx, [esp + 0x2c]
call fcn.00410220
jmp 0x597985
mov edi, dword [edi + 4]
test edi, edi
je 0x597985
push edi
push eax
lea ecx, [esp + 0x34]
push 1
push ecx
call fcn.0060860a
add esp, 0x10
jmp 0x597985
call fcn.0057df50
cmp ax, 2
jne 0x596581
mov eax, esi
mov word [eax + 0x46e], 1
mov dword [eax + 0x338], 0x49494949
jmp case.0x5978c2.64773
mov edx, dword [esp + 0x1c]
push edx
mov ebx, esi
call fcn.00595740
jmp case.0x5978c2.64773
call fcn.0057df50
movzx eax, ax
mov dword [esp + 0x60], eax
call fcn.0057df50
movzx ecx, ax
mov dword [esp + 0x58], ecx
jmp case.0x5978c2.64773
mov edi, dword [esp + 0x18]
push edi
push esi
call fcn.0057e2f0
fnstcw word [esp + 0x14]
movzx eax, word [esp + 0x14]
or eax, 0xc00
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x338]
test eax, eax
fldcw word [esp + 0x20]
fistp qword [esp + 0x20]
mov ecx, dword [esp + 0x20]
mov dword [esi + 0x388], ecx
fldcw word [esp + 0x14]
je case.0x5978c2.64773
not eax
test eax, eax
je case.0x5978c2.64773
cmp dword [esp + 0x58], 2
mov dword [esp + 0x88], ecx
jne 0x59732d
push edi
push esi
call fcn.0057e2f0
jmp 0x597334
fild dword [esp + 0x88]
call fcn.0066a3f0
mov ebx, dword [esp + 0x60]
cmp ebx, 2
mov dword [esp + 0x8c], eax
jne 0x597352
push edi
push esi
call fcn.0057e2f0
jmp 0x597359
fild dword [esp + 0x88]
call fcn.0066a3f0
cmp dword [esp + 0x58], 2
mov dword [esp + 0x90], eax
jne 0x59737a
cmp ebx, 2
jne 0x59737a
push edi
push esi
call fcn.0057e2f0
jmp 0x597381
fild dword [esp + 0x8c]
call fcn.0066a3f0
cmp dword [esi + 0x47c], 3
mov dword [esp + 0x94], eax
jne 0x5973c2
mov eax, dword [esi + 0x338]
mov ecx, eax
and ecx, 0xe2222222
mov edx, eax
shr edx, 2
add ecx, ecx
and edx, 0x22222222
add ecx, ecx
or edx, ecx
lea ecx, [eax + eax]
and edx, ecx
or edx, eax
mov dword [esi + 0x338], edx
xor eax, eax
mov edx, dword [esi + 0x338]
lea ecx, [eax + eax]
shr edx, cl
mov ecx, dword [esp + eax*4 + 0x88]
add eax, 1
and edx, 3
cmp eax, 4
mov dword [esi + edx*4 + 0x38c], ecx
jl 0x5973c4
mov dword [esi + 0x388], 0
jmp case.0x5978c2.64773
fldz
mov edi, dword [esp + 0x1c]
test edi, edi
fst qword [esp + 0x20]
jbe 0x59742a
mov ebx, dword [esp + 0x18]
lea esp, [esp]
push ebx
fstp st(0)
push esi
call fcn.0057e2f0
fadd qword [esp + 0x20]
sub edi, 1
fst qword [esp + 0x20]
jne 0x597410
mov edi, dword [esp + 0x1c]
test edi, edi
mov dword [esp + 0x20], edi
fild dword [esp + 0x20]
jge 0x59743c
fadd qword [0x6c0c98]
fdivp st(1)
mov edx, dword [esi + 0x388]
test edx, edx
fadd qword [0x69f210]
fild dword [esi + 0x388]
jge 0x59745a
fadd qword [0x6c0c98]
fnstcw word [esp + 0x14]
movzx eax, word [esp + 0x14]
faddp st(1)
or eax, 0xc00
mov dword [esp + 0x20], eax
fldcw word [esp + 0x20]
fistp qword [esp + 0x20]
mov eax, dword [esp + 0x20]
mov dword [esi + 0x388], eax
fldcw word [esp + 0x14]
jmp case.0x5978c2.64773
mov ecx, dword [esp + 0x18]
push ecx
mov eax, esi
call fcn.0057e090
mov dword [esi + 0x3ac], eax
jmp case.0x5978c2.64773
mov edi, dword [esp + 0x18]
push edi
push esi
call fcn.0057e2f0
fstp qword [esi + 0x480]
push edi
push esi
call fcn.0057e2f0
fdivr qword [esi + 0x480]
fstp qword [esi + 0x480]
jmp case.0x5978c2.64773
cmp dword [esi + 0x47c], 0
mov dword [esp + 0x14], 0
jle 0x59750e
lea edi, [esp + 0x1f0]
mov ebx, 3
mov edx, dword [esp + 0x18]
push edx
push esi
call fcn.0057e2f0
fstp qword [edi]
add edi, 8
sub ebx, 1
jne 0x5974e6
mov eax, dword [esp + 0x14]
add eax, 1
cmp eax, dword [esi + 0x47c]
mov dword [esp + 0x14], eax
jl 0x5974e1
mov dword [esp + 0x54], 1
jmp case.0x5978c2.64773
cmp dword [esi + 0x47c], 0
mov dword [esp + 0x20], 0
jle case.0x5978c2.64773
lea eax, [esp + 0x170]
mov dword [esp + 0x14], eax
jmp 0x597540
xor edi, edi
cmp dword [esi + 0x47c], edi
jle 0x59756b
mov ebx, dword [esp + 0x14]
mov edi, edi
mov ecx, dword [esp + 0x18]
push ecx
push esi
call fcn.0057e2f0
fstp qword [ebx]
add edi, 1
add ebx, 8
cmp edi, dword [esi + 0x47c]
jl 0x597550
mov eax, dword [esp + 0x20]
add dword [esp + 0x14], 0x20
add eax, 1
cmp eax, dword [esi + 0x47c]
mov dword [esp + 0x20], eax
jl 0x597540
jmp case.0x5978c2.64773
xor edi, edi
cmp dword [esi + 0x47c], edi
jle case.0x5978c2.64773
mov ebx, dword [esp + 0x18]
lea ebx, [ebx]
push ebx
push esi
call fcn.0057e2f0
fstp qword [esp + edi*8 + 0xd0]
add edi, 1
cmp edi, dword [esi + 0x47c]
jl 0x5975a0
jmp case.0x5978c2.64773
xor edi, edi
cmp dword [esi + 0x47c], edi
jle case.0x5978c2.64773
mov ebx, dword [esp + 0x18]
push ebx
push esi
call fcn.0057e2f0
fstp qword [esp + edi*8 + 0xb0]
add edi, 1
cmp edi, dword [esi + 0x47c]
jl 0x5975d0
jmp case.0x5978c2.64773
mov edi, dword [esp + 0x18]
push edi
push esi
call fcn.0057e2f0
fstp qword [esp + 0x98]
push edi
push esi
call fcn.0057e2f0
fst qword [esp + 0xa0]
fld1
lea ecx, [esp + 0x98]
fsub qword [esp + 0x98]
mov eax, 0x698f50
fsubrp st(1)
fstp qword [esp + 0xa8]
lea esp, [esp]
fld dword [eax]
add eax, 4
fdivr qword [ecx]
add ecx, 8
cmp eax, 0x698f5c
fstp qword [ecx - 8]
jl 0x597630
jmp case.0x5978c2.64773
cmp dword [esi + 0x3c4], 0
jne case.0x5978c2.64773
call fcn.0057e000
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x10]
mov esi, eax
add esi, ebx
push esi
push edi
call fcn.005989b0
mov eax, dword [edi]
cmp dword [eax + 0x14], 0
je 0x597699
cmp dword [eax + 0x18], 0xffffffff
je 0x5976a8
mov ecx, dword [eax + 0x1c]
cmp ecx, esi
mov dword [eax + 0x18], esi
jbe 0x597687
mov ecx, esi
mov dword [eax + 0x18], ecx
push ebx
mov ecx, edi
call fcn.00595be0
mov esi, edi
jmp case.0x5978c2.64773
mov edx, dword [eax + 4]
push 0
push esi
push edx
call fcn.006081d8
add esp, 0xc
push ebx
mov ecx, edi
call fcn.00595be0
mov esi, edi
jmp case.0x5978c2.64773
push 3
lea eax, [esi + 0x2055c]
call fcn.0057e5c0
jmp case.0x5978c2.64773
mov edi, dword [esp + 0x18]
push edi
mov eax, esi
call fcn.0057e090
mov word [esi + 0x464], ax
push edi
mov eax, esi
call fcn.0057e090
mov word [esi + 0x466], ax
push edi
mov eax, esi
call fcn.0057e090
sub ax, word [esi + 0x464]
push edi
mov word [esi + 0x460], ax
mov eax, esi
call fcn.0057e090
sub ax, word [esi + 0x466]
mov word [esi + 0x462], ax
jmp case.0x5978c2.64773
mov eax, dword [ebp + 8]
push eax
mov ecx, esi
call fcn.00595be0
jmp case.0x5978c2.64773
cmp edi, 0xf00e
ja 0x5978aa
je 0x597850
lea eax, [edi - 0xf001]
cmp eax, 7
ja case.0x5978c2.64773
jmp dword [eax*4 + 0x598144]
mov ecx, dword [esp + 0x18]
push ecx
mov eax, esi
call fcn.0057e090
mov ecx, dword [esp + 0x28]
lea edx, [ecx + ecx*8]
mov dword [esi + edx*4 + 0x9c988], eax
jmp case.0x5978c2.64773
mov eax, dword [esp + 0x18]
push eax
mov eax, esi
call fcn.0057e090
mov ecx, dword [esp + 0x28]
lea ecx, [ecx + ecx*8]
mov dword [esi + ecx*4 + 0x9c98c], eax
jmp case.0x5978c2.64773
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
lea edx, [eax + eax*8]
mov eax, dword [esp + 0x1c]
and eax, 7
lea edi, [esi + edx*4]
mov dword [edi + 0x9c9a4], eax
push ecx
mov eax, esi
call fcn.0057e090
mov dword [edi + 0x9c990], eax
jmp case.0x5978c2.64773
push 0
push eax
mov eax, dword [ecx + 4]
push eax
call fcn.006081d8
add esp, 0xc
push 1
lea ecx, [esp + 0x114]
push ecx
push edi
call fcn.00580280
test eax, eax
je 0x596581
mov eax, dword [esp + 0x11c]
mov edx, dword [esp + 0x118]
xor ecx, ecx
cmp eax, 2
sete cl
shl edx, cl
mov ecx, dword [esp + 0x114]
mov dword [esi + 0x9c994], 6
mov dword [esi + 0x9c98c], ecx
mov dword [esi + 0x9c988], edx
mov edx, dword [esp + 0x110]
mov dword [esi + 0x9c990], edx
mov dword [esi + 0x9c9a4], eax
mov esi, edi
jmp case.0x5978c2.64773
call fcn.0057e000
mov ecx, dword [esp + 0x28]
lea ecx, [ecx + ecx*8 + 0x2726a]
mov edx, esi
mov dword [edx + ecx*4], eax
jmp case.0x5978c2.64773
mov ebx, dword [esp + 0x18]
mov edi, 4
lea esp, [esp]
cmp ebx, 3
jne 0x59786f
call fcn.0057df50
movzx eax, ax
jmp 0x597874
call fcn.0057e000
test eax, eax
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
jge 0x597886
fadd dword [0x6c0a38]
mov eax, edi
cdq
mov ecx, 3
idiv ecx
mov eax, dword [esp + 0x10]
sub edi, 1
cmp edi, 1
mov esi, eax
fstp dword [eax + edx*4 + 0x205c8]
jg 0x597860
jmp case.0x5978c2.64773
lea eax, [edi - 0xfd04]
cmp eax, 0xfe
ja case.0x5978c2.64773
movzx ecx, byte [eax + 0x598178]
jmp dword [ecx*4 + 0x598164]
mov eax, dword [esp + 0x1c]
cmp eax, 0x10
mov dword [esp + 0x30], eax
jbe 0x5978de
mov dword [esp + 0x30], 0x10
mov edi, dword [esi]
cmp dword [edi + 0x14], 0
je 0x5978f8
mov eax, dword [esp + 0x30]
lea ebx, [esp + 0x250]
call fcn.00410220
jmp 0x597917
mov edi, dword [edi + 4]
test edi, edi
je 0x597917
mov edx, dword [esp + 0x30]
push edi
push edx
lea eax, [esp + 0x258]
push 1
push eax
call fcn.0060860a
add esp, 0x10
xor edi, edi
xor edx, edx
cmp dword [esp + 0x30], edi
mov dword [esi + 0x47c], edi
jbe 0x597985
xor ebx, ebx
lea esp, [esp]
mov cl, byte [esp + edx + 0x250]
mov eax, 1
shl eax, cl
mov ecx, eax
and ecx, edi
neg ecx
sbb ecx, ecx
add ecx, 1
add edx, 1
add ebx, ecx
or edi, eax
cmp edx, dword [esp + 0x30]
jb 0x597930
cmp edi, 0x38
mov dword [esi + 0x47c], ebx
jne 0x597978
mov dx, word [0x6b620c]
mov al, byte [0x6b620e]
mov word [esp + 0x2c], dx
mov byte [esp + 0x2e], al
jmp 0x597985
cmp edi, 0x3a
jne 0x597985
mov dword [esp + 0x2c], 0x1040305
xor eax, eax
cmp dword [esi + 0x47c], eax
jle 0x5979b3
mov ecx, dword [esi + 0x47c]
jmp 0x5979a0
movzx edx, byte [esp + eax + 0x2c]
mov byte [esp + edx + 0x2a0], al
add eax, 1
cmp eax, ecx
jl 0x5979a0
mov ebx, dword [esp + 0x30]
mov byte [esi + eax + 0x10], 0
mov edi, dword [esi + 0x338]
mov ecx, 0x10
sub ecx, 1
xor edx, edx
mov eax, ecx
div ebx
movzx eax, byte [esp + edx + 0x250]
movzx edx, byte [esp + eax + 0x2a0]
lea eax, [edi*4]
or edx, eax
test ecx, ecx
mov edi, edx
jne 0x5979c7
mov dword [esi + 0x338], edi
jmp case.0x5978c2.64773
mov ecx, dword [ecx + 4]
push 0
push eax
push ecx
call fcn.006081d8
add esp, 0xc
push esi
push edi
call fcn.005957b0
mov esi, edi
jmp case.0x5978c2.64773
cmp dword [esp + 0x1c], 0xd
jb case.0x5978c2.64773
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
je 0x597a46
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x597a56
mov edx, dword [eax + 0x1c]
add ecx, 0x10
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x597a41
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x597a56
mov edx, dword [eax + 4]
push 1
push 0x10
push edx
call fcn.006081d8
add esp, 0xc
call fcn.0057e000
mov dword [esi + 0x348], eax
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
je 0x597a85
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x597a95
mov edx, dword [eax + 0x1c]
add ecx, 0x1c
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x597a80
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x597a95
mov eax, dword [eax + 4]
push 1
push 0x1c
push eax
call fcn.006081d8
add esp, 0xc
call fcn.0057e000
add dword [esi + 0x348], eax
mov dword [esi + 0x9692c], 0x585670
jmp case.0x5978c2.64773
cmp dword [esp + 0x18], 2
jne case.0x5978c2.64773
mov eax, dword [esi]
cmp dword [eax + 0x14], 0
lea edi, [esi + 0x295]
je 0x596109
test edi, edi
je case.0x5978c2.64773
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x1c]
cmp edx, ecx
jae case.0x5978c2.64773
cmp ecx, 0x3f
mov dword [esp + 0x14], 0x3f
jb 0x597af6
lea ebx, [edx + 0x3f]
cmp ebx, ecx
jbe 0x597afc
sub ecx, edx
mov dword [esp + 0x14], ecx
xor ecx, ecx
cmp dword [esp + 0x14], ecx
jbe 0x597b24
mov ebx, dword [eax + 0x18]
mov edx, dword [eax + 0x14]
mov dl, byte [edx + ebx]
mov byte [ecx + edi], dl
add dword [eax + 0x18], 1
add ecx, 1
cmp ecx, dword [esp + 0x14]
jae 0x597b24
cmp byte [ecx + edi - 1], 0xa
jne 0x597b04
mov byte [ecx + edi], 0
jmp case.0x5978c2.64773
mov eax, dword [esp + 0x4c]
mov ecx, dword [esi + 4]
push 0
push eax
push ecx
call fcn.006081d8
add esp, 0xc
cmp dword [esp + 0x50], 0
jne 0x595d61
mov esi, dword [esp + 0x38]
xor edi, edi
cmp esi, edi
je 0x597c97
push esi
call fcn.0045d550
mov ebx, eax
add esp, 4
cmp ebx, edi
je 0x597c97
mov edx, dword [esp + 0x10]
mov eax, dword [edx]
cmp dword [eax + 0x14], edi
je 0x597b92
cmp dword [eax + 0x18], 0xffffffff
je 0x597ba4
mov edx, dword [esp + 0x48]
mov ecx, dword [eax + 0x1c]
cmp ecx, edx
mov dword [eax + 0x18], edx
jbe 0x597b8d
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x597ba4
mov ecx, dword [esp + 0x48]
mov edx, dword [eax + 4]
push edi
push ecx
push edx
call fcn.006081d8
add esp, 0xc
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
cmp dword [ecx + 0x14], edi
je 0x597bbc
mov eax, esi
mov edi, ecx
call fcn.00410220
xor edi, edi
jmp 0x597bd0
mov ecx, dword [ecx + 4]
cmp ecx, edi
je 0x597bd0
push ecx
push 1
push esi
push ebx
call fcn.0060860a
add esp, 0x10
mov eax, dword [esp + 0x44]
push 1
shr esi, 2
push esi
mov esi, dword [esp + 0x18]
push ebx
call fcn.00589b10
mov ecx, dword [esi]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], edi
mov dword [esp + 0x74], edi
mov dword [esp + 0x7c], edi
mov dword [esp + 0x84], edi
mov eax, 0xa
mov edi, str.Buffer
lea ecx, [esp + 0x84]
mov byte [esp + 0x6d], 0
mov byte [esp + 0x6c], 0
mov dword [esp + 0x70], 2
mov dword [esp + 0x78], ebx
mov dword [esp + 0x80], edx
call fcn.00459750
lea eax, [esp + 0x64]
mov dword [esi], eax
mov eax, dword [esp + 0x48]
neg eax
push eax
mov ecx, esi
call fcn.00595be0
mov ecx, dword [esp + 0x40]
push ebx
mov dword [esi], ecx
call fcn.0045da90
add esp, 4
lea edi, [esp + 0x84]
call fcn.00401700
mov eax, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0x84], 0
je 0x597c8e
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x597c97
lea esi, [esp + 0x64]
call fcn.00457970
lea ebx, [esp + 0x64]
call fcn.00486bd0
mov esi, dword [esp + 0x10]
xor ebx, ebx
cmp dword [esi + 0x47c], ebx
jle 0x597ce3
mov ebx, dword [esi + 0x47c]
lea edi, [esp + 0x170]
lea ecx, [esp + 0xd0]
lea esp, [esp]
mov edx, dword [esi + 0x47c]
mov eax, edi
fld qword [ecx]
add eax, 8
sub edx, 1
fmul qword [eax - 8]
fstp qword [eax - 8]
jne 0x597cc8
add ecx, 8
add edi, 0x20
sub ebx, 1
jne 0x597cc0
cmp dword [esp + 0x54], 0
je 0x597d6f
cmp dword [esi + 0x47c], 0
jle 0x597d63
mov esi, dword [esi + 0x47c]
fldz
lea edx, [esp + 0x170]
mov dword [esp + 0x40], esi
mov dword [esp + 0x38], edx
lea eax, [esp + 0x110]
mov dword [esp + 0x44], esi
xor esi, esi
mov ecx, dword [esp + 0x38]
fst qword [eax]
mov edi, dword [esp + 0x40]
lea edx, [esp + esi + 0x1f0]
fld qword [ecx]
add ecx, 8
fmul qword [edx]
add edx, 0x18
sub edi, 1
fmul qword [esp + esi + 0x98]
fadd qword [eax]
fstp qword [eax]
jne 0x597d2c
add esi, 8
add eax, 8
cmp esi, 0x18
jl 0x597d1b
add dword [esp + 0x38], 0x20
sub dword [esp + 0x44], 1
jne 0x597d19
mov esi, dword [esp + 0x10]
fstp st(0)
lea ecx, [esp + 0x110]
call fcn.0058f910
fldz
fcomp qword [esp + 0xb0]
fnstsw ax
test ah, 0x44
jnp 0x597db5
fldz
xor eax, eax
cmp dword [esi + 0x47c], eax
fstp dword [esi + 0x205d4]
jle 0x597db5
fld1
lea ecx, [esi + 0x205c8]
fld st(0)
add eax, 1
fdiv qword [esp + eax*8 + 0xa8]
add ecx, 4
fstp dword [ecx - 4]
cmp eax, dword [esi + 0x47c]
jl 0x597d99
fstp st(0)
cmp dword [esp + 0x54], 0
jne 0x597deb
xor edx, edx
cmp dword [esi + 0x47c], edx
jle 0x597deb
lea ecx, [esp + 0x170]
lea eax, [esi + 0x205d8]
fld dword [eax]
add edx, 1
fdiv qword [ecx]
add eax, 4
add ecx, 0x28
fstp dword [eax - 4]
cmp edx, dword [esi + 0x47c]
jl 0x597dd3
mov ecx, dword [esp + 0x3a4]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00607d6d
mov esp, ebp
pop ebp
ret 4