Function at 0x426630
Capabilities:
Check for software breakpoints
Encode data using xor
Encrypt data using rc4 ksa
Encrypt data using speck
Resolve function by parsing pe exports
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2a8
push esi
mov esi, ecx
mov ecx, dword [esi]
mov ax, word [esi + 4]
push edi
push ecx
xor edi, edi
push 0xa
lea edx, [esp + 0x68]
push 1
push edx
mov dword [esp + 0x30], esi
mov dword [esp + 0xc0], edi
mov dword [esp + 0xec], edi
mov dword [esp + 0xe8], edi
mov dword [esp + 0xf0], edi
mov dword [esp + 0xf4], edi
mov dword [esp + 0xfc], edi
mov word [esp + 0x11c], ax
call fcn.00487020
push 3
lea eax, [esp + 0x74]
push 0x69631c
push eax
call fcn.004882a0
add esp, 0x1c
test eax, eax
je 0x428635
push 3
lea ecx, [esp + 0x64]
push 0x696318
push ecx
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x428635
push 4
lea edx, [esp + 0x64]
push str.IIII
push edx
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x428635
push 4
lea eax, [esp + 0x64]
push str.MMMM
push eax
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x428635
push 2
lea ecx, [esp + 0x64]
push 0x696314
push ecx
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x42863d
push 3
lea edx, [esp + 0x64]
push 0x696310
push edx
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x42863d
mov edi, str.Nikon
lea esi, [esp + 0x60]
mov ecx, 6
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x42682b
mov esi, dword [esp + 0x20]
mov ecx, dword [esi]
push ecx
call fcn.00487c33
mov edx, dword [esi]
push edx
mov dword [ebp + 8], eax
mov al, 0xff
push 2
mov byte [esp + 0x14], al
mov byte [esp + 0x15], al
lea eax, [esp + 0x14]
push 1
push eax
call fcn.00487020
mov edi, 0x4949
add esp, 0x14
xor eax, eax
cmp word [esi + 4], di
jne 0x426791
mov ah, byte [esp + 9]
mov al, byte [esp + 8]
jmp 0x42679d
movzx cx, byte [esp + 9]
mov ah, byte [esp + 8]
or eax, ecx
mov edx, dword [esi]
push edx
mov word [esi + 4], ax
mov al, 0xff
push 2
mov byte [esp + 0x10], al
mov byte [esp + 0x11], al
lea eax, [esp + 0x10]
push 1
push eax
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], di
jne 0x4267d1
mov ah, byte [esp + 9]
mov al, byte [esp + 8]
jmp 0x4267dd
movzx cx, byte [esp + 9]
mov ah, byte [esp + 8]
or eax, ecx
cmp ax, 0x2a
jne 0x428625
mov esi, dword [esp + 0x20]
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0x1c], al
mov byte [esp + 0x1d], al
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], al
lea eax, [esp + 0x1c]
push 1
push eax
call fcn.00487020
add esp, 0x10
push 1
lea ecx, [esp + 0x18]
push ecx
mov ecx, esi
call fcn.004084a0
mov edx, dword [esi]
sub eax, 8
push eax
push edx
jmp 0x4269c5
mov edi, str.OLYMPUS
lea esi, [esp + 0x60]
mov ecx, 8
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x4268c6
mov esi, dword [esp + 0x20]
mov ecx, dword [esi]
push ecx
call fcn.00487c33
mov edx, dword [esi]
push 1
sub eax, 0xa
push 0xfffffffffffffffe
push edx
mov dword [ebp + 8], eax
call fcn.00487810
mov al, 0xff
mov byte [esp + 0x18], al
mov byte [esp + 0x19], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x20]
push 1
push ecx
call fcn.00487020
add esp, 0x20
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x426893
mov ah, byte [esp + 9]
mov al, byte [esp + 8]
jmp 0x42689f
movzx dx, byte [esp + 9]
mov ah, byte [esp + 8]
or eax, edx
mov word [esi + 4], ax
mov al, 0xff
mov byte [esp + 0x3c], al
mov byte [esp + 0x3d], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x44]
push 1
push ecx
call fcn.00487020
add esp, 0x10
jmp 0x4269cd
push 8
lea edx, [esp + 0x64]
push str.FUJIFILM
push edx
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x4269b4
push 4
lea eax, [esp + 0x64]
push str.SONY
push eax
call fcn.004882a0
add esp, 0xc
test eax, eax
je 0x4269b4
mov edi, str.Panasonic
lea esi, [esp + 0x60]
mov ecx, 0xa
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4269b4
mov edi, str.OLYMP
lea esi, [esp + 0x60]
mov ecx, 6
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x4269a7
mov edi, str.LEICA
lea esi, [esp + 0x60]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4269a7
mov edi, str.Ricoh
lea esi, [esp + 0x60]
mov ecx, 6
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x4269a7
mov edi, str.EPSON
lea esi, [esp + 0x60]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4269a7
mov edi, 0x6962f4
lea esi, [esp + 0x60]
mov ecx, 4
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x42699b
mov edi, 0x6962f0
lea esi, [esp + 0x60]
mov ecx, 4
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x42699b
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
push 1
push 0xfffffffffffffff6
push ecx
jmp 0x4269c5
mov edx, dword [esp + 0x20]
mov eax, dword [edx]
push 1
push 0xfffffffffffffffc
jmp 0x4269c4
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx]
push 1
push 0xfffffffffffffffe
push edx
jmp 0x4269c5
mov eax, dword [esp + 0x20]
push 1
mov word [eax + 4], 0x4949
mov eax, dword [eax]
push 2
push eax
call fcn.00487810
add esp, 0xc
mov esi, dword [esp + 0x20]
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x10]
push 1
push edx
mov byte [esp + 0x18], al
mov byte [esp + 0x19], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x426a03
mov ah, byte [esp + 9]
mov al, byte [esp + 8]
jmp 0x426a0f
movzx cx, byte [esp + 9]
mov ah, byte [esp + 8]
or eax, ecx
movzx eax, ax
cmp eax, 0x3e8
ja 0x428635
test eax, eax
je 0x428625
mov ecx, dword [ebp + 0xc]
shl ecx, 0x10
mov dword [esp + 0x110], ecx
jmp 0x426a3b
mov eax, dword [esp + 0xf4]
mov esi, dword [esp + 0x20]
mov edx, dword [esi]
mov edi, dword [ebp + 8]
dec eax
push edx
mov dword [esp + 0xf8], eax
mov al, 0xff
push 2
mov byte [esp + 0x62], al
mov byte [esp + 0x63], al
lea eax, [esp + 0x62]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0x5a]
push ecx
mov ecx, esi
call fcn.004103a0
xor edx, edx
mov dx, ax
mov ecx, esi
mov dword [esp + 8], edx
call fcn.004103d0
movzx eax, ax
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.00410420
mov ecx, dword [esi]
push ecx
mov dword [esp + 0x18], eax
call fcn.00487c33
mov ecx, dword [esp + 0x1c]
add eax, 4
add esp, 4
cmp ecx, 0xe
mov dword [esp + 0x11c], eax
sbb eax, eax
and eax, ecx
movsx edx, byte [eax + str.11124811248488]
sub edx, 0x30
imul edx, dword [esp + 0x14]
cmp edx, 4
jbe 0x426ae1
push 0
mov ecx, esi
call fcn.00410420
add eax, edi
push eax
mov eax, dword [esi]
push eax
call fcn.00487810
add esp, 0xc
mov eax, dword [esp + 8]
or eax, dword [esp + 0x110]
cmp eax, 2
mov dword [esp + 8], eax
jne 0x426b8f
lea ecx, [esi + 0x215]
push str.NIKON
push ecx
call fcn.00488420
add esp, 8
test eax, eax
je 0x426f58
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0xae], al
mov byte [esp + 0xaf], al
lea eax, [esp + 0xae]
push 1
push eax
call fcn.00487020
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x46]
push 1
push edx
mov byte [esp + 0x4e], al
mov byte [esp + 0x4f], al
call fcn.00487020
add esp, 0x20
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x426b6b
mov ah, byte [esp + 0x2f]
mov al, byte [esp + 0x2e]
jmp 0x426b77
movzx cx, byte [esp + 0x2f]
mov ah, byte [esp + 0x2e]
or eax, ecx
xor edx, edx
mov dx, ax
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
fstp dword [esi + 0x320]
jmp 0x426f58
mov ecx, 4
cmp eax, ecx
jne 0x426ec5
mov eax, dword [esp + 0x14]
cmp eax, 0x1a
jbe 0x426f58
cmp eax, 0x23
jae 0x426f58
mov al, 0xff
mov byte [esp + 0xc0], al
mov byte [esp + 0xc1], al
mov byte [esp + 0xc2], al
mov byte [esp + 0xc3], al
mov eax, dword [esi]
push eax
push ecx
lea ecx, [esp + 0xc8]
push 1
push ecx
call fcn.00487020
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x58], al
mov byte [esp + 0x59], al
lea eax, [esp + 0x58]
push 1
push eax
call fcn.00487020
mov edi, 0x4949
add esp, 0x20
xor ecx, ecx
cmp word [esi + 4], di
jne 0x426c18
mov ch, byte [esp + 0x41]
mov cl, byte [esp + 0x40]
jmp 0x426c24
movzx dx, byte [esp + 0x41]
mov ch, byte [esp + 0x40]
or ecx, edx
fld dword [esi + 0x320]
fcomp dword [0x65c2f0]
fnstsw ax
test ah, 0x44
jp 0x426c67
fld qword [0x65c0b0]
xor eax, eax
mov ax, cx
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
fmul dword [0x65c3dc]
fsub dword [0x65c3d8]
call fcn.004879b0
fmul qword [0x65c3d0]
fstp dword [esi + 0x320]
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0xb6]
push 1
push edx
mov byte [esp + 0xbe], al
mov byte [esp + 0xbf], al
call fcn.00487020
mov al, 0xff
mov byte [esp + 0x54], al
mov byte [esp + 0x55], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x5c]
push 1
push ecx
call fcn.00487020
add esp, 0x20
xor eax, eax
cmp word [esi + 4], di
jne 0x426cbb
mov ah, byte [esp + 0x45]
mov al, byte [esp + 0x44]
jmp 0x426cc7
movzx dx, byte [esp + 0x45]
mov ah, byte [esp + 0x44]
or eax, edx
movzx eax, ax
cmp eax, 0x7fff
je 0x426d2d
fld qword [0x65c0b0]
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], 0
fild qword [esp + 0x120]
fmul dword [0x65c3c8]
call fcn.004879b0
fstp qword [esp + 0x138]
mov edx, dword [esp + 0x138]
lea ecx, [esi + 0x8658]
mov dword [ecx], edx
mov edx, dword [esp + 0x13c]
mov eax, 2
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x144]
mov dword [ecx + 0xc], eax
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x50]
push 1
push edx
mov byte [esp + 0x58], al
mov byte [esp + 0x59], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], di
jne 0x426d5d
mov ah, byte [esp + 0x49]
mov al, byte [esp + 0x48]
jmp 0x426d69
movzx cx, byte [esp + 0x49]
mov ah, byte [esp + 0x48]
or eax, ecx
movzx eax, ax
cmp eax, 0xffff
je 0x426de1
fld qword [0x65c0b0]
movsx edx, ax
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
fmul dword [0x65db98]
call fcn.004879b0
mov eax, dword [esi + 0x8650]
mov ecx, 2
cmp eax, ecx
fstp qword [esp + 0x150]
je 0x426de1
cmp eax, 1
jne 0x426db4
mov eax, dword [esi + 0x864c]
test eax, eax
jne 0x426de1
mov eax, dword [esp + 0x150]
mov edx, dword [esp + 0x154]
mov dword [esi + 0x8648], eax
mov eax, dword [esp + 0x15c]
mov dword [esi + 0x864c], edx
mov dword [esi + 0x8650], ecx
mov dword [esi + 0x8654], eax
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0xbe]
push 1
push edx
mov byte [esp + 0xc6], al
mov byte [esp + 0xc7], al
call fcn.00487020
mov al, 0xff
mov byte [esp + 0x5c], al
mov byte [esp + 0x5d], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x64]
push 1
push ecx
call fcn.00487020
add esp, 0x20
xor eax, eax
cmp word [esi + 4], di
jne 0x426e35
mov ah, byte [esp + 0x4d]
mov al, byte [esp + 0x4c]
jmp 0x426e41
movzx dx, byte [esp + 0x4d]
mov ah, byte [esp + 0x4c]
or eax, edx
mov ecx, dword [esi]
push ecx
movzx eax, ax
push 2
mov dword [esp + 0xe0], eax
mov al, 0xff
lea edx, [esp + 0xa6]
push 1
push edx
mov byte [esp + 0xae], al
mov byte [esp + 0xaf], al
call fcn.00487020
mov al, 0xff
mov byte [esp + 0x60], al
mov byte [esp + 0x61], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x68]
push 1
push ecx
call fcn.00487020
add esp, 0x20
xor eax, eax
cmp word [esi + 4], di
jne 0x426eab
mov ah, byte [esp + 0x51]
mov al, byte [esp + 0x50]
movzx eax, ax
mov dword [esi + 0x328], eax
jmp 0x426f58
movzx dx, byte [esp + 0x51]
mov ah, byte [esp + 0x50]
or eax, edx
movzx eax, ax
mov dword [esi + 0x328], eax
jmp 0x426f58
cmp eax, 8
jne 0x426f20
cmp dword [esp + 0x18], ecx
jne 0x426f58
mov ecx, dword [esi]
push ecx
mov al, 0xff
push 4
lea edx, [esp + 0xa8]
push 1
push edx
mov byte [esp + 0xb0], al
mov byte [esp + 0xb1], al
mov byte [esp + 0xb2], al
mov byte [esp + 0xb3], al
call fcn.00487020
add esp, 0x10
lea eax, [esp + 0xa0]
push eax
mov ecx, esi
call fcn.004084a0
mov dword [esi + 0x328], eax
jmp 0x426f58
cmp eax, 9
jne 0x426f92
add esi, 0x215
mov edi, str.Canon
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x426f54
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
push ecx
push 1
add eax, 0x2d5
push 0x40
push eax
call fcn.00487020
add esp, 0x10
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 8]
lea edx, [esi + 0x215]
push str.PENTAX
push edx
call fcn.00488420
add esp, 8
test eax, eax
je 0x427420
cmp edi, 0x1b
jne 0x42740a
mov dword [esp + 8], 0x1018
mov edi, dword [esp + 8]
jmp 0x428282
cmp eax, 0xc
jne 0x4272a0
cmp dword [esp + 0x14], ecx
jne 0x426f58
mov edx, dword [esp + 0x18]
lea eax, [edx - 3]
cmp eax, 9
mov dword [esp + 0x6c], eax
ja case.0x426fb5.6
jmp dword [eax*4 + 0x42876c]
mov al, 0xff
mov byte [esp + 0x5e], al
mov byte [esp + 0x5f], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x66]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x5e]
push edx
mov ecx, esi
call fcn.004103a0
movzx eax, ax
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
jmp 0x4270fe
mov ecx, esi
call fcn.00410420
mov dword [esp + 0x128], eax
mov dword [esp + 0x12c], 0
fild qword [esp + 0x128]
jmp 0x4270fe
mov ecx, esi
call fcn.00410420
mov ecx, esi
mov dword [esp + 0xd0], eax
call fcn.00410420
test eax, eax
mov dword [esp + 0xd4], eax
je 0x42704e
fild dword [esp + 0xd0]
fidiv dword [esp + 0xd4]
jmp 0x4270fe
fld qword [0x65c090]
jmp 0x4270fe
mov ecx, esi
call fcn.004103d0
movsx ecx, ax
mov dword [esp + 0xc], ecx
fild dword [esp + 0xc]
jmp 0x4270fe
mov ecx, esi
call fcn.00410420
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
jmp 0x4270fe
mov ecx, esi
call fcn.00410420
mov dword [esp + 0xc], eax
fld dword [esp + 0xc]
jmp 0x4270fe
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 + 0xc], edx
xor edi, edi
mov eax, dword [esi]
push eax
call fcn.00487bf7
mov edx, dword [esp + 0x10]
mov ecx, edi
xor ecx, edx
add esp, 4
inc edi
cmp edi, 8
mov byte [esp + ecx + 0xd0], al
jl 0x4270c2
fld qword [esp + 0xd0]
jmp 0x4270fe
mov edx, dword [esi]
push edx
call fcn.00487bf7
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
add esp, 4
mov eax, dword [esp + 0x6c]
fstp dword [esi + 0x8578]
cmp eax, 9
ja case.0x427111.0
jmp dword [eax*4 + 0x428794]
mov al, 0xff
mov byte [esp + 0x5c], al
mov byte [esp + 0x5d], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x64]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x5c]
push edx
mov ecx, esi
call fcn.004103a0
movzx eax, ax
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
fstp dword [esi + 0x8580]
jmp 0x426f58
mov ecx, esi
call fcn.00410420
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], 0
fild qword [esp + 0xe0]
fstp dword [esi + 0x8580]
jmp 0x426f58
mov ecx, esi
call fcn.00410420
mov ecx, esi
mov dword [esp + 0xc8], eax
call fcn.00410420
test eax, eax
mov dword [esp + 0xcc], eax
je 0x4271bc
fild dword [esp + 0xc8]
fidiv dword [esp + 0xcc]
fstp dword [esi + 0x8580]
jmp 0x426f58
fld qword [0x65c090]
fstp dword [esi + 0x8580]
jmp 0x426f58
mov ecx, esi
call fcn.004103d0
movsx ecx, ax
mov dword [esp + 0xc], ecx
fild dword [esp + 0xc]
fstp dword [esi + 0x8580]
jmp 0x426f58
mov ecx, esi
call fcn.00410420
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
fstp dword [esi + 0x8580]
jmp 0x426f58
mov ecx, esi
call fcn.00410420
mov dword [esp + 0xc], eax
fld dword [esp + 0xc]
fstp dword [esi + 0x8580]
jmp 0x426f58
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 + 0xc], edx
xor edi, edi
mov edi, edi
mov eax, dword [esi]
push eax
call fcn.00487bf7
mov edx, dword [esp + 0x10]
mov ecx, edi
xor ecx, edx
add esp, 4
inc edi
cmp edi, 8
mov byte [esp + ecx + 0xc8], al
jl 0x427250
fld qword [esp + 0xc8]
fstp dword [esi + 0x8580]
jmp 0x426f58
mov edx, dword [esi]
push edx
call fcn.00487bf7
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
add esp, 4
fstp dword [esi + 0x8580]
jmp 0x426f58
cmp eax, 0x10
jne 0x4272fe
cmp dword [esp + 0x18], ecx
jne 0x426f58
mov al, 0xff
mov byte [esp + 0x8c], al
mov byte [esp + 0x8d], al
mov byte [esp + 0x8e], al
mov byte [esp + 0x8f], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0x94]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x8c]
push edx
mov ecx, esi
call fcn.004084a0
mov dword [esi + 0x338], eax
jmp 0x426f58
cmp eax, 0x11
jne 0x427394
mov eax, dword [esi + 0x39c]
test eax, eax
je 0x426f58
push 5
lea eax, [esi + 0x215]
push str.NIKON
push eax
call fcn.004882a0
add esp, 0xc
test eax, eax
jne 0x426f58
mov ecx, dword [esi]
push ecx
mov al, 0xff
push 4
lea edx, [esp + 0xc4]
push 1
push edx
mov byte [esp + 0xcc], al
mov byte [esp + 0xcd], al
mov byte [esp + 0xce], al
mov byte [esp + 0xcf], al
call fcn.00487020
add esp, 0x10
push 0
lea eax, [esp + 0xc0]
push eax
mov ecx, esi
call fcn.004084a0
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
jmp 0x426f58
cmp eax, 0x14
jne 0x4273cd
cmp dword [esp + 0x14], 0xa00
jne 0x426f58
cmp dword [esp + 0x18], 7
jne 0x426f58
mov edx, dword [esi]
push 1
push 0x4e0
push edx
call fcn.00487810
mov edi, dword [esp + 0x14]
add esp, 0xc
jmp 0x4282ee
cmp eax, 0x15
jne 0x426f58
cmp dword [esp + 0x18], 2
jne 0x426f58
mov eax, dword [esi + 0x39c]
test eax, eax
je 0x426f58
mov eax, dword [esi]
push eax
push 1
lea ecx, [esi + 0x255]
push 0x40
push ecx
call fcn.00487020
add esp, 0x10
jmp 0x426f58
cmp edi, 0x1c
jne 0x427420
mov dword [esp + 8], 0x1017
mov edi, dword [esp + 8]
jmp 0x42821b
cmp edi, 0x1d
jne 0x427490
mov eax, dword [esi]
push eax
call fcn.00487bf7
mov edi, eax
add esp, 4
test edi, edi
je 0x428601
lea ebx, [ebx]
cmp edi, 0xffffffff
je 0x428601
push edi
call fcn.00488e08
add esp, 4
test eax, eax
je 0x42745b
lea edx, [edi - 0x30]
jmp 0x427466
mov eax, edi
xor edx, edx
mov ecx, 0xa
div ecx
mov eax, dword [esp + 0xdc]
lea eax, [eax + eax*4]
lea ecx, [edx + eax*2]
mov edx, dword [esi]
push edx
mov dword [esp + 0xe0], ecx
call fcn.00487bf7
mov edi, eax
add esp, 4
test edi, edi
jne 0x427440
jmp 0x428601
cmp edi, 0x81
jne 0x42758f
mov eax, dword [esp + 0x18]
cmp eax, 4
jne 0x427657
mov al, 0xff
mov byte [esp + 0x7c], al
mov byte [esp + 0x7d], al
mov byte [esp + 0x7e], al
mov byte [esp + 0x7f], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0x84]
push 1
push ecx
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x7c]
push edx
mov ecx, esi
call fcn.004084a0
mov dword [esi + 0x340], eax
add eax, 0x29
push 0
push eax
mov eax, dword [esi]
push eax
call fcn.00487810
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x66]
push 1
push edx
mov byte [esp + 0x6e], al
mov byte [esp + 0x6f], al
call fcn.00487020
mov edi, 0x4949
add esp, 0x1c
xor eax, eax
cmp word [esi + 4], di
jne 0x427527
mov ah, byte [esp + 0x53]
mov al, byte [esp + 0x52]
jmp 0x427533
movzx cx, byte [esp + 0x53]
mov ah, byte [esp + 0x52]
or eax, ecx
lea edx, [eax + eax]
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
mov word [esi + 0x438], dx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], di
jne 0x42756d
mov ah, byte [esp + 0x43]
mov al, byte [esp + 0x42]
jmp 0x427579
movzx dx, byte [esp + 0x43]
mov ah, byte [esp + 0x42]
or eax, edx
mov word [esi + 0x43a], ax
mov dword [esi + 0x330], 0x61616161
jmp 0x428601
cmp edi, 0x29
jne 0x42764b
cmp dword [esp + 0x18], 1
jne 0x428601
mov eax, dword [esp + 0xd8]
cmp eax, 0x12
jae 0x4275bb
movsx eax, byte [eax + str.012347800000005896]
sub eax, 0x30
jmp 0x4275bd
xor eax, eax
shl eax, 5
add eax, 8
push 1
push eax
mov eax, dword [esi]
push eax
call fcn.00487810
add esp, 0xc
xor edi, edi
mov ecx, dword [esi]
push ecx
mov al, 0xff
push 4
lea edx, [esp + 0x9c]
push 1
push edx
mov byte [esp + 0xa4], al
mov byte [esp + 0xa5], al
mov byte [esp + 0xa6], al
mov byte [esp + 0xa7], al
call fcn.00487020
add esp, 0x10
lea eax, [esp + 0x94]
push eax
mov ecx, esi
call fcn.004084a0
mov ecx, edi
xor ecx, 2
shr ecx, 1
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], 0
fild qword [esp + 0xf8]
xor ecx, edi
inc edi
cmp edi, 4
fstp dword [esi + ecx*4 + 0x8578]
jb 0x4275d3
jmp 0x428601
cmp edi, 0x100
jne 0x427661
mov eax, dword [esp + 0x18]
cmp eax, 7
je 0x427674
jmp 0x428601
cmp edi, 0x280
jne 0x42768f
cmp dword [esp + 0x18], 1
jne 0x428601
mov edx, dword [esi]
push edx
call fcn.00487c33
mov dword [esi + 0x344], eax
mov eax, dword [esp + 0x18]
add esp, 4
mov dword [esi + 0x350], eax
cmp edi, 0x88
jne 0x4276fe
cmp dword [esp + 0x18], 4
jne 0x428601
mov ecx, dword [esi]
push ecx
mov al, 0xff
push 4
lea edx, [esp + 0x78]
push 1
push edx
mov byte [esp + 0x80], al
mov byte [esp + 0x81], al
mov byte [esp + 0x82], al
mov byte [esp + 0x83], al
call fcn.00487020
add esp, 0x10
lea eax, [esp + 0x70]
push eax
mov ecx, esi
call fcn.004084a0
test eax, eax
mov dword [esi + 0x344], eax
je 0x428601
mov ecx, dword [ebp + 8]
add eax, ecx
mov dword [esi + 0x344], eax
jmp 0x428601
cmp edi, 0x89
jne 0x427760
cmp dword [esp + 0x18], 4
jne 0x428601
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0x90], al
mov byte [esp + 0x91], al
mov byte [esp + 0x92], al
mov byte [esp + 0x93], al
lea eax, [esp + 0x90]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0x88]
push ecx
mov ecx, esi
call fcn.004084a0
mov dword [esi + 0x350], eax
jmp 0x428601
cmp edi, 0x8c
je 0x427770
cmp edi, 0x96
jne 0x427781
mov edx, dword [esi]
push edx
call fcn.00487c33
add esp, 4
mov dword [esi + 0x348], eax
cmp edi, 0x97
jne 0x42791f
mov edi, 4
mov eax, dword [esi]
push eax
call fcn.00487bf7
mov ecx, dword [esp + 0xb4]
lea ecx, [ecx + ecx*4]
add esp, 4
dec edi
lea edx, [eax + ecx*2 - 0x30]
mov dword [esp + 0xb0], edx
jne 0x427792
mov ecx, edx
mov eax, ecx
sub eax, 0x64
je 0x42785d
sub eax, 2
je 0x427851
dec eax
jne 0x4278da
mov eax, dword [esi]
push 1
push 0x10
push eax
call fcn.00487810
add esp, 0xc
lea edi, [esi + 0x8578]
mov dword [esp + 0x1c], 4
nop
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x34]
push 1
push edx
mov byte [esp + 0x3c], al
mov byte [esp + 0x3d], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x427822
mov ah, byte [esp + 0x2d]
mov al, byte [esp + 0x2c]
jmp 0x42782e
movzx cx, byte [esp + 0x2d]
mov ah, byte [esp + 0x2c]
or eax, ecx
xor edx, edx
mov dx, ax
mov eax, dword [esp + 0x1c]
add edi, 4
dec eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
fstp dword [edi - 4]
jne 0x4277f0
jmp 0x428601
mov eax, dword [esi]
push 1
push 6
push eax
jmp 0x4285a2
mov ecx, dword [esi]
push 1
push 0x44
push ecx
call fcn.00487810
add esp, 0xc
xor edi, edi
mov edi, edi
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x3a], al
mov byte [esp + 0x3b], al
lea eax, [esp + 0x3a]
push 1
push eax
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x4278a2
mov ah, byte [esp + 0x33]
mov al, byte [esp + 0x32]
jmp 0x4278ae
movzx cx, byte [esp + 0x33]
mov ah, byte [esp + 0x32]
or eax, ecx
xor edx, edx
mov dx, ax
mov eax, edi
and eax, 1
mov ecx, edi
shl eax, 1
shr ecx, 1
or eax, ecx
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
inc edi
cmp edi, 4
fstp dword [esi + eax*4 + 0x8578]
jb 0x427870
jmp 0x428601
cmp ecx, 0xc8
jb 0x428601
cmp ecx, 0xcd
je 0x427900
mov edx, dword [esi]
push 1
push 0x118
push edx
call fcn.00487810
add esp, 0xc
mov eax, dword [esi]
push eax
push 1
lea ecx, [esp + 0x170]
push 0x144
push ecx
call fcn.00487020
add esp, 0x10
jmp 0x428601
cmp edi, 0xa4
jne 0x4279c1
cmp dword [esp + 0x18], 3
jne 0x428601
mov eax, dword [esp + 0xd8]
lea edx, [eax + eax*2]
mov eax, dword [esi]
push 1
shl edx, 4
push edx
push eax
call fcn.00487810
add esp, 0xc
lea edi, [esi + 0x8578]
mov dword [esp + 0x1c], 3
nop
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x38]
push 1
push edx
mov byte [esp + 0x40], al
mov byte [esp + 0x41], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x427992
mov ah, byte [esp + 0x31]
mov al, byte [esp + 0x30]
jmp 0x42799e
movzx cx, byte [esp + 0x31]
mov ah, byte [esp + 0x30]
or eax, ecx
xor edx, edx
mov dx, ax
mov eax, dword [esp + 0x1c]
add edi, 4
dec eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
fstp dword [edi - 4]
jne 0x427960
jmp 0x428601
cmp edi, 0xa7
jne 0x427ac4
mov eax, dword [esp + 0xb0]
add eax, 0xffffff38
cmp eax, 0xc
jae 0x428601
fld dword [esi + 0x8578]
fcomp dword [0x65c2f0]
fnstsw ax
test ah, 0x44
jp 0x428601
mov ecx, dword [esp + 0xdc]
mov eax, dword [esi]
and ecx, 0xff
mov dl, byte [ecx + 0x65d998]
push eax
mov byte [esp + 0xc], dl
call fcn.00487bf7
mov ecx, dword [esi]
push ecx
mov edi, eax
call fcn.00487bf7
mov edx, dword [esi]
push edx
xor edi, eax
call fcn.00487bf7
xor edi, eax
mov eax, dword [esi]
push eax
call fcn.00487bf7
xor edi, eax
mov cl, byte [edi + 0x65da98]
mov al, byte [esp + 0x18]
mov dl, 0x60
add esp, 0x10
xor edi, edi
imul dl
mov dl, byte [esp + 8]
nop
add cl, al
xor byte [esp + edi + 0x168], cl
add al, dl
inc edi
cmp edi, 0x144
jb 0x427a50
mov eax, dword [esp + 0xb0]
movsx eax, byte [eax + 0x696204]
sub eax, 0x30
mov edx, eax
xor ecx, ecx
and edx, 1
and eax, 0xfffffffe
lea edi, [esp + eax + 0x168]
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x427a97
mov ah, byte [edi + 1]
mov al, byte [edi]
jmp 0x427a9c
mov ah, byte [edi]
mov al, byte [edi + 1]
movzx eax, ax
mov dword [esp + 0xc], eax
mov eax, ecx
shr eax, 1
fild dword [esp + 0xc]
xor eax, edx
xor eax, ecx
inc ecx
add edi, 2
cmp ecx, 4
fstp dword [esi + eax*4 + 0x8578]
jb 0x427a86
jmp 0x428601
cmp edi, 0x200
jne 0x427ca6
mov eax, dword [esp + 0x14]
cmp eax, 3
jne 0x427b5e
mov ecx, dword [esi]
push ecx
mov al, 0xff
push 4
lea edx, [esp + 0xcc]
push 1
push edx
mov byte [esp + 0xd4], al
mov byte [esp + 0xd5], al
mov byte [esp + 0xd6], al
mov byte [esp + 0xd7], al
call fcn.00487020
mov al, 0xff
mov byte [esp + 0xa0], al
mov byte [esp + 0xa1], al
mov byte [esp + 0xa2], al
mov byte [esp + 0xa3], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0xa8]
push 1
push ecx
call fcn.00487020
add esp, 0x20
lea edx, [esp + 0x90]
push edx
mov ecx, esi
call fcn.004084a0
mov dword [esi + 0x328], eax
jmp 0x428601
cmp eax, 4
jne 0x428601
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
mov edi, 0x4949
add esp, 0x10
cmp word [esi + 4], di
jne 0x427ba0
xor edx, edx
mov dh, byte [esp + 0x35]
mov dl, byte [esp + 0x34]
mov dword [esp + 0x18], edx
jmp 0x427bb2
movzx cx, byte [esp + 0x35]
xor eax, eax
mov ah, byte [esp + 0x34]
or eax, ecx
mov dword [esp + 0x18], eax
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x40], al
mov byte [esp + 0x41], al
lea eax, [esp + 0x40]
push 1
push eax
call fcn.00487020
add esp, 0x10
cmp word [esi + 4], di
jne 0x427be6
xor ecx, ecx
mov ch, byte [esp + 0x39]
mov cl, byte [esp + 0x38]
mov dword [esp + 0x14], ecx
jmp 0x427bf8
movzx ax, byte [esp + 0x39]
xor edx, edx
mov dh, byte [esp + 0x38]
or edx, eax
mov dword [esp + 0x14], edx
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x3e]
push 1
push edx
mov byte [esp + 0x46], al
mov byte [esp + 0x47], al
call fcn.00487020
add esp, 0x10
cmp word [esi + 4], di
jne 0x427c2c
xor eax, eax
mov ah, byte [esp + 0x37]
mov al, byte [esp + 0x36]
mov dword [esp + 0x1c], eax
jmp 0x427c3e
movzx dx, byte [esp + 0x37]
xor ecx, ecx
mov ch, byte [esp + 0x36]
or ecx, edx
mov dword [esp + 0x1c], ecx
mov al, 0xff
mov byte [esp + 0x46], al
mov byte [esp + 0x47], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x4e]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], di
jne 0x427c6e
mov ah, byte [esp + 0x47]
mov al, byte [esp + 0x46]
jmp 0x427c7a
movzx dx, byte [esp + 0x47]
mov ah, byte [esp + 0x46]
or eax, edx
movzx ecx, word [esp + 0x1c]
movzx edx, word [esp + 0x14]
movzx eax, ax
add eax, ecx
movzx ecx, word [esp + 0x18]
add eax, edx
add eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esi + 0x380], eax
jmp 0x428601
cmp edi, 0x201
jne 0x427cbe
cmp dword [esp + 0x14], 4
je 0x4285aa
jmp 0x428601
cmp edi, 0x401
jne 0x427e0a
cmp dword [esp + 0x14], 4
jne 0x428601
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0x88], al
mov byte [esp + 0x89], al
mov byte [esp + 0x8a], al
mov byte [esp + 0x8b], al
lea eax, [esp + 0x88]
push 1
push eax
call fcn.00487020
mov ecx, dword [esi]
push ecx
mov al, 0xff
push 4
lea edx, [esp + 0xc0]
push 1
push edx
mov byte [esp + 0xc8], al
mov byte [esp + 0xc9], al
mov byte [esp + 0xca], al
mov byte [esp + 0xcb], al
call fcn.00487020
add esp, 0x20
lea eax, [esp + 0xa8]
push eax
mov ecx, esi
call fcn.004084a0
mov ecx, dword [esi]
push ecx
push 4
mov dword [esp + 0x74], eax
mov al, 0xff
lea edx, [esp + 0xa0]
push 1
push edx
mov byte [esp + 0xa8], al
mov byte [esp + 0xa9], al
mov byte [esp + 0xaa], al
mov byte [esp + 0xab], al
call fcn.00487020
add esp, 0x10
lea eax, [esp + 0x98]
push eax
mov ecx, esi
call fcn.004084a0
mov ecx, dword [esi]
push ecx
push 4
mov dword [esp + 0x14], eax
mov al, 0xff
lea edx, [esp + 0xc0]
push 1
push edx
mov byte [esp + 0xc8], al
mov byte [esp + 0xc9], al
mov byte [esp + 0xca], al
mov byte [esp + 0xcb], al
call fcn.00487020
add esp, 0x10
lea eax, [esp + 0xb8]
push eax
mov ecx, esi
call fcn.004084a0
lea ecx, [esp + 0x80]
push ecx
mov ecx, esi
mov edi, eax
call fcn.004084a0
mov ecx, dword [esp + 0x6c]
mov edx, eax
mov eax, dword [esp + 0xc]
add eax, edi
add edx, eax
add edx, ecx
shr edx, 2
mov dword [esi + 0x380], edx
jmp 0x428601
cmp edi, 0xe01
jne 0x427f75
movsx eax, word [esi + 4]
mov ecx, dword [esi]
push 1
push 0x16
push ecx
mov dword [esp + 0x24], eax
mov word [esi + 4], 0x4949
call fcn.00487810
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp eax, 0x2c
mov dword [esp + 0x1c], 0x16
jbe 0x427f68
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0x8c], al
mov byte [esp + 0x8d], al
mov byte [esp + 0x8e], al
mov byte [esp + 0x8f], al
lea eax, [esp + 0x8c]
push 1
push eax
call fcn.00487020
add esp, 0x10
lea ecx, [esp + 0x84]
push ecx
mov ecx, esi
call fcn.004084a0
mov edx, dword [esi]
push 1
push 0xe
push edx
mov dword [esp + 0x14], eax
call fcn.00487810
mov al, 0xff
mov byte [esp + 0x80], al
mov byte [esp + 0x81], al
mov byte [esp + 0x82], al
mov byte [esp + 0x83], al
mov eax, dword [esi]
push eax
push 4
lea ecx, [esp + 0x88]
push 1
push ecx
call fcn.00487020
add esp, 0x1c
lea edx, [esp + 0x74]
push edx
mov ecx, esi
call fcn.004084a0
mov edi, eax
mov eax, dword [esp + 8]
sub edi, 4
cmp eax, 0x76a43207
jne 0x427f3f
mov al, 0xff
mov byte [esp + 0x3a], al
mov byte [esp + 0x3b], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x42]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x427f28
mov ah, byte [esp + 0x3b]
mov al, byte [esp + 0x3a]
movzx eax, ax
mov dword [esi + 0x450], eax
jmp 0x427f4d
movzx dx, byte [esp + 0x3b]
mov ah, byte [esp + 0x3a]
or eax, edx
movzx eax, ax
mov dword [esi + 0x450], eax
jmp 0x427f4d
mov ecx, dword [esi]
push 1
push edi
push ecx
call fcn.00487810
add esp, 0xc
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
lea edi, [edx + edi + 0x16]
mov dword [esp + 0x1c], edi
add edi, 0x16
cmp edi, eax
jb 0x427e48
mov ax, word [esp + 0x18]
mov edi, dword [esp + 8]
mov word [esi + 4], ax
cmp edi, 0xe80
jne 0x428064
cmp dword [esp + 0x14], 0x100
jne 0x428601
cmp dword [esp + 0x18], 7
jne 0x428601
mov ecx, dword [esi]
push 1
push 0x30
push ecx
call fcn.00487810
mov edx, dword [esi]
push edx
mov al, 0xff
push 2
mov byte [esp + 0x3a], al
mov byte [esp + 0x3b], al
lea eax, [esp + 0x3a]
push 1
push eax
call fcn.00487020
mov edi, 0x4949
add esp, 0x1c
xor eax, eax
cmp word [esi + 4], di
jne 0x427fdb
mov ah, byte [esp + 0x27]
mov al, byte [esp + 0x26]
jmp 0x427fe7
movzx cx, byte [esp + 0x27]
mov ah, byte [esp + 0x26]
or eax, ecx
xor edx, edx
mov dx, ax
mov al, 0xff
mov byte [esp + 0x4e], al
mov byte [esp + 0x4f], al
mov eax, dword [esi]
push eax
push 2
imul edx, edx, 0x1fc
mov dword [esp + 0x14], edx
lea ecx, [esp + 0x56]
push 1
fild dword [esp + 0x18]
push ecx
fmul qword [0x65d990]
fstp dword [esi + 0x8578]
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], di
jne 0x428036
mov ah, byte [esp + 0x4f]
mov al, byte [esp + 0x4e]
jmp 0x428042
movzx dx, byte [esp + 0x4f]
mov ah, byte [esp + 0x4e]
or eax, edx
movzx eax, ax
imul eax, eax, 0x17e
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
fmul qword [0x65d988]
fstp dword [esi + 0x8580]
jmp 0x428601
cmp edi, 0xf00
jne 0x4280ca
cmp dword [esp + 0x18], 7
jne 0x428601
mov eax, dword [esp + 0x14]
cmp eax, 0x266
jne 0x42809d
mov ecx, dword [esi]
push 1
push 0xb0
push ecx
call fcn.00487810
mov edi, dword [esp + 0x14]
add esp, 0xc
jmp 0x4282ee
cmp eax, 0x2de
je 0x4280af
cmp eax, 0x5de
jne 0x428601
mov edx, dword [esi]
push 1
push 0x94
push edx
call fcn.00487810
mov edi, dword [esp + 0x14]
add esp, 0xc
jmp 0x4282ee
cmp edi, 0x1011
jne 0x4280de
cmp dword [esp + 0x14], 9
je 0x4280ea
jmp 0x428601
cmp edi, 0x20400200
jne 0x42818a
lea eax, [esi + 0x8598]
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], 3
lea esp, [esp]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x6c], 3
lea esp, [esp]
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x46]
push 1
push edx
mov byte [esp + 0x4e], al
mov byte [esp + 0x4f], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x428142
mov ah, byte [esp + 0x3f]
mov al, byte [esp + 0x3e]
jmp 0x42814e
movzx cx, byte [esp + 0x3f]
mov ah, byte [esp + 0x3e]
or eax, ecx
movsx edx, ax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x54], edx
add edi, 4
dec eax
fild dword [esp + 0x54]
mov dword [esp + 0x6c], eax
fmul qword [0x65d980]
fstp dword [edi - 4]
jne 0x428110
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
add ecx, 0x10
dec eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xc], eax
jne 0x428100
mov eax, dword [esp + 8]
cmp eax, 0x1012
je 0x42819c
cmp eax, 0x20400600
jne 0x428207
cmp dword [esp + 0x14], 4
jne 0x428207
mov dword [esi + 0x380], 0
mov edi, 4
mov al, 0xff
mov byte [esp + 0x4a], al
mov byte [esp + 0x4b], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x52]
push 1
push ecx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x4281e4
mov ah, byte [esp + 0x4b]
mov al, byte [esp + 0x4a]
jmp 0x4281f0
movzx dx, byte [esp + 0x4b]
mov ah, byte [esp + 0x4a]
or eax, edx
mov ecx, dword [esi + 0x380]
movzx eax, ax
shl eax, 2
add ecx, eax
dec edi
mov dword [esi + 0x380], ecx
jne 0x4281b2
mov edi, dword [esp + 8]
cmp edi, 0x1017
je 0x42821b
cmp edi, 0x20400100
jne 0x428272
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x30]
push 1
push edx
mov byte [esp + 0x38], al
mov byte [esp + 0x39], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x42824d
mov ah, byte [esp + 0x29]
mov al, byte [esp + 0x28]
jmp 0x428259
movzx cx, byte [esp + 0x29]
mov ah, byte [esp + 0x28]
or eax, ecx
xor edx, edx
mov dx, ax
mov dword [esp + 0x54], edx
fild dword [esp + 0x54]
fmul qword [0x65d980]
fstp dword [esi + 0x8578]
cmp edi, 0x1018
je 0x428282
cmp edi, 0x20400100
jne 0x4282d7
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 0x4282b4
mov ah, byte [esp + 0x2b]
mov al, byte [esp + 0x2a]
jmp 0x4282c0
movzx dx, byte [esp + 0x2b]
mov ah, byte [esp + 0x2a]
or eax, edx
movzx eax, ax
mov dword [esp + 0x54], eax
fild dword [esp + 0x54]
fmul qword [0x65d980]
fstp dword [esi + 0x8580]
cmp edi, 0x2011
jne 0x42838c
cmp dword [esp + 0x14], 2
jne 0x428601
mov ecx, dword [esi]
push ecx
push 2
mov al, 0xff
lea edx, [esp + 0x1a]
push 1
push edx
mov word [esi + 4], 0x4d4d
mov byte [esp + 0x22], al
mov byte [esp + 0x23], al
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x428326
mov ah, byte [esp + 0x13]
mov al, byte [esp + 0x12]
jmp 0x428332
movzx cx, byte [esp + 0x13]
mov ah, byte [esp + 0x12]
or eax, ecx
xor edx, edx
mov dx, ax
mov al, 0xff
mov byte [esp + 0x3c], al
mov byte [esp + 0x3d], al
mov eax, dword [esi]
push eax
push 2
mov dword [esp + 0x5c], edx
fild dword [esp + 0x5c]
lea ecx, [esp + 0x44]
push 1
push ecx
fmul qword [0x65d980]
fstp dword [esi + 0x8578]
call fcn.00487020
add esp, 0x10
lea edx, [esp + 0x3c]
push edx
mov ecx, esi
call fcn.004103a0
movzx eax, ax
mov dword [esp + 0x54], eax
fild dword [esp + 0x54]
fmul qword [0x65d980]
fstp dword [esi + 0x8580]
cmp edi, 0x2010
jne 0x4283ae
cmp dword [esp + 0x18], 0xd
jne 0x428601
mov dword [esi + 0x798d8], 0x41ab90
jmp 0x428601
cmp edi, 0x2020
jne 0x428453
mov ecx, esi
call fcn.004103d0
movzx eax, ax
test eax, eax
je 0x428601
mov edi, dword [ebp + 8]
mov dword [esp + 0xc], eax
lea ecx, [esp + 0x114]
push ecx
lea edx, [esp + 0x134]
push edx
lea eax, [esp + 0x13c]
push eax
lea ecx, [esp + 0x110]
push ecx
push edi
mov ecx, esi
call fcn.00426470
mov eax, dword [esp + 0x104]
cmp eax, 0x101
jne 0x42841a
mov ecx, esi
call fcn.00410420
add eax, edi
mov dword [esi + 0x344], eax
jmp 0x42842e
cmp eax, 0x102
jne 0x42842e
mov ecx, esi
call fcn.00410420
mov dword [esi + 0x350], eax
mov edx, dword [esp + 0x114]
mov eax, dword [esi]
push 0
push edx
push eax
call fcn.00487810
mov eax, dword [esp + 0x18]
add esp, 0xc
dec eax
mov dword [esp + 0xc], eax
jne 0x4283d3
jmp 0x428601
cmp edi, 0x2040
jne 0x42846c
mov ecx, dword [ebp + 8]
push edi
push ecx
mov ecx, esi
call fcn.00426630
jmp 0x428601
cmp edi, 0xb028
jne 0x428560
mov edx, dword [esi]
mov al, 0xff
push edx
push 4
mov byte [esp + 0x80], al
mov byte [esp + 0x81], al
mov byte [esp + 0x82], al
mov byte [esp + 0x83], al
lea eax, [esp + 0x80]
push 1
push eax
call fcn.00487020
add esp, 0x10
push 0
lea ecx, [esp + 0x7c]
push ecx
mov ecx, esi
call fcn.004084a0
mov edx, dword [esi]
push eax
push edx
call fcn.00487810
add esp, 0xc
mov ecx, esi
call fcn.004103d0
movzx eax, ax
test eax, eax
je 0x428601
mov edi, dword [ebp + 8]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x108]
push eax
lea ecx, [esp + 0x150]
push ecx
lea edx, [esp + 0x16c]
push edx
lea eax, [esp + 0x124]
push eax
push edi
mov ecx, esi
call fcn.00426470
mov eax, dword [esp + 0x118]
cmp eax, 0x88
jne 0x428527
mov ecx, esi
call fcn.00410420
add eax, edi
mov dword [esi + 0x344], eax
jmp 0x42853b
cmp eax, 0x89
jne 0x42853b
mov ecx, esi
call fcn.00410420
mov dword [esi + 0x350], eax
mov ecx, dword [esp + 0x108]
mov edx, dword [esi]
push 0
push ecx
push edx
call fcn.00487810
mov eax, dword [esp + 0x18]
add esp, 0xc
dec eax
mov dword [esp + 0xc], eax
jne 0x4284e0
jmp 0x428601
cmp edi, 0x4001
jne 0x428601
cmp dword [esp + 0x18], 3
jne 0x428601
mov eax, dword [esp + 0x14]
cmp eax, 0x246
jne 0x428589
mov eax, 0x32
jmp 0x42859c
xor ecx, ecx
cmp eax, 0x28d
setne cl
dec ecx
and ecx, 0xffffffc6
add ecx, 0x7e
mov eax, ecx
mov edx, dword [esi]
push 1
push eax
push edx
call fcn.00487810
add esp, 0xc
xor edi, edi
lea esp, [esp]
mov ecx, esi
call fcn.004103d0
movzx eax, ax
mov ecx, edi
shr ecx, 1
mov dword [esp + 0x54], eax
xor ecx, edi
inc edi
cmp edi, 4
fild dword [esp + 0x54]
fstp dword [esi + ecx*4 + 0x8578]
jb 0x4285b0
mov edx, dword [esi]
push 1
push 0x16
push edx
call fcn.00487810
add esp, 0xc
xor edi, edi
mov ecx, esi
call fcn.004103d0
mov ecx, edi
shr ecx, 1
xor ecx, edi
inc edi
cmp edi, 4
mov word [esi + ecx*2 + 0x8514], ax
jb 0x4285e6
mov edx, dword [esp + 0x11c]
mov eax, dword [esi]
push 0
push edx
push eax
call fcn.00487810
mov eax, dword [esp + 0x100]
add esp, 0xc
test eax, eax
jne 0x426a34
mov esi, dword [esp + 0x20]
mov cx, word [esp + 0x10c]
mov word [esi + 4], cx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi]
push ecx
mov word [esi + 4], 0x4d4d
call fcn.00487c33
mov ecx, dword [esi + 0x340]
add esp, 4
cmp eax, ecx
jae 0x428629
cmp eax, 0x4000
jae 0x428629
mov edx, dword [esp + 0xec]
mov al, 0xff
mov byte [esp + 0x12], al
mov byte [esp + 0x13], al
mov eax, dword [esi]
push eax
push 2
lea ecx, [esp + 0x1a]
mov dword [esp + 0xe8], edi
mov edi, dword [esp + 0xec]
push 1
push ecx
mov dword [esp + 0xf8], edi
mov dword [esp + 0xf4], edx
call fcn.00487020
add esp, 0x10
xor eax, eax
cmp word [esi + 4], 0x4949
jne 0x4286b4
mov ah, byte [esp + 0x13]
mov al, byte [esp + 0x12]
jmp 0x4286c0
movzx dx, byte [esp + 0x13]
mov ah, byte [esp + 0x12]
or eax, edx
cmp dword [esp + 0xe4], 0x100
movzx eax, ax
mov dword [esp + 0xec], eax
jne 0x42873c
cmp eax, 0x100
jne 0x42873c
mov eax, dword [esp + 0xe0]
cmp eax, 0x100
jbe 0x42873c
cmp eax, 0x280
jae 0x42873c
cmp edi, 0x100
jbe 0x42873c
cmp edi, 0x280
jae 0x42873c
xor eax, eax
lea ecx, [esi + 0x8578]
nop
lea esp, [esp]
mov edx, dword [esp + eax*4 + 0xe0]
mov dword [esp + 0xf8], edx
mov dword [esp + 0xfc], 0
fild qword [esp + 0xf8]
inc eax
add ecx, 4
cmp eax, 4
fstp dword [ecx - 4]
jb 0x428710
mov eax, dword [esi]
push eax
call fcn.00487c33
mov ecx, dword [esi + 0x340]
add esp, 4
cmp eax, ecx
jb 0x428658
mov cx, word [esp + 0x10c]
pop edi
mov word [esi + 4], cx
pop esi
mov esp, ebp
pop ebp
ret 8