Function at 0x4ca450
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x114
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
mov ecx, esi
call fcn.005a11f0
test eax, eax
jne 0x4ca486
push edi
mov ecx, esi
call fcn.005a1230
test eax, eax
jne 0x4ca486
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov bx, word [edi + 0x80]
cmp bx, 0x3e
je 0x4ca49d
cmp bx, 0x3f
jne 0x4ca760
lea eax, [esp + 0xc0]
push eax
mov ecx, esi
call fcn.005ef730
mov ecx, eax
call fcn.005efd90
mov cl, byte [esi + 0x21e]
test cl, cl
je 0x4ca50c
mov eax, dword [esi + 0x374]
cmp eax, 2
je 0x4ca4d2
cmp eax, 3
jne 0x4ca50c
cmp eax, 2
jne 0x4ca4ef
push 1
push 0
push esi
lea ecx, [esp + 0x8c]
push ecx
mov ecx, edi
call fcn.004c67c0
movaps xmm2, xmmword [eax + 0x30]
jmp 0x4ca5e6
push 0
push 0
push esi
lea edx, [esp + 0x8c]
push edx
mov ecx, edi
call fcn.004c67c0
movaps xmm2, xmmword [eax + 0x30]
jmp 0x4ca5e6
cmp word [edi + 0x80], 0x3e
jne 0x4ca581
test cl, cl
mov ecx, esi
jne 0x4ca52c
call fcn.00402030
push eax
lea eax, [esp + 0x84]
push eax
jmp 0x4ca53c
push 0x6b
call fcn.00401ff0
push eax
lea ecx, [esp + 0x84]
push ecx
mov ecx, esi
call fcn.00402190
movaps xmm2, xmmword [eax + 0x30]
mov ax, word [esi + 0x2c0]
cmp ax, 0xc
je 0x4ca55e
cmp ax, 0x13
jne 0x4ca5e6
lea edx, [esp + 0x14]
mov dword [esp + 0x14], 0x3e200000
movss xmm0, dword [edx]
movaps xmm1, xmm0
shufps xmm1, xmm0, 0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm1
subps xmm2, xmm0
jmp 0x4ca5e6
test cl, cl
mov ecx, esi
jne 0x4ca597
call fcn.00402060
push eax
lea eax, [esp + 0x84]
push eax
jmp 0x4ca5a7
push 0x6c
call fcn.00401ff0
push eax
lea ecx, [esp + 0x84]
push ecx
mov ecx, esi
call fcn.00402190
movaps xmm2, xmmword [eax + 0x30]
mov ax, word [esi + 0x2c0]
cmp ax, 0xc
je 0x4ca5c5
cmp ax, 0x13
jne 0x4ca5e6
lea edx, [esp + 0x14]
mov dword [esp + 0x14], 0x3e200000
movss xmm0, dword [edx]
movaps xmm1, xmm0
shufps xmm1, xmm0, 0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm1
addps xmm2, xmm0
movaps xmm1, xmmword [edi + 0x40]
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
unpcklps xmm0, xmm2
shufps xmm0, xmm2, 0xe1
movaps xmmword [esp + 0x60], xmm0
subps xmm0, xmm1
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0
movss xmm1, dword [eax]
unpcklps xmm1, xmm0
shufps xmm1, xmm0, 0xe1
movaps xmm0, xmm1
mulps xmm0, xmm1
movaps xmm3, xmm0
movaps xmm2, xmm0
shufps xmm3, xmm0, 0x55
movaps xmm4, xmm0
shufps xmm2, xmm0, 0xaa
addss xmm4, xmm3
addss xmm4, xmm2
movaps xmmword [esp + 0x20], xmm4
fld dword [esp + 0x20]
fcomp dword [0x68fac4]
movaps xmmword [esp + 0x70], xmm1
fnstsw ax
test ah, 5
jp 0x4ca69d
lea ecx, [esp + 0x60]
push ecx
mov ecx, edi
call fcn.00401bc0
mov edx, dword [edi + 0x1d4]
xor eax, eax
cmp word [edi + 0x80], 0x3e
push 0
setne al
push 5
add eax, 0x3a
movzx ecx, ax
movzx edx, byte [edx + ecx]
push edx
mov edx, dword [edi + 0x1d0]
movzx ecx, byte [edx + ecx]
push ecx
push eax
mov ecx, edi
call fcn.004c6c30
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
movaps xmm3, xmm0
movaps xmm2, xmm0
shufps xmm3, xmm0, 0x55
movaps xmm4, xmm0
shufps xmm2, xmm0, 0xaa
addss xmm4, xmm3
addss xmm4, xmm2
movaps xmmword [esp + 0x20], xmm4
fld dword [esp + 0x20]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jne 0x4ca70b
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
movaps xmm3, xmm0
shufps xmm3, xmm0, 0x55
addss xmm0, xmm3
addss xmm0, xmm2
movaps xmmword [esp + 0x20], xmm0
rsqrtss xmm0, xmm0
movss dword [esp + 0x20], xmm0
movaps xmm0, xmmword [esp + 0x20]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0
mulps xmm1, xmm2
movaps xmmword [esp + 0x20], xmm1
lea eax, [esp + 0x20]
jmp 0x4ca70f
lea eax, [esp + 0x70]
fld dword [0x725b3c]
movaps xmm0, xmmword [eax]
fmul dword [0x6be648]
push ecx
lea edx, [esp + 0x24]
mov ecx, edi
fstp dword [esp]
push edx
movaps xmmword [esp + 0x28], xmm0
call fcn.005f0540
test al, al
je 0x4cb8b0
xor eax, eax
cmp word [edi + 0x80], 0x3e
push 5
setne al
mov ecx, edi
add eax, 0x3a
push eax
call fcn.004026d0
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp bx, 0x3a
je 0x4ca77c
cmp bx, 0x3c
je 0x4ca77c
cmp bx, 0x3b
je 0x4ca77c
cmp bx, 0x3d
jne 0x4cb3ca
lea ecx, [esp + 0x80]
push ecx
mov ecx, esi
call fcn.005ef730
mov ecx, eax
call fcn.005efd90
mov ax, word [edi + 0x80]
cmp ax, 0x3a
je 0x4ca7a5
cmp ax, 0x3c
jne 0x4ca7bc
mov ax, word [esi + 0x2c0]
cmp ax, 9
je 0x4ca7bc
cmp ax, 0x23
je 0x4ca7bc
mov bl, 1
jmp 0x4ca7be
xor bl, bl
mov al, byte [esi + 0x21e]
test al, al
mov byte [esp + 0x14], bl
mov byte [esp + 0x1a], 0
jne 0x4cb254
movaps xmm0, xmmword [esi + 0x40]
movaps xmm1, xmmword [edi + 0x40]
movaps xmm2, xmmword [esi + 0x30]
mov ax, word [esi + 0x2c0]
cmp ax, 9
subps xmm1, xmm0
movaps xmm0, xmm1
mulps xmm0, xmm2
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
movaps xmm3, xmm0
shufps xmm3, xmm0, 0x55
addss xmm0, xmm3
addss xmm0, xmm2
movaps xmmword [esp + 0x50], xmm0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm1, xmm0
movaps xmm0, xmm1
movaps xmm2, xmm0
shufps xmm1, xmm0, 0xaa
shufps xmm2, xmm0, 0x55
addss xmm0, xmm2
addss xmm0, xmm1
movaps xmmword [esp + 0x20], xmm0
je 0x4ca83a
cmp ax, 0x23
jne 0x4ca850
fld dword [esp + 0x20]
mov byte [esp + 0x1b], 1
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 5
jnp 0x4ca855
mov byte [esp + 0x1b], 0
test bl, bl
mov ecx, esi
je 0x4ca862
call fcn.00402030
jmp 0x4ca867
call fcn.00402060
push eax
lea edx, [esp + 0xc4]
push edx
mov ecx, esi
call fcn.00402190
movss xmm1, dword [0x68b500]
movaps xmm0, xmmword [eax + 0x30]
mov ax, word [esi + 0x2c0]
cmp ax, 0xc
movss dword [esp + 0x70], xmm1
movss xmm1, dword [0x68b4fc]
movss dword [esp + 0x74], xmm1
movss xmm1, dword [0x68b4fc]
movss dword [esp + 0x78], xmm1
movss xmm1, dword [0x68b4fc]
movss dword [esp + 0x7c], xmm1
movaps xmm3, xmmword [esp + 0x70]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
movaps xmmword [esp + 0x70], xmm3
movaps xmmword [esp + 0xb0], xmm0
je 0x4ca8e3
cmp ax, 0x13
jne 0x4ca933
mov al, bl
neg al
lea ecx, [esp + 0x14]
sbb eax, eax
and eax, 0xffffff9c
add eax, 0x32
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [0x68b7fc]
fmul dword [0x68b554]
fstp dword [esp + 0x14]
movss xmm1, dword [ecx]
movaps xmm2, xmm1
shufps xmm2, xmm1, 0
movaps xmm1, xmmword [esi + 0x10]
mulps xmm1, xmm2
addps xmm0, xmm1
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
movaps xmmword [esp + 0xb0], xmm0
mov cl, byte [esp + 0x1b]
test cl, cl
jne 0x4ca958
test bl, bl
je 0x4cb045
fld dword [esp + 0x20]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jne 0x4cad0b
movss xmm0, dword [0x68b4fc]
movss dword [esp + 0x60], xmm0
movss xmm0, dword [0x68b4fc]
movss dword [esp + 0x64], xmm0
movss xmm0, dword [0x68b4fc]
movss dword [esp + 0x68], xmm0
movss xmm0, dword [0x68b500]
movss dword [esp + 0x6c], xmm0
movaps xmm0, xmmword [esp + 0x60]
movaps xmmword [esp + 0xf0], xmm0
shufps xmm0, xmm0, 0x39
movaps xmmword [esp + 0xe0], xmm0
shufps xmm0, xmm0, 0x39
lea edx, [esp + 0xc0]
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x39
push edx
mov ecx, esi
movaps xmmword [esp + 0xd4], xmm0
movaps xmmword [esp + 0xc4], xmm1
call fcn.00401dd0
push eax
lea eax, [esp + 0x38]
push eax
call fcn.005ede00
movaps xmm4, xmmword [eax]
movaps xmm7, xmmword [eax + 0x10]
mov al, byte [esp + 0x27]
add esp, 0xc
test al, al
movaps xmmword [esp + 0x100], xmm4
je 0x4cacf8
fld dword [esp + 0x50]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jne 0x4cab7a
fld dword [esp + 0x50]
movaps xmm0, xmm7
shufps xmm0, xmm7, 0xaa
movaps xmmword [esp + 0x30], xmm0
fcomp dword [esp + 0x30]
movaps xmmword [esp + 0x60], xmm0
fnstsw ax
test ah, 0x41
jnp 0x4caa8a
movaps xmmword [esp + 0x30], xmm0
fld dword [esp + 0x30]
fadd dword [0x68b5b8]
fcomp dword [esp + 0x50]
fnstsw ax
test ah, 1
jne 0x4cab7a
movaps xmm1, xmmword [edi + 0x30]
movaps xmm0, xmmword [esi + 0x30]
mulps xmm0, xmm1
movaps xmm1, xmm0
movaps xmm2, xmm0
shufps xmm1, xmm0, 0xaa
shufps xmm2, xmm0, 0x55
addss xmm0, xmm2
addss xmm0, xmm1
movaps xmmword [esp + 0x30], xmm0
fld dword [esp + 0x30]
fcomp dword [0x68d0dc]
fnstsw ax
test ah, 0x41
jne 0x4cab7a
mov ecx, esi
mov byte [esp + 0x1a], 1
call fcn.00402060
push eax
lea ecx, [esp + 0xc4]
push ecx
mov ecx, esi
call fcn.004020f0
movaps xmm3, xmmword [esp + 0x70]
movaps xmm0, xmmword [eax + 0x30]
movaps xmm4, xmmword [esi + 0x30]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
xorps xmm1, xmm1
subss xmm1, xmm0
movss xmm0, xmm1
movaps xmm1, xmmword [esi + 0x40]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
mulps xmm4, xmm2
movaps xmm2, xmmword [esi + 0x20]
addps xmm4, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x55
mulps xmm2, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm1
addps xmm2, xmm4
addps xmm0, xmm2
movaps xmm2, xmmword [esi + 0x30]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
movaps xmm1, xmm0
movaps xmm0, xmmword [esp + 0x60]
movaps xmmword [esp + 0x30], xmm0
fld dword [esp + 0x30]
movaps xmm0, xmmword [esi + 0x40]
fadd dword [0x68b5b8]
movaps xmm4, xmm1
subps xmm4, xmm0
movaps xmm0, xmm4
mulps xmm0, xmm2
movaps xmm4, xmm0
shufps xmm4, xmm0, 0xaa
movaps xmm5, xmm0
shufps xmm5, xmm0, 0x55
addss xmm0, xmm5
addss xmm0, xmm4
movaps xmmword [esp + 0x20], xmm0
fsub dword [esp + 0x20]
lea edx, [esp + 0x14]
fstp dword [esp + 0x14]
movss xmm0, dword [edx]
movaps xmm4, xmm0
shufps xmm4, xmm0, 0
mulps xmm2, xmm4
addps xmm1, xmm2
movaps xmm0, xmm1
shufps xmm3, xmm0, 0xe0
shufps xmm0, xmm3, 0x24
jmp 0x4cb2bc
fld dword [esp + 0x50]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jp 0x4cacf8
fld dword [esp + 0x50]
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xaa
movaps xmmword [esp + 0x30], xmm0
fcomp dword [esp + 0x30]
movaps xmmword [esp + 0x60], xmm0
fnstsw ax
test ah, 1
je 0x4cac08
movaps xmmword [esp + 0x30], xmm0
fld dword [esp + 0x30]
fsub dword [0x68b5b8]
fcomp dword [esp + 0x50]
fnstsw ax
test ah, 0x41
jp 0x4cacf8
movaps xmm1, xmmword [edi + 0x30]
movaps xmm0, xmmword [esi + 0x30]
mulps xmm0, xmm1
movaps xmm1, xmm0
movaps xmm2, xmm0
shufps xmm1, xmm0, 0xaa
shufps xmm2, xmm0, 0x55
addss xmm0, xmm2
addss xmm0, xmm1
movaps xmmword [esp + 0x30], xmm0
fld dword [esp + 0x30]
fcomp dword [0x68fac0]
fnstsw ax
test ah, 5
jp 0x4cacf8
mov ecx, esi
mov byte [esp + 0x1a], 1
call fcn.00402060
push eax
lea eax, [esp + 0xc4]
push eax
mov ecx, esi
call fcn.004020f0
movaps xmm3, xmmword [esp + 0x70]
movaps xmm0, xmmword [eax + 0x30]
movaps xmm4, xmmword [esi + 0x30]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
xorps xmm1, xmm1
subss xmm1, xmm0
movss xmm0, xmm1
movaps xmm1, xmmword [esi + 0x40]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
mulps xmm4, xmm2
movaps xmm2, xmmword [esi + 0x20]
addps xmm4, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x55
mulps xmm2, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm1
addps xmm2, xmm4
addps xmm0, xmm2
movaps xmm2, xmmword [esi + 0x30]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
movaps xmm1, xmm0
movaps xmm0, xmmword [esp + 0x60]
movaps xmmword [esp + 0x30], xmm0
fld dword [esp + 0x30]
movaps xmm0, xmmword [esi + 0x40]
fsub dword [0x68b5b8]
movaps xmm4, xmm1
subps xmm4, xmm0
movaps xmm0, xmm4
mulps xmm0, xmm2
movaps xmm4, xmm0
shufps xmm4, xmm0, 0xaa
movaps xmm5, xmm0
shufps xmm5, xmm0, 0x55
addss xmm0, xmm5
addss xmm0, xmm4
movaps xmmword [esp + 0x20], xmm0
fsub dword [esp + 0x20]
lea ecx, [esp + 0x14]
fstp dword [esp + 0x14]
movss xmm0, dword [ecx]
movaps xmm4, xmm0
shufps xmm4, xmm0, 0
mulps xmm2, xmm4
addps xmm1, xmm2
movaps xmm0, xmm1
shufps xmm3, xmm0, 0xe0
shufps xmm0, xmm3, 0x24
jmp 0x4cb2bc
movaps xmm0, xmmword [esp + 0xb0]
movaps xmm3, xmmword [esp + 0x70]
mov cl, byte [esp + 0x1b]
jmp 0x4cad1b
movaps xmm7, xmmword [esp + 0x110]
movaps xmm4, xmmword [esp + 0x100]
test bl, bl
je 0x4cb04d
fld dword [esp + 0x20]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jne 0x4cb034
fld dword [esp + 0x50]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jp 0x4caeb6
fld dword [esp + 0x50]
movaps xmm1, xmm4
shufps xmm1, xmm4, 0xaa
movaps xmmword [esp + 0x30], xmm1
fcomp dword [esp + 0x30]
movaps xmmword [esp + 0x60], xmm1
fnstsw ax
test ah, 1
je 0x4cadc6
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
fsub dword [0x68b5b8]
fcomp dword [esp + 0x50]
fnstsw ax
test ah, 0x41
jp 0x4caeb6
movaps xmm2, xmmword [edi + 0x30]
movaps xmm1, xmmword [esi + 0x30]
mulps xmm1, xmm2
movaps xmm2, xmm1
movaps xmm4, xmm1
shufps xmm2, xmm1, 0xaa
shufps xmm4, xmm1, 0x55
addss xmm1, xmm4
addss xmm1, xmm2
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
fcomp dword [0x68fac0]
fnstsw ax
test ah, 5
jp 0x4caeb6
mov ecx, esi
mov byte [esp + 0x1a], 1
call fcn.00402030
push eax
lea edx, [esp + 0xc4]
push edx
mov ecx, esi
call fcn.004020f0
movaps xmm3, xmmword [esp + 0x70]
movaps xmm0, xmmword [eax + 0x30]
movaps xmm4, xmmword [esi + 0x30]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
xorps xmm1, xmm1
subss xmm1, xmm0
movss xmm0, xmm1
movaps xmm1, xmmword [esi + 0x40]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
mulps xmm4, xmm2
movaps xmm2, xmmword [esi + 0x20]
addps xmm4, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x55
mulps xmm2, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm1
addps xmm2, xmm4
addps xmm0, xmm2
movaps xmm2, xmmword [esi + 0x30]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
movaps xmm1, xmm0
movaps xmm0, xmmword [esp + 0x60]
movaps xmmword [esp + 0x30], xmm0
fld dword [esp + 0x30]
movaps xmm0, xmmword [esi + 0x40]
fsub dword [0x68b5b8]
movaps xmm4, xmm1
subps xmm4, xmm0
movaps xmm0, xmm4
mulps xmm0, xmm2
movaps xmm4, xmm0
shufps xmm4, xmm0, 0xaa
movaps xmm5, xmm0
shufps xmm5, xmm0, 0x55
addss xmm0, xmm5
addss xmm0, xmm4
movaps xmmword [esp + 0x20], xmm0
fsub dword [esp + 0x20]
lea eax, [esp + 0x14]
fstp dword [esp + 0x14]
movss xmm0, dword [eax]
movaps xmm4, xmm0
shufps xmm4, xmm0, 0
mulps xmm2, xmm4
addps xmm1, xmm2
movaps xmm0, xmm1
shufps xmm3, xmm0, 0xe0
shufps xmm0, xmm3, 0x24
jmp 0x4cb2bc
fld dword [esp + 0x50]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jne 0x4cb034
fld dword [esp + 0x50]
movaps xmm1, xmm7
shufps xmm1, xmm7, 0xaa
movaps xmmword [esp + 0x30], xmm1
fcomp dword [esp + 0x30]
movaps xmmword [esp + 0x60], xmm1
fnstsw ax
test ah, 0x41
jnp 0x4caf44
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
fadd dword [0x68b5b8]
fcomp dword [esp + 0x50]
fnstsw ax
test ah, 1
jne 0x4cb034
movaps xmm2, xmmword [edi + 0x30]
movaps xmm1, xmmword [esi + 0x30]
mulps xmm1, xmm2
movaps xmm2, xmm1
movaps xmm4, xmm1
shufps xmm2, xmm1, 0xaa
shufps xmm4, xmm1, 0x55
addss xmm1, xmm4
addss xmm1, xmm2
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
fcomp dword [0x68d0dc]
fnstsw ax
test ah, 0x41
jne 0x4cb034
mov ecx, esi
mov byte [esp + 0x1a], 1
call fcn.00402030
push eax
lea ecx, [esp + 0xc4]
push ecx
mov ecx, esi
call fcn.004020f0
movaps xmm3, xmmword [esp + 0x70]
movaps xmm0, xmmword [eax + 0x30]
movaps xmm4, xmmword [esi + 0x30]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
xorps xmm1, xmm1
subss xmm1, xmm0
movss xmm0, xmm1
movaps xmm1, xmmword [esi + 0x40]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
mulps xmm4, xmm2
movaps xmm2, xmmword [esi + 0x20]
addps xmm4, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x55
mulps xmm2, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm1
addps xmm2, xmm4
addps xmm0, xmm2
movaps xmm2, xmmword [esi + 0x30]
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
movaps xmm1, xmm0
movaps xmm0, xmmword [esp + 0x60]
movaps xmmword [esp + 0x30], xmm0
fld dword [esp + 0x30]
movaps xmm0, xmmword [esi + 0x40]
fadd dword [0x68b5b8]
movaps xmm4, xmm1
subps xmm4, xmm0
movaps xmm0, xmm4
mulps xmm0, xmm2
movaps xmm4, xmm0
shufps xmm4, xmm0, 0xaa
movaps xmm5, xmm0
shufps xmm5, xmm0, 0x55
addss xmm0, xmm5
addss xmm0, xmm4
movaps xmmword [esp + 0x20], xmm0
fsub dword [esp + 0x20]
lea edx, [esp + 0x14]
fstp dword [esp + 0x14]
movss xmm0, dword [edx]
movaps xmm4, xmm0
shufps xmm4, xmm0, 0
mulps xmm2, xmm4
addps xmm1, xmm2
movaps xmm0, xmm1
shufps xmm3, xmm0, 0xe0
shufps xmm0, xmm3, 0x24
jmp 0x4cb2bc
movaps xmm6, xmmword [esi + 0x10]
xorps xmm1, xmm1
subps xmm1, xmm6
movaps xmmword [esp + 0x30], xmm1
jmp 0x4cb056
movaps xmm7, xmmword [esp + 0x110]
movaps xmm6, xmmword [esi + 0x10]
movaps xmmword [esp + 0x30], xmm6
movaps xmm4, xmmword [edi + 0x40]
lea eax, [esp + 0x30]
movaps xmm2, xmmword [eax]
subps xmm4, xmm0
movaps xmm1, xmm4
mulps xmm1, xmm2
movaps xmm2, xmm1
movaps xmm5, xmm1
shufps xmm2, xmm1, 0xaa
shufps xmm5, xmm1, 0x55
addss xmm1, xmm5
addss xmm1, xmm2
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 5
jp 0x4cb2bc
movaps xmm2, xmmword [esi + 0x30]
mulps xmm4, xmm2
movaps xmm1, xmm4
movaps xmm5, xmm1
shufps xmm4, xmm1, 0xaa
shufps xmm5, xmm1, 0x55
addss xmm1, xmm5
addss xmm1, xmm4
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jne 0x4cb193
movaps xmm1, xmm7
shufps xmm1, xmm7, 0xaa
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
fadd dword [0x68b5b8]
fcomp dword [esp + 0x50]
fnstsw ax
test ah, 5
jnp 0x4cb0fa
test cl, cl
je 0x4cb2bc
test bl, bl
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
movaps xmm1, xmmword [esi + 0x40]
movaps xmm4, xmm0
subps xmm4, xmm1
movaps xmm1, xmm4
mulps xmm1, xmm2
movaps xmm4, xmm1
shufps xmm4, xmm1, 0xaa
movaps xmm5, xmm1
shufps xmm5, xmm1, 0x55
addss xmm1, xmm5
addss xmm1, xmm4
movaps xmmword [esp + 0x20], xmm1
fsub dword [esp + 0x20]
lea eax, [esp + 0x14]
mov byte [esp + 0x1a], 1
fstp dword [esp + 0x14]
movss xmm1, dword [eax]
movaps xmm4, xmm1
shufps xmm4, xmm1, 0
mulps xmm2, xmm4
addps xmm0, xmm2
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
je 0x4cb167
fld dword [0x68c44c]
jmp 0x4cb16d
fld dword [0x68b5b8]
lea ecx, [esp + 0x14]
fstp dword [esp + 0x14]
movss xmm1, dword [ecx]
movaps xmm2, xmm1
shufps xmm2, xmm1, 0
mulps xmm6, xmm2
addps xmm0, xmm6
shufps xmm3, xmm0, 0xe0
shufps xmm0, xmm3, 0x24
jmp 0x4cb2bc
movaps xmm1, xmmword [esp + 0x100]
shufps xmm1, xmm1, 0xaa
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
fsub dword [0x68b5b8]
fcomp dword [esp + 0x50]
fnstsw ax
test ah, 0x41
je 0x4cb1c1
test cl, cl
je 0x4cb2bc
test bl, bl
movaps xmmword [esp + 0x30], xmm1
fld dword [esp + 0x30]
movaps xmm1, xmmword [esi + 0x40]
movaps xmm4, xmm0
subps xmm4, xmm1
movaps xmm1, xmm4
mulps xmm1, xmm2
movaps xmm4, xmm1
shufps xmm4, xmm1, 0xaa
movaps xmm5, xmm1
shufps xmm5, xmm1, 0x55
addss xmm1, xmm5
addss xmm1, xmm4
movaps xmmword [esp + 0x20], xmm1
fsub dword [esp + 0x20]
lea edx, [esp + 0x14]
mov byte [esp + 0x1a], 1
fstp dword [esp + 0x14]
movss xmm1, dword [edx]
movaps xmm4, xmm1
shufps xmm4, xmm1, 0
mulps xmm2, xmm4
addps xmm0, xmm2
movaps xmm1, xmm3
shufps xmm1, xmm0, 0xe0
shufps xmm0, xmm1, 0x24
je 0x4cb23d
fld dword [0x68c44c]
lea eax, [esp + 0x14]
fstp dword [esp + 0x14]
movss xmm1, dword [eax]
jmp 0x4cb179
fld dword [0x68b5b8]
lea eax, [esp + 0x14]
fstp dword [esp + 0x14]
movss xmm1, dword [eax]
jmp 0x4cb179
mov eax, dword [esi + 0x374]
cmp eax, 2
jne 0x4cb275
push 1
push 0
push esi
lea ecx, [esp + 0xcc]
push ecx
mov ecx, edi
call fcn.004c67c0
jmp 0x4cb2a7
cmp eax, 3
jne 0x4cb290
push 0
push 0
push esi
lea edx, [esp + 0xcc]
push edx
mov ecx, edi
call fcn.004c67c0
jmp 0x4cb2a7
mov eax, dword [esp + 0x14]
push eax
push 0
push esi
lea ecx, [esp + 0xcc]
push ecx
mov ecx, edi
call fcn.004c6630
lea ecx, [esp + 0x80]
push eax
call fcn.004010b0
movaps xmm0, xmmword [esp + 0xb0]
movaps xmm2, xmmword [edi + 0x40]
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x55
unpcklps xmm1, xmm0
shufps xmm1, xmm0, 0xe1
movaps xmmword [esp + 0xb0], xmm1
subps xmm1, xmm2
movaps xmm0, xmm1
movaps xmmword [esp + 0x30], xmm0
mulps xmm0, xmm0
movaps xmm1, xmm0
movaps xmm2, xmm0
shufps xmm1, xmm0, 0xaa
shufps xmm2, xmm0, 0x55
addss xmm0, xmm2
addss xmm0, xmm1
movaps xmmword [esp + 0x20], xmm0
sqrtss xmm0, xmm0
movss dword [esp + 0x20], xmm0
movaps xmm0, xmmword [esp + 0x20]
lea edx, [esp + 0x30]
push edx
mov ecx, edi
movaps xmmword [esp + 0x24], xmm0
call fcn.00402700
mov al, byte [esp + 0x1a]
test al, al
jne 0x4cb363
fld dword [esp + 0x20]
fcomp dword [0x68f054]
fnstsw ax
test ah, 5
jp 0x4cb352
neg bl
mov ecx, edi
sbb ebx, ebx
add ebx, 0x41
push ebx
call fcn.00472d00
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
fld dword [esp + 0x20]
fcomp dword [0x68f054]
fnstsw ax
test ah, 0x41
jne 0x4cb38a
mov ecx, edi
call fcn.004c6370
test al, al
je 0x4cb38a
neg bl
push 5
mov ecx, edi
sbb ebx, ebx
add ebx, 0x3d
push ebx
call fcn.004026d0
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
fld dword [esp + 0x20]
fcomp dword [0x68f054]
fnstsw ax
test ah, 5
jp 0x4cb8b0
mov ecx, edi
call fcn.004c6390
test al, al
je 0x4cb8b0
neg bl
push 5
mov ecx, edi
sbb ebx, ebx
add ebx, 0x3b
push ebx
call fcn.004026d0
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp bx, 0x40
je 0x4cb3da
cmp bx, 0x41
jne 0x4cb819
lea eax, [esp + 0xc0]
push eax
mov ecx, esi
call fcn.005ef730
mov ecx, eax
call fcn.005efd90
cmp word [edi + 0x80], 0x40
jne 0x4cb411
mov ax, word [esi + 0x2c0]
cmp ax, 9
je 0x4cb411
cmp ax, 0x23
je 0x4cb411
mov bl, 1
jmp 0x4cb413
xor bl, bl
mov al, byte [esi + 0x21e]
test al, al
mov byte [esp + 0x14], bl
jne 0x4cb545
test bl, bl
jne 0x4cb445
mov ax, word [esi + 0x2c0]
cmp ax, 9
je 0x4cb445
cmp ax, 0x23
je 0x4cb445
mov ecx, esi
call fcn.004020c0
jmp 0x4cb44c
mov ecx, esi
call fcn.00402090
movaps xmm0, xmmword [edi + 0x40]
push eax
lea ecx, [esp + 0x84]
push ecx
mov ecx, esi
movaps xmmword [esp + 0x38], xmm0
call fcn.00402190
movaps xmm1, xmmword [eax + 0x30]
mov ax, word [esi + 0x2c0]
cmp ax, 0xc
subps xmm1, xmmword [esp + 0x30]
movaps xmmword [esp + 0x50], xmm1
je 0x4cb486
cmp ax, 0x13
jne 0x4cb4c8
mov dl, bl
neg dl
lea eax, [esp + 0x1c]
sbb edx, edx
and edx, 0xffffff9c
add edx, 0x32
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fmul dword [0x68b7fc]
fmul dword [0x68b554]
fstp dword [esp + 0x1c]
movss xmm0, dword [eax]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm2
addps xmm1, xmm0
movaps xmmword [esp + 0x50], xmm1
test bl, bl
mov ecx, esi
je 0x4cb4d5
call fcn.00402030
jmp 0x4cb4da
call fcn.00402060
push eax
lea ecx, [esp + 0x84]
push ecx
mov ecx, esi
call fcn.00402190
movaps xmm1, xmmword [eax + 0x30]
mov ax, word [esi + 0x2c0]
cmp ax, 0xc
je 0x4cb505
cmp ax, 0x13
jne 0x4cb5e1
neg bl
lea edx, [esp + 0x1c]
sbb ebx, ebx
and ebx, 0xffffff9c
add ebx, 0x32
mov dword [esp + 0x1c], ebx
fild dword [esp + 0x1c]
fmul dword [0x68b7fc]
fmul dword [0x68b554]
fstp dword [esp + 0x1c]
movss xmm0, dword [edx]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm2
addps xmm1, xmm0
jmp 0x4cb5e1
movaps xmm0, xmmword [edi + 0x40]
mov ecx, esi
movaps xmmword [esp + 0x30], xmm0
call fcn.00402090
push eax
lea eax, [esp + 0x84]
push eax
mov ecx, esi
call fcn.00402190
movaps xmm0, xmmword [eax + 0x30]
mov al, byte [esi + 0x21e]
test al, al
subps xmm0, xmmword [esp + 0x30]
movaps xmmword [esp + 0x50], xmm0
je 0x4cb5be
mov eax, dword [esi + 0x374]
cmp eax, 2
je 0x4cb592
cmp eax, 3
jne 0x4cb5be
cmp eax, 2
jne 0x4cb5a8
push 1
push 0
push esi
lea ecx, [esp + 0x8c]
push ecx
mov ecx, edi
call fcn.004c67c0
jmp 0x4cb5dd
push 0
push 0
push esi
lea edx, [esp + 0x8c]
push edx
mov ecx, edi
call fcn.004c67c0
jmp 0x4cb5dd
neg bl
mov ecx, esi
sbb ebx, ebx
add ebx, 0x6c
push ebx
call fcn.00401ff0
push eax
lea eax, [esp + 0x84]
push eax
mov ecx, esi
call fcn.00402190
movaps xmm1, xmmword [eax + 0x30]
movaps xmm2, xmmword [esp + 0x50]
fld dword [0x725b3c]
movaps xmm3, xmmword [edi + 0x40]
fmul dword [0x68b5b8]
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], 0
movss xmm0, dword [ecx]
unpcklps xmm0, xmm2
shufps xmm0, xmm2, 0xe1
movaps xmmword [esp + 0x50], xmm0
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
movaps xmm4, xmm0
unpcklps xmm4, xmm1
shufps xmm4, xmm1, 0xe1
movaps xmm1, xmm4
subps xmm1, xmm3
movaps xmm0, xmm1
mulps xmm0, xmm1
movaps xmm2, xmm0
shufps xmm2, xmm0, 0x55
movaps xmm6, xmm0
addss xmm6, xmm2
movaps xmm5, xmm0
shufps xmm5, xmm0, 0xaa
movaps xmm2, xmm6
addss xmm2, xmm5
movaps xmmword [esp + 0x20], xmm2
sqrtss xmm2, xmm2
movss dword [esp + 0x20], xmm2
movaps xmm2, xmmword [esp + 0x20]
movaps xmmword [esp + 0x30], xmm2
fcomp dword [esp + 0x30]
movaps xmmword [esp + 0x70], xmm4
movaps xmmword [esp + 0x60], xmm1
fnstsw ax
test ah, 0x41
jne 0x4cb683
movaps xmmword [esp + 0x30], xmm4
jmp 0x4cb736
movaps xmm4, xmm0
movaps xmm2, xmm0
shufps xmm4, xmm0, 0x55
movaps xmm5, xmm0
shufps xmm2, xmm0, 0xaa
addss xmm5, xmm4
addss xmm5, xmm2
movaps xmmword [esp + 0x30], xmm5
fld dword [esp + 0x30]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jne 0x4cb6f1
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
movaps xmm4, xmm0
shufps xmm4, xmm0, 0x55
addss xmm0, xmm4
addss xmm0, xmm2
movaps xmmword [esp + 0x20], xmm0
rsqrtss xmm0, xmm0
movss dword [esp + 0x20], xmm0
movaps xmm0, xmmword [esp + 0x20]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0
mulps xmm1, xmm2
movaps xmmword [esp + 0x30], xmm1
lea eax, [esp + 0x30]
jmp 0x4cb6f5
lea eax, [esp + 0x60]
mov ecx, dword [0x725b3c]
mov dword [esp + 0x1c], ecx
lea edx, [esp + 0x1c]
movss xmm0, dword [edx]
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], 0x3e200000
movss xmm1, dword [ecx]
movaps xmm2, xmm1
shufps xmm2, xmm1, 0
movaps xmm1, xmm0
shufps xmm1, xmm0, 0
movaps xmm0, xmmword [eax]
mulps xmm0, xmm1
mulps xmm0, xmm2
addps xmm3, xmm0
movaps xmmword [esp + 0x30], xmm3
lea edx, [esp + 0x30]
mov ecx, edi
push edx
call fcn.00401bc0
movaps xmm1, xmmword [esp + 0x50]
movaps xmm0, xmm1
mulps xmm0, xmm1
movaps xmm3, xmm0
movaps xmm2, xmm0
shufps xmm3, xmm0, 0x55
movaps xmm4, xmm0
shufps xmm2, xmm0, 0xaa
addss xmm4, xmm3
addss xmm4, xmm2
movaps xmmword [esp + 0x30], xmm4
fld dword [esp + 0x30]
fcomp dword [0x68b4fc]
fnstsw ax
test ah, 0x41
jne 0x4cb7bb
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
movaps xmm3, xmm0
shufps xmm3, xmm0, 0x55
addss xmm0, xmm3
addss xmm0, xmm2
movaps xmmword [esp + 0x20], xmm0
rsqrtss xmm0, xmm0
movss dword [esp + 0x20], xmm0
movaps xmm0, xmmword [esp + 0x20]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0
mulps xmm1, xmm2
movaps xmmword [esp + 0x30], xmm1
lea eax, [esp + 0x30]
jmp 0x4cb7bf
lea eax, [esp + 0x50]
fld dword [0x725b3c]
movaps xmm0, xmmword [eax]
fmul dword [0x6be640]
push ecx
lea eax, [esp + 0x34]
mov ecx, edi
fstp dword [esp]
push eax
movaps xmmword [esp + 0x38], xmm0
call fcn.005f0540
test al, al
je 0x4cb8b0
movaps xmm0, xmmword [esp + 0x70]
lea ecx, [esp + 0x30]
push ecx
mov ecx, edi
movaps xmmword [esp + 0x34], xmm0
call fcn.00401bc0
mov edx, dword [esp + 0x14]
push edx
push esi
mov ecx, edi
call fcn.004c9930
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, edi
call fcn.004c6300
test al, al
je 0x4cb8b0
cmp bx, 0x48
jne 0x4cb847
mov ax, word [esi + 0x2c0]
cmp ax, 9
je 0x4cb847
cmp ax, 0x23
je 0x4cb847
mov bl, 1
push 0x10
jmp 0x4cb84b
xor bl, bl
push 0x11
mov ecx, esi
call fcn.005ef7a0
mov esi, eax
test esi, esi
je 0x4cb8b0
fld dword [edi + 0x90]
push ecx
fsub dword [edi + 0x8c]
mov ecx, 0x6be678
mov edx, 0x6be600
fstp dword [esp]
call fcn.004c5be0
add esp, 4
test bl, bl
jne 0x4cb880
fchs
fstp dword [esp + 0x14]
mov eax, dword [esp + 0x14]
push eax
lea ecx, [esp + 0xc4]
push ecx
call fcn.00603c20
movaps xmm0, xmmword [eax]
movaps xmmword [esi + 0x10], xmm0
movaps xmm0, xmmword [eax + 0x10]
movaps xmmword [esi + 0x20], xmm0
movaps xmm0, xmmword [eax + 0x20]
add esp, 8
movaps xmmword [esi + 0x30], xmm0
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 4