Function at 0x6f1f30
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
push esi
mov esi, dword [ebp + 8]
mov cl, byte [esi + 0xd9]
xor eax, eax
test cl, cl
sete al
push edi
lea eax, [eax + eax - 1]
mov dword [ebp + 8], eax
fild dword [ebp + 8]
fmul dword [esi + 0x2c4]
fcomp dword [0x873804]
fnstsw ax
test ah, 0x41
jne 0x6f2109
mov eax, dword [0x91d3f0]
mov edx, dword [eax + 0xb34]
mov eax, dword [eax + 0x434]
push 1
push edx
push eax
push ecx
call fcn.0065a460
movzx ecx, byte [esi + 0xd9]
mov edx, dword [0x91cfa4]
xor ecx, 1
mov al, byte [edx + ecx*2 + 0x20]
add esp, 0x10
cmp al, 0x17
jae case.0x6f2a6c.5
cmp al, 0xff
je 0x6f1fb5
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f1fba
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
xor eax, eax
mov edi, edx
mov dl, byte [edi + 0xd9]
test dl, dl
sete al
lea eax, [eax + eax - 1]
mov dword [ebp + 8], eax
fild dword [ebp + 8]
shl eax, 8
mov dword [ebp + 8], eax
fld st(0)
fmul dword [esi + 0x2c4]
fild dword [ebp + 8]
fsubr dword [edi + 0x2c4]
fmul st(2)
fcompp
fnstsw ax
fstp st(0)
test ah, 1
je case.0x6f2a6c.5
xor edx, edx
mov dx, word [edi + 0xea]
xor eax, eax
mov ax, word [esi + 0xea]
push edx
push eax
call fcn.006442a0
add esp, 8
cmp ax, 0x20
jbe case.0x6f2a6c.5
fld dword [edi + 0x2cc]
call fcn.0043bd30
fld dword [edi + 0x2c4]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
push 0
push 2
push 0
push 0x800
mov ebx, eax
call fcn.006fc040
xor ecx, ecx
add esp, 0x20
cmp ecx, edx
jb 0x6f208b
ja case.0x6f2a6c.5
cmp ebx, eax
jae case.0x6f2a6c.5
movzx eax, word [edi + 0x2dc]
cmp eax, 0x111
jg 0x6f20ca
je case.0x6f20df.275
sub eax, 0x14
cmp eax, 0xfb
ja case.0x6f2a6c.5
movzx ecx, byte [eax + 0x6f3d3c]
jmp dword [ecx*4 + 0x6f3d30]
fld dword [edi + 0x2e4]
fcomp dword [0x87b794]
fnstsw ax
test ah, 0x41
jmp 0x6f20f1
sub eax, 0x113
cmp eax, 7
ja case.0x6f2a6c.5
movzx edx, byte [eax + 0x6f3e40]
jmp dword [edx*4 + 0x6f3e38]
push edi
call fcn.0070c4d0
add esp, 4
test eax, eax
je case.0x6f2a6c.5
push 3
push esi
call fcn.00790030
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [esi + 0xe8]
test al, al
je 0x6f2130
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0x19]
test cl, cl
jne 0x6f2130
push esi
call fcn.006bea50
add esp, 4
test al, al
jne 0x6f314c
mov dl, byte [esi + 0xd9]
mov edi, dword [0x91d3f0]
xor ecx, ecx
test dl, dl
sete cl
lea ecx, [ecx + ecx - 1]
mov dword [ebp + 8], ecx
fild dword [ebp + 8]
fmul dword [0x8cb9a4]
fsubr dword [edi + 0x454]
call fcn.0043bd30
test eax, eax
jg 0x6f2164
neg eax
mov ebx, eax
mov al, byte [esi + 0xe8]
test al, al
jne 0x6f2198
cmp ebx, 0xc0
jl 0x6f2198
push esi
call fcn.00639fc0
add esp, 4
test eax, eax
je 0x6f2192
cmp byte [esi + 0xda], 0xf
jne 0x6f229e
mov edi, dword [0x91d3f0]
mov edx, dword [0x91cfa4]
mov al, byte [edx + 0x19]
test al, al
jne 0x6f229e
mov al, byte [esi + 0xda]
cmp al, 0xa
je 0x6f229e
cmp al, 0x41
je 0x6f229e
cmp ebx, 0x200
jge 0x6f229e
movzx eax, byte [esi + 0xd8]
movzx ecx, byte [esi + 0xd7]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*8]
imul edx, edx, 0x110
mov eax, dword [edx + 0xeb6620]
shr eax, 0x1a
mov ecx, 0xffffff6c
sub ecx, eax
imul ecx, ecx, 0x1b0
mov eax, 0xb30f6353
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [ebp + 8], edx
fild dword [ebp + 8]
fcomp dword [edi + 0x7d4]
fnstsw ax
test ah, 5
jp 0x6f229e
fld dword [edi + 0xb54]
call fcn.0043bd30
mov ecx, eax
test ecx, ecx
jle 0x6f2237
mov dword [ebp + 8], ecx
jmp 0x6f223e
mov edx, ecx
neg edx
mov dword [ebp + 8], edx
fild dword [ebp + 8]
fcomp dword [0x8d2fbc]
fnstsw ax
test ah, 5
jp 0x6f229e
fld dword [edi + 0x454]
push ecx
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
add esp, 0x10
cmp eax, 0x40000
ja 0x6f229e
pop edi
mov byte [esi + 0xda], 0xa
mov word [esi + 0xdc], 0x10
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [esi + 0xe8]
test al, al
je 0x6f231b
mov ecx, dword [0x91cfa8]
cmp byte [ecx + 9], 2
jb case.0x6f2a6c.5
test al, al
je 0x6f231b
push esi
call fcn.00677590
push 0
push 2
cdq
push 0
push 0x1200
mov ebx, eax
mov edi, edx
call fcn.006fc040
add esp, 0x14
cmp edi, edx
ja 0x6f2396
jb 0x6f22ec
cmp ebx, eax
jae 0x6f2396
push 1
push esi
call fcn.006bf6a0
add esp, 8
test eax, eax
je 0x6f2396
pop edi
mov byte [esi + 0xda], 0x44
mov word [esi + 0xdc], 0
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
push 0
push 2
push 0
push 0x800
call fcn.006fc040
push esi
mov ebx, eax
mov edi, edx
call fcn.00677590
cdq
add esp, 0x14
cmp edx, edi
ja 0x6f2396
jb 0x6f2343
cmp eax, ebx
jae 0x6f2396
push esi
call fcn.00674a60
cdq
add esp, 4
cmp edx, edi
ja 0x6f2396
jb 0x6f2357
cmp eax, ebx
jae 0x6f2396
push 1
push esi
call fcn.006bf6a0
add esp, 8
test eax, eax
je 0x6f2396
push 0
push 2
push 0
push 0x200
call fcn.006fc040
add esp, 0x10
push eax
push 0xe
call fcn.00678f20
add esp, 4
push eax
push esi
call fcn.00644e00
add esp, 0xc
test al, al
je 0x6f22ff
mov al, byte [esi + 0xd6]
test al, al
je 0x6f23bf
movzx eax, byte [esi + 0xd9]
mov edx, dword [0x91cfa4]
mov cl, byte [esi]
cmp cl, byte [edx + eax*2 + 0x1c]
je 0x6f23bf
cmp cl, byte [edx + eax*2 + 0x1d]
jne case.0x6f2a6c.5
mov edx, dword [esi + 0x2cc]
mov eax, dword [esi + 0x2c4]
xor ecx, ecx
mov cl, byte [esi + 0xd9]
push 0
push edx
push eax
push ecx
call fcn.0065a460
push esi
call fcn.00675870
add esp, 0x14
cmp al, 0xff
je 0x6f2400
push esi
call fcn.00675870
movzx eax, al
cdq
mov ecx, 0x17
add esp, 4
idiv ecx
jmp 0x6f2405
mov edx, 1
mov eax, dword [0x91d3f0]
imul edx, edx, 0x4c0
mov ecx, dword [esi + 0x2cc]
add edx, 0xd92230
mov edi, edx
mov edx, dword [eax + 0xb34]
mov eax, dword [eax + 0x434]
push edx
mov edx, dword [esi + 0x2c4]
push eax
push ecx
push edx
call fcn.006442f0
add esp, 0x10
mov dword [ebp - 0x18], eax
cmp byte [edi + 0xda], 0xd
jne 0x6f24ef
movzx eax, byte [esi + 0xd9]
mov edx, dword [0x91cfa4]
mov cl, byte [esi]
cmp cl, byte [edx + eax*2 + 0x1c]
je 0x6f24ef
cmp word [edi + 0x2e0], 3
jl case.0x6f2a6c.5
fld dword [edi + 0x2cc]
call fcn.0043bd30
fld dword [edi + 0x2c4]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
push 0
push 2
push 0
push 0x100
mov ebx, eax
call fcn.006fc040
xor ecx, ecx
add esp, 0x20
cmp ecx, edx
ja 0x6f24ef
jb 0x6f24c9
cmp ebx, eax
ja 0x6f24ef
xor eax, eax
mov ax, word [edi + 0xea]
xor ecx, ecx
mov cx, word [esi + 0xea]
push eax
push ecx
call fcn.006442a0
add esp, 8
cmp ax, 0x20
jbe case.0x6f2a6c.5
push 0xf
call fcn.00678f20
mov ecx, dword [esi + 0x2cc]
mov edi, eax
mov eax, dword [0x91d3f0]
mov edx, dword [eax + edi*4 + 0xb34]
mov eax, dword [eax + edi*4 + 0x434]
push edx
mov edx, dword [esi + 0x2c4]
push eax
push ecx
push edx
mov dword [ebp - 0x28], edi
call fcn.006442f0
mov ebx, dword [0x91d3f0]
fld dword [ebx + edi*4 + 0xb34]
mov dword [ebp - 0x14], eax
call fcn.0043bd30
fld dword [ebx + edi*4 + 0x434]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
mov ebx, dword [0x91d3f0]
fld dword [ebx + edi*4 + 0xb38]
mov dword [ebp - 8], eax
call fcn.0043bd30
fld dword [ebx + edi*4 + 0x438]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
mov eax, dword [0x91cfa4]
add esp, 0x34
cmp word [eax + 0xc], 0x10
jle 0x6f289a
push 9
call fcn.00678f20
mov ecx, eax
add esp, 4
cmp ecx, edi
mov dword [ebp - 0x1c], ecx
jge 0x6f289a
mov al, byte [esi + 0xd9]
xor edx, edx
test al, al
mov eax, dword [0x91d3f0]
sete dl
lea ebx, [eax + ecx*4 + 0x434]
lea edx, [edx + edx - 1]
mov dword [ebp + 8], edx
fild dword [ebp + 8]
fstp dword [ebp - 0x20]
fld dword [ebp - 0x20]
fmul dword [ebx]
fcom dword [0x8d3d84]
fnstsw ax
test ah, 0x41
jnp 0x6f2898
fcomp dword [0x8d3d80]
fnstsw ax
test ah, 0x41
jp 0x6f2650
fld dword [ebx + 0x700]
call fcn.0043bd30
test eax, eax
jg 0x6f2627
neg eax
mov dword [ebp + 8], eax
fild dword [ebp + 8]
fcomp dword [0x8d3d7c]
fnstsw ax
test ah, 5
jp 0x6f264d
fld dword [ebx + 0x380]
fcomp dword [0x8d2e5c]
fnstsw ax
test ah, 1
je 0x6f2660
mov ecx, dword [ebp - 0x1c]
inc ecx
add ebx, 4
cmp ecx, edi
mov dword [ebp - 0x1c], ecx
jl 0x6f25f3
jmp 0x6f289a
xor ecx, ecx
mov cl, byte [esi]
push ecx
call fcn.0063dd30
add esp, 4
cmp al, 0xff
je 0x6f268b
xor edx, edx
mov dl, byte [esi]
push edx
call fcn.0063dd30
movzx eax, al
cdq
mov ecx, 0x17
add esp, 4
idiv ecx
jmp 0x6f2690
mov edx, 1
mov ecx, dword [0x91cfa4]
imul edx, edx, 0x4c0
mov al, byte [ecx + 0x19]
add edx, 0xd92230
mov dword [ebp - 0x1c], edx
mov dl, byte [esi]
cmp dl, al
jne 0x6f26da
xor eax, eax
mov ax, word [esi + 0xee]
xor ecx, ecx
mov cx, word [esi + 0xea]
push eax
push ecx
call fcn.006442a0
add esp, 8
cmp ax, 0x50
jbe case.0x6f2a6c.5
mov ecx, dword [0x91cfa4]
movzx edx, byte [esi + 0xd9]
mov al, byte [ecx + edx*2 + 0x1c]
cmp byte [esi], al
jne 0x6f26ff
mov cl, byte [ecx + edx*2 + 0x1d]
cmp cl, 0xff
je 0x6f2710
movzx eax, cl
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f2715
cmp al, 0xff
je 0x6f2710
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f2715
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
xor edi, edi
mov dword [ebp + 8], edx
mov ebx, 1
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x30], 0x400
mov edx, dword [ebp - 0x30]
push 0
push 0x400
push edi
push edx
call fcn.0043d230
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x20]
add ebx, 0xffffffff
adc eax, 0xffffffff
mov ecx, ebx
or ecx, eax
mov edi, edx
mov dword [ebp - 0x20], eax
jne 0x6f2735
mov ebx, dword [ebp + 8]
fld dword [ebx + 0x2cc]
call fcn.0043bd30
fld dword [ebx + 0x2c4]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
xor ecx, ecx
add esp, 0x10
cmp ecx, edi
ja 0x6f27b2
jb 0x6f27a5
cmp eax, dword [ebp - 0x30]
ja 0x6f27b2
cmp byte [ebx + 0xda], 0xd
je case.0x6f2a6c.5
mov edx, dword [0x91d3f0]
mov ecx, dword [ebp + 0xc]
xor eax, eax
mov ax, word [edx + 0x60]
push eax
push ecx
call fcn.006442a0
mov ebx, dword [ebp - 0x1c]
movzx edx, ax
mov edi, 0x120
sub edi, edx
add esp, 8
shl edi, 2
cmp esi, ebx
je 0x6f281a
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebx + 0x2cc]
mov edx, dword [ebx + 0x2c4]
push eax
mov eax, dword [esi + 0x2cc]
push ecx
mov ecx, dword [esi + 0x2c4]
push edx
push eax
push ecx
call fcn.006442f0
add esp, 0x10
push eax
call fcn.006442a0
add esp, 8
cmp ax, 0x18
jb 0x6f289a
cmp word [ebx + 0xf4], 0
je 0x6f289a
xor ebx, ebx
push ebx
push 2
push ebx
push edi
call fcn.006fc040
add esp, 0x10
cmp ebx, edx
ja 0x6f289a
jb 0x6f2842
cmp dword [ebp - 8], eax
jae 0x6f289a
push 0
push 2
push 0
push 0x120
call fcn.006fc040
add esp, 0x10
cmp ebx, edx
jb 0x6f289a
ja 0x6f2860
cmp dword [ebp - 8], eax
jbe 0x6f289a
mov edx, dword [ebp - 0x14]
xor eax, eax
mov ax, word [esi + 0xea]
push edx
push eax
call fcn.006442a0
add esp, 8
cmp ax, 0x50
ja 0x6f289a
pop edi
mov byte [esi + 0xda], 0xd
mov word [esi + 0xdc], 0
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
fstp st(0)
mov cl, byte [esi + 0xd9]
mov eax, dword [0x91d3f0]
xor edx, edx
test cl, cl
sete dl
lea edx, [edx + edx - 1]
mov dword [ebp + 8], edx
fild dword [ebp + 8]
fmul dword [eax + 0x44c]
fcomp dword [0x8d3d78]
fnstsw ax
test ah, 1
je case.0x6f2a6c.5
mov edx, dword [0x91cfa4]
movzx ecx, cl
xor ecx, 1
mov al, byte [edx + ecx*2 + 0x1c]
cmp al, 0xff
je 0x6f28ee
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f28f3
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
push 5
mov edi, edx
call fcn.00678f20
mov ecx, dword [0x91d3f0]
mov edx, dword [ecx + eax*4 + 0xb34]
mov eax, dword [ecx + eax*4 + 0x434]
mov ecx, dword [esi + 0x2cc]
push edx
mov edx, dword [esi + 0x2c4]
push eax
push ecx
push edx
call fcn.006442f0
movzx ecx, byte [esi + 0xd9]
mov edx, dword [0x91cfa4]
mov bl, byte [esi]
add esp, 0x14
mov dword [ebp - 0x1c], eax
mov al, byte [edx + ecx*2 + 0x1c]
cmp bl, al
je 0x6f295f
cmp al, 0xff
je 0x6f2975
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f297a
mov cl, byte [edx + ecx*2 + 0x1d]
cmp cl, 0xff
je 0x6f2975
movzx eax, cl
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f297a
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov ebx, edx
cmp esi, ebx
mov dword [ebp + 8], ebx
je 0x6f2a46
fld dword [edi + 0x2cc]
call fcn.0043bd30
fld dword [edi + 0x2c4]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
fld dword [ebx + 0x2cc]
mov dword [ebp - 0x20], eax
call fcn.0043bd30
mov edx, ebx
fld dword [edx + 0x2c4]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
mov ecx, dword [ebp - 0x20]
add esp, 0x20
cmp ecx, eax
jbe 0x6f2a46
mov eax, ebx
mov ecx, dword [eax + 0x2cc]
mov edx, dword [eax + 0x2c4]
mov eax, dword [esi + 0x2cc]
push ecx
mov ecx, dword [esi + 0x2c4]
push edx
push eax
push ecx
call fcn.006442f0
mov edx, dword [ebp - 0x14]
push eax
push edx
call fcn.006442a0
add esp, 0x18
cmp ax, 0x20
jbe case.0x6f2a6c.5
push edi
call fcn.00676d10
movzx ecx, byte [edi + 0xda]
add ecx, 0xfffffffc
add esp, 4
cmp ecx, 0x40
mov dword [ebp - 0xc], eax
ja case.0x6f2a6c.5
movzx ecx, byte [ecx + 0x6f3e50]
jmp dword [ecx*4 + 0x6f3e48]
mov edx, dword [ebp - 0x1c]
push eax
push edx
call fcn.006442a0
push 8
mov dword [ebp - 0x14], eax
call fcn.00678f20
push 0xa
call fcn.00678f20
mov ecx, dword [0x91d3f0]
mov edx, dword [ecx + eax*4 + 0xb34]
mov eax, dword [ecx + eax*4 + 0x434]
mov ecx, dword [esi + 0x2cc]
push edx
mov edx, dword [esi + 0x2c4]
push eax
push ecx
push edx
call fcn.006442f0
mov ecx, dword [edi + 0x2c4]
mov edx, dword [esi + 0x2cc]
add esp, 0x20
mov ebx, eax
mov eax, dword [edi + 0x2cc]
push ebx
push eax
mov eax, dword [esi + 0x2c4]
push ecx
push edx
push eax
call fcn.006442f0
add esp, 0x10
push eax
call fcn.006442a0
add esp, 8
cmp ax, 0x40
jae case.0x6f2a6c.5
push edi
call fcn.0070c4d0
add esp, 4
test eax, eax
je case.0x6f2a6c.5
mov ecx, dword [esi + 0x1c8]
push 0
push 2
push 0
push 0x500
mov dword [ebp - 8], ecx
call fcn.006fc040
xor ecx, ecx
add esp, 0x10
cmp ecx, edx
jb 0x6f2b36
ja case.0x6f2a6c.5
cmp dword [ebp - 8], eax
ja case.0x6f2a6c.5
mov edx, dword [edi + 0x2cc]
mov eax, dword [edi + 0x2c4]
mov ecx, dword [esi + 0x2cc]
push edx
mov edx, dword [esi + 0x2c4]
push eax
push ecx
push edx
call fcn.006442f0
push eax
push ebx
call fcn.006442a0
add esp, 0x18
cmp ax, 0x20
ja 0x6f2c00
mov eax, dword [edi + 0x2cc]
mov ecx, dword [edi + 0x2c4]
mov edx, dword [esi + 0x2cc]
push 1
push ebx
push eax
mov eax, dword [esi + 0x2c4]
push ecx
push edx
push eax
call fcn.006442f0
add esp, 0x10
mov cx, 0x8000
sub ebx, eax
cmp cx, bx
sbb dl, dl
inc dl
push edx
push esi
call fcn.0071b7c0
add esp, 0x10
test eax, eax
je 0x6f2c00
movzx eax, word [esi + 0xea]
mov dword [esi + 0x198], eax
mov dword [esi + 0x194], eax
mov eax, dword [esi + 0xe0]
pop edi
mov dword [esi + 0x19c], eax
mov byte [esi + 0xda], 0xa
mov word [esi + 0xdc], 7
mov byte [esi + 0x110], 0
mov byte [esi + 0x117], 0
mov dword [esi + 0x1a0], 0
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
push 8
call fcn.00678f20
mov ecx, dword [ebp - 0xc]
push 0x140
push ecx
mov ebx, eax
call fcn.0063c810
mov edx, dword [0x91d3f0]
mov dword [ebp + 8], eax
fild dword [ebp + 8]
mov eax, dword [ebp - 0xc]
push 0x140
push eax
fadd dword [edx + ebx*4 + 0x434]
fstp dword [ebp + 8]
call fcn.0063c7f0
mov ecx, dword [0x91d3f0]
mov edx, dword [ebp + 8]
mov dword [ebp - 0x20], eax
fild dword [ebp - 0x20]
mov eax, dword [esi + 0x2cc]
fadd dword [ecx + ebx*4 + 0xb34]
mov ecx, dword [esi + 0x2c4]
fstp dword [ebp - 4]
mov ebx, dword [ebp - 4]
push ebx
push edx
push eax
push ecx
call fcn.006442f0
mov edx, dword [edi + 0x2cc]
mov ecx, dword [esi + 0x2cc]
push edx
mov edx, dword [esi + 0x2c4]
mov dword [ebp + 0xc], eax
mov eax, dword [edi + 0x2c4]
push eax
push ecx
push edx
call fcn.006442f0
push eax
mov eax, dword [ebp - 0xc]
push eax
call fcn.006442a0
mov ecx, dword [ebp + 8]
mov edx, dword [esi + 0x2cc]
push ebx
push ecx
push edx
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x2c4]
push eax
call fcn.00644340
fsqrt
add esp, 0x4c
call fcn.0043bd30
fld dword [ebp - 4]
mov dword [ebp - 0x20], eax
call fcn.0043bd30
fld dword [ebp + 8]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
push 0
push 2
push 0
push 0x180
mov dword [ebp - 0x1c], eax
call fcn.006fc040
add esp, 0x20
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
xor eax, eax
cmp eax, edx
ja 0x6f2d28
jb 0x6f2d1d
mov ecx, dword [ebp - 8]
cmp ecx, dword [ebp - 0x30]
jae 0x6f2d28
cmp word [ebp - 0x14], 0x32
jae 0x6f35fc
mov ecx, dword [ebp - 0x14]
cmp cx, 0x60
jae 0x6f35fc
cmp dword [esi + 0xe0], 0x200
jle 0x6f35fc
cmp byte [edi + 0xda], 9
je 0x6f3605
movzx edx, byte [esi + 0xd9]
mov eax, dword [0x91cfa4]
mov al, byte [eax + edx*2 + 0x1c]
cmp byte [esi], al
je 0x6f2e29
cmp cx, 0x30
jbe case.0x6f2a6c.5
cmp al, 0xff
je 0x6f2d85
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f2d8a
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov edi, edx
cmp word [edi + 0x2dc], 0x27b
jne 0x6f2e29
mov edx, dword [0x91d3f0]
fld dword [edx + 0x18]
call fcn.0043bd30
push eax
mov eax, dword [0x91d3f0]
fld dword [eax + 0x10]
call fcn.0043bd30
fld dword [edi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [edi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
mov ecx, dword [0x91d3f0]
fld dword [ecx + 0x18]
mov edi, eax
call fcn.0043bd30
mov edx, dword [0x91d3f0]
fld dword [edx + 0x10]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
add esp, 0x20
cmp eax, edi
ja case.0x6f2a6c.5
xor eax, eax
mov al, byte [esi]
push eax
call fcn.0063dd30
add esp, 4
cmp al, 0xff
je 0x6f2e54
xor ecx, ecx
mov cl, byte [esi]
push ecx
call fcn.0063dd30
movzx eax, al
cdq
mov ecx, 0x17
add esp, 4
idiv ecx
jmp 0x6f2e59
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov edi, edx
mov edx, dword [0x91d3f0]
mov dword [ebp - 0x1c], edi
fld dword [edx + 0xb6c]
call fcn.0043bd30
push eax
mov eax, dword [0x91d3f0]
fld dword [eax + 0x46c]
call fcn.0043bd30
fld dword [edi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [edi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
mov edx, dword [ebp - 0x2c]
xor ecx, ecx
add esp, 0x10
cmp ecx, edx
ja 0x6f2ef1
jb 0x6f2ebd
cmp eax, dword [ebp - 0x30]
jae 0x6f2ef1
mov al, byte [esi + 0xd9]
mov edx, dword [0x91d3f0]
xor ecx, ecx
test al, al
sete cl
lea ecx, [ecx + ecx - 1]
mov dword [ebp - 0x20], ecx
fild dword [ebp - 0x20]
fmul dword [edx + 0x46c]
fcomp dword [0x8cb930]
fnstsw ax
test ah, 0x41
je case.0x6f2a6c.5
movzx eax, word [edi + 0x2dc]
cmp eax, 0x6a
jl 0x6f2f59
cmp eax, 0x6b
jle 0x6f2f07
cmp eax, 0x6d
jne 0x6f2f59
movzx ax, byte [esi + 0x12e]
sub eax, 0x14
push eax
call fcn.0063c940
add esp, 4
test al, al
je 0x6f2f59
mov eax, dword [0x91d3f0]
mov edx, dword [eax + 0xb44]
mov ecx, dword [eax + 0x444]
mov ebx, edx
push ebx
mov eax, ecx
mov dword [ebp + 8], ecx
mov ecx, dword [esi + 0x2cc]
push eax
mov dword [ebp - 4], edx
mov edx, dword [esi + 0x2c4]
push ecx
push edx
call fcn.006442f0
add esp, 0x10
mov edi, eax
mov dword [ebp + 0xc], edi
jmp 0x6f2f5c
mov edi, dword [ebp + 0xc]
mov eax, dword [esi + 0x120]
mov ecx, dword [esi + 0xe0]
push eax
add ecx, 0x600
push ecx
call fcn.00648620
xor edx, edx
mov dx, word [esi + 0xec]
push 0x40
push eax
push edx
push edi
push esi
call fcn.00675f70
movzx ecx, byte [esi + 0xd7]
mov dword [ebp - 0x20], eax
movzx eax, byte [esi + 0xd8]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*8]
imul edx, edx, 0x110
xor eax, eax
mov al, byte [edx + 0xeb662c]
and eax, 0xffffff01
push eax
push edi
push 0xe
push 0x27b
push esi
call fcn.00643e50
mov eax, dword [0x91cfa4]
mov ecx, dword [ebp + 8]
mov edx, dword [eax + 0x40]
mov eax, dword [eax + 0x38]
push ebx
push ecx
push edx
push eax
call fcn.00644340
fsqrt
add esp, 0x40
call fcn.0043bd30
cmp eax, 0x280
mov dword [ebp - 8], eax
ja 0x6f35e3
movzx ecx, byte [esi + 0xd9]
mov dl, byte [esi]
mov ebx, dword [0x91cfa4]
cmp dl, byte [ebx + ecx*2 + 0x1c]
je 0x6f3011
cmp eax, 0x200
ja 0x6f35e3
xor eax, eax
mov ax, word [esi + 0xea]
push edi
mov dword [ebp - 0x14], edi
push eax
call fcn.006442a0
add esp, 8
cmp ax, 0x40
jae case.0x6f2a6c.5
movzx ecx, byte [esi + 0xd9]
mov edx, dword [0x91cfa4]
xor ecx, 1
mov al, byte [edx + ecx*2 + 0x1c]
cmp al, 0xff
je 0x6f3056
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f305b
mov edx, 1
mov ebx, dword [0x91d3f0]
imul edx, edx, 0x4c0
fld dword [ebx + 0xb44]
add edx, 0xd92230
mov edi, edx
call fcn.0043bd30
push eax
fld dword [ebx + 0x444]
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
xor ebx, ebx
push ebx
push 2
push ebx
push 0x80
mov dword [ebp - 0x30], eax
call fcn.006fc040
mov ecx, dword [ebp - 0x30]
add ecx, eax
adc ebx, edx
mov edx, dword [0x91d3f0]
fld dword [edx + 0xb44]
mov dword [ebp - 0x30], ecx
call fcn.0043bd30
push eax
mov eax, dword [0x91d3f0]
fld dword [eax + 0x444]
call fcn.0043bd30
fld dword [edi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [edi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
xor ecx, ecx
add esp, 0x30
cmp ebx, ecx
ja 0x6f3119
jb case.0x6f2a6c.5
cmp dword [ebp - 0x30], eax
jb case.0x6f2a6c.5
mov ecx, dword [ebp - 0xc]
mov ebx, dword [ebp + 0xc]
push ecx
push ebx
call fcn.006442a0
add esp, 8
cmp ax, 0x10
ja 0x6f3158
push 2
call fcn.0063c860
add esp, 4
test eax, eax
jne case.0x6f2a6c.5
push 2
push esi
call fcn.00790030
add esp, 8
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 8], 0x200
jbe 0x6f317d
mov edx, dword [0x91d3f0]
xor eax, eax
mov ax, word [edx + 0x60]
push eax
push ebx
call fcn.006442a0
add esp, 8
cmp ax, 0x30
jbe 0x6f3199
mov ecx, dword [0x91d3f0]
xor edx, edx
mov dx, word [ecx + 0x60]
push edx
push ebx
call fcn.006442a0
add esp, 8
cmp ax, 0x20
ja 0x6f31b5
push 2
call fcn.0063c860
add esp, 4
test eax, eax
je 0x6f31b5
push 3
call fcn.0063c860
add esp, 4
test eax, eax
je 0x6f3141
mov eax, dword [edi + 0x2cc]
mov ecx, dword [edi + 0x2c4]
mov edx, dword [esi + 0x2cc]
push eax
mov eax, dword [esi + 0x2c4]
push ecx
push edx
push eax
call fcn.006442f0
mov ebx, dword [ebp - 0x18]
push eax
push ebx
call fcn.006442a0
add esp, 0x18
cmp ax, 0x20
ja 0x6f3246
xor ecx, ecx
mov cx, word [edi + 0xea]
push ecx
push ebx
call fcn.006442a0
add esp, 8
cmp ax, 0x20
ja 0x6f3246
mov edx, dword [0x91d3f0]
xor eax, eax
mov ax, word [edx + 0x60]
push eax
push ebx
call fcn.006442a0
add esp, 8
cmp ax, 0x50
jb 0x6f3246
mov ecx, dword [0x91cfa4]
mov dx, word [ebp + 0xc]
push 4
push esi
mov word [ecx + 0x406], dx
call fcn.00790030
add esp, 8
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0xc]
xor eax, eax
mov ax, word [edi + 0xea]
push eax
push ecx
call fcn.006442a0
add esp, 8
cmp ax, 0x28
jbe 0x6f35a2
cmp word [ebp - 0x10], 0x70
jae 0x6f35a2
movzx eax, byte [esi + 0xd9]
mov edi, dword [0x91cfa4]
mov bl, byte [esi]
mov cl, byte [edi + eax*2 + 0x1c]
cmp bl, cl
jne 0x6f329d
mov al, byte [edi + eax*2 + 0x1d]
cmp al, 0xff
je 0x6f32af
movzx eax, al
cdq
mov edi, 0x17
idiv edi
jmp 0x6f32b4
cmp cl, 0xff
je 0x6f32af
movzx eax, cl
cdq
mov edi, 0x17
idiv edi
jmp 0x6f32b4
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
movzx eax, word [edx + 0x2dc]
sub eax, 0x275
je 0x6f33b1
sub eax, 6
je 0x6f3383
cmp bl, cl
push 0
jne 0x6f334a
push 2
push 0
push 0x140
call fcn.006fc040
xor ecx, ecx
add esp, 0x10
cmp ecx, edx
ja 0x6f3316
jb 0x6f32ff
cmp dword [ebp - 8], eax
ja 0x6f3316
push 3
call fcn.0063c860
add esp, 4
test eax, eax
je 0x6f3316
push 6
push 0x275
jmp 0x6f331d
push 0
push 0x277
push esi
call fcn.0061e910
add esp, 0xc
push esi
call fcn.00676d10
mov ebx, dword [ebp + 0xc]
add esp, 4
mov dx, 0x8000
sub eax, ebx
cmp dx, ax
sbb al, al
inc al
mov byte [esi + 0x2c1], al
jmp 0x6f33c1
push 0x27b
push esi
call fcn.0061e910
movzx eax, byte [esi + 0xd8]
movzx edx, byte [esi + 0xd7]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*8]
imul eax, eax, 0x110
mov cl, byte [eax + 0xeb662c]
add esp, 0xc
and cl, 1
mov byte [esi + 0x2c1], cl
jmp 0x6f33c1
push 6
push 0x275
push esi
call fcn.0061e910
push esi
call fcn.00676d10
mov edi, dword [ebp + 0xc]
add esp, 0x10
mov dx, 0x8000
sub eax, edi
cmp dx, ax
sbb al, al
inc al
mov byte [esi + 0x2c1], al
jmp 0x6f33c4
push 0
push 0x27b
push esi
call fcn.0061e910
add esp, 0xc
mov edi, dword [ebp + 0xc]
push 8
push esi
call fcn.00655eb0
movzx eax, byte [esi + 0xd8]
movzx edx, byte [esi + 0xd7]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*8]
imul eax, eax, 0x110
mov ecx, dword [eax + 0xeb6630]
shr ecx, 4
and ecx, 0x7f
push 0x14
push ecx
call fcn.00614f40
xor ecx, ecx
mov cx, word [esi + 0xea]
lea edx, [eax + eax*2]
lea eax, [edx*4 + 0x800]
push eax
push ecx
push edi
call fcn.00643cb0
movzx ecx, byte [esi + 0x124]
lea edx, [ecx + ecx*2]
shl edx, 2
mov ecx, 0x1900
sub ecx, edx
mov edx, dword [esi + 0xe0]
add esp, 0x1c
cmp edx, ecx
mov word [esi + 0xea], ax
jle 0x6f346e
xor edx, edx
mov dx, word [esi + 0xec]
push 0x1000
push edx
push edi
call fcn.00643cb0
push 0x1000
mov ebx, eax
xor eax, eax
mov ax, word [esi + 0xea]
push eax
push edi
call fcn.00643cb0
add esp, 0x18
jmp 0x6f3480
push 0x2000
push eax
push edi
call fcn.00643cb0
mov ebx, dword [ebp - 0x14]
add esp, 0xc
xor ecx, ecx
mov cx, ax
xor edx, edx
mov dx, word [esi + 0xea]
mov word [esi + 0xf0], ax
push ecx
push edx
call fcn.006442d0
fild dword [ebp - 8]
movzx ecx, ax
mov eax, 0x92492493
imul ecx
add edx, ecx
mov ecx, dword [ebp - 8]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
add esp, 8
test ecx, ecx
mov word [esi + 0xfc], dx
jge 0x6f34cc
fadd dword [0x87079c]
mov edx, dword [0x91cfa8]
fmul dword [edx + 0x48]
fidiv dword [ebp - 0x28]
call fcn.0043bd30
mov ecx, dword [ebp - 0x20]
cmp eax, ecx
jbe 0x6f34e6
mov eax, ecx
mov ecx, dword [esi + 0xe0]
add ecx, 0xfffffc00
cmp eax, ecx
jae 0x6f34f8
mov eax, ecx
mov dword [esi + 0xe0], eax
movzx eax, byte [esi + 0xd9]
mov ecx, 1
mov word [esi + 0xec], bx
mov edx, dword [0x91cfa4]
xor eax, ecx
mov al, byte [edx + eax*2 + 0x1c]
mov byte [esi + 0x10f], al
movzx eax, word [esi + 0x2dc]
cmp eax, 0x275
mov dword [esi + 0x198], ecx
mov dword [esi + 0x1a0], ecx
mov byte [esi + 0x134], 3
mov byte [esi + 0xda], 0xd
je 0x6f3589
cmp eax, 0x276
jle 0x6f3572
cmp eax, 0x278
jg 0x6f3572
pop edi
mov word [esi + 0xdc], 0x10
mov byte [esi + 0x116], 0
pop esi
mov eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
mov word [esi + 0xdc], cx
mov byte [esi + 0x116], 0
pop esi
mov eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
mov word [esi + 0xdc], 7
mov byte [esi + 0x116], 0
pop esi
mov eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x91d3f0]
fld dword [ebp + 8]
mov eax, dword [ebp + 0xc]
fstp dword [ecx + 0x140c]
mov edx, dword [0x91d3f0]
fld dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
fstp dword [edx + 0x1414]
mov edx, dword [ebp - 0xc]
push eax
push ecx
push edx
push ebx
push edi
push esi
call fcn.006f0aa0
add esp, 0x18
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x18]
push eax
push ecx
push esi
call fcn.006f0890
add esp, 0x10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [edi + 0xda], 9
jne 0x6f3613
push 4
call fcn.0063c860
add esp, 4
test eax, eax
jne 0x6f362b
cmp word [ebp - 0x14], 0x68
jbe 0x6f37a2
cmp dword [ebp - 0x1c], 0x200
jae 0x6f37a2
push 3
call fcn.0063c860
add esp, 4
test eax, eax
jne 0x6f365b
cmp byte [edi + 0xda], 9
jne 0x6f365b
mov eax, dword [0x91d3f0]
mov edx, dword [eax + 0x474]
mov eax, dword [eax + 0xb74]
mov dword [ebp + 8], edx
mov dword [ebp - 4], eax
jmp 0x6f36ad
mov ecx, dword [0x91d3f0]
xor edx, edx
mov dx, word [ecx + 0x60]
push 0xf0
push edx
call fcn.0063c810
mov dword [ebp + 8], eax
fild dword [ebp + 8]
mov eax, dword [0x91d3f0]
push 0xf0
fadd dword [eax + 0x474]
movzx eax, word [eax + 0x60]
push eax
fstp dword [ebp + 8]
call fcn.0063c7f0
mov ecx, dword [0x91d3f0]
mov dword [ebp - 0x28], eax
fild dword [ebp - 0x28]
add esp, 0x10
fadd dword [ecx + 0xb74]
fstp dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x2cc]
push edx
mov edx, dword [esi + 0x2c4]
push eax
push ecx
push edx
call fcn.006442f0
push 0
push 2
push 0
push 0x2c0
mov edi, eax
call fcn.006fc040
xor ecx, ecx
add esp, 0x20
cmp ecx, edx
jb 0x6f3715
ja 0x6f36ea
cmp dword [ebp - 0x1c], eax
jbe 0x6f3715
push 0
push 2
push 0
push 0x200
call fcn.006fc040
xor ecx, ecx
add esp, 0x10
cmp ecx, edx
jb 0x6f3715
ja 0x6f370a
cmp dword [ebp - 8], eax
jbe 0x6f3715
cmp word [ebp - 0x14], 0x50
jbe case.0x6f2a6c.5
movzx ecx, byte [esi + 0xd9]
mov edx, dword [0x91cfa4]
mov al, byte [edx + ecx*2 + 0x1c]
cmp byte [esi], al
jne 0x6f3740
mov cl, byte [edx + ecx*2 + 0x1d]
cmp cl, 0xff
je 0x6f3751
movzx eax, cl
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f3756
cmp al, 0xff
je 0x6f3751
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f3756
mov edx, 1
mov eax, dword [0x91d3f0]
fld dword [ebp + 8]
imul edx, edx, 0x4c0
fstp dword [eax + 0x140c]
fld dword [ebp - 4]
mov ecx, dword [0x91d3f0]
mov eax, dword [ebp - 0x10]
push edi
push eax
fstp dword [ecx + 0x1414]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x18]
push ecx
push eax
add edx, 0xd92230
push edx
push esi
call fcn.006f0aa0
add esp, 0x18
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 0x20], 0x400
jb 0x6f37ee
fld dword [edi + 0x2cc]
call fcn.0043bd30
fld dword [edi + 0x2c4]
push eax
call fcn.0043bd30
fld dword [esi + 0x2cc]
push eax
call fcn.0043bd30
fld dword [esi + 0x2c4]
push eax
call fcn.0043bd30
push eax
call fcn.00644320
add esp, 0x10
cmp eax, 0x40000
jae case.0x6f2a6c.5
mov eax, dword [ebp - 0x10]
cmp ax, 0x70
jae 0x6f3cce
mov edx, dword [ebp - 0x20]
mov ecx, 0x300
sub ecx, edx
movzx edx, ax
shr ecx, 4
add ecx, edx
cmp ecx, 0x70
ja 0x6f3cce
mov ebx, dword [ebp + 0xc]
xor eax, eax
mov ax, word [edi + 0xea]
push eax
push ebx
call fcn.006442a0
add esp, 8
cmp ax, 0x30
ja 0x6f3873
mov ecx, dword [0x91d3f0]
fld dword [ebp + 8]
mov eax, dword [ebp - 0x10]
fstp dword [ecx + 0x140c]
mov edx, dword [0x91d3f0]
fld dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
fstp dword [edx + 0x1414]
mov edx, dword [ebp - 0x18]
push ebx
push eax
push ecx
push edx
push edi
push esi
call fcn.006f0aa0
add esp, 0x18
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp word [ebp - 0x14], 0x70
jb 0x6f38e0
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0xb34]
mov edx, dword [eax + 0x434]
mov eax, dword [esi + 0x2cc]
push ecx
mov ecx, dword [esi + 0x2c4]
push edx
push eax
push ecx
call fcn.006442f0
mov ecx, dword [ebp - 0xc]
mov edx, ecx
add esp, 0x10
sub edx, eax
mov ax, 0x8000
cmp ax, dx
mov eax, dword [0x91d3f0]
mov edx, dword [eax + 0xb44]
sbb edi, edi
and edi, 0xffff0002
add edi, 0xffff
shl edi, 0xe
add edi, ecx
mov ecx, dword [eax + 0x444]
mov dword [ebp + 8], ecx
mov dword [ebp - 4], edx
jmp 0x6f39b3
movzx eax, word [edi + 0x2dc]
cmp eax, 0x6a
jl 0x6f3927
cmp eax, 0x6b
jle 0x6f38f6
cmp eax, 0x6d
jne 0x6f3927
movzx ax, byte [esi + 0x12e]
sub eax, 0x14
push eax
call fcn.0063c940
add esp, 4
test al, al
je 0x6f3927
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x454]
mov edx, dword [eax + 0xb54]
mov dword [ebp + 8], ecx
mov dword [ebp - 4], edx
jmp 0x6f3993
mov eax, dword [ebp - 8]
fild dword [ebp - 8]
test eax, eax
jge 0x6f3937
fadd dword [0x87079c]
fsqrt
call fcn.0043bd30
mov ecx, eax
imul ecx, ecx, 7
mov ebx, dword [ebp - 0xc]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov edi, edx
push edi
push ebx
call fcn.0063c810
mov edx, dword [0x91d3f0]
mov dword [ebp + 8], eax
push edi
fild dword [ebp + 8]
push ebx
fadd dword [edx + 0x454]
fstp dword [ebp + 8]
call fcn.0063c7f0
mov dword [ebp - 0x20], eax
fild dword [ebp - 0x20]
mov eax, dword [0x91d3f0]
add esp, 0x10
fadd dword [eax + 0xb54]
fstp dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + 8]
mov eax, dword [esi + 0x2cc]
push ecx
mov ecx, dword [esi + 0x2c4]
push edx
push eax
push ecx
call fcn.006442f0
add esp, 0x10
mov edi, eax
xor edx, edx
mov dx, word [esi + 0xea]
push edi
push edx
call fcn.006442a0
add esp, 8
cmp ax, 0x40
jae case.0x6f2a6c.5
movzx eax, byte [esi + 0xd8]
movzx ecx, byte [esi + 0xd7]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*8]
imul edx, edx, 0x110
xor eax, eax
mov al, byte [edx + 0xeb662c]
and eax, 0xffffff01
push eax
push edi
push 0xe
push 0x275
push esi
call fcn.00643e50
mov ecx, dword [ebp - 4]
mov eax, dword [0x91cfa4]
mov edx, dword [ebp + 8]
push ecx
mov ecx, dword [eax + 0x40]
push edx
mov edx, dword [eax + 0x38]
push ecx
push edx
call fcn.00644340
fsqrt
add esp, 0x24
call fcn.0043bd30
cmp eax, 0x2a0
mov dword [ebp - 8], eax
ja case.0x6f2a6c.5
movzx ecx, byte [esi + 0xd9]
mov dl, byte [esi]
mov ebx, dword [0x91cfa4]
cmp dl, byte [ebx + ecx*2 + 0x1c]
je 0x6f3a58
cmp eax, 0x200
ja case.0x6f2a6c.5
movzx eax, byte [esi + 0xd8]
movzx ebx, byte [esi + 0xd7]
lea eax, [eax + eax*4]
lea eax, [ebx + eax*8]
imul eax, eax, 0x110
mov al, byte [eax + 0xeb662c]
and al, 1
mov byte [esi + 0x2c1], al
mov ebx, dword [0x91cfa4]
mov al, byte [ebx + ecx*2 + 0x1c]
cmp dl, al
jne 0x6f3aa4
mov cl, byte [ebx + ecx*2 + 0x1d]
cmp cl, 0xff
je 0x6f3ab5
movzx eax, cl
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f3aba
cmp al, 0xff
je 0x6f3ab5
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x6f3aba
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
movzx eax, word [edx + 0x2dc]
sub eax, 0x275
je 0x6f3af9
sub eax, 6
je 0x6f3af0
push 2
call fcn.0063c860
add esp, 4
test eax, eax
push 0
je 0x6f3afb
push 0x275
jmp 0x6f3b00
push 0
push 0x275
jmp 0x6f3b00
push 0
push 0x27b
push esi
call fcn.0061e910
xor edx, edx
mov dx, word [esi + 0xec]
add esp, 0xc
push edi
push edx
call fcn.006442a0
add esp, 8
cmp ax, 0x20
ja 0x6f3b6b
xor eax, eax
mov ax, word [esi + 0xec]
xor ecx, ecx
mov cx, word [esi + 0xea]
push eax
push ecx
call fcn.006442a0
add esp, 8
cmp ax, 0x10
ja 0x6f3b6b
movzx eax, byte [esi + 0x124]
mov ecx, dword [esi + 0xe0]
lea edx, [eax + eax*2]
shl edx, 2
mov eax, 0x1100
sub eax, edx
cmp ecx, eax
jl 0x6f3b6b
xor edi, edi
mov di, word [esi + 0xec]
xor ecx, ecx
mov cx, word [esi + 0xea]
push 0x1000
push ecx
push edi
call fcn.00643cb0
movzx ecx, byte [esi + 0x124]
mov ebx, dword [esi + 0xe0]
lea edx, [ecx + ecx*2]
shl edx, 2
mov ecx, 0x1d00
sub ecx, edx
xor edx, edx
cmp ebx, ecx
setl dl
mov word [esi + 0xea], ax
dec edx
and edx, 0xfffff800
add edx, 0x1000
mov ecx, edx
push ecx
push eax
push edi
call fcn.00643cb0
push 0x3000
mov ebx, eax
xor eax, eax
mov ax, word [esi + 0xea]
mov word [esi + 0xec], bx
push eax
push edi
call fcn.00643cb0
xor ecx, ecx
mov cx, word [esi + 0xea]
mov word [esi + 0xf0], ax
push eax
push ecx
call fcn.006442d0
movzx ecx, ax
mov eax, 0x92492493
imul ecx
add edx, ecx
mov ecx, dword [esi + 0x120]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
mov word [esi + 0xfc], dx
mov edx, dword [esi + 0xe0]
push ecx
add edx, 0x600
push edx
mov byte [esi + 0x134], 3
call fcn.00648620
push 0x30
push eax
xor eax, eax
mov ax, word [esi + 0xec]
push eax
push ebx
push esi
call fcn.00675f70
add esp, 0x48
push eax
mov eax, dword [ebp - 8]
shl eax, 8
xor edx, edx
div dword [ebp - 0x28]
push eax
call fcn.00648620
mov ecx, dword [esi + 0x120]
push ecx
push eax
call fcn.00648620
mov ecx, dword [esi + 0xe0]
lea edx, [eax + 0x800]
add esp, 0x10
cmp edx, ecx
jae 0x6f3c80
lea eax, [ecx - 0x800]
movzx ecx, byte [esi + 0xd9]
mov dword [esi + 0xe0], eax
mov edx, dword [0x91cfa4]
mov eax, 1
xor ecx, eax
mov cl, byte [edx + ecx*2 + 0x1c]
pop edi
mov byte [esi + 0x10f], cl
mov dword [esi + 0x198], eax
mov dword [esi + 0x1a0], eax
mov byte [esi + 0xda], 0xd
mov word [esi + 0xdc], 7
mov byte [esi + 0x116], 0
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 8]
mov eax, dword [esi + 0x2cc]
mov ecx, dword [esi + 0x2c4]
push ebx
push edx
push eax
push ecx
call fcn.006442f0
fld dword [ebp + 8]
mov edx, dword [0x91d3f0]
fstp dword [edx + 0x140c]
mov ecx, dword [0x91d3f0]
mov edx, dword [ebp - 0x10]
fld dword [ebp - 4]
fstp dword [ecx + 0x1414]
mov ecx, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 0xc]
push edx
push eax
push ecx
push edi
push esi
call fcn.006f0aa0
add esp, 0x28
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret