Function at 0x416200
Capabilities:
Check for software breakpoints
Encode data using xor
Encrypt data using speck
Read file on windows
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x1bc
mov eax, dword [0x4596ac]
xor eax, esp
mov dword [esp + 0x1b8], eax
mov ecx, dword [0x486344]
mov ax, word [0x465c48]
push ebx
push ebp
push esi
push edi
push ecx
push 0xa
xor esi, esi
lea edx, [esp + 0x78]
push 1
push edx
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], esi
xor edi, edi
xor ebx, ebx
mov word [esp + 0x70], ax
call fcn.00435763
push 3
lea eax, [esp + 0x84]
push 0x45aea0
push eax
call fcn.004344d5
add esp, 0x1c
test eax, eax
je 0x417981
push 3
lea ecx, [esp + 0x74]
push 0x45aea4
push ecx
call fcn.004344d5
add esp, 0xc
test eax, eax
je 0x417981
push 4
lea edx, [esp + 0x74]
push 0x45aea8
push edx
call fcn.004344d5
add esp, 0xc
test eax, eax
je 0x417981
push 4
lea eax, [esp + 0x74]
push 0x45aeb0
push eax
call fcn.004344d5
add esp, 0xc
test eax, eax
je 0x417981
push 2
lea ecx, [esp + 0x74]
push 0x45aeb8
push ecx
call fcn.004344d5
add esp, 0xc
test eax, eax
je 0x4178b0
push 3
lea edx, [esp + 0x74]
push 0x45aebc
push edx
call fcn.004344d5
add esp, 0xc
test eax, eax
je 0x4178b0
mov ecx, str.Nikon
lea eax, [esp + 0x70]
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x416320
test dl, dl
je 0x41631c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x416320
add eax, 2
add ecx, 2
test dl, dl
jne 0x416300
xor eax, eax
jmp 0x416325
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
jne 0x416379
mov eax, dword [0x486344]
push eax
call fcn.00435c4a
add esp, 4
mov dword [esp + 0x1d0], eax
call fcn.00401190
mov word [0x465c48], ax
call fcn.00401190
cmp ax, 0x2a
jne 0x417975
call fcn.00401240
mov ecx, dword [0x486344]
push 1
add eax, 0xfffffff8
push eax
push ecx
call fcn.00435f77
add esp, 0xc
xor esi, esi
jmp 0x4165da
mov ecx, 0x45aec8
lea eax, [esp + 0x70]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4163a2
test dl, dl
je 0x41639e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4163a2
add eax, 2
add ecx, 2
test dl, dl
jne 0x416382
xor eax, eax
jmp 0x4163a7
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
jne 0x4163eb
mov edx, dword [0x486344]
push edx
call fcn.00435c4a
add esp, 4
sub eax, 0xa
push 1
mov dword [esp + 0x1d4], eax
mov eax, dword [0x486344]
push 0xfffffffffffffffe
push eax
call fcn.00435f77
add esp, 0xc
call fcn.00401190
mov word [0x465c48], ax
call fcn.00401190
jmp 0x4165da
push 8
lea ecx, [esp + 0x74]
push 0x45aed0
push ecx
call fcn.004344d5
add esp, 0xc
test eax, eax
je 0x4165bc
push 4
lea edx, [esp + 0x74]
push 0x45aedc
push edx
call fcn.004344d5
add esp, 0xc
test eax, eax
je 0x4165bc
mov ecx, 0x45aee4
lea eax, [esp + 0x70]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x416450
test dl, dl
je 0x41644c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x416450
add eax, 2
add ecx, 2
test dl, dl
jne 0x416430
xor eax, eax
jmp 0x416455
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
je 0x4165bc
mov ecx, str.OLYMP
lea eax, [esp + 0x70]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x416486
test dl, dl
je 0x416482
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x416486
add eax, 2
add ecx, 2
test dl, dl
jne 0x416466
xor eax, eax
jmp 0x41648b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
je 0x4165af
mov ecx, 0x45aef8
lea eax, [esp + 0x70]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4164c0
test dl, dl
je 0x4164bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4164c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4164a0
xor eax, eax
jmp 0x4164c5
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
je 0x4165af
mov ecx, str.Ricoh
lea eax, [esp + 0x70]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4164f6
test dl, dl
je 0x4164f2
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4164f6
add eax, 2
add ecx, 2
test dl, dl
jne 0x4164d6
xor eax, eax
jmp 0x4164fb
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
je 0x4165af
mov ecx, 0x45af08
lea eax, [esp + 0x70]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x416530
test dl, dl
je 0x41652c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x416530
add eax, 2
add ecx, 2
test dl, dl
jne 0x416510
xor eax, eax
jmp 0x416535
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
je 0x4165af
mov ecx, 0x45af10
lea eax, [esp + 0x70]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x416562
test dl, dl
je 0x41655e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x416562
add eax, 2
add ecx, 2
test dl, dl
jne 0x416542
xor eax, eax
jmp 0x416567
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
je 0x4165a9
mov ecx, 0x45af14
lea eax, [esp + 0x70]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x416594
test dl, dl
je 0x416590
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x416594
add eax, 2
add ecx, 2
test dl, dl
jne 0x416574
xor eax, eax
jmp 0x416599
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
je 0x4165a9
mov eax, dword [0x486344]
push 1
push 0xfffffffffffffff6
push eax
jmp 0x4165d2
push 1
push 0xfffffffffffffffc
jmp 0x4165cb
mov edx, dword [0x486344]
push 1
push 0xfffffffffffffffe
push edx
jmp 0x4165d2
mov eax, 0x4949
push 1
mov word [0x465c48], ax
push 2
mov ecx, dword [0x486344]
push ecx
call fcn.00435f77
add esp, 0xc
call fcn.00401190
movzx eax, ax
mov dword [esp + 0x68], eax
cmp eax, 0x3e8
ja 0x417981
cmp eax, esi
je 0x417975
mov eax, dword [esp + 0x1d4]
shl eax, 0x10
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x1d0]
dec dword [esp + 0x68]
lea edx, [esp + 0x64]
push edx
lea eax, [esp + 0x50]
push eax
push ebp
lea esi, [esp + 0x28]
lea edi, [esp + 0x24]
call fcn.00415fb0
mov ebx, dword [esp + 0x58]
or ebx, dword [esp + 0x78]
add esp, 0xc
mov dword [esp + 0x4c], ebx
cmp ebx, 2
jne 0x416678
push 0x45af18
push 0x4ac3c0
call fcn.00434a10
add esp, 8
test eax, eax
je 0x416998
call fcn.00401190
call fcn.00401190
movzx ecx, ax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fstp dword [0x4ac40c]
jmp 0x416998
mov eax, 4
cmp ebx, eax
jne 0x4167ab
mov edx, dword [esp + 0x1c]
add edx, 0xffffffe5
cmp edx, 7
ja 0x416998
call fcn.00401240
call fcn.00401190
movzx ecx, ax
cmp ecx, 0x7fff
je 0x4166f0
fldz
fcomp dword [0x4ac40c]
fnstsw ax
test ah, 0x44
jp 0x4166f0
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
test ecx, ecx
jge 0x4166cb
fadd qword [0x451828]
fmul qword [0x451900]
fsub qword [0x4518f8]
fld qword [0x4517b8]
fxch st(1)
call fcn.00447b40
fmul qword [0x4518f0]
fstp dword [0x4ac40c]
call fcn.00401190
call fcn.00401190
movzx ecx, ax
cmp ecx, 0x7fff
je 0x41673f
fldz
fcomp dword [0x486304]
fnstsw ax
test ah, 0x44
jp 0x41673f
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
test ecx, ecx
jge 0x416726
fadd qword [0x451828]
fmul qword [0x4518e8]
fld qword [0x4517b8]
fxch st(1)
call fcn.00447b40
fstp dword [0x486304]
call fcn.00401190
movzx ecx, ax
cmp ecx, 0xffff
je 0x416782
fldz
fcomp dword [0x465f58]
fnstsw ax
test ah, 0x44
jp 0x416782
movsx eax, cx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul qword [0x451990]
fld qword [0x4517b8]
fxch st(1)
call fcn.00447b40
fstp dword [0x465f58]
call fcn.00401190
call fcn.00401190
movzx ecx, ax
mov dword [esp + 0x5c], ecx
call fcn.00401190
call fcn.00401190
movzx edx, ax
mov dword [0x4660a4], edx
jmp 0x416998
cmp ebx, 7
jne 0x4167e0
cmp dword [esp + 0x18], 2
jne 0x416998
cmp dword [esp + 0x1c], 0x14
jbe 0x416998
mov eax, dword [0x486344]
push eax
push 0x40
push 0x4ac440
call fcn.00434fa4
add esp, 0xc
jmp 0x416998
cmp ebx, 8
jne 0x4167fe
cmp dword [esp + 0x18], eax
jne 0x416998
call fcn.00401240
mov dword [0x4660a4], eax
jmp 0x416998
cmp ebx, 9
jne 0x416852
mov ecx, 0x45af20
mov eax, 0x4ac3c0
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x416830
test dl, dl
je 0x41682c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x416830
add eax, 2
add ecx, 2
test dl, dl
jne 0x416810
xor eax, eax
jmp 0x416835
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x416998
mov ecx, dword [0x486344]
push ecx
push 1
push 0x40
push 0x466000
jmp 0x416990
cmp ebx, 0xc
jne 0x4168cc
cmp dword [esp + 0x1c], eax
jne 0x416998
mov esi, dword [esp + 0x18]
add esi, 0xfffffffd
cmp esi, 9
ja 0x416875
push esi
call fcn.004012e0
jmp 0x416889
mov edx, dword [0x486344]
push edx
call fcn.004361ad
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
add esp, 4
fstp dword [0x466110]
cmp esi, 9
ja 0x4168ab
push esi
call fcn.004012e0
fstp dword [0x466118]
add esp, 4
jmp 0x416998
mov eax, dword [0x486344]
push eax
call fcn.004361ad
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
add esp, 4
fstp dword [0x466118]
jmp 0x416998
cmp ebx, 0x10
jne 0x4168ea
cmp dword [esp + 0x18], eax
jne 0x416998
call fcn.00401240
mov dword [0x465c50], eax
jmp 0x416998
cmp ebx, 0x11
jne 0x41693b
cmp dword [0x4ac3a0], 0
je 0x416998
push 5
push 0x45af28
push 0x4ac3c0
call fcn.004344d5
add esp, 0xc
test eax, eax
jne 0x416998
push eax
call fcn.00401240
mov ecx, dword [0x486344]
add eax, ebp
push eax
push ecx
call fcn.00435f77
add esp, 0xc
push ebp
call fcn.00418bf0
add esp, 4
jmp 0x416998
cmp ebx, 0x14
jne 0x41696c
cmp dword [esp + 0x1c], 0xa00
jne 0x416998
cmp dword [esp + 0x18], 7
jne 0x416998
mov edx, dword [0x486344]
push 1
push 0x4e0
push edx
call fcn.00435f77
add esp, 0xc
jmp 0x41748c
cmp ebx, 0x15
jne 0x416998
cmp dword [esp + 0x18], 2
jne 0x416998
cmp dword [0x4ac3a0], 0
je 0x416998
mov eax, dword [0x486344]
push eax
push 1
push 0x40
push 0x466060
call fcn.00435763
add esp, 0x10
push 0x45af30
push 0x4ac3c0
call fcn.00434a10
add esp, 8
test eax, eax
je 0x4169da
cmp ebx, 0x1b
jne 0x4169c4
mov dword [esp + 0x4c], 0x1018
mov esi, dword [esp + 0x4c]
jmp 0x417406
cmp ebx, 0x1c
jne 0x4169da
mov dword [esp + 0x4c], 0x1017
mov esi, dword [esp + 0x4c]
jmp 0x417387
cmp ebx, 0x1d
jne 0x416a54
mov ecx, dword [0x486344]
push ecx
call fcn.004361ad
mov esi, eax
add esp, 4
test esi, esi
je 0x417574
jmp 0x416a00
cmp esi, 0xffffffff
je 0x417574
push esi
call fcn.004346ec
add esp, 4
test eax, eax
je 0x416a1b
add esi, 0xffffffd0
jmp 0x416a2c
mov eax, 0xcccccccd
mul esi
shr edx, 3
lea edx, [edx + edx*4]
add edx, edx
sub esi, edx
mov eax, dword [esp + 0x58]
mov edx, dword [0x486344]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*2]
push edx
mov dword [esp + 0x5c], ecx
call fcn.004361ad
mov esi, eax
add esp, 4
test esi, esi
jne 0x416a00
jmp 0x417574
cmp ebx, 0x81
jne 0x416aaf
mov eax, dword [esp + 0x18]
cmp eax, 4
jne 0x416b22
call fcn.00401240
mov dword [0x465d28], eax
add eax, 0x29
push 0
push eax
mov eax, dword [0x486344]
push eax
call fcn.00435f77
add esp, 0xc
call fcn.00401190
add ax, ax
mov word [0x465d20], ax
call fcn.00401190
mov word [0x4ac484], ax
mov dword [0x466120], 0x61616161
jmp 0x417574
cmp ebx, 0x29
jne 0x416b2c
cmp dword [esp + 0x18], 1
jne 0x417574
mov eax, dword [esp + 0x5c]
cmp eax, 0x12
jae 0x416ad4
movsx eax, byte [eax + str.012347800000005896]
sub eax, 0x30
jmp 0x416ad6
xor eax, eax
mov ecx, dword [0x486344]
shl eax, 5
push 1
add eax, 8
push eax
push ecx
call fcn.00435f77
add esp, 0xc
xor esi, esi
call fcn.00401240
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
test eax, eax
jge 0x416b07
fadd dword [0x451808]
mov edx, esi
xor edx, 2
shr edx, 1
xor edx, esi
inc esi
fstp dword [edx*4 + 0x466110]
cmp esi, 4
jb 0x416af0
jmp 0x417574
cmp eax, 7
je 0x416b57
jmp 0x417574
cmp ebx, 0x100
jne 0x416b40
cmp dword [esp + 0x18], 7
je 0x416b57
jmp 0x417574
cmp ebx, 0x280
jne 0x416b76
cmp dword [esp + 0x18], 1
jne 0x417574
mov ebx, dword [esp + 0x4c]
mov eax, dword [0x486344]
mov ebp, dword [esp + 0x1c]
push eax
call fcn.00435c4a
add esp, 4
mov dword [0x465c44], eax
mov dword [0x465c5c], ebp
jmp 0x416b7a
mov ebp, dword [esp + 0x1c]
cmp ebx, 0x88
jne 0x416bb0
cmp dword [esp + 0x18], 4
jne 0x417574
call fcn.00401240
mov dword [0x465c44], eax
test eax, eax
je 0x417574
add eax, dword [esp + 0x1d0]
mov dword [0x465c44], eax
jmp 0x417574
cmp ebx, 0x89
jne 0x416bd2
cmp dword [esp + 0x18], 4
jne 0x417574
call fcn.00401240
mov dword [0x465c5c], eax
jmp 0x417574
cmp ebx, 0x8c
je 0x416be2
cmp ebx, 0x96
jne 0x416bf6
mov ecx, dword [0x486344]
push ecx
call fcn.00435c4a
add esp, 4
mov dword [0x465c54], eax
cmp ebx, 0x97
jne 0x416d15
mov edi, dword [esp + 0x54]
mov esi, 4
jmp 0x416c10
mov edx, dword [0x486344]
push edx
call fcn.004361ad
add esp, 4
sub esi, 1
lea ecx, [edi + edi*4]
lea edi, [eax + ecx*2 - 0x30]
jne 0x416c10
mov eax, edi
sub eax, 0x64
mov dword [esp + 0x54], edi
je 0x416c83
sub eax, 2
je 0x416c7a
sub eax, 1
jne 0x416cc7
mov edx, dword [0x486344]
push 1
push 0x10
push edx
call fcn.00435f77
add esp, 0xc
call fcn.00401190
movzx eax, ax
mov dword [esp + 0x14], eax
add esi, 4
fild dword [esp + 0x14]
fstp dword [esi + 0x46610c]
cmp esi, 0x10
jb 0x416c57
jmp 0x417574
push 1
push 6
jmp 0x417782
mov edx, dword [0x486344]
push 1
push 0x44
push edx
call fcn.00435f77
add esp, 0xc
xor esi, esi
call fcn.00401190
movzx eax, ax
mov ecx, esi
and ecx, 1
mov edx, esi
mov dword [esp + 0x14], eax
add ecx, ecx
shr edx, 1
fild dword [esp + 0x14]
or ecx, edx
inc esi
fstp dword [ecx*4 + 0x466110]
cmp esi, 4
jb 0x416c98
jmp 0x417574
cmp edi, 0xc8
jb 0x417574
cmp dword [esp + 0x54], 0xcd
je 0x416cf2
mov eax, dword [0x486344]
push 1
push 0x118
push eax
call fcn.00435f77
add esp, 0xc
mov ecx, dword [0x486344]
push ecx
push 1
lea edx, [esp + 0x84]
push 0x144
push edx
call fcn.00435763
add esp, 0x10
jmp 0x417574
cmp ebx, 0xa4
jne 0x416d69
cmp dword [esp + 0x18], 3
jne 0x417574
mov eax, dword [esp + 0x5c]
mov ecx, dword [0x486344]
lea eax, [eax + eax*2]
push 1
shl eax, 4
push eax
push ecx
call fcn.00435f77
add esp, 0xc
xor esi, esi
call fcn.00401190
movzx edx, ax
mov dword [esp + 0x14], edx
add esi, 4
fild dword [esp + 0x14]
fstp dword [esi + 0x46610c]
cmp esi, 0xc
jb 0x416d46
jmp 0x417574
cmp ebx, 0xa7
jne 0x416f50
mov eax, dword [esp + 0x54]
add eax, 0xffffff38
cmp eax, 0xc
jae 0x417574
fldz
fcomp dword [0x466110]
fnstsw ax
test ah, 0x44
jp 0x417574
mov ecx, dword [esp + 0x58]
mov edx, dword [0x486344]
and ecx, 0xff
mov bl, byte [ecx + 0x44ee18]
push edx
mov byte [esp + 0x57], bl
call fcn.004361ad
mov esi, eax
mov eax, dword [0x486344]
add esp, 4
push eax
call fcn.004361ad
mov ecx, dword [0x486344]
add esp, 4
push ecx
xor esi, eax
call fcn.004361ad
mov edx, dword [0x486344]
add esp, 4
mov edi, eax
push edx
xor edi, esi
call fcn.004361ad
xor eax, edi
mov dl, byte [eax + 0x44ef18]
mov al, bl
mov bl, 0x60
add esp, 4
xor ecx, ecx
imul bl
add dl, al
xor byte [esp + ecx + 0x7c], dl
add al, byte [esp + 0x53]
inc ecx
cmp ecx, 0x144
jb 0x416e01
mov eax, dword [esp + 0x54]
movsx eax, byte [eax + 0x45ae84]
mov dx, word [0x465c48]
sub eax, 0x30
mov ecx, eax
mov esi, 0x4949
and ecx, 0xfffffffe
cmp dx, si
jne 0x416e46
movzx si, byte [esp + ecx + 0x7d]
movzx di, byte [esp + ecx + 0x7c]
jmp 0x416e52
movzx si, byte [esp + ecx + 0x7c]
movzx di, byte [esp + ecx + 0x7d]
shl si, 8
or si, di
movzx esi, si
movzx esi, si
mov dword [esp + 0x14], esi
and eax, 1
mov esi, 0x4949
fild dword [esp + 0x14]
fstp dword [eax*4 + 0x466110]
cmp dx, si
jne 0x416e89
movzx si, byte [esp + ecx + 0x7f]
movzx di, byte [esp + ecx + 0x7e]
jmp 0x416e95
movzx si, byte [esp + ecx + 0x7e]
movzx di, byte [esp + ecx + 0x7f]
shl si, 8
or si, di
movzx esi, si
movzx esi, si
mov dword [esp + 0x14], esi
mov esi, eax
xor esi, 1
fild dword [esp + 0x14]
fstp dword [esi*4 + 0x466110]
mov esi, 0x4949
cmp dx, si
jne 0x416ed4
movzx si, byte [esp + ecx + 0x81]
movzx di, byte [esp + ecx + 0x80]
jmp 0x416ee6
movzx si, byte [esp + ecx + 0x80]
movzx di, byte [esp + ecx + 0x81]
shl si, 8
or si, di
movzx esi, si
movzx esi, si
mov dword [esp + 0x14], esi
mov esi, eax
xor esi, 3
fild dword [esp + 0x14]
lea ecx, [esp + ecx + 0x82]
fstp dword [esi*4 + 0x466110]
mov esi, 0x4949
cmp dx, si
jne 0x416f23
movzx dx, byte [ecx + 1]
movzx cx, byte [ecx]
jmp 0x416f2c
movzx dx, byte [ecx]
movzx cx, byte [ecx + 1]
shl dx, 8
or dx, cx
movzx ecx, dx
movzx edx, cx
mov dword [esp + 0x14], edx
xor eax, 2
fild dword [esp + 0x14]
fstp dword [eax*4 + 0x466110]
jmp 0x417574
cmp ebx, 0x200
jne 0x416fb3
cmp ebp, 3
jne 0x416f71
call fcn.00401240
call fcn.00401240
mov dword [0x4660a4], eax
jmp 0x417574
cmp ebp, 4
jne 0x417574
call fcn.00401190
movzx esi, ax
call fcn.00401190
movzx eax, ax
add esi, eax
call fcn.00401190
movzx ecx, ax
add esi, ecx
call fcn.00401190
movzx eax, ax
add eax, esi
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [0x4862f4], eax
jmp 0x417574
cmp ebx, 0x201
jne 0x416fc9
cmp ebp, 4
je 0x417791
jmp 0x417574
cmp ebx, 0x220
jne 0x416ff7
cmp ebp, 0x35
jne 0x417574
mov edx, dword [0x486344]
push 1
push 0xe
push edx
call fcn.00435f77
add esp, 0xc
call fcn.00404160
jmp 0x417574
cmp ebx, 0x401
jne 0x417031
cmp ebp, 4
jne 0x417574
call fcn.00401240
mov esi, eax
call fcn.00401240
add esi, eax
call fcn.00401240
add esi, eax
call fcn.00401240
add eax, esi
shr eax, 2
mov dword [0x4862f4], eax
jmp 0x417574
cmp ebx, 0xe01
jne 0x41713c
movsx eax, word [0x465c48]
mov edx, dword [0x486344]
push 1
mov ecx, 0x4949
push 0x16
push edx
mov dword [esp + 0x24], eax
mov word [0x465c48], cx
call fcn.00435f77
add esp, 0xc
mov edi, 0x16
cmp ebp, 0x2c
jbe 0x417130
call fcn.00401240
mov ebx, eax
mov eax, dword [0x486344]
push 1
push 0xe
push eax
mov dword [esp + 0x58], ebx
call fcn.00435f77
add esp, 0xc
call fcn.00401240
mov esi, eax
sub esi, 4
cmp ebx, 0x76a43207
jne 0x417110
mov ecx, dword [0x486344]
push ecx
push 2
lea edx, [esp + 0x40]
push 1
push edx
mov byte [esp + 0x48], 0xff
mov byte [esp + 0x49], 0xff
call fcn.00435763
movzx cx, byte [esp + 0x49]
mov eax, 0x4949
add esp, 0x10
cmp word [0x465c48], ax
jne 0x4170f5
movzx dx, byte [esp + 0x38]
shl cx, 8
or cx, dx
movzx eax, cx
movzx edx, ax
mov dword [0x486340], edx
jmp 0x417121
movzx ax, byte [esp + 0x38]
shl ax, 8
or ax, cx
movzx eax, ax
movzx edx, ax
mov dword [0x486340], edx
jmp 0x417121
mov eax, dword [0x486344]
push 1
push esi
push eax
call fcn.00435f77
add esp, 0xc
lea edi, [edi + esi + 0x16]
lea ecx, [edi + 0x16]
cmp ecx, ebp
jb 0x417075
mov dx, word [esp + 0x18]
mov word [0x465c48], dx
cmp ebx, 0xe80
jne 0x4171bc
cmp ebp, 0x100
jne 0x417574
cmp dword [esp + 0x18], 7
jne 0x417574
mov eax, dword [0x486344]
push 1
push 0x30
push eax
call fcn.00435f77
add esp, 0xc
call fcn.00401190
movzx ecx, ax
imul ecx, ecx, 0x1fc
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fmul qword [0x451988]
fmul qword [0x451848]
fstp dword [0x466110]
call fcn.00401190
movzx edx, ax
imul edx, edx, 0x17e
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul qword [0x451980]
fmul qword [0x451848]
jmp 0x41756e
cmp ebx, 0xf00
jne 0x417221
cmp dword [esp + 0x18], 7
jne 0x417574
mov eax, dword [esp + 0x1c]
cmp eax, 0x266
jne 0x4171f4
mov eax, dword [0x486344]
push 1
push 0xb0
push eax
call fcn.00435f77
add esp, 0xc
jmp 0x41748c
cmp eax, 0x2de
je 0x417206
cmp eax, 0x5de
jne 0x41788b
mov ecx, dword [0x486344]
push 1
push 0x94
push ecx
call fcn.00435f77
add esp, 0xc
jmp 0x41748c
cmp ebx, 0x1011
jne 0x417233
cmp ebp, 9
je 0x41723f
jmp 0x417574
cmp ebx, 0x20400200
jne 0x4172d5
mov ebx, 0x465c60
mov ebp, 3
lea esp, [esp]
mov esi, ebx
mov edi, 3
mov edx, dword [0x486344]
push edx
push 2
lea eax, [esp + 0x2c]
push 1
push eax
mov byte [esp + 0x34], 0xff
mov byte [esp + 0x35], 0xff
call fcn.00435763
movzx dx, byte [esp + 0x35]
mov ecx, 0x4949
add esp, 0x10
cmp word [0x465c48], cx
jne 0x41729f
movzx ax, byte [esp + 0x24]
shl dx, 8
or dx, ax
movzx eax, dx
jmp 0x4172af
movzx cx, byte [esp + 0x24]
shl cx, 8
or cx, dx
movzx eax, cx
cwde
mov dword [esp + 0x14], eax
add esi, 4
sub edi, 1
fild dword [esp + 0x14]
fmul qword [0x451978]
fstp dword [esi - 4]
jne 0x417257
add ebx, 0x10
sub ebp, 1
jne 0x417250
mov eax, dword [esp + 0x4c]
cmp eax, 0x1012
je 0x4172eb
cmp eax, 0x20400600
jne 0x417373
cmp dword [esp + 0x1c], 4
jne 0x417373
mov dword [0x4862f4], 0
mov esi, 4
mov ecx, dword [0x486344]
push ecx
push 2
lea edx, [esp + 0x48]
push 1
push edx
mov byte [esp + 0x50], 0xff
mov byte [esp + 0x51], 0xff
call fcn.00435763
movzx cx, byte [esp + 0x51]
mov eax, 0x4949
add esp, 0x10
cmp word [0x465c48], ax
jne 0x41734d
movzx dx, byte [esp + 0x40]
shl cx, 8
or cx, dx
movzx eax, cx
jmp 0x41735d
movzx ax, byte [esp + 0x40]
shl ax, 8
or ax, cx
movzx eax, ax
sub esi, 1
movzx edx, ax
mov eax, dword [0x4862f4]
lea ecx, [eax + edx*4]
mov dword [0x4862f4], ecx
jne 0x417305
mov esi, dword [esp + 0x4c]
cmp esi, 0x1017
je 0x417387
cmp esi, 0x20400100
jne 0x4173f6
mov edx, dword [0x486344]
push edx
push 2
lea eax, [esp + 0x3c]
push 1
push eax
mov byte [esp + 0x44], 0xff
mov byte [esp + 0x45], 0xff
call fcn.00435763
movzx dx, byte [esp + 0x45]
mov ecx, 0x4949
add esp, 0x10
cmp word [0x465c48], cx
jne 0x4173cf
movzx ax, byte [esp + 0x34]
shl dx, 8
or dx, ax
movzx eax, dx
jmp 0x4173df
movzx cx, byte [esp + 0x34]
shl cx, 8
or cx, dx
movzx eax, cx
movzx eax, ax
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul qword [0x451978]
fstp dword [0x466110]
cmp esi, 0x1018
je 0x417406
cmp esi, 0x20400100
jne 0x417475
mov ecx, dword [0x486344]
push ecx
push 2
lea edx, [esp + 0x34]
push 1
push edx
mov byte [esp + 0x3c], 0xff
mov byte [esp + 0x3d], 0xff
call fcn.00435763
movzx cx, byte [esp + 0x3d]
mov eax, 0x4949
add esp, 0x10
cmp word [0x465c48], ax
jne 0x41744e
movzx dx, byte [esp + 0x2c]
shl cx, 8
or cx, dx
movzx eax, cx
jmp 0x41745e
movzx ax, byte [esp + 0x2c]
shl ax, 8
or ax, cx
movzx eax, ax
movzx edx, ax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul qword [0x451978]
fstp dword [0x466118]
cmp esi, 0x2011
jne 0x417574
cmp dword [esp + 0x1c], 2
jne 0x417574
mov ecx, dword [0x486344]
push ecx
push 2
lea edx, [esp + 0x44]
mov eax, 0x4d4d
push 1
push edx
mov word [0x465c48], ax
mov byte [esp + 0x4c], 0xff
mov byte [esp + 0x4d], 0xff
call fcn.00435763
movzx cx, byte [esp + 0x4d]
mov eax, 0x4949
add esp, 0x10
cmp word [0x465c48], ax
jne 0x4174df
movzx dx, byte [esp + 0x3c]
shl cx, 8
or cx, dx
movzx eax, cx
jmp 0x4174ef
movzx ax, byte [esp + 0x3c]
shl ax, 8
or ax, cx
movzx eax, ax
movzx edx, ax
mov eax, dword [0x486344]
mov dword [esp + 0x14], edx
push eax
push 2
fild dword [esp + 0x1c]
lea ecx, [esp + 0x28]
push 1
push ecx
fmul qword [0x451978]
mov byte [esp + 0x30], 0xff
mov byte [esp + 0x31], 0xff
fstp dword [0x466110]
call fcn.00435763
movzx ax, byte [esp + 0x31]
mov edx, 0x4949
add esp, 0x10
cmp word [0x465c48], dx
jne 0x41754d
movzx cx, byte [esp + 0x20]
shl ax, 8
or ax, cx
movzx eax, ax
jmp 0x41755d
movzx dx, byte [esp + 0x20]
shl dx, 8
or dx, ax
movzx eax, dx
movzx ecx, ax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fmul qword [0x451978]
fstp dword [0x466118]
mov edi, dword [esp + 0x4c]
mov edx, edi
or edx, 0x70
cmp edx, 0x2070
jne 0x417627
cmp dword [esp + 0x18], 4
jne 0x417627
mov eax, dword [0x486344]
push eax
push 4
lea ecx, [esp + 0x4c]
push 1
push ecx
mov byte [esp + 0x54], 0xff
mov byte [esp + 0x55], 0xff
mov byte [esp + 0x56], 0xff
mov byte [esp + 0x57], 0xff
call fcn.00435763
movzx ecx, byte [esp + 0x56]
mov edx, 0x4949
add esp, 0x10
cmp word [0x465c48], dx
movzx edx, byte [esp + 0x45]
jne 0x4175f2
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 0x41760b
movzx eax, byte [esp + 0x44]
shl eax, 8
or eax, edx
movzx edx, byte [esp + 0x47]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, edx
mov esi, dword [esp + 0x1d0]
add eax, esi
push 0
push eax
mov eax, dword [0x486344]
push eax
call fcn.00435f77
add esp, 0xc
jmp 0x41762e
mov esi, dword [esp + 0x1d0]
cmp edi, 0x2010
jne 0x417650
cmp dword [esp + 0x18], 7
je 0x41788b
mov dword [0x4862f0], 0x4085a0
jmp 0x41788b
cmp edi, 0x2020
jne 0x417670
push 0x102
push 0x101
push esi
call fcn.00416020
add esp, 0xc
jmp 0x41788b
cmp edi, 0x2040
jne 0x417687
push edi
push esi
call fcn.00416200
add esp, 8
jmp 0x41788b
cmp edi, 0xb028
jne 0x417734
mov ecx, dword [0x486344]
push ecx
push 4
lea edx, [esp + 0x50]
push 1
push edx
mov byte [esp + 0x58], 0xff
mov byte [esp + 0x59], 0xff
mov byte [esp + 0x5a], 0xff
mov byte [esp + 0x5b], 0xff
call fcn.00435763
movzx ecx, byte [esp + 0x5a]
movzx edx, byte [esp + 0x59]
mov eax, 0x4949
add esp, 0x10
cmp word [0x465c48], ax
jne 0x4176f2
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 0x41770b
movzx eax, byte [esp + 0x48]
shl eax, 8
or eax, edx
movzx edx, byte [esp + 0x4b]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, edx
push 0
push eax
mov eax, dword [0x486344]
push eax
call fcn.00435f77
add esp, 0xc
push 0x89
push 0x88
push esi
call fcn.00416020
add esp, 0xc
jmp 0x41788b
cmp edi, 0x4001
jne 0x41788b
cmp dword [esp + 0x1c], 0x1f4
jbe 0x41788b
mov eax, dword [esp + 0x1c]
cmp eax, 0x246
jne 0x417760
mov eax, 0x32
jmp 0x41777f
cmp eax, 0x28d
jne 0x41776e
mov eax, 0x44
jmp 0x41777f
sub eax, 0x1400
neg eax
sbb eax, eax
and eax, 0xfffffff0
add eax, 0x8e
push 1
push eax
mov ecx, dword [0x486344]
push ecx
call fcn.00435f77
add esp, 0xc
xor esi, esi
mov edx, dword [0x486344]
push edx
push 2
lea eax, [esp + 0x30]
push 1
push eax
mov byte [esp + 0x38], 0xff
mov byte [esp + 0x39], 0xff
call fcn.00435763
movzx dx, byte [esp + 0x39]
mov ecx, 0x4949
add esp, 0x10
cmp word [0x465c48], cx
jne 0x4177db
movzx ax, byte [esp + 0x28]
shl dx, 8
or dx, ax
movzx eax, dx
jmp 0x4177eb
movzx cx, byte [esp + 0x28]
shl cx, 8
or cx, dx
movzx eax, cx
movzx eax, ax
mov ecx, esi
shr ecx, 1
mov dword [esp + 0x14], eax
xor ecx, esi
inc esi
fild dword [esp + 0x14]
fstp dword [ecx*4 + 0x466110]
cmp esi, 4
jb 0x417793
mov edx, dword [0x486344]
push 1
push 0x16
push edx
call fcn.00435f77
add esp, 0xc
xor esi, esi
mov edi, edi
mov eax, dword [0x486344]
push eax
push 2
lea ecx, [esp + 0x38]
push 1
push ecx
mov byte [esp + 0x40], 0xff
mov byte [esp + 0x41], 0xff
call fcn.00435763
movzx ax, byte [esp + 0x41]
mov edx, 0x4949
add esp, 0x10
cmp word [0x465c48], dx
jne 0x417867
movzx cx, byte [esp + 0x30]
shl ax, 8
or ax, cx
movzx eax, ax
jmp 0x417877
movzx dx, byte [esp + 0x30]
shl dx, 8
or dx, ax
movzx eax, dx
mov ecx, esi
shr ecx, 1
xor ecx, esi
inc esi
mov word [ecx*2 + 0x4ac390], ax
cmp esi, 4
jb 0x417820
mov edx, dword [esp + 0x64]
mov eax, dword [0x486344]
push 0
push edx
push eax
call fcn.00435f77
add esp, 0xc
cmp dword [esp + 0x68], 0
jne 0x416607
jmp 0x417975
mov edx, dword [0x486344]
mov ecx, 0x4d4d
push edx
mov word [0x465c48], cx
call fcn.00435c4a
add esp, 4
cmp eax, dword [0x465d28]
jae 0x417975
cmp eax, 0x4000
jae 0x417975
mov ebp, esi
mov esi, edi
mov edi, ebx
call fcn.00401190
movzx ebx, ax
cmp edi, 0x100
jne 0x41795b
cmp ebx, edi
jne 0x41795b
lea eax, [ebp - 0x101]
cmp eax, 0x17e
ja 0x41795b
lea ecx, [esi - 0x101]
cmp ecx, 0x17e
ja 0x41795b
mov dword [esp + 0x64], ebp
fild dword [esp + 0x64]
test ebp, ebp
jge 0x417929
fadd dword [0x451808]
fstp dword [0x466110]
mov edx, esi
fld dword [0x451970]
mov dword [esp + 0x64], edx
fst dword [0x466114]
fild dword [esp + 0x64]
test edx, edx
jge 0x41794f
fadd dword [0x451808]
fstp dword [0x466118]
fstp dword [0x46611c]
mov eax, dword [0x486344]
push eax
call fcn.00435c4a
add esp, 4
cmp eax, dword [0x465d28]
jb 0x4178d7
mov cx, word [esp + 0x60]
mov word [0x465c48], cx
mov ecx, dword [esp + 0x1c8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004334ab
add esp, 0x1bc
ret