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

Disassembly:
sub esp, 0x1a4
push ebx
push ebp
push esi
mov esi, dword [esp + 0x1b4]
push edi
push 0xa
mov ax, word [esi + 0x6274]
mov ecx, dword [esi]
mov word [esp + 0x68], ax
mov eax, dword [esi + 4]
lea edx, [esp + 0x30]
push 1
xor ebx, ebx
push edx
push eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x54], ebx
xor ebp, ebp
mov dword [esp + 0x60], ebx
call dword [ecx]
push 3
lea ecx, [esp + 0x40]
push 0x7c2be0
push ecx
call fcn.004508b0
add esp, 0x1c
test eax, eax
je 0x67753a
push 3
lea edx, [esp + 0x30]
push 0x7c2bdc
push edx
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x67753a
push 4
lea eax, [esp + 0x30]
push str.IIII
push eax
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x67753a
push 4
lea ecx, [esp + 0x30]
push 0x777844
push ecx
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x67753a
push 2
lea edx, [esp + 0x30]
push 0x7c2bd0
push edx
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x67746f
push 3
lea eax, [esp + 0x30]
push 0x7c2bcc
push eax
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x67746f
mov edi, str.Nikon
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x67633f
test cl, cl
je 0x67633b
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x67633f
add eax, 2
add edi, 2
test cl, cl
jne 0x676317
xor eax, eax
jmp 0x676344
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x676395
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
call dword [eax + 0x18]
push esi
mov dword [esp + 0x1c4], eax
call fcn.00667c30
push esi
mov word [esi + 0x6274], ax
call fcn.00667c30
add esp, 0xc
cmp ax, 0x2a
jne 0x67752e
push esi
call fcn.00667cd0
mov edx, dword [esi]
add eax, 0xfffffff8
push 1
push eax
mov eax, dword [esi + 4]
push eax
call dword [edx + 8]
add esp, 0x10
jmp 0x67662b
mov edi, str.OLYMPUS
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x6763c6
test cl, cl
je 0x6763c2
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x6763c6
add eax, 2
add edi, 2
test cl, cl
jne 0x67639e
xor eax, eax
jmp 0x6763cb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x67640a
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
call dword [eax + 0x18]
mov edx, dword [esi]
sub eax, 0xa
mov dword [esp + 0x1c0], eax
mov eax, dword [esi + 4]
push 1
push 0xfffffffffffffffe
push eax
call dword [edx + 8]
push esi
call fcn.00667c30
push esi
mov word [esi + 0x6274], ax
call fcn.00667c30
add esp, 0x18
jmp 0x67662b
push 8
lea ecx, [esp + 0x30]
push str.FUJIFILM
push ecx
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x676612
push 4
lea edx, [esp + 0x30]
push str.SONY
push edx
call fcn.004508b0
add esp, 0xc
test eax, eax
je 0x676612
mov edi, str.Panasonic
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x676473
test cl, cl
je 0x67646f
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x676473
add eax, 2
add edi, 2
test cl, cl
jne 0x67644b
xor eax, eax
jmp 0x676478
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x676612
mov edi, str.OLYMP
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x6764b1
test cl, cl
je 0x6764ad
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x6764b1
add eax, 2
add edi, 2
test cl, cl
jne 0x676489
xor eax, eax
jmp 0x6764b6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x676603
mov edi, str.LEICA
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x6764ef
test cl, cl
je 0x6764eb
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x6764ef
add eax, 2
add edi, 2
test cl, cl
jne 0x6764c7
xor eax, eax
jmp 0x6764f4
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x676603
mov edi, str.Ricoh
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x67652d
test cl, cl
je 0x676529
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x67652d
add eax, 2
add edi, 2
test cl, cl
jne 0x676505
xor eax, eax
jmp 0x676532
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x676603
mov edi, str.EPSON
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x67656b
test cl, cl
je 0x676567
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x67656b
add eax, 2
add edi, 2
test cl, cl
jne 0x676543
xor eax, eax
jmp 0x676570
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x676603
mov edi, 0x7c2b88
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x6765a9
test cl, cl
je 0x6765a5
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x6765a9
add eax, 2
add edi, 2
test cl, cl
jne 0x676581
xor eax, eax
jmp 0x6765ae
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x6765f4
mov edi, 0x7c2b84
lea eax, [esp + 0x2c]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x6765e3
test cl, cl
je 0x6765df
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x6765e3
add eax, 2
add edi, 2
test cl, cl
jne 0x6765bb
xor eax, eax
jmp 0x6765e8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x6765f4
mov eax, dword [esi]
push 1
push 0xfffffffffffffff6
jmp 0x676621
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0xfffffffffffffffc
push eax
call dword [edx + 8]
jmp 0x676628
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0xfffffffffffffffe
push edx
call dword [ecx + 8]
jmp 0x676628
mov eax, dword [esi]
push 1
mov word [esi + 0x6274], 0x4949
push 2
mov ecx, dword [esi + 4]
push ecx
call dword [eax + 8]
add esp, 0xc
push esi
call fcn.00667c30
and eax, 0xffff
add esp, 4
cmp eax, 0x3e8
ja 0x67753a
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x40], eax
je 0x67752e
mov eax, dword [esp + 0x1c0]
shl eax, 0x10
mov dword [esp + 0x60], eax
mov ebp, dword [esp + 0x1bc]
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x18]
push eax
lea edx, [esp + 0x18]
push ecx
lea eax, [esp + 0x18]
push edx
push eax
push ebp
push esi
mov ebx, 4
call fcn.006760f0
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x78]
or eax, edx
add esp, 0x18
cmp eax, 2
mov dword [esp + 0x10], eax
jne 0x6766d8
lea ecx, [esi + 0x6485]
push str.NIKON
push ecx
call fcn.004501f0
add esp, 8
test eax, eax
je 0x6766d8
push esi
call fcn.00667c30
push esi
call fcn.00667c30
add esp, 8
and eax, 0xffff
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fstp dword [esi + 0x6590]
cmp dword [esp + 0x10], ebx
jne 0x676836
mov eax, dword [esp + 0x18]
cmp eax, 0x1a
jbe 0x6769e4
cmp eax, 0x23
jae 0x6769e4
push esi
call fcn.00667cd0
push esi
call fcn.00667c30
mov cx, ax
add esp, 8
and ecx, 0xffff
cmp ecx, 0x7fff
je 0x67675e
fld dword [esi + 0x6590]
fcomp dword [0x71a460]
fnstsw ax
test ah, 0x40
je 0x67675e
fld qword [0x71a458]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], 0
fild qword [esp + 0x68]
fmul qword [0x73fa38]
fsub qword [0x72b2a0]
call fcn.006fb640
fmul dword [0x73fa30]
fstp dword [esi + 0x6590]
push esi
call fcn.00667c30
push esi
call fcn.00667c30
mov cx, ax
add esp, 8
and ecx, 0xffff
cmp ecx, 0x7fff
je 0x6767b8
fld dword [esi + 0x6598]
fcomp dword [0x71a460]
fnstsw ax
test ah, 0x40
je 0x6767b8
fld qword [0x71a458]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], 0
fild qword [esp + 0x44]
fmul qword [0x73fa28]
call fcn.006fb640
fstp dword [esi + 0x6598]
push esi
call fcn.00667c30
mov cx, ax
add esp, 4
and ecx, 0xffff
cmp ecx, 0xffff
je 0x676807
fld dword [esi + 0x6594]
fcomp dword [0x71a460]
fnstsw ax
test ah, 0x40
je 0x676807
fld qword [0x71a458]
movsx edx, cx
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fmul qword [0x73fa20]
call fcn.006fb640
fstp dword [esi + 0x6594]
push esi
call fcn.00667c30
push esi
call fcn.00667c30
and eax, 0xffff
push esi
mov dword [esp + 0x48], eax
call fcn.00667c30
push esi
call fcn.00667c30
add esp, 0x10
and eax, 0xffff
mov dword [esi + 0x65a4], eax
cmp dword [esp + 0x10], 7
jne 0x676868
cmp dword [esp + 0x14], 2
jne 0x6769e4
cmp dword [esp + 0x18], 0x14
jbe 0x6769e4
mov edx, dword [esi + 4]
mov eax, dword [esi]
lea ecx, [esi + 0x6505]
push 0x40
push ecx
push edx
call dword [eax + 0x10]
add esp, 0xc
cmp dword [esp + 0x10], 8
jne 0x676888
cmp dword [esp + 0x14], ebx
jne 0x6769e4
push esi
call fcn.00667cd0
add esp, 4
mov dword [esi + 0x65a4], eax
cmp dword [esp + 0x10], 9
jne 0x6768e1
mov edi, str.Canon
lea eax, [esi + 0x6485]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [edi]
jne 0x6768be
test cl, cl
je 0x6768ba
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [edi + 1]
jne 0x6768be
add eax, 2
add edi, 2
test cl, cl
jne 0x67689a
xor eax, eax
jmp 0x6768c3
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x6769e4
mov edx, dword [esi + 4]
mov eax, dword [esi]
push 1
lea ecx, [esi + 0x6545]
push 0x40
push ecx
push edx
call dword [eax]
add esp, 0x10
cmp dword [esp + 0x10], 0xc
jne 0x676917
cmp dword [esp + 0x18], ebx
jne 0x6769e4
mov eax, dword [esp + 0x14]
push eax
push esi
call fcn.00667d50
mov ecx, dword [esp + 0x1c]
fstp dword [esi + 0xe774]
push ecx
push esi
call fcn.00667d50
fstp dword [esi + 0xe77c]
add esp, 0x10
cmp dword [esp + 0x10], 0x10
jne 0x676937
cmp dword [esp + 0x14], ebx
jne 0x6769e4
push esi
call fcn.00667cd0
add esp, 4
mov dword [esi + 0x65b4], eax
cmp dword [esp + 0x10], 0x11
jne 0x676986
mov eax, dword [esi + 0x6610]
test eax, eax
je 0x6769e4
push 5
lea edx, [esi + 0x6485]
push str.NIKON
push edx
call fcn.004508b0
add esp, 0xc
test eax, eax
jne 0x676986
mov edi, dword [esi]
push eax
push esi
call fcn.00667cd0
add esp, 4
add eax, ebp
push eax
mov eax, dword [esi + 4]
push eax
call dword [edi + 8]
push ebp
push esi
call fcn.00678210
add esp, 0x14
mov eax, dword [esp + 0x10]
cmp eax, 0x14
jne 0x6769b8
cmp dword [esp + 0x18], 0xa00
jne 0x6769e4
cmp dword [esp + 0x14], 7
jne 0x6769e4
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x4e0
push edx
call dword [ecx + 8]
add esp, 0xc
jmp 0x677276
cmp eax, 0x15
jne 0x6769e4
cmp dword [esp + 0x14], 2
jne 0x6769e4
mov eax, dword [esi + 0x6610]
test eax, eax
je 0x6769e4
mov edx, dword [esi + 4]
mov eax, dword [esi]
push 1
lea ecx, [esi + 0x64c5]
push 0x40
push ecx
push edx
call dword [eax]
add esp, 0x10
lea eax, [esi + 0x6485]
push str.PENTAX
push eax
call fcn.004501f0
mov ecx, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x676a24
cmp ecx, 0x1b
jne 0x676a12
mov dword [esp + 0x10], 0x1018
jmp 0x677241
cmp ecx, 0x1c
jne 0x676a24
mov dword [esp + 0x10], 0x1017
jmp 0x67720b
cmp ecx, 0x1d
jne 0x676a9d
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x1c]
mov edi, eax
add esp, 4
test edi, edi
je 0x676a99
mov ebx, dword [esp + 0x38]
mov ebp, 1
cmp edi, 0xffffffff
je 0x676a99
cmp dword [0x777eb0], ebp
jle 0x676a5e
push 4
push edi
call fcn.0045354a
add esp, 8
jmp 0x676a69
mov eax, dword [str.________________________________H]
mov al, byte [eax + edi*2]
and eax, 4
test eax, eax
je 0x676a72
lea edx, [edi - 0x30]
jmp 0x676a7d
mov eax, edi
xor edx, edx
mov ecx, 0xa
div ecx
mov ecx, dword [esi]
lea eax, [ebx + ebx*4]
lea ebx, [edx + eax*2]
mov edx, dword [esi + 4]
push edx
mov dword [esp + 0x3c], ebx
call dword [ecx + 0x1c]
mov edi, eax
add esp, 4
test edi, edi
jne 0x676a44
mov ecx, dword [esp + 0x10]
cmp ecx, 0x81
jne 0x676af8
cmp dword [esp + 0x14], 4
jne 0x676b6f
push esi
call fcn.00667cd0
mov edx, dword [esi + 4]
mov ecx, dword [esi]
mov dword [esi + 0x65bc], eax
add eax, 0x29
push 0
push eax
push edx
call dword [ecx + 8]
push esi
call fcn.00667c30
shl eax, 1
push esi
mov word [esi + 0x66ac], ax
call fcn.00667c30
mov ecx, dword [esp + 0x28]
add esp, 0x18
mov word [esi + 0x66ae], ax
mov dword [esi + 0x65ac], 0x61616161
cmp ecx, 0x29
jne 0x676b67
cmp dword [esp + 0x14], 1
jne 0x6772c4
mov eax, dword [esp + 0x3c]
cmp eax, 0x12
jae 0x676b1d
movsx eax, byte [eax + str.012347800000005896]
sub eax, 0x30
jmp 0x676b1f
xor eax, eax
mov edx, dword [esi + 4]
mov ecx, dword [esi]
shl eax, 5
add eax, 8
push 1
push eax
push edx
call dword [ecx + 8]
add esp, 0xc
xor ebx, ebx
xor edi, edi
push esi
call fcn.00667cd0
mov dword [esp + 0x58], eax
mov eax, edi
xor eax, 2
mov dword [esp + 0x5c], ebx
fild qword [esp + 0x58]
shr eax, 1
add esp, 4
xor eax, edi
inc edi
fstp dword [esi + eax*4 + 0xe774]
cmp edi, 4
jb 0x676b38
mov ecx, dword [esp + 0x10]
cmp ecx, 0x81
jne 0x676b7b
cmp dword [esp + 0x14], 7
je 0x676ba2
jmp 0x6772c4
cmp ecx, 0x100
jne 0x676b8f
cmp dword [esp + 0x14], 7
je 0x676ba2
jmp 0x6772c4
cmp ecx, 0x280
jne 0x676bc2
cmp dword [esp + 0x14], 1
jne 0x6772c4
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x65c0], eax
mov eax, dword [esp + 0x1c]
add esp, 4
mov dword [esi + 0x65cc], eax
cmp ecx, 0x88
jne 0x676bfb
cmp dword [esp + 0x14], 4
jne 0x6772c4
push esi
call fcn.00667cd0
add esp, 4
mov dword [esi + 0x65c0], eax
test eax, eax
je 0x676bf7
mov ecx, dword [esp + 0x1bc]
add eax, ecx
mov dword [esi + 0x65c0], eax
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
cmp ecx, 0x89
jne 0x676c25
cmp dword [esp + 0x14], 4
jne 0x6772c4
push esi
call fcn.00667cd0
mov ecx, dword [esp + 0x14]
add esp, 4
mov dword [esi + 0x65cc], eax
cmp ecx, 0x8c
je 0x676c35
cmp ecx, 0x96
jne 0x676c4b
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x18]
mov ecx, dword [esp + 0x14]
add esp, 4
mov dword [esi + 0x65c4], eax
cmp ecx, 0x97
jne 0x676d5c
mov edi, 4
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x1c]
lea ecx, [ebx + ebx*4]
add esp, 4
dec edi
lea ebx, [eax + ecx*2 - 0x30]
jne 0x676c5c
mov eax, ebx
mov dword [esp + 0x24], ebx
sub eax, 0x64
je 0x676cda
sub eax, 2
je 0x676cc8
dec eax
jne 0x676d1e
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x10
push eax
call dword [edx + 8]
add esp, 0xc
lea edi, [esi + 0xe774]
mov ebx, 4
push esi
call fcn.00667c30
and eax, 0xffff
add esp, 4
mov dword [esp + 0x1c], eax
add edi, 4
fild dword [esp + 0x1c]
dec ebx
fstp dword [edi - 4]
jne 0x676ca4
jmp 0x676d58
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 6
push edx
call dword [ecx + 8]
jmp 0x6773e7
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0x44
push ecx
call dword [eax + 8]
add esp, 0xc
xor edi, edi
push esi
call fcn.00667c30
and eax, 0xffff
mov edx, edi
mov dword [esp + 0x20], eax
and edx, 1
fild dword [esp + 0x20]
mov eax, edi
add esp, 4
shl edx, 1
shr eax, 1
or edx, eax
inc edi
cmp edi, 4
fstp dword [esi + edx*4 + 0xe774]
jb 0x676cec
jmp 0x676d58
cmp ebx, 0xc8
jb 0x676d58
cmp ebx, 0xcd
je 0x676d41
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x118
push edx
call dword [ecx + 8]
add esp, 0xc
mov edx, dword [esi + 4]
mov eax, dword [esi]
push 1
lea ecx, [esp + 0x74]
push 0x144
push ecx
push edx
call dword [eax]
add esp, 0x10
mov ecx, dword [esp + 0x10]
cmp ecx, 0xa4
jne 0x676db6
cmp dword [esp + 0x14], 3
jne 0x6772c4
mov eax, dword [esp + 0x3c]
mov ecx, dword [esi]
push 1
lea edx, [eax + eax*2]
mov eax, dword [esi + 4]
shl edx, 4
push edx
push eax
call dword [ecx + 8]
add esp, 0xc
lea edi, [esi + 0xe774]
mov ebx, 3
push esi
call fcn.00667c30
and eax, 0xffff
add esp, 4
mov dword [esp + 0x1c], eax
add edi, 4
fild dword [esp + 0x1c]
dec ebx
fstp dword [edi - 4]
jne 0x676d93
mov ecx, dword [esp + 0x10]
cmp ecx, 0xa7
jne 0x676e9f
mov edx, dword [esp + 0x24]
add edx, 0xffffff38
cmp edx, 0xc
jae 0x6772c4
fld dword [esi + 0xe774]
fcomp dword [0x71a460]
fnstsw ax
test ah, 0x40
je 0x6772c4
mov eax, dword [esp + 0x38]
mov edx, dword [esi + 4]
mov ecx, dword [esi]
and eax, 0xff
push edx
mov bl, byte [eax + 0x73d0cc]
mov byte [esp + 0x2f], bl
call dword [ecx + 0x1c]
mov ecx, dword [esi + 4]
mov edi, eax
mov eax, dword [esi]
push ecx
call dword [eax + 0x1c]
mov edx, dword [esi]
xor edi, eax
mov eax, dword [esi + 4]
push eax
call dword [edx + 0x1c]
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
xor edi, eax
call dword [ecx + 0x1c]
xor edi, eax
mov al, bl
mov bl, 0x60
add esp, 0x10
mov dl, byte [edi + 0x73d1cc]
xor ecx, ecx
imul bl
mov bl, byte [esp + 0x2b]
add dl, al
add al, bl
xor byte [esp + ecx + 0x70], dl
inc ecx
cmp ecx, 0x144
jb 0x676e40
mov eax, dword [esp + 0x24]
xor edi, edi
movsx eax, byte [eax + 0x7c2a98]
sub eax, 0x30
mov ebx, eax
and ebx, 1
and al, 0xfe
lea ebp, [esp + eax + 0x70]
push ebp
push esi
call fcn.00667c00
mov ecx, edi
and eax, 0xffff
shr ecx, 1
mov dword [esp + 0x24], eax
xor ecx, ebx
fild dword [esp + 0x24]
add esp, 8
xor ecx, edi
inc edi
add ebp, 2
fstp dword [esi + ecx*4 + 0xe774]
cmp edi, 4
jb 0x676e6c
mov ecx, dword [esp + 0x10]
cmp ecx, 0x200
jne 0x676f26
cmp dword [esp + 0x18], 3
jne 0x676ecf
push esi
call fcn.00667cd0
push esi
call fcn.00667cd0
mov ecx, dword [esp + 0x18]
add esp, 8
cmp ecx, 0x200
mov dword [esi + 0x65a4], eax
jne 0x676f26
cmp dword [esp + 0x18], 4
jne 0x6772c4
push esi
call fcn.00667c30
mov di, ax
push esi
and edi, 0xffff
call fcn.00667c30
and eax, 0xffff
push esi
add edi, eax
call fcn.00667c30
and eax, 0xffff
push esi
add edi, eax
call fcn.00667c30
and eax, 0xffff
mov ecx, dword [esp + 0x20]
add eax, edi
add esp, 0x10
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esi + 0x65f4], eax
cmp ecx, 0x201
jne 0x676f3e
cmp dword [esp + 0x18], 4
je 0x6773ea
jmp 0x6772c4
cmp ecx, 0x220
jne 0x676f6b
cmp dword [esp + 0x18], 0x35
jne 0x6772c4
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0xe
push eax
call dword [edx + 8]
push esi
call fcn.0066a980
mov ecx, dword [esp + 0x20]
add esp, 0x10
cmp ecx, 0x401
jne 0x676fae
cmp dword [esp + 0x18], 4
jne 0x6772c4
push esi
call fcn.00667cd0
push esi
mov edi, eax
call fcn.00667cd0
push esi
add edi, eax
call fcn.00667cd0
push esi
add edi, eax
call fcn.00667cd0
mov ecx, dword [esp + 0x20]
add edi, eax
add esp, 0x10
shr edi, 2
mov dword [esi + 0x65f4], edi
cmp ecx, 0xe01
jne 0x677062
movsx ecx, word [esi + 0x6274]
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x16
push eax
mov dword [esp + 0x20], ecx
mov word [esi + 0x6274], 0x4949
call dword [edx + 8]
mov eax, dword [esp + 0x24]
add esp, 0xc
cmp eax, 0x2c
mov ebx, 0x16
jbe 0x677052
mov ebp, 0x76a43207
push esi
call fcn.00667cd0
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0xe
push edx
mov dword [esp + 0x20], eax
call dword [ecx + 8]
push esi
call fcn.00667cd0
mov edi, eax
mov eax, dword [esp + 0x24]
add esp, 0x14
sub edi, 4
cmp eax, ebp
jne 0x677034
push esi
call fcn.00667c30
add esp, 4
and eax, 0xffff
mov dword [esi + 0x66c4], eax
jmp 0x677043
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push edi
push ecx
call dword [eax + 8]
add esp, 0xc
mov eax, dword [esp + 0x18]
lea ebx, [ebx + edi + 0x16]
lea edx, [ebx + 0x16]
cmp edx, eax
jb 0x676ff1
mov ax, word [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov word [esi + 0x6274], ax
cmp ecx, 0xe80
jne 0x6770e9
cmp dword [esp + 0x18], 0x100
jne 0x6772c4
cmp dword [esp + 0x14], 7
jne 0x6772c4
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x30
push edx
call dword [ecx + 8]
push esi
call fcn.00667c30
and eax, 0xffff
push esi
mov ecx, eax
shl ecx, 7
sub ecx, eax
shl ecx, 2
mov dword [esp + 0x30], ecx
fild dword [esp + 0x30]
fmul dword [0x73fa1c]
fstp dword [esi + 0xe774]
call fcn.00667c30
and eax, 0xffff
add esp, 0x14
mov ecx, dword [esp + 0x10]
lea edx, [eax + eax*2]
shl edx, 6
sub edx, eax
shl edx, 1
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fmul dword [0x73fa18]
fstp dword [esi + 0xe77c]
cmp ecx, 0xf00
jne 0x677149
cmp dword [esp + 0x14], 7
jne 0x6772c4
mov eax, dword [esp + 0x18]
cmp eax, 0x266
jne 0x67711f
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0xb0
push ecx
call dword [eax + 8]
add esp, 0xc
jmp 0x677276
cmp eax, 0x2de
je 0x677131
cmp eax, 0x5de
jne 0x677444
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x94
push eax
call dword [edx + 8]
add esp, 0xc
jmp 0x677276
cmp ecx, 0x1011
jne 0x67715d
cmp dword [esp + 0x18], 9
je 0x677165
jmp 0x6772c4
cmp ecx, 0x20400200
jne 0x6771af
lea ebp, [esi + 0xe794]
mov dword [esp + 0x1c], 3
mov edi, ebp
mov ebx, 3
push esi
call fcn.00667c30
movsx ecx, ax
mov dword [esp + 0x24], ecx
add esp, 4
fild dword [esp + 0x20]
add edi, 4
dec ebx
fmul dword [0x73fa14]
fstp dword [edi - 4]
jne 0x67717a
mov eax, dword [esp + 0x1c]
add ebp, 0x10
dec eax
mov dword [esp + 0x1c], eax
jne 0x677173
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1012
je 0x6771bf
cmp ecx, 0x20400600
jne 0x6771fb
cmp dword [esp + 0x18], 4
jne 0x6771fb
mov dword [esi + 0x65f4], 0
mov edi, 4
push esi
call fcn.00667c30
mov ecx, dword [esi + 0x65f4]
and eax, 0xffff
shl eax, 2
add esp, 4
add ecx, eax
dec edi
mov dword [esi + 0x65f4], ecx
jne 0x6771d5
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1017
je 0x67720b
cmp ecx, 0x20400100
jne 0x677231
push esi
call fcn.00667c30
add esp, 4
and eax, 0xffff
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x73fa14]
fstp dword [esi + 0xe774]
cmp ecx, 0x1018
je 0x677241
cmp ecx, 0x20400100
jne 0x677267
push esi
call fcn.00667c30
add esp, 4
and eax, 0xffff
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x73fa14]
fstp dword [esi + 0xe77c]
cmp ecx, 0x2011
jne 0x6772c4
cmp dword [esp + 0x18], 2
jne 0x6772c4
push esi
mov word [esi + 0x6274], 0x4d4d
call fcn.00667c30
and eax, 0xffff
push esi
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fmul dword [0x73fa14]
fstp dword [esi + 0xe774]
call fcn.00667c30
add esp, 8
and eax, 0xffff
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x73fa14]
fstp dword [esi + 0xe77c]
mov edx, ecx
or edx, 0x70
cmp edx, 0x2070
jne 0x6772ff
cmp dword [esp + 0x14], 4
jne 0x6772ff
mov ebx, dword [esi]
push 0
push esi
call fcn.00667cd0
mov edi, dword [esp + 0x1c4]
add esp, 4
add eax, edi
push eax
mov eax, dword [esi + 4]
push eax
call dword [ebx + 8]
mov ecx, dword [esp + 0x1c]
add esp, 0xc
jmp 0x677306
mov edi, dword [esp + 0x1bc]
cmp ecx, 0x2010
jne 0x677328
cmp dword [esp + 0x14], 7
je 0x677444
mov dword [esi + 0x2e7fc], 0x66e270
jmp 0x677444
cmp ecx, 0x2020
jne 0x677348
push 0x102
push 0x101
push edi
push esi
call fcn.00676180
mov ecx, dword [esp + 0x20]
add esp, 0x10
cmp ecx, 0x2040
jne 0x67735f
push ecx
push edi
push esi
call fcn.00676220
mov ecx, dword [esp + 0x1c]
add esp, 0xc
cmp ecx, 0xb028
jne 0x677394
mov ebx, dword [esi]
push 0
push esi
call fcn.00667cd0
mov ecx, dword [esi + 4]
add esp, 4
push eax
push ecx
call dword [ebx + 8]
push 0x89
push 0x88
push edi
push esi
call fcn.00676180
mov ecx, dword [esp + 0x2c]
add esp, 0x1c
cmp ecx, 0x4001
jne 0x677444
mov eax, dword [esp + 0x18]
cmp eax, 0x1f4
jbe 0x677444
cmp eax, 0x246
jne 0x6773bd
mov eax, 0x32
jmp 0x6773db
cmp eax, 0x28d
jne 0x6773cb
mov eax, 0x44
jmp 0x6773db
sub eax, 0x1400
neg eax
sbb eax, eax
and al, 0xf0
add eax, 0x8e
mov edx, dword [esi]
push 1
push eax
mov eax, dword [esi + 4]
push eax
call dword [edx + 8]
add esp, 0xc
xor edi, edi
push esi
call fcn.00667c30
and eax, 0xffff
mov ecx, edi
mov dword [esp + 0x24], eax
add esp, 4
fild dword [esp + 0x20]
shr ecx, 1
xor ecx, edi
inc edi
cmp edi, 4
fstp dword [esi + ecx*4 + 0xe774]
jb 0x6773ec
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x16
push eax
call dword [edx + 8]
add esp, 0xc
xor edi, edi
push esi
call fcn.00667c30
mov ecx, edi
add esp, 4
shr ecx, 1
xor ecx, edi
inc edi
cmp edi, 4
mov word [esi + ecx*2 + 0xe76c], ax
jb 0x677427
mov eax, dword [esp + 0x5c]
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push 0
push eax
push ecx
call dword [edx + 8]
mov eax, dword [esp + 0x4c]
add esp, 0xc
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x40], eax
jne 0x676661
jmp 0x67752e
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
mov word [esi + 0x6274], 0x4d4d
call dword [eax + 0x18]
mov ecx, dword [esi + 0x65bc]
add esp, 4
cmp eax, ecx
jge 0x67752e
cmp eax, 0x4000
jae 0x67752e
mov edi, ebp
mov ebp, ebx
mov ebx, dword [esp + 0x50]
push esi
mov dword [esp + 0x48], edi
mov dword [esp + 0x50], ebp
mov dword [esp + 0x4c], ebx
call fcn.00667c30
add esp, 4
and eax, 0xffff
cmp ebx, 0x100
mov dword [esp + 0x50], eax
jne 0x677514
cmp eax, ebx
jne 0x677514
cmp edi, ebx
jbe 0x677514
cmp edi, 0x280
jae 0x677514
cmp ebp, ebx
jbe 0x677514
cmp ebp, 0x280
jae 0x677514
lea eax, [esp + 0x44]
lea ecx, [esi + 0xe774]
mov edx, 4
mov edi, dword [eax]
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], edi
add eax, 4
fild qword [esp + 0x54]
add ecx, 4
dec edx
fstp dword [ecx - 4]
jne 0x6774f6
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x18]
mov ecx, dword [esi + 0x65bc]
add esp, 4
cmp eax, ecx
jl 0x677492
mov cx, word [esp + 0x64]
mov word [esi + 0x6274], cx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a4
ret