Function at 0x4218c0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x10608
call fcn.00488a80
xor eax, eax
push esi
mov esi, ecx
mov ecx, dword [esi + 0x370]
cmp ecx, 0xa
push edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0xa0], 0x10
mov dword [esp + 0xf0], eax
mov dword [esp + 0xd4], eax
mov byte [esp + 0x68], al
mov byte [esp + 0x69], 1
mov byte [esp + 0x6a], 2
mov byte [esp + 0x6b], 3
mov dword [esp + 0x228], eax
mov dword [esp + 0x22c], 0x3ff00000
mov dword [esp + 0x230], eax
mov dword [esp + 0x234], 0x3ff00000
mov dword [esp + 0x238], eax
mov dword [esp + 0x23c], 0x3ff00000
mov dword [esp + 0x240], eax
mov dword [esp + 0x244], 0x3ff00000
mov dword [esp + 0x208], eax
mov dword [esp + 0x20c], eax
mov dword [esp + 0x210], eax
mov dword [esp + 0x214], eax
mov dword [esp + 0x218], eax
mov dword [esp + 0x21c], eax
mov dword [esp + 0x220], eax
mov dword [esp + 0x224], eax
mov dword [esp + 0x188], eax
mov dword [esp + 0x18c], 0x3ff00000
mov dword [esp + 0x190], eax
mov dword [esp + 0x194], 0x3ff00000
mov dword [esp + 0x198], eax
mov dword [esp + 0x19c], 0x3ff00000
mov dword [esp + 0x1d0], eax
mov dword [esp + 0x1d4], eax
mov dword [esp + 0x1d8], eax
mov dword [esp + 0x1dc], eax
mov dword [esp + 0x1e0], eax
mov dword [esp + 0x1e4], 0xfff
mov dword [esp + 0x8c], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xdc], eax
jb 0x421a17
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
mov dword [esp + 0x2c], ecx
inc ecx
mov dword [esi + 0x370], ecx
xor ecx, ecx
lea edi, [esp + 0x3d0]
jmp 0x421a30
xor eax, eax
nop
xor edx, edx
cmp eax, ecx
sete dl
inc eax
add edi, 8
cmp eax, 4
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fstp qword [edi - 8]
jl 0x421a30
inc ecx
cmp ecx, 4
jl 0x421a2d
mov al, 0xff
mov byte [esp + 0x2a], al
mov byte [esp + 0x2b], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x32]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x421a83
mov ah, byte [esp + 0x2b]
mov al, byte [esp + 0x2a]
jmp 0x421a8f
movzx dx, byte [esp + 0x2b]
mov ah, byte [esp + 0x2a]
or eax, edx
movzx eax, ax
cmp eax, 0x200
mov dword [esp + 0xec], eax
jbe 0x421aad
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
test eax, eax
je 0x4228ea
mov edx, dword [esp + 0xec]
mov al, 0xff
mov byte [esp + 0x92], al
mov byte [esp + 0x93], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x9a]
dec edx
push 1
push ecx
mov dword [esp + 0xfc], edx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x92]
push edx
mov ecx, esi
call fcn.004103a0
xor edi, edi
mov di, ax
mov al, 0xff
mov byte [esp + 0x96], al
mov byte [esp + 0x97], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x9e]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x96]
push edx
mov ecx, esi
call fcn.004103a0
movzx eax, ax
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.00410420
mov ecx, dword [esi]
push ecx
mov dword [esp + 0x10], eax
call fcn.00487c33
mov ecx, dword [esp + 0x1c]
add eax, 4
add esp, 4
cmp ecx, 0xe
mov dword [esp + 0xf4], eax
sbb eax, eax
and eax, ecx
movsx edx, byte [eax + str.11124811248488]
sub edx, 0x30
imul edx, dword [esp + 0xc]
cmp edx, 4
jbe 0x421b93
push 0
mov ecx, esi
call fcn.00410420
add eax, dword [ebp + 8]
push eax
mov eax, dword [esi]
push eax
call fcn.00487810
add esp, 0xc
cmp edi, 0x829a
ja 0x42357a
je 0x4233fc
cmp edi, 0x123
ja 0x4221d3
je 0x424ee4
cmp edi, 0x103
ja 0x421fd0
je 0x421f7a
cmp edi, 0x27
ja 0x421dc1
je 0x421d1b
lea eax, [edi - 2]
cmp eax, 0x24
ja case.0x42512d.50730
movzx ecx, byte [eax + 0x425490]
jmp dword [ecx*4 + 0x425478]
cmp dword [esp + 0x18], 3
jne case.0x42512d.50730
cmp dword [esp + 0xc], 1
jne case.0x42512d.50730
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x32], al
mov byte [esp + 0x33], al
lea eax, [esp + 0x32]
push 1
push eax
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x421c3a
mov ah, byte [esp + 0x2b]
mov al, byte [esp + 0x2a]
jmp 0x421c46
movzx cx, byte [esp + 0x2b]
mov ah, byte [esp + 0x2a]
or eax, ecx
xor edx, edx
mov dx, ax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul qword [0x65d980]
fstp dword [esi + edi*8 + 0x84f0]
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
jne case.0x42512d.50730
mov al, 0xff
mov byte [esp + 0x42], al
mov byte [esp + 0x43], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x4a]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x421ca2
mov ah, byte [esp + 0x43]
mov al, byte [esp + 0x42]
jmp 0x421cae
movzx dx, byte [esp + 0x43]
mov ah, byte [esp + 0x42]
or eax, edx
movzx eax, ax
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fstp dword [esi + 0x320]
jmp case.0x42512d.50730
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x40]
push 1
push edx
mov byte [esp + 0x48], al
mov byte [esp + 0x49], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x421cf6
mov ah, byte [esp + 0x39]
mov al, byte [esp + 0x38]
jmp 0x421d02
movzx cx, byte [esp + 0x39]
mov ah, byte [esp + 0x38]
or eax, ecx
xor edx, edx
mov dx, ax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fstp dword [esi + edi*4 + 0x84e8]
jmp case.0x42512d.50730
cmp dword [esp + 0xc], 0x32
jb case.0x42512d.50730
fld dword [esi + 0x8578]
lea edi, [esi + 0x8578]
fcomp dword [0x65c2f0]
fnstsw ax
test ah, 0x44
jp case.0x42512d.50730
mov eax, dword [esi]
push 1
push 0xc
push eax
call fcn.00487810
add esp, 0xc
mov dword [esp + 0x10], 3
lea ebx, [ebx]
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x48]
push 1
push edx
mov byte [esp + 0x50], al
mov byte [esp + 0x51], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x421d92
mov ah, byte [esp + 0x41]
mov al, byte [esp + 0x40]
jmp 0x421d9e
movzx cx, byte [esp + 0x41]
mov ah, byte [esp + 0x40]
or eax, ecx
xor edx, edx
mov dx, ax
mov eax, dword [esp + 0x10]
add edi, 4
dec eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fstp dword [edi - 4]
jne 0x421d60
jmp case.0x42512d.50730
lea eax, [edi - 0x2e]
cmp eax, 0xd4
ja case.0x42512d.50730
movzx eax, byte [eax + 0x4254cc]
jmp dword [eax*4 + 0x4254b8]
cmp dword [esp + 0x18], 7
jne case.0x42512d.50730
mov ecx, dword [esi]
push ecx
call fcn.00487bf7
add esp, 4
cmp eax, 0xff
jne case.0x42512d.50730
mov edx, dword [esi]
push edx
call fcn.00487bf7
add esp, 4
cmp eax, 0xd8
jne case.0x42512d.50730
mov eax, dword [esi]
push eax
call fcn.00487c33
mov ecx, dword [esp + 0x10]
add esp, 4
sub eax, 2
mov dword [esi + 0x344], eax
mov dword [esi + 0x350], ecx
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
jne 0x421e7e
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x7e], al
mov byte [esp + 0x7f], al
lea eax, [esp + 0x7e]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0x76]
push ecx
mov ecx, esi
call fcn.004103a0
mov ecx, dword [esp + 0x2c]
movzx eax, ax
lea edx, [ecx + ecx*8]
mov dword [esi + edx*4 + 0x7f934], eax
jmp case.0x42512d.50730
mov ecx, esi
call fcn.00410420
mov ecx, dword [esp + 0x2c]
lea edx, [ecx + ecx*8]
mov dword [esi + edx*4 + 0x7f934], eax
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
jne 0x421eeb
mov al, 0xff
mov byte [esp + 0x8a], al
mov byte [esp + 0x8b], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x92]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x8a]
push edx
mov ecx, esi
call fcn.004103a0
mov ecx, dword [esp + 0x2c]
movzx eax, ax
lea ecx, [ecx + ecx*8]
mov dword [esi + ecx*4 + 0x7f938], eax
jmp case.0x42512d.50730
mov ecx, esi
call fcn.00410420
mov ecx, dword [esp + 0x2c]
lea ecx, [ecx + ecx*8]
mov dword [esi + ecx*4 + 0x7f938], eax
jmp case.0x42512d.50730
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x2c]
and eax, 7
lea edx, [edi + edi*8 + 0x1fe54]
mov dword [esi + edx*4], eax
mov al, 0xff
mov byte [esp + 0x32], al
mov byte [esp + 0x33], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x3a]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x421f5c
mov ah, byte [esp + 0x33]
lea ecx, [edi + edi*8]
mov al, byte [esp + 0x32]
movzx eax, ax
mov dword [esi + ecx*4 + 0x7f93c], eax
jmp case.0x42512d.50730
movzx dx, byte [esp + 0x33]
mov ah, byte [esp + 0x32]
lea ecx, [edi + edi*8]
or eax, edx
movzx eax, ax
mov dword [esi + ecx*4 + 0x7f93c], eax
jmp case.0x42512d.50730
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x3e], al
mov byte [esp + 0x3f], al
lea eax, [esp + 0x3e]
push 1
push eax
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x421fac
mov ah, byte [esp + 0x37]
mov al, byte [esp + 0x36]
jmp 0x421fb8
movzx cx, byte [esp + 0x37]
mov ah, byte [esp + 0x36]
or eax, ecx
xor edx, edx
mov dx, ax
mov eax, dword [esp + 0x2c]
lea eax, [eax + eax*8]
mov dword [esi + eax*4 + 0x7f940], edx
jmp case.0x42512d.50730
lea eax, [edi - 0x106]
cmp eax, 0x12
ja case.0x42512d.50730
movzx ecx, byte [eax + 0x4255cc]
jmp dword [ecx*4 + 0x4255a4]
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x42], al
mov byte [esp + 0x43], al
lea eax, [esp + 0x42]
push 1
push eax
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x42201f
mov ah, byte [esp + 0x3b]
mov al, byte [esp + 0x3a]
jmp 0x42202b
movzx cx, byte [esp + 0x3b]
mov ah, byte [esp + 0x3a]
or eax, ecx
xor edx, edx
mov dx, ax
mov eax, dword [esp + 0x2c]
lea eax, [eax + eax*8]
mov dword [esi + eax*4 + 0x7f944], edx
jmp case.0x42512d.50730
mov ecx, dword [esi]
push ecx
push 1
lea edx, [esi + 0x15]
push 0x200
push edx
call fcn.00487020
add esp, 0x10
jmp case.0x42512d.50730
mov eax, dword [esi]
push eax
lea ecx, [esi + 0x215]
push 0x40
push ecx
call fcn.0048871c
add esp, 0xc
jmp case.0x42512d.50730
mov edx, dword [esi]
push edx
lea eax, [esi + 0x255]
push 0x40
push eax
call fcn.0048871c
add esp, 0xc
jmp case.0x42512d.50730
mov eax, dword [esp + 0x2c]
lea ecx, [eax + eax*8]
mov edx, dword [esi + ecx*4 + 0x7f948]
not edx
test edx, edx
jne case.0x42512d.50730
mov dword [esi + 0x798d8], 0x41a4a0
mov dword [esi + 0x434], 0x2008
mov al, 0xff
mov byte [esp + 0x54], al
mov byte [esp + 0x55], al
mov byte [esp + 0x56], al
mov byte [esp + 0x57], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0x5c]
push 1
push ecx
call fcn.00487020
movzx ecx, byte [esp + 0x65]
movzx edx, byte [esp + 0x66]
add esp, 0x10
cmp word [esi + 4], 0x4949
jne 0x422204
movzx eax, byte [esp + 0x57]
shl eax, 8
or eax, edx
movzx edx, byte [esp + 0x54]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, edx
jmp 0x42221b
mov al, 0xff
mov byte [esp + 0x3e], al
mov byte [esp + 0x3f], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x46]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x422148
mov ah, byte [esp + 0x3f]
mov al, byte [esp + 0x3e]
jmp 0x422154
movzx dx, byte [esp + 0x3f]
mov ah, byte [esp + 0x3e]
or eax, edx
and eax, 7
movsx ecx, byte [eax + str.50132467]
mov eax, dword [esp + 0x2c]
sub ecx, 0x30
lea edx, [eax + eax*8]
mov dword [esi + edx*4 + 0x7f94c], ecx
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
jne 0x4221b6
mov al, 0xff
mov byte [esp + 0x84], al
mov byte [esp + 0x85], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x8c]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x84]
push edx
mov ecx, esi
call fcn.004103a0
movzx eax, ax
jmp 0x4221bd
mov ecx, esi
call fcn.00410420
mov ecx, dword [esp + 0x2c]
and eax, 7
lea ecx, [ecx + ecx*8 + 0x1fe54]
mov dword [esi + ecx*4], eax
jmp case.0x42512d.50730
cmp edi, 0x202
ja 0x422bf8
je case.0x421fe6.279
lea eax, [edi - 0x131]
cmp eax, 0xd0
ja case.0x42512d.50730
movzx edx, byte [eax + 0x425608]
jmp dword [edx*4 + 0x4255e0]
xor eax, eax
mov ah, byte [esp + 0x54]
or eax, ecx
movzx ecx, byte [esp + 0x57]
shl eax, 8
or eax, edx
shl eax, 8
or eax, ecx
mov ecx, dword [esp + 0x2c]
mov edx, dword [ebp + 8]
lea ecx, [ecx + ecx*8]
lea ecx, [esi + ecx*4]
add eax, edx
mov edx, dword [ecx + 0x7f93c]
test edx, edx
mov dword [esp + 0x14], ecx
mov dword [ecx + 0x7f948], eax
jne case.0x42512d.50730
mov edx, dword [esi]
push 0
push eax
push edx
call fcn.00487810
lea edx, [esi + 0x798e0]
xor eax, eax
mov edi, edx
mov ecx, 0x1800
rep stosd dword es:[edi], eax
mov ecx, 0x10
lea edi, [esp + 0x27c]
rep stosd dword es:[edi], eax
mov eax, dword [esi]
push eax
push 1
lea ecx, [esp + 0x624]
push 2
push ecx
mov dword [esi + 0x7f8e4], edx
mov dword [esp + 0x2b8], edx
mov dword [esp + 0x2bc], edx
mov dword [esp + 0x2c0], edx
mov dword [esp + 0x2c4], edx
call fcn.00487020
mov al, byte [esp + 0x62d]
add esp, 0x1c
cmp al, 0xd8
jne case.0x42512d.50730
mov edx, dword [esi]
push edx
push 2
lea eax, [esp + 0x618]
push 2
push eax
call fcn.00487020
movzx edi, byte [esp + 0x622]
movzx edx, byte [esp + 0x623]
movzx ecx, byte [esp + 0x621]
xor eax, eax
mov ah, byte [esp + 0x620]
shl edi, 8
or edi, edx
add esp, 0x10
sub edi, 2
or eax, ecx
cmp eax, 0xff00
mov dword [esp + 0x10], eax
jle case.0x42512d.50730
mov eax, dword [esi]
push eax
push edi
lea ecx, [esp + 0x618]
push 1
push ecx
call fcn.00487020
mov edx, dword [esp + 0x20]
lea eax, [edx - 0xffc0]
add esp, 0x10
cmp eax, 0x1d
ja case.0x422335.65473
movzx eax, byte [eax + 0x4256ec]
jmp dword [eax*4 + 0x4256dc]
mov al, byte [esp + 0x617]
xor ecx, ecx
cmp al, 0x21
sete cl
mov dword [esp + 0x280], ecx
movzx eax, byte [esp + 0x611]
movzx edx, byte [esp + 0x610]
movzx ecx, byte [esp + 0x612]
shl eax, 8
or eax, ecx
mov ecx, dword [esp + 0x280]
mov dword [esp + 0x270], edx
movzx edx, byte [esp + 0x613]
mov dword [esp + 0x274], eax
movzx eax, byte [esp + 0x614]
shl edx, 8
or edx, eax
movzx eax, byte [esp + 0x615]
add eax, ecx
cmp edi, 9
mov dword [esp + 0x278], edx
mov dword [esp + 0x27c], eax
jne 0x4223d1
mov eax, dword [esi + 0x3a0]
test eax, eax
jne 0x4223d1
mov ecx, dword [esi]
push ecx
call fcn.00487c28
add esp, 4
mov edx, dword [esp + 0x278]
cmp dword [esp + 0x10], 0xffda
jne 0x4222b4
mov edi, dword [esp + 0x27c]
mov eax, dword [esp + 0x14]
xor ecx, ecx
cmp edi, 2
sete cl
shl edx, cl
mov ecx, dword [esp + 0x270]
mov dword [eax + 0x7f940], 6
mov dword [eax + 0x7f93c], ecx
mov dword [eax + 0x7f934], edx
mov edx, dword [esp + 0x274]
mov dword [eax + 0x7f938], edx
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*8 + 0x1fe54]
mov eax, edi
mov dword [esi + edx*4], eax
jmp case.0x42512d.50730
mov ecx, dword [esi]
push ecx
lea edx, [esp + 0x2fc]
push 0x40
push edx
call fcn.0048871c
push 5
lea eax, [esp + 0x308]
push str.Adobe
push eax
call fcn.004882a0
add esp, 0x18
test eax, eax
je 0x4224d0
push 5
lea ecx, [esp + 0x2fc]
push str.dcraw
push ecx
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x4224d0
push 6
lea edx, [esp + 0x2fc]
push str.Bibble
push edx
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x4224d0
push 0xa
lea eax, [esp + 0x2fc]
push str.Nikon_Scan
push eax
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x4224d0
mov edi, str.Digital_Photo_Professional
lea esi, [esp + 0x2f8]
mov ecx, 0x1b
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov esi, dword [esp + 0x1c]
jne case.0x42512d.50730
mov dword [esi + 0x39c], 0
jmp case.0x42512d.50730
mov eax, dword [esi]
push eax
push 1
lea ecx, [esp + 0x2ec]
push 0x13
push ecx
mov byte [esp + 0x307], 0
call fcn.00487020
xor eax, eax
mov ecx, 9
lea edi, [esp + 0x1b4]
rep stosd dword es:[edi], eax
lea edx, [esp + 0x1b4]
push edx
lea eax, [esp + 0x1bc]
push eax
lea ecx, [esp + 0x1c4]
push ecx
lea edx, [esp + 0x1cc]
push edx
lea eax, [esp + 0x1d4]
push eax
lea ecx, [esp + 0x1dc]
push ecx
lea edx, [esp + 0x30c]
push str._d:_d:_d__d:_d:_d
push edx
call fcn.00488a42
add esp, 0x30
cmp eax, 6
jne case.0x42512d.50730
mov ecx, dword [esp + 0x1b8]
mov eax, dword [esp + 0x1b4]
sub ecx, 0x76c
dec eax
mov dword [esp + 0x1b4], eax
lea eax, [esp + 0x1a4]
push eax
mov dword [esp + 0x1bc], ecx
mov dword [esp + 0x1c8], 0xffffffff
call fcn.00488850
add esp, 4
test eax, eax
jle case.0x42512d.50730
lea ecx, [esp + 0x1a4]
push ecx
call fcn.00488850
add esp, 4
mov dword [esi + 0x324], eax
jmp case.0x42512d.50730
mov edx, dword [esi]
push edx
push 1
lea eax, [esi + 0x2d5]
push 0x40
push eax
call fcn.00487020
add esp, 0x10
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
jne 0x422620
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x90]
push 1
push edx
mov byte [esp + 0x98], al
mov byte [esp + 0x99], al
call fcn.00487020
add esp, 0x10
lea eax, [esp + 0x88]
push eax
mov ecx, esi
call fcn.004103a0
movzx eax, ax
mov dword [esi + 0x3ac], eax
jmp case.0x42512d.50730
mov ecx, esi
call fcn.00410420
mov dword [esi + 0x3ac], eax
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
jne 0x42267d
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0xa2]
push 1
push edx
mov byte [esp + 0xaa], al
mov byte [esp + 0xab], al
call fcn.00487020
add esp, 0x10
lea eax, [esp + 0x9a]
push eax
mov ecx, esi
call fcn.004103a0
movzx eax, ax
mov dword [esi + 0x3b0], eax
jmp case.0x42512d.50730
mov ecx, esi
call fcn.00410420
mov dword [esi + 0x3b0], eax
jmp case.0x42512d.50730
cmp dword [esp + 0xc], 1
jbe 0x4226a3
mov ecx, dword [esi]
push ecx
call fcn.00487c33
add esp, 4
jmp 0x42270d
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0x4c], al
mov byte [esp + 0x4d], al
mov byte [esp + 0x4e], al
mov byte [esp + 0x4f], al
lea eax, [esp + 0x4c]
push 1
push eax
call fcn.00487020
movzx edx, byte [esp + 0x55]
movzx ecx, byte [esp + 0x56]
add esp, 0x10
cmp word [esi + 4], 0x4949
jne 0x4226f6
movzx eax, byte [esp + 0x47]
shl eax, 8
or eax, ecx
movzx ecx, byte [esp + 0x44]
shl eax, 8
or eax, edx
shl eax, 8
or eax, ecx
jmp 0x42270d
xor eax, eax
mov ah, byte [esp + 0x44]
or eax, edx
movzx edx, byte [esp + 0x47]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, edx
mov ecx, dword [esp + 0x2c]
lea ecx, [ecx + ecx*8]
mov dword [esi + ecx*4 + 0x7f948], eax
cmp dword [esp + 0xc], 4
jne case.0x42512d.50730
mov dword [esi + 0x798d8], 0x4259c0
mov dword [esi + 0x39c], 5
jmp case.0x42512d.50730
add esi, 0x255
mov edi, str.DSLR_A100
mov ecx, 0xa
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x422a90
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
lea eax, [edi + edi*8]
cmp dword [esi + eax*4 + 0x7f934], 0xf20
jne 0x422a90
mov ecx, dword [esi]
push ecx
mov al, 0xff
push 4
lea edx, [esp + 0x50]
push 1
push edx
mov dword [esi + 0x798d8], 0x420500
mov byte [esp + 0x58], al
mov byte [esp + 0x59], al
mov byte [esp + 0x5a], al
mov byte [esp + 0x5b], al
call fcn.00487020
movzx edx, byte [esp + 0x59]
movzx ecx, byte [esp + 0x5a]
add esp, 0x10
cmp word [esi + 4], 0x4949
jne 0x4227d2
movzx eax, byte [esp + 0x4b]
shl eax, 8
or eax, ecx
movzx ecx, byte [esp + 0x48]
shl eax, 8
or eax, edx
shl eax, 8
or eax, ecx
jmp 0x4227e9
xor eax, eax
mov ah, byte [esp + 0x48]
or eax, edx
movzx edx, byte [esp + 0x4b]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, edx
mov ecx, dword [ebp + 8]
add eax, ecx
inc edi
mov dword [esi + 0x340], eax
mov dword [esp + 0x2c], edi
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0xf4]
mov edx, dword [esi]
push 0
push ecx
push edx
call fcn.00487810
mov eax, dword [esp + 0xf8]
add esp, 0xc
test eax, eax
jne 0x421ab5
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x4228ea
push eax
call fcn.00487380
mov edi, eax
add esp, 4
test edi, edi
je 0x4228ea
mov ecx, dword [esp + 0x8c]
mov edx, dword [esi]
push 0
push ecx
push edx
call fcn.00487810
mov eax, dword [esi]
mov ecx, dword [esp + 0xa8]
push eax
push 1
push ecx
push edi
call fcn.00487020
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xb8]
add esp, 0x1c
push edx
push 1
shr eax, 2
push eax
push edi
mov ecx, esi
call fcn.00426020
mov ecx, dword [esi]
mov dword [esp + 0xf4], ecx
call fcn.00488c35
test eax, eax
mov dword [esi], eax
je 0x4228d8
mov edx, dword [esp + 0x9c]
push eax
push 1
push edx
push edi
call fcn.00488afc
mov eax, dword [esi]
push 0
push 0
push eax
call fcn.00487810
mov eax, dword [esp + 0xa8]
add esp, 0x1c
neg eax
push eax
mov ecx, esi
call fcn.004218c0
mov ecx, dword [esi]
push ecx
call fcn.004875f7
add esp, 4
mov edx, dword [esp + 0xf4]
push edi
mov dword [esi], edx
call fcn.00487297
add esp, 4
mov ecx, dword [esi + 0x458]
xor edx, edx
test ecx, ecx
jle 0x42292e
lea edi, [esp + 0x3d0]
lea ecx, [ecx]
fld qword [esp + edx*8 + 0x228]
mov eax, edi
lea esp, [esp]
fld st(0)
add eax, 8
dec ecx
fmul qword [eax - 8]
fstp qword [eax - 8]
jne 0x422910
mov ecx, dword [esi + 0x458]
fstp st(0)
inc edx
add edi, 0x20
cmp edx, ecx
jl 0x422900
mov eax, dword [esp + 0xf0]
test eax, eax
je 0x422a04
test ecx, ecx
jle 0x4229f5
lea eax, [esp + 0x3d0]
mov dword [esp + 0x8c], eax
lea edx, [esp + 0x4b0]
mov dword [esp + 0xd4], ecx
xor ecx, ecx
mov dword [esp + 0xdc], ecx
lea ebx, [ebx]
fld qword [0x65c090]
mov eax, dword [esp + 0x8c]
fld qword [esp + ecx + 0x188]
mov edi, dword [esi + 0x458]
mov dword [edx], 0
mov dword [edx + 4], 0
lea ecx, [esp + ecx + 0x450]
mov edi, edi
fld st(0)
add eax, 8
fmul qword [ecx]
add ecx, 0x18
dec edi
fmul qword [eax - 8]
faddp st(2)
jne 0x4229a0
mov ecx, dword [esp + 0xdc]
fstp st(0)
add ecx, 8
fstp qword [edx]
add edx, 8
cmp ecx, 0x18
mov dword [esp + 0xdc], ecx
jl 0x422970
mov ecx, dword [esp + 0x8c]
mov eax, dword [esp + 0xd4]
add ecx, 0x20
dec eax
mov dword [esp + 0x8c], ecx
mov dword [esp + 0xd4], eax
jne 0x422961
lea ecx, [esp + 0x4b0]
push ecx
mov ecx, esi
call fcn.00426110
fld qword [esp + 0x208]
fcomp qword [0x65c090]
fnstsw ax
test ah, 0x44
jnp 0x422a4c
mov ecx, dword [esi + 0x458]
xor eax, eax
cmp ecx, eax
mov dword [esi + 0x8584], eax
jle 0x422a4c
lea ecx, [esi + 0x8578]
fld qword [0x65c300]
inc eax
fdiv qword [esp + eax*8 + 0x200]
add ecx, 4
fstp dword [ecx - 4]
cmp eax, dword [esi + 0x458]
jl 0x422a30
mov eax, dword [esp + 0xf0]
test eax, eax
jne 0x422a86
mov eax, dword [esi + 0x458]
xor edx, edx
test eax, eax
jle 0x422a86
lea ecx, [esp + 0x3d0]
lea eax, [esi + 0x8588]
fld dword [eax]
inc edx
fdiv qword [ecx]
add eax, 4
add ecx, 0x28
fstp dword [eax - 4]
cmp edx, dword [esi + 0x458]
jl 0x422a70
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret 4
mov eax, dword [esp + 0xc]
test eax, eax
je 0x4227f9
lea esp, [esp]
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x1c]
mov edx, dword [esi]
dec eax
push edx
mov dword [esp + 0x10], eax
call fcn.00487c33
mov edi, eax
mov al, 0xff
mov byte [esp + 0xb8], al
mov byte [esp + 0xb9], al
mov byte [esp + 0xba], al
mov byte [esp + 0xbb], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0xc0]
push 1
push ecx
call fcn.00487020
add esp, 0x14
push 0
lea edx, [esp + 0xb8]
push edx
mov ecx, esi
call fcn.004084a0
add eax, dword [ebp + 8]
push eax
mov eax, dword [esi]
push eax
call fcn.00487810
mov ecx, dword [ebp + 8]
add esp, 0xc
push ecx
mov ecx, esi
call fcn.004218c0
test eax, eax
jne 0x4227f9
push eax
mov edx, esi
mov eax, dword [edx]
add edi, 4
push edi
push eax
call fcn.00487810
mov eax, dword [esp + 0x18]
add esp, 0xc
test eax, eax
jne 0x422aa0
jmp 0x4227f9
mov eax, str.Sarnoff
mov ecx, esi
sub ecx, eax
lea edx, [ecx + 0x215]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x422b51
mov dword [esi + 0x384], 0xfff
jmp case.0x42512d.50730
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0x54], al
mov byte [esp + 0x55], al
mov byte [esp + 0x56], al
mov byte [esp + 0x57], al
lea eax, [esp + 0x54]
push 1
push eax
call fcn.00487020
movzx eax, byte [esp + 0x5d]
movzx edx, byte [esp + 0x5e]
add esp, 0x10
cmp word [esi + 4], 0x4949
jne 0x422bce
movzx ecx, byte [esp + 0x4f]
shl ecx, 8
or ecx, edx
movzx edx, byte [esp + 0x4c]
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0x2c]
shl ecx, 8
or ecx, edx
lea edx, [eax + eax*8]
mov dword [esi + edx*4 + 0x7f954], ecx
jmp case.0x42512d.50730
xor ecx, ecx
mov ch, byte [esp + 0x4c]
or ecx, eax
movzx eax, byte [esp + 0x4f]
shl ecx, 8
or ecx, edx
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*8]
mov dword [esi + edx*4 + 0x7f954], ecx
jmp case.0x42512d.50730
cmp edi, 0x7250
ja 0x42303e
je 0x422e0a
cmp edi, 0x7201
ja 0x422dae
je 0x422d2e
cmp edi, 0x7010
je 0x422c80
cmp edi, 0x7200
jne case.0x42512d.50730
mov al, 0xff
mov byte [esp + 0xbc], al
mov byte [esp + 0xbd], al
mov byte [esp + 0xbe], al
mov byte [esp + 0xbf], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0xc4]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0xbc]
push edx
mov ecx, esi
call fcn.004084a0
mov dword [esp + 0x8c], eax
jmp case.0x42512d.50730
xor edi, edi
mov al, 0xff
mov byte [esp + 0x30], al
mov byte [esp + 0x31], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x38]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x422cb4
mov ah, byte [esp + 0x31]
mov al, byte [esp + 0x30]
jmp 0x422cc0
movzx dx, byte [esp + 0x31]
mov ah, byte [esp + 0x30]
or eax, edx
shr eax, 2
and eax, 0xfff
mov dword [esp + edi*4 + 0x1d4], eax
inc edi
cmp edi, 4
jl 0x422c82
xor ecx, ecx
mov dword [esp + 0xc], ecx
nop
lea esp, [esp]
mov edi, dword [esp + ecx*4 + 0x1d0]
mov eax, dword [esp + ecx*4 + 0x1d4]
inc edi
cmp edi, eax
ja 0x422d1f
mov edx, 1
shl edx, cl
sub eax, edi
inc eax
mov dword [esp + 0x14], edx
lea edx, [esi + edi*2 + 0x50c]
mov cx, word [edx - 2]
add cx, word [esp + 0x14]
add edx, 2
dec eax
mov word [edx - 2], cx
jne 0x422d08
mov ecx, dword [esp + 0xc]
inc ecx
cmp ecx, 5
mov dword [esp + 0xc], ecx
jl 0x422ce0
jmp case.0x42512d.50730
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0x58], al
mov byte [esp + 0x59], al
mov byte [esp + 0x5a], al
mov byte [esp + 0x5b], al
lea eax, [esp + 0x58]
push 1
push eax
call fcn.00487020
movzx edx, byte [esp + 0x61]
movzx ecx, byte [esp + 0x62]
add esp, 0x10
cmp word [esi + 4], 0x4949
jne 0x422d8b
movzx eax, byte [esp + 0x53]
shl eax, 8
or eax, ecx
movzx ecx, byte [esp + 0x50]
shl eax, 8
or eax, edx
shl eax, 8
or eax, ecx
mov dword [esp + 0x9c], eax
jmp case.0x42512d.50730
xor eax, eax
mov ah, byte [esp + 0x50]
or eax, edx
movzx edx, byte [esp + 0x53]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, edx
mov dword [esp + 0x9c], eax
jmp case.0x42512d.50730
cmp edi, 0x7221
jne case.0x42512d.50730
mov al, 0xff
mov byte [esp + 0xc4], al
mov byte [esp + 0xc5], al
mov byte [esp + 0xc6], al
mov byte [esp + 0xc7], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0xcc]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0xc4]
push edx
mov ecx, esi
call fcn.004084a0
mov dword [esp + 0xdc], eax
jmp case.0x42512d.50730
mov eax, dword [esi]
push eax
call fcn.00487c33
mov edx, dword [esi]
mov cx, word [esi + 4]
mov edi, eax
xor eax, eax
push eax
push edi
push edx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov word [esp + 0x30], cx
call fcn.00487810
mov eax, dword [esi]
push eax
call fcn.00487bf7
add esp, 0x14
test eax, eax
jne 0x423030
mov ecx, dword [esi]
push ecx
call fcn.00487bf7
add esp, 4
sub eax, 0x4d
jne 0x423030
mov edx, dword [esi]
push edx
call fcn.00487bf7
add esp, 4
sub eax, 0x52
jne 0x423030
mov eax, dword [esi]
push eax
call fcn.00487bf7
imul eax, eax, 0x101
mov ecx, dword [esi]
push ecx
push 4
mov word [esi + 4], ax
mov al, 0xff
lea edx, [esp + 0xd8]
push 1
push edx
mov byte [esp + 0xe0], al
mov byte [esp + 0xe1], al
mov byte [esp + 0xe2], al
mov byte [esp + 0xe3], al
call fcn.00487020
add esp, 0x14
lea eax, [esp + 0xcc]
push eax
mov ecx, esi
call fcn.004084a0
mov ecx, dword [esi]
lea edi, [eax + edi + 8]
push ecx
mov dword [esp + 0x1c], edi
call fcn.00487c33
add esp, 4
cmp eax, edi
mov dword [esp + 0xc], eax
jge 0x42300f
xor edi, edi
mov dword [esp + 0x10], 4
nop
lea esp, [esp]
mov edx, dword [esi]
push edx
call fcn.00487bf7
shl edi, 8
or edi, eax
mov eax, dword [esp + 0x14]
add esp, 4
dec eax
mov dword [esp + 0x10], eax
jne 0x422ef0
mov ecx, esi
call fcn.00410420
cmp edi, 0x505244
mov dword [esp + 0x10], eax
je 0x422fb0
cmp edi, 0x545457
je 0x422f91
cmp edi, 0x574247
jne 0x422fdd
mov ecx, esi
call fcn.00410420
add esi, 0x255
xor eax, eax
mov edi, str.DiMAGE_A200
mov ecx, 0xc
repe cmpsb byte [esi], byte es:[edi]
mov edx, eax
setne dl
dec edx
and edx, 3
mov edi, edx
xor esi, esi
mov edi, edi
mov ecx, dword [esp + 0x1c]
call fcn.004103d0
mov edx, dword [esp + 0x1c]
mov ecx, esi
sar ecx, 1
movzx eax, ax
xor ecx, esi
mov dword [esp + 0x14], eax
xor ecx, edi
inc esi
cmp esi, 4
fild dword [esp + 0x14]
fstp dword [edx + ecx*4 + 0x8578]
jl 0x422f60
mov esi, edx
jmp 0x422fdd
mov eax, dword [esi]
push eax
call fcn.00487c33
add esp, 4
push eax
mov ecx, esi
call fcn.00428f20
mov ecx, dword [esp + 0x18]
mov dword [esi + 0x340], ecx
jmp 0x422fdd
mov edx, dword [esi]
push 1
push 8
push edx
call fcn.00487810
add esp, 0xc
mov ecx, esi
call fcn.004103d0
movzx eax, ax
mov ecx, esi
mov dword [esp + 0x5c], eax
call fcn.004103d0
xor ecx, ecx
mov cx, ax
mov dword [esp + 0x60], ecx
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
lea ecx, [edx + eax + 8]
mov edx, dword [esi]
push 0
push ecx
push edx
call fcn.00487810
mov eax, dword [esi]
push eax
call fcn.00487c33
mov ecx, dword [esp + 0x28]
add esp, 0x10
cmp eax, ecx
mov dword [esp + 0xc], eax
jl 0x422ee1
mov cx, word [esp + 0x5c]
mov dx, word [esp + 0x60]
mov ax, word [esp + 0x20]
mov word [esi + 0x438], cx
mov word [esi + 0x43a], dx
mov word [esi + 4], ax
mov word [esi + 0x43a], 0
jmp case.0x42512d.50730
cmp edi, 0x828e
ja 0x4230e5
je 0x425352
cmp edi, 0x7303
je 0x42307d
cmp edi, 0x827d
jne case.0x42512d.50730
mov ecx, dword [esi]
push ecx
lea edx, [esi + 0x295]
push 0x40
push edx
call fcn.0048871c
add esp, 0xc
jmp case.0x42512d.50730
xor edi, edi
nop
mov al, 0xff
mov byte [esp + 0x34], al
mov byte [esp + 0x35], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x3c]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x4230b2
mov ah, byte [esp + 0x35]
mov al, byte [esp + 0x34]
jmp 0x4230be
movzx dx, byte [esp + 0x35]
mov ah, byte [esp + 0x34]
or eax, edx
xor ecx, ecx
cmp edi, 2
setl cl
movzx eax, ax
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
xor ecx, edi
inc edi
fstp dword [esi + ecx*4 + 0x8578]
cmp edi, 4
jl 0x423080
jmp case.0x42512d.50730
cmp edi, 0x8290
jne case.0x42512d.50730
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0xd8], al
mov byte [esp + 0xd9], al
mov byte [esp + 0xda], al
mov byte [esp + 0xdb], al
lea eax, [esp + 0xd8]
push 1
push eax
call fcn.00487020
add esp, 0x10
push 0
lea ecx, [esp + 0xd4]
push ecx
mov ecx, esi
call fcn.004084a0
add eax, dword [ebp + 8]
mov edx, dword [esi]
push eax
push edx
call fcn.00487810
mov al, 0xff
mov byte [esp + 0xa0], al
mov byte [esp + 0xa1], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0xa8]
push 1
push ecx
mov dword [esp + 0x28], 0xfffffffe
mov dword [esp + 0x2c], 0x1964
call fcn.00487020
add esp, 0x1c
lea edx, [esp + 0x94]
push edx
mov ecx, esi
call fcn.004103a0
movzx eax, ax
cmp eax, 0x400
ja case.0x42512d.50730
test eax, eax
je case.0x42512d.50730
mov dword [esp + 0x14], eax
lea eax, [esp + 0x178]
push eax
lea ecx, [esp + 0x168]
push ecx
mov ecx, dword [ebp + 8]
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0x7c]
push eax
push ecx
mov ecx, esi
call fcn.00426470
cmp dword [esp + 0x70], 0x3fc
jne 0x4231fa
cmp dword [esp + 0xa4], 3
mov ecx, esi
jne 0x4231f1
call fcn.004103d0
xor edx, edx
mov dx, ax
mov dword [esp + 0xc], edx
jmp 0x4231fa
call fcn.00410420
mov dword [esp + 0xc], eax
cmp dword [esp + 0x70], 0x3fd
jne 0x423263
cmp dword [esp + 0x164], 0x48
jne 0x423292
mov eax, dword [esi]
push 1
push 0x28
push eax
call fcn.00487810
add esp, 0xc
lea edi, [esi + 0x8578]
mov dword [esp + 0x60], 3
nop
mov ecx, esi
call fcn.004103d0
xor ecx, ecx
mov cx, ax
mov eax, dword [esp + 0x60]
add edi, 4
dec eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
fdivr qword [0x65d978]
fstp dword [edi - 4]
jne 0x423230
mov dword [esp + 0xc], 0xfffffffe
cmp dword [esp + 0x70], 0x846
jne 0x423292
cmp dword [esp + 0xa4], 3
mov ecx, esi
jne 0x423289
call fcn.004103d0
xor edx, edx
mov dx, ax
mov dword [esp + 0x10], edx
jmp 0x423292
call fcn.00410420
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x70]
add eax, 0x852
cmp ecx, eax
jne 0x4232c1
xor edi, edi
mov ecx, dword [esp + 0xa4]
push ecx
mov ecx, esi
call fcn.004107c0
fstp dword [esp + edi*4 + 0x2d8]
inc edi
cmp edi, 3
jl 0x4232a5
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x70]
lea edx, [eax + 0x85c]
cmp ecx, edx
jne 0x423376
test eax, eax
jl 0x423376
fild dword [esp + 0x10]
lea eax, [esi + 0x8578]
mov dword [esp + 0x5c], 0
mov dword [esp + 0x18], eax
fmul qword [0x65d970]
fstp qword [esp + 0x20]
nop
xor edi, edi
mov dword [esp + 0x60], edi
mov dword [esp + 0xfc], edi
lea ecx, [ecx]
mov ecx, dword [esp + 0xa4]
push ecx
mov ecx, esi
call fcn.004107c0
fld qword [esp + 0x20]
fild dword [esp + 0x60]
call fcn.004879b0
fmulp st(1)
inc edi
cmp edi, 4
fadd dword [esp + 0xfc]
mov dword [esp + 0x60], edi
fstp dword [esp + 0xfc]
jl 0x423310
mov eax, dword [esp + 0x5c]
fld dword [esp + 0xfc]
fmul dword [esp + eax*4 + 0x2d8]
mov ecx, dword [esp + 0x18]
inc eax
add ecx, 4
cmp eax, 3
fdivr dword [0x65d968]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x18], ecx
fstp dword [ecx - 4]
jl 0x423300
cmp dword [esp + 0x70], 0x90d
jne 0x42338f
mov edx, dword [esp + 0x164]
push edx
mov ecx, esi
call fcn.00428e10
cmp dword [esp + 0x70], 0x1784
jne 0x4233d3
cmp dword [esp + 0xa4], 3
mov ecx, esi
jne 0x4233af
call fcn.004103d0
movzx eax, ax
jmp 0x4233b4
call fcn.00410420
mov dword [esp + 0x1e8], eax
mov dword [esp + 0x1ec], 0
fild qword [esp + 0x1e8]
fstp dword [esi + 0x320]
mov eax, dword [esp + 0x178]
mov ecx, dword [esi]
push 0
push eax
push ecx
call fcn.00487810
mov eax, dword [esp + 0x20]
add esp, 0xc
dec eax
mov dword [esp + 0x14], eax
jne 0x4231a3
jmp case.0x42512d.50730
mov edx, dword [esp + 0x18]
lea eax, [edx - 3]
cmp eax, 9
ja case.0x42340c.6
jmp dword [eax*4 + 0x42570c]
mov al, 0xff
mov byte [esp + 0x80], al
mov byte [esp + 0x81], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x88]
push 1
push ecx
call fcn.00487020
add esp, 0x10
push 1
lea edx, [esp + 0x84]
push edx
mov ecx, esi
call fcn.004103a0
movzx eax, ax
jmp 0x42353b
push 1
mov ecx, esi
call fcn.004103d0
xor ecx, ecx
mov cx, ax
push ecx
jmp 0x42353c
push 1
mov ecx, esi
call fcn.00410420
jmp 0x42353b
mov ecx, esi
call fcn.00410420
mov edi, eax
mov ecx, esi
mov dword [esp + 0x100], edi
call fcn.00410420
push eax
mov dword [esp + 0x108], eax
push edi
jmp 0x42353c
mov ecx, esi
call fcn.00410420
mov dword [esp + 0x20], eax
fld dword [esp + 0x20]
sub esp, 8
lea ecx, [esp + 0x138]
fstp qword [esp]
call fcn.00410380
jmp 0x423548
push 0x1234
call dword [sym.imp.WS2_32.dll_ntohs]
sub ax, 0x1234
neg ax
sbb eax, eax
xor edx, edx
inc eax
cmp word [esi + 4], 0x4949
sete dl
sub edx, eax
neg edx
sbb edx, edx
inc edx
imul edx, edx, 7
mov dword [esp + 0x20], edx
xor edi, edi
mov eax, dword [esi]
push eax
call fcn.00487bf7
mov edx, dword [esp + 0x24]
mov ecx, edi
xor ecx, edx
add esp, 4
inc edi
cmp edi, 8
mov byte [esp + ecx + 0x100], al
jl 0x4234f0
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x100]
push edx
push eax
lea ecx, [esp + 0x138]
call fcn.00410380
jmp 0x423548
mov ecx, dword [esi]
push 1
push ecx
call fcn.00487bf7
add esp, 4
push eax
lea ecx, [esp + 0x138]
call fcn.00410360
mov eax, dword [esp + 0x130]
mov ecx, dword [esp + 0x134]
lea edx, [esi + 0x8648]
mov dword [edx], eax
mov eax, dword [esp + 0x138]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x13c]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ecx
jmp case.0x42512d.50730
cmp edi, 0xc517
ja 0x424da4
cmp edi, 0xc516
jae 0x424cfd
cmp edi, 0x9206
ja 0x4244bd
je 0x42436b
cmp edi, 0x8769
ja 0x424121
je 0x423ca3
cmp edi, 0x8602
ja 0x4237c8
je 0x42375a
cmp edi, 0x829d
je 0x4235e1
cmp edi, 0x85ff
je 0x423b98
jmp case.0x42512d.50730
mov edx, dword [esp + 0x18]
lea eax, [edx - 3]
cmp eax, 9
ja case.0x4235f1.6
jmp dword [eax*4 + 0x425734]
mov al, 0xff
mov byte [esp + 0x6e], al
mov byte [esp + 0x6f], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x76]
push 1
push ecx
call fcn.00487020
add esp, 0x10
push 1
lea edx, [esp + 0x72]
push edx
mov ecx, esi
call fcn.004103a0
movzx eax, ax
jmp 0x42371b
push 1
mov ecx, esi
call fcn.004103d0
xor ecx, ecx
mov cx, ax
push ecx
jmp 0x42371c
push 1
mov ecx, esi
call fcn.00410420
jmp 0x42371b
mov ecx, esi
call fcn.00410420
mov edi, eax
mov ecx, esi
mov dword [esp + 0x110], edi
call fcn.00410420
push eax
mov dword [esp + 0x118], eax
push edi
jmp 0x42371c
mov ecx, esi
call fcn.00410420
mov dword [esp + 0x20], eax
fld dword [esp + 0x20]
sub esp, 8
lea ecx, [esp + 0x148]
fstp qword [esp]
call fcn.00410380
jmp 0x423728
push 0x1234
call dword [sym.imp.WS2_32.dll_ntohs]
sub ax, 0x1234
neg ax
sbb eax, eax
xor edx, edx
inc eax
cmp word [esi + 4], 0x4949
sete dl
sub edx, eax
neg edx
sbb edx, edx
inc edx
imul edx, edx, 7
mov dword [esp + 0x20], edx
xor edi, edi
lea esp, [esp]
mov eax, dword [esi]
push eax
call fcn.00487bf7
mov edx, dword [esp + 0x24]
mov ecx, edi
xor ecx, edx
add esp, 4
inc edi
cmp edi, 8
mov byte [esp + ecx + 0x110], al
jl 0x4236d0
mov edx, dword [esp + 0x114]
mov eax, dword [esp + 0x110]
push edx
push eax
lea ecx, [esp + 0x148]
call fcn.00410380
jmp 0x423728
mov ecx, dword [esi]
push 1
push ecx
call fcn.00487bf7
add esp, 4
push eax
lea ecx, [esp + 0x148]
call fcn.00410360
mov eax, dword [esp + 0x140]
mov ecx, dword [esp + 0x144]
lea edx, [esi + 0x8658]
mov dword [edx], eax
mov eax, dword [esp + 0x148]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x14c]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ecx
jmp case.0x42512d.50730
xor edi, edi
lea esp, [esp]
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x44], al
mov byte [esp + 0x45], al
lea eax, [esp + 0x44]
push 1
push eax
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x423792
mov ah, byte [esp + 0x3d]
mov al, byte [esp + 0x3c]
jmp 0x42379e
movzx cx, byte [esp + 0x3d]
mov ah, byte [esp + 0x3c]
or eax, ecx
xor edx, edx
mov dx, ax
mov eax, edi
xor eax, 1
inc edi
cmp edi, 4
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fdivr qword [0x65d960]
fstp dword [esi + eax*4 + 0x8578]
jl 0x423760
jmp case.0x42512d.50730
sub edi, 0x8603
je 0x423bb6
sub edi, 3
jne case.0x42512d.50730
mov ecx, dword [esi]
push ecx
call fcn.00487c33
mov edx, dword [esi]
xor ecx, ecx
push ecx
push eax
push edx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], ecx
call fcn.00487810
add esp, 0x10
lea esp, [esp]
mov ecx, esi
call fcn.00410420
cmp eax, 0x504b5453
jne 0x423b52
mov ecx, esi
call fcn.00410420
mov eax, dword [esi]
push eax
push 0x28
lea ecx, [esp + 0x250]
push 1
push ecx
call fcn.00487020
add esp, 0x10
mov ecx, esi
call fcn.00410420
mov edx, dword [esi]
push edx
mov dword [esp + 0x14], eax
call fcn.00487c33
add esp, 4
mov edi, str.JPEG_preview_data
lea esi, [esp + 0x248]
mov ecx, 0x12
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov dword [esp + 0x14], eax
jne 0x423875
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov dword [ecx + 0x344], eax
mov dword [ecx + 0x350], edx
xor edx, edx
mov edx, dword [esp + 0x1c]
mov edi, str.icc_camera_profile
lea esi, [esp + 0x248]
mov ecx, 0x13
repe cmpsb byte [esi], byte es:[edi]
jne 0x4238a0
mov dword [edx + 0x34c], eax
mov eax, dword [esp + 0x10]
mov dword [edx + 0x358], eax
mov edi, str.ShootObj_back_type
lea esi, [esp + 0x248]
mov ecx, 0x13
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x4238f0
mov edx, dword [edx]
lea ecx, [esp + 0x58]
push ecx
push 0x696210
push edx
call fcn.00488acf
mov eax, dword [esp + 0x64]
add esp, 0xc
cmp eax, 0x12
jae 0x4238f0
mov ecx, dword [eax*4 + 0x6961c8]
mov eax, dword [esp + 0x1c]
lea edx, [eax + 0x255]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x4238e6
mov edi, str.icc_camera_to_tone_matrix
lea esi, [esp + 0x248]
mov ecx, 0x1a
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x423947
mov dword [esp + 0x58], edx
nop
lea esp, [esp]
mov ecx, dword [esp + 0x1c]
call fcn.00410420
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x58]
fld dword [esp + 0x20]
fstp dword [esp + eax*4 + 0x33c]
inc eax
cmp eax, 9
mov dword [esp + 0x58], eax
jl 0x423910
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x33c]
push eax
call fcn.00421850
mov edi, str.CaptProf_color_matrix
lea esi, [esp + 0x248]
mov ecx, 0x16
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x42399f
xor eax, eax
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
lea eax, [esp + eax*4 + 0x33c]
push eax
push 0x69618c
push edx
call fcn.00488acf
mov eax, dword [esp + 0x64]
add esp, 0xc
inc eax
cmp eax, 9
mov dword [esp + 0x58], eax
jl 0x423964
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x33c]
push eax
call fcn.00421850
mov edi, str.CaptProf_number_of_planes
lea esi, [esp + 0x248]
mov ecx, 0x1a
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4239cf
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
lea eax, [esp + 0x60]
push eax
push 0x696210
push edx
call fcn.00488acf
add esp, 0xc
mov edi, str.CaptProf_raw_data_rotation
lea esi, [esp + 0x248]
mov ecx, 0x1b
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x423a01
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
lea ecx, [eax + 0x450]
push ecx
push 0x696210
push edx
call fcn.00488acf
add esp, 0xc
mov edi, str.CaptProf_mosaic_pattern
lea esi, [esp + 0x248]
mov ecx, 0x18
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x423a52
xor esi, esi
lea ebx, [ebx]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx]
lea ecx, [esp + 0x58]
push ecx
push 0x696210
push eax
call fcn.00488acf
mov eax, dword [esp + 0x64]
add esp, 0xc
cmp eax, 1
jne 0x423a4c
mov eax, esi
sar eax, 1
xor eax, esi
mov dword [esp + 0x5c], eax
inc esi
cmp esi, 4
jl 0x423a20
mov edi, str.ImgProf_rotation_angle
lea esi, [esp + 0x248]
mov ecx, 0x17
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x423a98
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
lea eax, [esp + 0x58]
push eax
push 0x696210
push edx
call fcn.00488acf
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x450]
mov ecx, dword [esp + 0x64]
add esp, 0xc
sub ecx, edx
mov dword [eax + 0x450], ecx
mov edi, str.NeutObj_neutrals
lea esi, [esp + 0x248]
mov ecx, 0x11
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x423b1f
mov eax, dword [esp + 0x1c]
fld dword [eax + 0x8578]
add eax, 0x8578
fcomp dword [0x65c2f0]
mov dword [esp + 0x20], eax
fnstsw ax
test ah, 0x44
jp 0x423b1f
lea esi, [esp + 0x2b8]
mov edi, 4
nop
lea esp, [esp]
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
push esi
push 0x696210
push edx
call fcn.00488acf
add esp, 0xc
add esi, 4
dec edi
jne 0x423ae0
fild dword [esp + 0x2b8]
mov ecx, dword [esp + 0x20]
xor eax, eax
fild dword [esp + eax*4 + 0x2bc]
inc eax
add ecx, 4
cmp eax, 3
fdivr st(1)
fstp dword [ecx - 4]
jl 0x423b08
fstp st(0)
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
push eax
call fcn.004288a0
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
add ecx, edx
push 0
push ecx
mov ecx, dword [eax]
push ecx
call fcn.00487810
mov esi, dword [esp + 0x28]
add esp, 0xc
jmp 0x423800
mov edi, dword [esp + 0x60]
test edi, edi
je 0x423b98
mov ecx, dword [esi + 0x450]
mov eax, 0xb60b60b7
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
add edx, dword [esp + 0x5c]
and edx, 3
movzx ecx, byte [edx + 0x696108]
xor edx, edx
cmp edi, 1
sete dl
imul ecx, edx
imul ecx, ecx, 0x1010101
mov dword [esi + 0x330], ecx
mov eax, str.Leaf
mov ecx, esi
sub ecx, eax
lea edx, [ecx + 0x215]
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x423ba7
jmp case.0x42512d.50730
mov edx, dword [esi]
push edx
push 7
lea eax, [esp + 0x300]
push 1
push eax
call fcn.00487020
push 6
lea ecx, [esp + 0x30c]
push str.MATRIX
push ecx
call fcn.004882a0
add esp, 0x1c
test eax, eax
jne case.0x42512d.50730
lea edx, [esi + 0x85c8]
mov dword [esi + 0x458], 4
mov dword [esi + 0x38c], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
xor edi, edi
lea esp, [esp]
mov ecx, dword [esp + 0x10]
mov edx, dword [esi]
mov eax, edi
xor eax, 1
add eax, ecx
lea ecx, [esi + eax*4 + 0x85c8]
push ecx
push 0x69618c
push edx
call fcn.00488acf
add esp, 0xc
inc edi
cmp edi, 4
jl 0x423c10
mov eax, dword [esi + 0x854c]
test eax, eax
je 0x423c7f
mov edx, dword [esp + 0xc]
fld qword [0x65c090]
mov eax, edx
mov ecx, 4
fadd dword [eax]
add eax, 4
dec ecx
jne 0x423c54
fdivr qword [0x65c300]
mov eax, edx
mov ecx, 4
lea esp, [esp]
fld dword [eax]
add eax, 4
dec ecx
fmul st(1)
fstp dword [eax - 4]
jne 0x423c70
fstp st(0)
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
add eax, 4
add edx, 0x10
cmp eax, 0xc
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
jl 0x423c07
jmp case.0x42512d.50730
mov al, 0xff
mov byte [esp + 0xa8], al
mov byte [esp + 0xa9], al
mov byte [esp + 0xaa], al
mov byte [esp + 0xab], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0xb0]
push 1
push ecx
call fcn.00487020
add esp, 0x10
push 0
lea edx, [esp + 0xac]
push edx
mov ecx, esi
call fcn.004084a0
add eax, dword [ebp + 8]
push eax
mov eax, dword [esi]
push eax
call fcn.00487810
push 7
lea ecx, [esi + 0x215]
push str.EASTMAN
push ecx
call fcn.004882a0
add esp, 0x18
mov edi, eax
neg edi
sbb edi, edi
inc edi
mov ecx, esi
mov dword [esp + 0x60], edi
call fcn.004103d0
movzx eax, ax
test eax, eax
je case.0x42512d.50730
mov dword [esp + 0x14], eax
lea esp, [esp]
lea edx, [esp + 0x17c]
push edx
lea eax, [esp + 0x2b8]
push eax
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x80]
push ecx
lea edx, [esp + 0x18c]
push edx
push eax
mov ecx, esi
call fcn.00426470
mov eax, dword [esp + 0x180]
cmp eax, 0x9208
ja 0x423f6b
je 0x423f58
cmp eax, 0x9004
ja 0x423e2b
cmp eax, 0x9003
jae 0x423e1d
cmp eax, 0x8822
ja 0x423df3
je 0x423de0
sub eax, 0x829a
je 0x423dc1
sub eax, 3
jne case.0x423e39.37379
mov ecx, dword [esp + 0x78]
push ecx
lea edx, [esp + 0x364]
push edx
mov ecx, esi
call fcn.004104a0
lea ecx, [esi + 0x8658]
jmp 0x423fad
mov ecx, dword [esp + 0x78]
push ecx
lea edx, [esp + 0x3b4]
push edx
mov ecx, esi
call fcn.004104a0
lea ecx, [esi + 0x8648]
jmp 0x423fad
mov ecx, esi
call fcn.004103d0
mov word [esi + 0x860c], ax
jmp case.0x423e39.37379
cmp eax, 0x8827
jne case.0x423e39.37379
mov ecx, esi
call fcn.004103d0
xor ecx, ecx
mov cx, ax
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
fstp dword [esi + 0x320]
jmp case.0x423e39.37379
push 0
mov ecx, esi
call fcn.004287c0
jmp case.0x423e39.37379
add eax, 0xffff6dff
cmp eax, 6
ja case.0x423e39.37379
jmp dword [eax*4 + 0x42575c]
mov edx, dword [esp + 0x78]
push edx
mov ecx, esi
call fcn.004107c0
fchs
fst qword [esp + 0x20]
fcomp qword [0x65d958]
fnstsw ax
test ah, 5
jp case.0x423e39.37379
mov eax, dword [esi + 0x8650]
cmp eax, 2
je case.0x423e39.37379
cmp eax, 1
jne 0x423e85
mov eax, dword [esi + 0x864c]
test eax, eax
jne case.0x423e39.37379
fld qword [0x65c0b0]
fld qword [esp + 0x20]
fst dword [esp + 0x20]
call fcn.004879b0
sub esp, 8
lea ecx, [esp + 0x3a8]
fstp qword [esp]
call fcn.00410380
mov ecx, dword [eax]
mov dword [esi + 0x8648], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x864c], edx
mov ecx, dword [eax + 8]
mov dword [esi + 0x8650], ecx
mov edx, dword [eax + 0xc]
mov dword [esi + 0x8654], edx
jmp case.0x423e39.37379
mov eax, dword [esp + 0x78]
push eax
mov ecx, esi
mov dword [esp + 0x1f4], 0
mov dword [esp + 0x1f8], 0x40000000
call fcn.004107c0
fst dword [esp + 0x20]
fmul dword [0x65c358]
fld qword [esp + 0x1f0]
fxch st(1)
call fcn.004879b0
sub esp, 8
lea ecx, [esp + 0x398]
fstp qword [esp]
call fcn.00410380
lea ecx, [esi + 0x8658]
jmp 0x423fad
mov ecx, dword [esp + 0x78]
push ecx
lea edx, [esp + 0x374]
push edx
mov ecx, esi
call fcn.004104a0
lea ecx, [esi + 0x8618]
jmp 0x423fad
mov ecx, esi
call fcn.004103d0
mov word [esi + 0x860a], ax
jmp case.0x423e39.37379
mov ecx, esi
call fcn.004103d0
mov word [esi + 0x8608], ax
jmp case.0x423e39.37379
cmp eax, 0xa003
ja 0x42403a
je 0x42401f
cmp eax, 0x927c
ja 0x423ff9
je 0x423fe7
sub eax, 0x9209
je 0x423fc8
dec eax
jne case.0x423e39.37379
mov ecx, dword [esp + 0x78]
push ecx
lea edx, [esp + 0x384]
push edx
mov ecx, esi
call fcn.004104a0
lea ecx, [esi + 0x8638]
mov edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
jmp case.0x423e39.37379
mov ecx, esi
call fcn.004103d0
xor ecx, ecx
mov cx, ax
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
fstp dword [esi + 0x318]
jmp case.0x423e39.37379
mov edx, dword [ebp + 8]
push 0
push edx
mov ecx, esi
call fcn.00426630
jmp case.0x423e39.37379
cmp eax, 0xa002
jne case.0x423e39.37379
test edi, edi
je case.0x423e39.37379
mov ecx, esi
call fcn.00410420
mov word [esi + 0x43a], ax
jmp case.0x423e39.37379
test edi, edi
je case.0x423e39.37379
mov ecx, esi
call fcn.00410420
mov word [esi + 0x438], ax
jmp case.0x423e39.37379
cmp eax, 0xa302
ja 0x4240e3
je 0x42409c
sub eax, 0xa20e
je 0x42406a
sub eax, 2
jne case.0x423e39.37379
mov ecx, esi
call fcn.004103d0
mov word [esi + 0x860e], ax
jmp case.0x423e39.37379
mov eax, dword [esp + 0x78]
push eax
lea ecx, [esp + 0x3c4]
push ecx
mov ecx, esi
call fcn.004104a0
mov ecx, dword [eax]
lea edx, [esi + 0x8628]
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov eax, dword [eax + 0xc]
mov dword [edx + 0xc], eax
jmp case.0x423e39.37379
mov ecx, esi
call fcn.00410420
cmp eax, 0x20002
jne case.0x423e39.37379
xor edi, edi
mov dword [esi + 0x334], edi
mov ecx, dword [esi]
push ecx
call fcn.00487bf7
imul eax, eax, 0x1010101
mov edx, dword [esi + 0x334]
mov ecx, edi
shl eax, cl
add edi, 2
add esp, 4
or edx, eax
cmp edi, 8
mov dword [esi + 0x334], edx
jb 0x4240b2
mov edi, dword [esp + 0x60]
jmp case.0x423e39.37379
cmp eax, 0xa405
jne case.0x423e39.37379
mov ecx, esi
call fcn.004103d0
mov word [esi + 0x8610], ax
mov edx, dword [esp + 0x17c]
mov eax, dword [esi]
push 0
push edx
push eax
call fcn.00487810
mov eax, dword [esp + 0x20]
add esp, 0xc
dec eax
mov dword [esp + 0x14], eax
jne 0x423d30
jmp case.0x42512d.50730
cmp edi, 0x8825
ja 0x424310
je 0x424189
cmp edi, 0x8773
je 0x425241
cmp edi, 0x8822
jne case.0x42512d.50730
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x8a]
push 1
push edx
mov byte [esp + 0x92], al
mov byte [esp + 0x93], al
call fcn.00487020
add esp, 0x10
lea eax, [esp + 0x82]
push eax
mov ecx, esi
call fcn.004103a0
mov word [esi + 0x860c], ax
jmp case.0x42512d.50730
mov ecx, dword [esi]
push ecx
mov al, 0xff
push 4
lea edx, [esp + 0xb4]
push 1
push edx
mov byte [esp + 0xbc], al
mov byte [esp + 0xbd], al
mov byte [esp + 0xbe], al
mov byte [esp + 0xbf], al
call fcn.00487020
add esp, 0x10
push 0
lea eax, [esp + 0xb0]
push eax
mov ecx, esi
call fcn.004084a0
mov edx, dword [ebp + 8]
mov ecx, dword [esi]
add eax, edx
push eax
push ecx
call fcn.00487810
add esp, 0xc
mov ecx, esi
call fcn.004103d0
movzx eax, ax
test eax, eax
je case.0x42512d.50730
mov dword [esp + 0x60], eax
lea edx, [esp + 0x174]
push edx
lea eax, [esp + 0x188]
push eax
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x2b8]
push ecx
lea edx, [esp + 0x104]
push edx
push eax
mov ecx, esi
call fcn.00426470
mov ecx, dword [esp + 0xf8]
lea eax, [ecx - 1]
cmp eax, 0x1c
ja case.0x42423b.8
movzx edx, byte [eax + 0x42578c]
jmp dword [edx*4 + 0x425778]
mov eax, dword [esi]
push eax
call fcn.00487c28
mov ecx, dword [esp + 0xfc]
add esp, 4
shr ecx, 1
mov dword [esi + ecx*4 + 0x428], eax
jmp case.0x42423b.8
xor edi, edi
mov ecx, esi
call fcn.00410420
mov ecx, eax
mov eax, 0xaaaaaaab
mul dword [esp + 0xf8]
shr edx, 1
lea edx, [edx + edx*2]
lea eax, [edi + edx*2]
inc edi
cmp edi, 6
mov dword [esi + eax*4 + 0x3b4], ecx
jb 0x424264
jmp case.0x42423b.8
lea edi, [esi + 0x3fc]
mov dword [esp + 0x14], 2
mov edi, edi
mov ecx, esi
call fcn.00410420
mov dword [edi], eax
mov eax, dword [esp + 0x14]
add edi, 4
dec eax
mov dword [esp + 0x14], eax
jne 0x4242a0
jmp case.0x42423b.8
mov eax, dword [esp + 0x184]
cmp eax, 0xc
jb 0x4242ca
mov eax, 0xc
mov edx, dword [esi]
push edx
push eax
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea eax, [esi + edx*4 + 0x3ec]
push eax
call fcn.0048871c
add esp, 0xc
mov ecx, dword [esp + 0x174]
mov edx, dword [esi]
push 0
push ecx
push edx
call fcn.00487810
mov eax, dword [esp + 0x6c]
add esp, 0xc
dec eax
mov dword [esp + 0x60], eax
jne 0x4241f6
jmp case.0x42512d.50730
cmp edi, 0x9102
jne case.0x42512d.50730
mov al, 0xff
mov byte [esp + 0xb0], al
mov byte [esp + 0xb1], al
mov byte [esp + 0xb2], al
mov byte [esp + 0xb3], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0xb8]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0xb0]
push edx
mov ecx, esi
call fcn.004084a0
mov dword [esi + 0x32c], eax
jmp case.0x42512d.50730
mov eax, dword [esp + 0x18]
add eax, 0xfffffffd
cmp eax, 9
ja case.0x42437b.6
jmp dword [eax*4 + 0x4257ac]
push 1
mov ecx, esi
call fcn.004103d0
xor ecx, ecx
mov cx, ax
push ecx
jmp 0x42447f
push 1
mov ecx, esi
call fcn.004103d0
xor edx, edx
mov dx, ax
push edx
jmp 0x42447f
push 1
mov ecx, esi
call fcn.00410420
jmp 0x42447e
mov ecx, esi
call fcn.00410420
mov edi, eax
mov ecx, esi
mov dword [esp + 0x108], edi
call fcn.00410420
push eax
mov dword [esp + 0x110], eax
push edi
jmp 0x42447f
mov ecx, esi
call fcn.00410420
mov dword [esp + 0x20], eax
fld dword [esp + 0x20]
sub esp, 8
lea ecx, [esp + 0x128]
fstp qword [esp]
call fcn.00410380
jmp 0x42448b
push 0x1234
call dword [sym.imp.WS2_32.dll_ntohs]
sub ax, 0x1234
neg ax
sbb eax, eax
xor ecx, ecx
inc eax
cmp word [esi + 4], 0x4949
sete cl
sub ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
imul ecx, ecx, 7
mov dword [esp + 0x20], ecx
xor edi, edi
mov edx, dword [esi]
push edx
call fcn.00487bf7
mov edx, dword [esp + 0x24]
mov ecx, edi
xor ecx, edx
add esp, 4
inc edi
cmp edi, 8
mov byte [esp + ecx + 0x108], al
jl 0x424433
mov edx, dword [esp + 0x10c]
mov eax, dword [esp + 0x108]
push edx
push eax
lea ecx, [esp + 0x128]
call fcn.00410380
jmp 0x42448b
mov ecx, dword [esi]
push 1
push ecx
call fcn.00487bf7
add esp, 4
push eax
lea ecx, [esp + 0x128]
call fcn.00410360
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x124]
lea edx, [esi + 0x8618]
mov dword [edx], eax
mov eax, dword [esp + 0x128]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x12c]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ecx
jmp case.0x42512d.50730
cmp edi, 0x9211
ja 0x424736
je 0x42470a
lea eax, [edi - 0x9207]
cmp eax, 3
ja case.0x42512d.50730
jmp dword [eax*4 + 0x4257d4]
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x86], al
mov byte [esp + 0x87], al
lea eax, [esp + 0x86]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0x7e]
push ecx
mov ecx, esi
call fcn.004103a0
mov word [esi + 0x860a], ax
jmp case.0x42512d.50730
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x98], al
mov byte [esp + 0x99], al
lea eax, [esp + 0x98]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0x90]
push ecx
mov ecx, esi
call fcn.004103a0
mov word [esi + 0x8608], ax
jmp case.0x42512d.50730
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x8e], al
mov byte [esp + 0x8f], al
lea eax, [esp + 0x8e]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0x86]
push ecx
mov ecx, esi
call fcn.004103a0
xor edx, edx
mov dx, ax
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fstp dword [esi + 0x318]
jmp case.0x42512d.50730
mov eax, dword [esp + 0x18]
add eax, 0xfffffffd
cmp eax, 9
ja case.0x4245c4.6
jmp dword [eax*4 + 0x4257e4]
push 1
mov ecx, esi
call fcn.004103d0
xor ecx, ecx
mov cx, ax
push ecx
jmp 0x4246cc
push 1
mov ecx, esi
call fcn.004103d0
xor edx, edx
mov dx, ax
push edx
jmp 0x4246cc
push 1
mov ecx, esi
call fcn.00410420
jmp 0x4246cb
mov ecx, esi
call fcn.00410420
mov edi, eax
mov ecx, esi
mov dword [esp + 0x118], edi
call fcn.00410420
push eax
mov dword [esp + 0x120], eax
push edi
jmp 0x4246cc
mov ecx, esi
call fcn.00410420
mov dword [esp + 0x20], eax
fld dword [esp + 0x20]
sub esp, 8
lea ecx, [esp + 0x158]
fstp qword [esp]
call fcn.00410380
jmp 0x4246d8
push 0x1234
call dword [sym.imp.WS2_32.dll_ntohs]
sub ax, 0x1234
neg ax
sbb eax, eax
xor ecx, ecx
inc eax
cmp word [esi + 4], 0x4949
sete cl
sub ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
imul ecx, ecx, 7
mov dword [esp + 0x20], ecx
xor edi, edi
lea esp, [esp]
mov edx, dword [esi]
push edx
call fcn.00487bf7
mov edx, dword [esp + 0x24]
mov ecx, edi
xor ecx, edx
add esp, 4
inc edi
cmp edi, 8
mov byte [esp + ecx + 0x118], al
jl 0x424680
mov edx, dword [esp + 0x11c]
mov eax, dword [esp + 0x118]
push edx
push eax
lea ecx, [esp + 0x158]
call fcn.00410380
jmp 0x4246d8
mov ecx, dword [esi]
push 1
push ecx
call fcn.00487bf7
add esp, 4
push eax
lea ecx, [esp + 0x158]
call fcn.00410360
mov eax, dword [esp + 0x150]
mov ecx, dword [esp + 0x154]
lea edx, [esi + 0x8638]
mov dword [edx], eax
mov eax, dword [esp + 0x158]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x15c]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ecx
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
mov ecx, esi
jne 0x424726
call fcn.004103d0
movzx eax, ax
mov dword [esi + 0x328], eax
jmp case.0x42512d.50730
call fcn.00410420
mov dword [esi + 0x328], eax
jmp case.0x42512d.50730
cmp edi, 0xb4c3
ja 0x424a0c
je 0x4249d2
cmp edi, 0x9218
je 0x42479e
cmp edi, 0xa405
jne case.0x42512d.50730
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0xa0], al
mov byte [esp + 0xa1], al
lea eax, [esp + 0xa0]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0x98]
push ecx
mov ecx, esi
call fcn.004103a0
mov word [esi + 0x8610], ax
jmp case.0x42512d.50730
mov edx, dword [esp + 0x18]
lea eax, [edx - 3]
lea ecx, [esi + 0x85c8]
mov dword [esi + 0x38c], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], 3
jmp 0x4247d0
mov eax, dword [esp + 0x14]
nop
lea esp, [esp]
cmp eax, 9
ja case.0x4247d5.3
jmp dword [eax*4 + 0x42580c]
mov ecx, esi
call fcn.004103d0
jmp 0x42484f
mov ecx, esi
call fcn.00410420
mov ecx, esi
call fcn.00410420
jmp 0x42484f
push 0x1234
call dword [sym.imp.WS2_32.dll_ntohs]
sub ax, 0x1234
neg ax
sbb eax, eax
xor edx, edx
inc eax
cmp word [esi + 4], 0x4949
sete dl
sub edx, eax
neg edx
sbb edx, edx
inc edx
imul edx, edx, 7
mov dword [esp + 0x20], edx
xor edi, edi
mov eax, dword [esi]
push eax
call fcn.00487bf7
mov edx, dword [esp + 0x24]
mov ecx, edi
xor ecx, edx
add esp, 4
inc edi
cmp edi, 8
mov byte [esp + ecx + 0x60], al
jl 0x424825
jmp 0x42484f
mov edx, dword [esi]
push edx
call fcn.00487bf7
add esp, 4
mov eax, dword [esp + 0x10]
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], 3
nop
mov eax, dword [esp + 0x14]
cmp eax, 9
ja case.0x42486d.3
jmp dword [eax*4 + 0x425834]
mov ecx, esi
call fcn.004103d0
xor ecx, ecx
mov cx, ax
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
jmp 0x42499c
mov ecx, esi
call fcn.00410420
mov dword [esp + 0x200], eax
mov dword [esp + 0x204], 0
fild qword [esp + 0x200]
jmp 0x42499c
mov ecx, esi
call fcn.00410420
mov ecx, esi
mov dword [esp + 0xe0], eax
call fcn.00410420
test eax, eax
mov dword [esp + 0xe4], eax
je 0x4248e5
fild dword [esp + 0xe0]
fidiv dword [esp + 0xe4]
jmp 0x42499c
fld qword [0x65c090]
jmp 0x42499c
mov ecx, esi
call fcn.004103d0
movsx edx, ax
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
jmp 0x42499c
mov ecx, esi
call fcn.00410420
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
jmp 0x42499c
mov ecx, esi
call fcn.00410420
mov dword [esp + 0x20], eax
fld dword [esp + 0x20]
jmp 0x42499c
push 0x1234
call dword [sym.imp.WS2_32.dll_ntohs]
sub ax, 0x1234
neg ax
sbb eax, eax
xor ecx, ecx
inc eax
cmp word [esi + 4], 0x4949
sete cl
sub ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
imul ecx, ecx, 7
mov dword [esp + 0x20], ecx
xor edi, edi
lea esp, [esp]
mov edx, dword [esi]
push edx
call fcn.00487bf7
mov edx, dword [esp + 0x24]
mov ecx, edi
xor ecx, edx
add esp, 4
inc edi
cmp edi, 8
mov byte [esp + ecx + 0xe0], al
jl 0x424960
fld qword [esp + 0xe0]
jmp 0x42499c
mov edx, dword [esi]
push edx
call fcn.00487bf7
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
add esp, 4
mov eax, dword [esp + 0x60]
fstp dword [eax]
add eax, 4
mov dword [esp + 0x60], eax
dec dword [esp + 0x5c]
jne 0x424860
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
add ecx, 0x10
dec eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
jne 0x4247c7
jmp case.0x42512d.50730
mov eax, str.Imacon
mov ecx, esi
sub ecx, eax
lea edx, [ecx + 0x215]
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x4249e1
mov edx, dword [esi]
push edx
call fcn.00487c33
mov dword [esi + 0x340], eax
mov eax, dword [esp + 0x10]
add esp, 4
mov dword [esp + 0xd4], eax
jmp case.0x42512d.50730
cmp edi, 0xb4c7
jne case.0x42512d.50730
mov ecx, dword [esi]
push 1
push 0x4e
push ecx
call fcn.00487810
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0xdc], al
mov byte [esp + 0xdd], al
mov byte [esp + 0xde], al
mov byte [esp + 0xdf], al
lea eax, [esp + 0xdc]
push 1
push eax
call fcn.00487020
add esp, 0x1c
lea ecx, [esp + 0xc8]
push ecx
mov ecx, esi
call fcn.004084a0
mov edx, dword [esi]
push edx
mov word [esi + 0x43a], ax
mov al, 0xff
push 4
mov byte [esp + 0xc0], al
mov byte [esp + 0xc1], al
mov byte [esp + 0xc2], al
mov byte [esp + 0xc3], al
lea eax, [esp + 0xc0]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0xb8]
push ecx
mov ecx, esi
call fcn.004084a0
mov edx, dword [esi]
push edx
mov word [esi + 0x438], ax
mov al, 0xff
push 4
mov byte [esp + 0xe0], al
mov byte [esp + 0xe1], al
mov byte [esp + 0xe2], al
mov byte [esp + 0xe3], al
lea eax, [esp + 0xe0]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0xd8]
push ecx
mov ecx, esi
call fcn.004084a0
mov edx, dword [esi]
and eax, 7
push edx
mov word [esi + 0x442], ax
mov al, 0xff
push 4
mov byte [esp + 0xc8], al
mov byte [esp + 0xc9], al
mov byte [esp + 0xca], al
mov byte [esp + 0xcb], al
lea eax, [esp + 0xc8]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0xc0]
push ecx
mov ecx, esi
call fcn.004084a0
mov dx, word [esi + 0x43a]
and eax, 7
sub dx, ax
sub dx, word [esi + 0x442]
mov ecx, esi
mov word [esi + 0x43e], dx
call fcn.00410420
and eax, 7
mov ecx, esi
mov word [esi + 0x440], ax
call fcn.00410420
mov cx, word [esi + 0x438]
and eax, 7
sub cx, ax
sub cx, word [esi + 0x440]
cmp word [esi + 0x43a], 0x1c5e
mov word [esi + 0x43c], cx
jne 0x424bc0
mov word [esi + 0x43c], 0x1544
mov word [esi + 0x43e], 0x1c4c
mov word [esi + 0x442], 7
mov edx, dword [esi]
push 1
push 0x34
push edx
call fcn.00487810
add esp, 0xc
lea edi, [esi + 0x8578]
mov dword [esp + 0x14], 3
lea ecx, [ecx]
push 0xb
mov ecx, esi
call fcn.004107c0
fstp dword [edi]
mov eax, dword [esp + 0x14]
add edi, 4
dec eax
mov dword [esp + 0x14], eax
jne 0x424be0
mov eax, dword [esi]
push 1
push 0x72
push eax
call fcn.00487810
add esp, 0xc
mov ecx, esi
call fcn.004103d0
mov di, word [esi + 0x43e]
movzx ecx, word [esi + 0x43c]
xor edx, edx
mov dx, di
movzx eax, ax
shr eax, 7
imul eax, eax, 0x5a
imul ecx, edx
mov edx, dword [esp + 0xd4]
lea ecx, [ecx + ecx*2]
shl ecx, 1
cmp ecx, edx
mov dword [esi + 0x450], eax
jne 0x424c86
cdq
mov ecx, 0xb4
idiv ecx
cmp edx, 0x5a
jne 0x424c78
xor eax, eax
mov ax, word [esi + 0x43c]
xor eax, edi
xor word [esi + 0x43c], ax
mov word [esi + 0x43e], ax
mov ax, word [esi + 0x43c]
xor word [esi + 0x43e], ax
xor eax, eax
mov dword [esi + 0x450], eax
mov dword [esi + 0x330], eax
movzx edx, word [esi + 0x43c]
movzx ecx, word [esi + 0x43e]
imul ecx, edx
mov eax, 0x431bde83
imul ecx
sar edx, 0x12
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
lea ecx, [esi + 0x255]
push str.Ixpress__d_Mp
push ecx
call fcn.00488245
mov eax, dword [esi + 0x330]
add esp, 0xc
test eax, eax
mov dword [esi + 0x798d8], 0x425f10
je 0x424cee
test byte [esi + 0x442], 1
je 0x424ce4
mov dword [esi + 0x330], 0x61616161
mov dword [esi + 0x798d8], 0x419fb0
mov dword [esi + 0x384], 0xffff
jmp case.0x42512d.50730
mov edx, dword [esp + 0xc]
push edx
call fcn.00487380
add esp, 4
test eax, eax
mov dword [esp + 0x10], eax
je case.0x42512d.50730
mov eax, dword [esi]
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
push eax
push ecx
push 1
push edi
call fcn.00487020
add esp, 0x10
dec edi
test edi, edi
je 0x424d92
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
add edx, eax
mov dword [esp + 0x20], edx
cmp edi, dword [esp + 0x20]
jae 0x424d92
push 8
inc edi
push str.Neutral
push edi
call fcn.004882a0
add esp, 0xc
test eax, eax
jne 0x424d81
lea ecx, [esi + 0x8580]
push ecx
lea edx, [esi + 0x857c]
push edx
lea eax, [esi + 0x8578]
push eax
lea ecx, [edi + 8]
push str._f__f__f
push ecx
call fcn.00488a42
add esp, 0x14
push 0xa
push edi
call fcn.00488660
mov edi, eax
add esp, 8
test edi, edi
jne 0x424d40
mov edx, dword [esp + 0x10]
push edx
call fcn.00487297
add esp, 4
jmp case.0x42512d.50730
cmp edi, 0xc624
ja 0x425105
cmp edi, 0xc623
jae 0x42505f
cmp edi, 0xc618
ja 0x424ef5
je 0x424ee4
lea eax, [edi - 0xc51b]
cmp eax, 0xfc
ja case.0x42512d.50730
movzx eax, byte [eax + 0x425870]
jmp dword [eax*4 + 0x42585c]
movsx ecx, word [esi + 4]
mov edx, dword [esi]
push edx
mov dword [esp + 0x10], ecx
call fcn.00487c33
mov edi, eax
mov eax, dword [esi + 0x370]
add esp, 4
mov ecx, esi
mov dword [esp + 0x10], eax
call fcn.004103d0
mov ecx, esi
mov word [esi + 4], ax
call fcn.004103d0
push 0
mov ecx, esi
call fcn.00410420
mov ecx, dword [esi]
add eax, edi
push eax
push ecx
call fcn.00487810
add esp, 0xc
push edi
mov ecx, esi
call fcn.004218c0
mov edx, dword [esp + 0x10]
mov ax, word [esp + 0xc]
mov dword [esi + 0x384], 0xffff
mov dword [esi + 0x370], edx
mov word [esi + 4], ax
jmp case.0x42512d.50730
mov edi, 4
mov ecx, dword [esi]
push ecx
call fcn.00487bf7
mov edx, dword [esi + 0x3a0]
shl edx, 8
add eax, edx
add esp, 4
dec edi
mov dword [esi + 0x3a0], eax
jne 0x424e64
jmp case.0x42512d.50730
mov ecx, dword [esp + 0xc]
mov eax, 4
cmp ecx, eax
jbe 0x424e99
mov dword [esp + 0xc], eax
mov ecx, dword [esi]
mov eax, dword [esp + 0xc]
push ecx
push eax
lea edx, [esp + 0x70]
push 1
push edx
mov dword [esi + 0x458], eax
call fcn.00487020
add esp, 0x10
jmp 0x425413
mov ecx, esi
call fcn.004103d0
cmp ax, 2
jne case.0x42512d.50730
mov word [esi + 0x44a], 1
mov dword [esi + 0x330], 0x49494949
jmp case.0x42512d.50730
mov eax, dword [esp + 0xc]
push eax
mov ecx, esi
call fcn.00428e10
jmp case.0x42512d.50730
add edi, 0xffff39e6
cmp edi, 8
ja case.0x42512d.50730
jmp dword [edi*4 + 0x425970]
mov eax, dword [esp + 0xc]
test eax, eax
mov dword [esp + 0x168], 0
mov dword [esp + 0x16c], 0
jbe 0x424f4d
mov edi, eax
nop
lea esp, [esp]
mov ecx, dword [esp + 0x18]
push ecx
mov ecx, esi
call fcn.004107c0
fadd qword [esp + 0x168]
dec edi
fstp qword [esp + 0x168]
jne 0x424f30
mov edx, dword [esp + 0xc]
xor eax, eax
mov dword [esp + 0x1c8], edx
mov dword [esp + 0x1cc], eax
fild qword [esp + 0x1c8]
mov ecx, dword [esi + 0x380]
mov dword [esp + 0x1f8], ecx
mov dword [esp + 0x1fc], eax
fdivr qword [esp + 0x168]
fild qword [esp + 0x1f8]
faddp st(1)
fadd qword [0x65c2f8]
call fcn.00487bd0
mov dword [esi + 0x380], eax
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
mov ecx, esi
jne 0x424fbe
call fcn.004103d0
movzx eax, ax
mov dword [esi + 0x384], eax
jmp case.0x42512d.50730
call fcn.00410420
mov dword [esi + 0x384], eax
jmp case.0x42512d.50730
mov edi, dword [esp + 0x18]
push edi
mov ecx, esi
call fcn.004107c0
fstp qword [esi + 0x460]
push edi
mov ecx, esi
call fcn.004107c0
fdivr qword [esi + 0x460]
fstp qword [esi + 0x460]
jmp case.0x42512d.50730
mov eax, dword [esi + 0x458]
test eax, eax
mov dword [esp + 0x10], 0
jle 0x42504f
lea edi, [esp + 0x450]
mov dword [esp + 0x14], 3
lea ebx, [ebx]
mov edx, dword [esp + 0x18]
push edx
mov ecx, esi
call fcn.004107c0
fstp qword [edi]
mov eax, dword [esp + 0x14]
add edi, 8
dec eax
mov dword [esp + 0x14], eax
jne 0x425020
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 0x458]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x425012
mov dword [esp + 0xf0], 1
jmp case.0x42512d.50730
mov eax, dword [esi + 0x458]
test eax, eax
mov dword [esp + 0xc], 0
jle case.0x42512d.50727
lea ecx, [esp + 0x3d0]
mov dword [esp + 0x10], ecx
lea esp, [esp]
xor edi, edi
test eax, eax
jle 0x4250b4
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], edx
mov edi, edi
mov eax, dword [esp + 0x18]
push eax
mov ecx, esi
call fcn.004107c0
mov eax, dword [esp + 0x14]
fstp qword [eax]
add eax, 8
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x458]
inc edi
cmp edi, eax
jl 0x425090
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
mov eax, dword [esi + 0x458]
inc ecx
add edi, 0x20
cmp ecx, eax
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edi
jl 0x425080
mov eax, dword [esi + 0x458]
xor edi, edi
test eax, eax
jle case.0x42512d.50730
mov edx, dword [esp + 0x18]
push edx
mov ecx, esi
call fcn.004107c0
fstp qword [esp + edi*8 + 0x228]
mov eax, dword [esi + 0x458]
inc edi
cmp edi, eax
jl 0x4250e2
jmp case.0x42512d.50730
cmp edi, 0xc640
ja 0x42521e
je 0x425209
lea eax, [edi - 0xc627]
cmp eax, 0xd
ja case.0x42512d.50730
movzx ecx, byte [eax + 0x4259a8]
jmp dword [ecx*4 + 0x425994]
mov eax, dword [esi + 0x458]
xor edi, edi
test eax, eax
jle case.0x42512d.50730
mov eax, dword [esp + 0x18]
push eax
mov ecx, esi
call fcn.004107c0
fstp qword [esp + edi*8 + 0x208]
mov eax, dword [esi + 0x458]
inc edi
cmp edi, eax
jl 0x425144
jmp case.0x42512d.50730
mov edi, dword [esp + 0x18]
push edi
mov ecx, esi
call fcn.004107c0
fstp qword [esp + 0x188]
push edi
mov ecx, esi
call fcn.004107c0
fst qword [esp + 0x190]
fld qword [0x65c300]
lea ecx, [esp + 0x188]
fsub qword [esp + 0x188]
mov eax, 0x65c068
fsub st(1)
fstp qword [esp + 0x198]
fstp st(0)
lea ecx, [ecx]
fld dword [eax]
add eax, 4
fdivr qword [ecx]
add ecx, 8
cmp eax, 0x65c074
fstp qword [ecx - 8]
jl 0x4251b0
jmp case.0x42512d.50730
mov eax, dword [esi + 0x3a0]
test eax, eax
jne case.0x42512d.50730
mov ecx, esi
call fcn.00410420
mov edi, eax
add edi, dword [ebp + 8]
push edi
mov ecx, esi
call fcn.004296d0
mov ecx, dword [esi]
push 0
push edi
push ecx
call fcn.00487810
mov edx, dword [ebp + 8]
add esp, 0xc
push edx
mov ecx, esi
call fcn.004218c0
jmp case.0x42512d.50730
push 3
lea eax, [esi + 0x850e]
push eax
mov ecx, esi
call fcn.00410b50
jmp case.0x42512d.50730
cmp edi, 0xfd04
ja 0x425346
je 0x4252ff
sub edi, 0xc68d
je 0x425261
sub edi, 2
jne case.0x42512d.50730
mov ecx, dword [esi]
push ecx
call fcn.00487c33
mov edx, dword [esp + 0x10]
add esp, 4
mov dword [esi + 0x34c], eax
mov dword [esi + 0x358], edx
jmp case.0x42512d.50730
cmp dword [esp + 0x18], 3
mov ecx, esi
jne 0x425274
call fcn.004103d0
movzx eax, ax
jmp 0x425279
call fcn.00410420
mov edi, dword [esp + 0x18]
cmp edi, 3
mov word [esi + 0x440], ax
mov ecx, esi
jne 0x425295
call fcn.004103d0
movzx eax, ax
jmp 0x42529a
call fcn.00410420
cmp edi, 3
mov word [esi + 0x442], ax
mov ecx, esi
jne 0x4252b2
call fcn.004103d0
movzx eax, ax
jmp 0x4252b7
call fcn.00410420
sub ax, word [esi + 0x440]
cmp edi, 3
mov word [esi + 0x43c], ax
mov ecx, esi
jne 0x4252e7
call fcn.004103d0
movzx eax, ax
sub ax, word [esi + 0x442]
mov word [esi + 0x43e], ax
jmp case.0x42512d.50730
call fcn.00410420
sub ax, word [esi + 0x442]
mov word [esi + 0x43e], ax
jmp case.0x42512d.50730
mov eax, dword [esi]
push 1
push 0x10
push eax
call fcn.00487810
add esp, 0xc
mov ecx, esi
call fcn.00410420
mov ecx, dword [esi]
push 1
push 0x1c
push ecx
mov dword [esi + 0x340], eax
call fcn.00487810
add esp, 0xc
mov ecx, esi
call fcn.00410420
add dword [esi + 0x340], eax
mov dword [esi + 0x798d8], 0x419c50
jmp case.0x42512d.50730
cmp edi, 0xfd09
jne case.0x42512d.50730
mov eax, dword [esp + 0xc]
cmp eax, 0x10
mov dword [esp + 0xa0], eax
jbe 0x42536d
mov dword [esp + 0xa0], 0x10
mov edx, dword [esi]
mov eax, dword [esp + 0xa0]
push edx
push eax
lea ecx, [esp + 0x2d0]
push 1
push ecx
call fcn.00487020
mov eax, dword [esp + 0xb0]
xor edx, edx
xor edi, edi
add esp, 0x10
cmp eax, edx
mov dword [esp + 0x14], edi
mov dword [esi + 0x458], edx
jbe 0x425413
mov dword [esp + 0x10], edx
mov cl, byte [esp + edx + 0x2c8]
mov eax, 1
shl eax, cl
mov ecx, eax
and ecx, edi
mov edi, dword [esp + 0x10]
neg ecx
sbb ecx, ecx
inc ecx
add edi, ecx
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x14]
or edi, eax
mov eax, dword [esp + 0xa0]
inc edx
cmp edx, eax
mov dword [esp + 0x14], edi
jb 0x4253a7
cmp edi, 0x38
mov edx, dword [esp + 0x10]
mov dword [esi + 0x458], edx
jne 0x425404
mov ax, word [0x6960c4]
mov cl, byte [0x6960c6]
mov word [esp + 0x68], ax
mov byte [esp + 0x6a], cl
jmp 0x425413
cmp edi, 0x3a
jne 0x425413
mov edx, dword [0x6960bc]
mov dword [esp + 0x68], edx
mov ecx, dword [esi + 0x458]
xor eax, eax
test ecx, ecx
jle 0x425431
nop
movzx edx, byte [esp + eax + 0x68]
mov byte [esp + edx + 0x510], al
inc eax
cmp eax, ecx
jl 0x425420
mov byte [eax + esi + 0x10], 0
mov edi, dword [esi + 0x330]
mov ecx, 0x10
dec ecx
xor edx, edx
mov eax, ecx
div dword [esp + 0xa0]
movzx eax, byte [esp + edx + 0x2c8]
movzx edx, byte [esp + eax + 0x510]
lea eax, [edi*4]
or edx, eax
test ecx, ecx
mov edi, edx
jne 0x425441
mov dword [esi + 0x330], edi
jmp case.0x42512d.50730